brintos

brintos / llvm-project-archived public Read only

0
0
Text · 17.5 KiB · 6c5339e Raw
585 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 42# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=amdgpu-postlegalizer-combiner -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s3 4---5name:            rsq_f166tracksRegLiveness: true7body:             |8  bb.0:9    liveins: $vgpr010 11    ; GCN-LABEL: name: rsq_f1612    ; GCN: liveins: $vgpr013    ; GCN-NEXT: {{  $}}14    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr015    ; GCN-NEXT: %x:_(s16) = G_TRUNC [[COPY]](s32)16    ; GCN-NEXT: [[INT:%[0-9]+]]:_(s16) = contract G_INTRINSIC intrinsic(@llvm.amdgcn.rsq), %x(s16)17    ; GCN-NEXT: %ext:_(s32) = G_ANYEXT [[INT]](s16)18    ; GCN-NEXT: $vgpr0 = COPY %ext(s32)19    %0:_(s32) = COPY $vgpr020    %x:_(s16) = G_TRUNC %0:_(s32)21    %sqrt:_(s16) = contract G_FSQRT %x22    %one:_(s16) = G_FCONSTANT half 1.023    %rsq:_(s16) = contract G_FDIV %one, %sqrt24    %ext:_(s32) = G_ANYEXT %rsq:_(s16)25    $vgpr0 = COPY %ext26 27...28 29---30name:            rsq_f16_missing_contract031tracksRegLiveness: true32body:             |33  bb.0:34    liveins: $vgpr035 36    ; GCN-LABEL: name: rsq_f16_missing_contract037    ; GCN: liveins: $vgpr038    ; GCN-NEXT: {{  $}}39    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr040    ; GCN-NEXT: %x:_(s16) = G_TRUNC [[COPY]](s32)41    ; GCN-NEXT: %sqrt:_(s16) = G_FSQRT %x42    ; GCN-NEXT: %one:_(s16) = G_FCONSTANT half 0xH3C0043    ; GCN-NEXT: %rsq:_(s16) = contract G_FDIV %one, %sqrt44    ; GCN-NEXT: %ext:_(s32) = G_ANYEXT %rsq(s16)45    ; GCN-NEXT: $vgpr0 = COPY %ext(s32)46    %0:_(s32) = COPY $vgpr047    %x:_(s16) = G_TRUNC %0:_(s32)48    %sqrt:_(s16) = G_FSQRT %x49    %one:_(s16) = G_FCONSTANT half 1.050    %rsq:_(s16) = contract G_FDIV %one, %sqrt51    %ext:_(s32) = G_ANYEXT %rsq:_(s16)52    $vgpr0 = COPY %ext53 54...55 56---57name:            rsq_f16_missing_contract158tracksRegLiveness: true59body:             |60  bb.0:61    liveins: $vgpr062 63    ; GCN-LABEL: name: rsq_f16_missing_contract164    ; GCN: liveins: $vgpr065    ; GCN-NEXT: {{  $}}66    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr067    ; GCN-NEXT: %x:_(s16) = G_TRUNC [[COPY]](s32)68    ; GCN-NEXT: %sqrt:_(s16) = contract G_FSQRT %x69    ; GCN-NEXT: %one:_(s16) = G_FCONSTANT half 0xH3C0070    ; GCN-NEXT: %rsq:_(s16) = G_FDIV %one, %sqrt71    ; GCN-NEXT: %ext:_(s32) = G_ANYEXT %rsq(s16)72    ; GCN-NEXT: $vgpr0 = COPY %ext(s32)73    %0:_(s32) = COPY $vgpr074    %x:_(s16) = G_TRUNC %0:_(s32)75    %sqrt:_(s16) = contract G_FSQRT %x76    %one:_(s16) = G_FCONSTANT half 1.077    %rsq:_(s16) = G_FDIV %one, %sqrt78    %ext:_(s32) = G_ANYEXT %rsq:_(s16)79    $vgpr0 = COPY %ext80 81...82 83---84name:            neg_rsq_f1685tracksRegLiveness: true86body:             |87  bb.0:88    liveins: $vgpr089 90    ; GCN-LABEL: name: neg_rsq_f1691    ; GCN: liveins: $vgpr092    ; GCN-NEXT: {{  $}}93    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr094    ; GCN-NEXT: %x:_(s16) = G_TRUNC [[COPY]](s32)95    ; GCN-NEXT: [[INT:%[0-9]+]]:_(s16) = contract G_INTRINSIC intrinsic(@llvm.amdgcn.rsq), %x(s16)96    ; GCN-NEXT: %rsq:_(s16) = contract G_FNEG [[INT]]97    ; GCN-NEXT: %ext:_(s32) = G_ANYEXT %rsq(s16)98    ; GCN-NEXT: $vgpr0 = COPY %ext(s32)99    %0:_(s32) = COPY $vgpr0100    %x:_(s16) = G_TRUNC %0:_(s32)101    %sqrt:_(s16) = contract G_FSQRT %x102    %neg_one:_(s16) = G_FCONSTANT half -1.0103    %rsq:_(s16) = contract G_FDIV %neg_one, %sqrt104    %ext:_(s32) = G_ANYEXT %rsq:_(s16)105    $vgpr0 = COPY %ext106 107...108 109---110name:            neg_rsq_f16_missing_contract0111tracksRegLiveness: true112body:             |113  bb.0:114    liveins: $vgpr0115 116    ; GCN-LABEL: name: neg_rsq_f16_missing_contract0117    ; GCN: liveins: $vgpr0118    ; GCN-NEXT: {{  $}}119    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0120    ; GCN-NEXT: %x:_(s16) = G_TRUNC [[COPY]](s32)121    ; GCN-NEXT: %sqrt:_(s16) = G_FSQRT %x122    ; GCN-NEXT: %neg_one:_(s16) = G_FCONSTANT half 0xHBC00123    ; GCN-NEXT: %rsq:_(s16) = contract G_FDIV %neg_one, %sqrt124    ; GCN-NEXT: %ext:_(s32) = G_ANYEXT %rsq(s16)125    ; GCN-NEXT: $vgpr0 = COPY %ext(s32)126    %0:_(s32) = COPY $vgpr0127    %x:_(s16) = G_TRUNC %0:_(s32)128    %sqrt:_(s16) = G_FSQRT %x129    %neg_one:_(s16) = G_FCONSTANT half -1.0130    %rsq:_(s16) = contract G_FDIV %neg_one, %sqrt131    %ext:_(s32) = G_ANYEXT %rsq:_(s16)132    $vgpr0 = COPY %ext133 134...135 136---137name:            neg_rsq_f16_missing_contract1138tracksRegLiveness: true139body:             |140  bb.0:141    liveins: $vgpr0142 143    ; GCN-LABEL: name: neg_rsq_f16_missing_contract1144    ; GCN: liveins: $vgpr0145    ; GCN-NEXT: {{  $}}146    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0147    ; GCN-NEXT: %x:_(s16) = G_TRUNC [[COPY]](s32)148    ; GCN-NEXT: %sqrt:_(s16) = contract G_FSQRT %x149    ; GCN-NEXT: %neg_one:_(s16) = G_FCONSTANT half 0xHBC00150    ; GCN-NEXT: %rsq:_(s16) = G_FDIV %neg_one, %sqrt151    ; GCN-NEXT: %ext:_(s32) = G_ANYEXT %rsq(s16)152    ; GCN-NEXT: $vgpr0 = COPY %ext(s32)153    %0:_(s32) = COPY $vgpr0154    %x:_(s16) = G_TRUNC %0:_(s32)155    %sqrt:_(s16) = contract G_FSQRT %x156    %neg_one:_(s16) = G_FCONSTANT half -1.0157    %rsq:_(s16) = G_FDIV %neg_one, %sqrt158    %ext:_(s32) = G_ANYEXT %rsq:_(s16)159    $vgpr0 = COPY %ext160 161...162 163---164name:            rsq_f16_multi_use165tracksRegLiveness: true166body:             |167  bb.0:168    liveins: $vgpr0169 170    ; GCN-LABEL: name: rsq_f16_multi_use171    ; GCN: liveins: $vgpr0172    ; GCN-NEXT: {{  $}}173    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0174    ; GCN-NEXT: %x:_(s16) = G_TRUNC [[COPY]](s32)175    ; GCN-NEXT: %sqrt:_(s16) = contract G_FSQRT %x176    ; GCN-NEXT: %one:_(s16) = G_FCONSTANT half 0xH3C00177    ; GCN-NEXT: %rsq:_(s16) = contract G_FDIV %one, %sqrt178    ; GCN-NEXT: %ext:_(s32) = G_ANYEXT %rsq(s16)179    ; GCN-NEXT: $vgpr0 = COPY %ext(s32)180    ; GCN-NEXT: S_ENDPGM 0, implicit %sqrt(s16)181    %0:_(s32) = COPY $vgpr0182    %x:_(s16) = G_TRUNC %0:_(s32)183    %sqrt:_(s16) = contract G_FSQRT %x184    %one:_(s16) = G_FCONSTANT half 1.0185    %rsq:_(s16) = contract G_FDIV %one, %sqrt186    %ext:_(s32) = G_ANYEXT %rsq:_(s16)187    $vgpr0 = COPY %ext188    S_ENDPGM 0, implicit %sqrt189 190...191 192---193name:            rsq_f16_multi_use_missing_contract0194tracksRegLiveness: true195body:             |196  bb.0:197    liveins: $vgpr0198 199    ; GCN-LABEL: name: rsq_f16_multi_use_missing_contract0200    ; GCN: liveins: $vgpr0201    ; GCN-NEXT: {{  $}}202    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0203    ; GCN-NEXT: %x:_(s16) = G_TRUNC [[COPY]](s32)204    ; GCN-NEXT: %sqrt:_(s16) = G_FSQRT %x205    ; GCN-NEXT: %one:_(s16) = G_FCONSTANT half 0xH3C00206    ; GCN-NEXT: %rsq:_(s16) = contract G_FDIV %one, %sqrt207    ; GCN-NEXT: %ext:_(s32) = G_ANYEXT %rsq(s16)208    ; GCN-NEXT: $vgpr0 = COPY %ext(s32)209    ; GCN-NEXT: S_ENDPGM 0, implicit %sqrt(s16)210    %0:_(s32) = COPY $vgpr0211    %x:_(s16) = G_TRUNC %0:_(s32)212    %sqrt:_(s16) = G_FSQRT %x213    %one:_(s16) = G_FCONSTANT half 1.0214    %rsq:_(s16) = contract G_FDIV %one, %sqrt215    %ext:_(s32) = G_ANYEXT %rsq:_(s16)216    $vgpr0 = COPY %ext217    S_ENDPGM 0, implicit %sqrt218 219...220 221---222name:            rsq_f16_multi_use_missing_contract1223tracksRegLiveness: true224body:             |225  bb.0:226    liveins: $vgpr0227 228    ; GCN-LABEL: name: rsq_f16_multi_use_missing_contract1229    ; GCN: liveins: $vgpr0230    ; GCN-NEXT: {{  $}}231    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0232    ; GCN-NEXT: %x:_(s16) = G_TRUNC [[COPY]](s32)233    ; GCN-NEXT: %sqrt:_(s16) = contract G_FSQRT %x234    ; GCN-NEXT: %one:_(s16) = G_FCONSTANT half 0xH3C00235    ; GCN-NEXT: %rsq:_(s16) = G_FDIV %one, %sqrt236    ; GCN-NEXT: %ext:_(s32) = G_ANYEXT %rsq(s16)237    ; GCN-NEXT: $vgpr0 = COPY %ext(s32)238    ; GCN-NEXT: S_ENDPGM 0, implicit %sqrt(s16)239    %0:_(s32) = COPY $vgpr0240    %x:_(s16) = G_TRUNC %0:_(s32)241    %sqrt:_(s16) = contract G_FSQRT %x242    %one:_(s16) = G_FCONSTANT half 1.0243    %rsq:_(s16) = G_FDIV %one, %sqrt244    %ext:_(s32) = G_ANYEXT %rsq:_(s16)245    $vgpr0 = COPY %ext246    S_ENDPGM 0, implicit %sqrt247 248...249 250---251name:            rsq_f32252tracksRegLiveness: true253body:             |254  bb.0:255    liveins: $vgpr0256 257    ; GCN-LABEL: name: rsq_f32258    ; GCN: liveins: $vgpr0259    ; GCN-NEXT: {{  $}}260    ; GCN-NEXT: %x:_(s32) = COPY $vgpr0261    ; GCN-NEXT: %sqrt:_(s32) = contract G_FSQRT %x262    ; GCN-NEXT: %one:_(s32) = G_FCONSTANT float 1.000000e+00263    ; GCN-NEXT: %rsq:_(s32) = contract G_FDIV %one, %sqrt264    ; GCN-NEXT: $vgpr0 = COPY %rsq(s32)265    %x:_(s32) = COPY $vgpr0266    %sqrt:_(s32) = contract G_FSQRT %x267    %one:_(s32) = G_FCONSTANT float 1.0268    %rsq:_(s32) = contract G_FDIV %one, %sqrt269    $vgpr0 = COPY %rsq270 271...272 273---274name:            neg_rsq_f32275tracksRegLiveness: true276body:             |277  bb.0:278    liveins: $vgpr0279 280    ; GCN-LABEL: name: neg_rsq_f32281    ; GCN: liveins: $vgpr0282    ; GCN-NEXT: {{  $}}283    ; GCN-NEXT: %x:_(s32) = COPY $vgpr0284    ; GCN-NEXT: %sqrt:_(s32) = contract G_FSQRT %x285    ; GCN-NEXT: %neg_one:_(s32) = G_FCONSTANT float -1.000000e+00286    ; GCN-NEXT: %rsq:_(s32) = contract G_FDIV %neg_one, %sqrt287    ; GCN-NEXT: $vgpr0 = COPY %rsq(s32)288    %x:_(s32) = COPY $vgpr0289    %sqrt:_(s32) = contract G_FSQRT %x290    %neg_one:_(s32) = G_FCONSTANT float -1.0291    %rsq:_(s32) = contract G_FDIV %neg_one, %sqrt292    $vgpr0 = COPY %rsq293 294...295 296---297name:            afn_rsq_f32298tracksRegLiveness: true299body:             |300  bb.0:301    liveins: $vgpr0302 303    ; GCN-LABEL: name: afn_rsq_f32304    ; GCN: liveins: $vgpr0305    ; GCN-NEXT: {{  $}}306    ; GCN-NEXT: %x:_(s32) = COPY $vgpr0307    ; GCN-NEXT: %sqrt:_(s32) = contract afn G_FSQRT %x308    ; GCN-NEXT: %one:_(s32) = G_FCONSTANT float 1.000000e+00309    ; GCN-NEXT: %rsq:_(s32) = contract afn G_FDIV %one, %sqrt310    ; GCN-NEXT: $vgpr0 = COPY %rsq(s32)311    %x:_(s32) = COPY $vgpr0312    %sqrt:_(s32) = contract afn G_FSQRT %x313    %one:_(s32) = G_FCONSTANT float 1.0314    %rsq:_(s32) = contract afn G_FDIV %one, %sqrt315    $vgpr0 = COPY %rsq316 317...318 319---320name:            afn_rsq_f32_multi_use321tracksRegLiveness: true322body:             |323  bb.0:324    liveins: $vgpr0325 326    ; GCN-LABEL: name: afn_rsq_f32_multi_use327    ; GCN: liveins: $vgpr0328    ; GCN-NEXT: {{  $}}329    ; GCN-NEXT: %x:_(s32) = COPY $vgpr0330    ; GCN-NEXT: %sqrt:_(s32) = contract afn G_FSQRT %x331    ; GCN-NEXT: %one:_(s32) = G_FCONSTANT float 1.000000e+00332    ; GCN-NEXT: %rsq:_(s32) = contract afn G_FDIV %one, %sqrt333    ; GCN-NEXT: %ret:_(s32) = G_FSUB %sqrt, %rsq334    ; GCN-NEXT: $vgpr0 = COPY %ret(s32)335    %x:_(s32) = COPY $vgpr0336    %sqrt:_(s32) = contract afn G_FSQRT %x337    %one:_(s32) = G_FCONSTANT float 1.0338    %rsq:_(s32) = contract afn G_FDIV %one, %sqrt339    %ret:_(s32) = G_FSUB %sqrt, %rsq340    $vgpr0 = COPY %ret341 342...343 344---345name:            afn_neg_rsq_f32346tracksRegLiveness: true347body:             |348  bb.0:349    liveins: $vgpr0350 351    ; GCN-LABEL: name: afn_neg_rsq_f32352    ; GCN: liveins: $vgpr0353    ; GCN-NEXT: {{  $}}354    ; GCN-NEXT: %x:_(s32) = COPY $vgpr0355    ; GCN-NEXT: %sqrt:_(s32) = contract afn G_FSQRT %x356    ; GCN-NEXT: %neg_one:_(s32) = G_FCONSTANT float -1.000000e+00357    ; GCN-NEXT: %rsq:_(s32) = contract afn G_FDIV %neg_one, %sqrt358    ; GCN-NEXT: $vgpr0 = COPY %rsq(s32)359    %x:_(s32) = COPY $vgpr0360    %sqrt:_(s32) = contract afn G_FSQRT %x361    %neg_one:_(s32) = G_FCONSTANT float -1.0362    %rsq:_(s32) = contract afn G_FDIV %neg_one, %sqrt363    $vgpr0 = COPY %rsq364 365...366 367 368---369name:            rsq_f64370tracksRegLiveness: true371body:             |372  bb.0:373    liveins: $vgpr0374 375    ; GCN-LABEL: name: rsq_f64376    ; GCN: liveins: $vgpr0377    ; GCN-NEXT: {{  $}}378    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0379    ; GCN-NEXT: %x:_(s64) = G_ANYEXT [[COPY]](s32)380    ; GCN-NEXT: %sqrt:_(s64) = contract G_FSQRT %x381    ; GCN-NEXT: %one:_(s64) = G_FCONSTANT double 1.000000e+00382    ; GCN-NEXT: %rsq:_(s64) = contract G_FDIV %one, %sqrt383    ; GCN-NEXT: %ext:_(s32) = G_TRUNC %rsq(s64)384    ; GCN-NEXT: $vgpr0 = COPY %ext(s32)385    %0:_(s32) = COPY $vgpr0386    %x:_(s64) = G_ANYEXT %0:_(s32)387    %sqrt:_(s64) = contract G_FSQRT %x388    %one:_(s64) = G_FCONSTANT double 1.0389    %rsq:_(s64) = contract G_FDIV %one, %sqrt390    %ext:_(s32) = G_TRUNC %rsq:_(s64)391    $vgpr0 = COPY %ext392 393...394 395---396name:            neg_rsq_f64397tracksRegLiveness: true398body:             |399  bb.0:400    liveins: $vgpr0401 402    ; GCN-LABEL: name: neg_rsq_f64403    ; GCN: liveins: $vgpr0404    ; GCN-NEXT: {{  $}}405    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0406    ; GCN-NEXT: %x:_(s64) = G_ANYEXT [[COPY]](s32)407    ; GCN-NEXT: %sqrt:_(s64) = contract G_FSQRT %x408    ; GCN-NEXT: %neg_one:_(s64) = G_FCONSTANT double -1.000000e+00409    ; GCN-NEXT: %rsq:_(s64) = contract G_FDIV %neg_one, %sqrt410    ; GCN-NEXT: %ext:_(s32) = G_TRUNC %rsq(s64)411    ; GCN-NEXT: $vgpr0 = COPY %ext(s32)412    %0:_(s32) = COPY $vgpr0413    %x:_(s64) = G_ANYEXT %0:_(s32)414    %sqrt:_(s64) = contract G_FSQRT %x415    %neg_one:_(s64) = G_FCONSTANT double -1.0416    %rsq:_(s64) = contract G_FDIV %neg_one, %sqrt417    %ext:_(s32) = G_TRUNC %rsq:_(s64)418    $vgpr0 = COPY %ext419 420...421 422---423name:            afn_rsq_f64424tracksRegLiveness: true425body:             |426  bb.0:427    liveins: $vgpr0428 429    ; GCN-LABEL: name: afn_rsq_f64430    ; GCN: liveins: $vgpr0431    ; GCN-NEXT: {{  $}}432    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0433    ; GCN-NEXT: %x:_(s64) = G_ANYEXT [[COPY]](s32)434    ; GCN-NEXT: %sqrt:_(s64) = contract afn G_FSQRT %x435    ; GCN-NEXT: %one:_(s64) = G_FCONSTANT double 1.000000e+00436    ; GCN-NEXT: %rsq:_(s64) = contract afn G_FDIV %one, %sqrt437    ; GCN-NEXT: %ext:_(s32) = G_TRUNC %rsq(s64)438    ; GCN-NEXT: $vgpr0 = COPY %ext(s32)439    %0:_(s32) = COPY $vgpr0440    %x:_(s64) = G_ANYEXT %0:_(s32)441    %sqrt:_(s64) = contract afn G_FSQRT %x442    %one:_(s64) = G_FCONSTANT double 1.0443    %rsq:_(s64) = contract afn G_FDIV %one, %sqrt444    %ext:_(s32) = G_TRUNC %rsq:_(s64)445    $vgpr0 = COPY %ext446 447...448 449---450name:            afn_neg_rsq_f64451tracksRegLiveness: true452body:             |453  bb.0:454    liveins: $vgpr0455 456    ; GCN-LABEL: name: afn_neg_rsq_f64457    ; GCN: liveins: $vgpr0458    ; GCN-NEXT: {{  $}}459    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0460    ; GCN-NEXT: %x:_(s64) = G_ANYEXT [[COPY]](s32)461    ; GCN-NEXT: %sqrt:_(s64) = contract afn G_FSQRT %x462    ; GCN-NEXT: %neg_one:_(s64) = G_FCONSTANT double -1.000000e+00463    ; GCN-NEXT: %rsq:_(s64) = contract afn G_FDIV %neg_one, %sqrt464    ; GCN-NEXT: %ext:_(s32) = G_TRUNC %rsq(s64)465    ; GCN-NEXT: $vgpr0 = COPY %ext(s32)466    %0:_(s32) = COPY $vgpr0467    %x:_(s64) = G_ANYEXT %0:_(s32)468    %sqrt:_(s64) = contract afn G_FSQRT %x469    %neg_one:_(s64) = G_FCONSTANT double -1.0470    %rsq:_(s64) = contract afn G_FDIV %neg_one, %sqrt471    %ext:_(s32) = G_TRUNC %rsq:_(s64)472    $vgpr0 = COPY %ext473 474...475 476 477---478name:            rsq_fract_num_f16479tracksRegLiveness: true480body:             |481  bb.0:482    liveins: $vgpr0483 484    ; GCN-LABEL: name: rsq_fract_num_f16485    ; GCN: liveins: $vgpr0486    ; GCN-NEXT: {{  $}}487    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0488    ; GCN-NEXT: %x:_(s16) = G_TRUNC [[COPY]](s32)489    ; GCN-NEXT: %fract:_(s16) = G_FCONSTANT half 0xH3800490    ; GCN-NEXT: [[INT:%[0-9]+]]:_(s16) = contract G_INTRINSIC intrinsic(@llvm.amdgcn.rsq), %x(s16)491    ; GCN-NEXT: %rsq:_(s16) = contract G_FMUL [[INT]], %fract492    ; GCN-NEXT: %ext:_(s32) = G_ANYEXT %rsq(s16)493    ; GCN-NEXT: $vgpr0 = COPY %ext(s32)494    %0:_(s32) = COPY $vgpr0495    %x:_(s16) = G_TRUNC %0:_(s32)496    %sqrt:_(s16) = contract G_FSQRT %x497    %fract:_(s16) = G_FCONSTANT half 0.5498    %rsq:_(s16) = contract G_FDIV %fract, %sqrt499    %ext:_(s32) = G_ANYEXT %rsq:_(s16)500    $vgpr0 = COPY %ext501 502...503 504---505name:            neg_rsq_fract_num_f16506tracksRegLiveness: true507body:             |508  bb.0:509    liveins: $vgpr0510 511    ; GCN-LABEL: name: neg_rsq_fract_num_f16512    ; GCN: liveins: $vgpr0513    ; GCN-NEXT: {{  $}}514    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0515    ; GCN-NEXT: %x:_(s16) = G_TRUNC [[COPY]](s32)516    ; GCN-NEXT: %neg_fract:_(s16) = G_FCONSTANT half 0xHB800517    ; GCN-NEXT: [[INT:%[0-9]+]]:_(s16) = contract G_INTRINSIC intrinsic(@llvm.amdgcn.rsq), %x(s16)518    ; GCN-NEXT: %rsq:_(s16) = contract G_FMUL [[INT]], %neg_fract519    ; GCN-NEXT: %ext:_(s32) = G_ANYEXT %rsq(s16)520    ; GCN-NEXT: $vgpr0 = COPY %ext(s32)521    %0:_(s32) = COPY $vgpr0522    %x:_(s16) = G_TRUNC %0:_(s32)523    %sqrt:_(s16) = contract G_FSQRT %x524    %neg_fract:_(s16) = G_FCONSTANT half -0.5525    %rsq:_(s16) = contract G_FDIV %neg_fract, %sqrt526    %ext:_(s32) = G_ANYEXT %rsq:_(s16)527    $vgpr0 = COPY %ext528 529 530...531 532---533name:            rsq_large_num_f16534tracksRegLiveness: true535body:             |536  bb.0:537    liveins: $vgpr0538 539    ; GCN-LABEL: name: rsq_large_num_f16540    ; GCN: liveins: $vgpr0541    ; GCN-NEXT: {{  $}}542    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0543    ; GCN-NEXT: %x:_(s16) = G_TRUNC [[COPY]](s32)544    ; GCN-NEXT: %ten:_(s16) = G_FCONSTANT half 0xH4900545    ; GCN-NEXT: [[INT:%[0-9]+]]:_(s16) = contract G_INTRINSIC intrinsic(@llvm.amdgcn.rsq), %x(s16)546    ; GCN-NEXT: %rsq:_(s16) = contract G_FMUL [[INT]], %ten547    ; GCN-NEXT: %ext:_(s32) = G_ANYEXT %rsq(s16)548    ; GCN-NEXT: $vgpr0 = COPY %ext(s32)549    %0:_(s32) = COPY $vgpr0550    %x:_(s16) = G_TRUNC %0:_(s32)551    %sqrt:_(s16) = contract G_FSQRT %x552    %ten:_(s16) = G_FCONSTANT half 10.0553    %rsq:_(s16) = contract G_FDIV %ten, %sqrt554    %ext:_(s32) = G_ANYEXT %rsq:_(s16)555    $vgpr0 = COPY %ext556 557...558 559---560name:            neg_rsq_large_num_f16561tracksRegLiveness: true562body:             |563  bb.0:564    liveins: $vgpr0565 566    ; GCN-LABEL: name: neg_rsq_large_num_f16567    ; GCN: liveins: $vgpr0568    ; GCN-NEXT: {{  $}}569    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0570    ; GCN-NEXT: %x:_(s16) = G_TRUNC [[COPY]](s32)571    ; GCN-NEXT: %neg_ten:_(s16) = G_FCONSTANT half 0xHC900572    ; GCN-NEXT: [[INT:%[0-9]+]]:_(s16) = contract G_INTRINSIC intrinsic(@llvm.amdgcn.rsq), %x(s16)573    ; GCN-NEXT: %rsq:_(s16) = contract G_FMUL [[INT]], %neg_ten574    ; GCN-NEXT: %ext:_(s32) = G_ANYEXT %rsq(s16)575    ; GCN-NEXT: $vgpr0 = COPY %ext(s32)576    %0:_(s32) = COPY $vgpr0577    %x:_(s16) = G_TRUNC %0:_(s32)578    %sqrt:_(s16) = contract G_FSQRT %x579    %neg_ten:_(s16) = G_FCONSTANT half -10.0580    %rsq:_(s16) = contract G_FDIV %neg_ten, %sqrt581    %ext:_(s32) = G_ANYEXT %rsq:_(s16)582    $vgpr0 = COPY %ext583 584...585