brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.9 KiB · 7bd51b8 Raw
388 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -run-pass=amdgpu-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s3 4---5name:            test_f16_poszero_nsz6tracksRegLiveness: true7body:             |8  bb.0:9    liveins: $vgpr010 11    ; CHECK-LABEL: name: test_f16_poszero_nsz12    ; CHECK: liveins: $vgpr013    ; CHECK-NEXT: {{  $}}14    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr015    ; CHECK-NEXT: %input:_(s16) = G_TRUNC [[COPY]](s32)16    ; CHECK-NEXT: [[FNEG:%[0-9]+]]:_(s16) = G_FNEG %input17    ; CHECK-NEXT: [[FCANONICALIZE:%[0-9]+]]:_(s16) = G_FCANONICALIZE [[FNEG]]18    ; CHECK-NEXT: %res:_(s32) = G_ANYEXT [[FCANONICALIZE]](s16)19    ; CHECK-NEXT: $vgpr0 = COPY %res(s32)20    %0:_(s32) = COPY $vgpr021    %input:_(s16) = G_TRUNC %022    %cst:_(s16) = G_FCONSTANT half 0.023    %sub:_(s16) = nsz G_FSUB %cst, %input24    %res:_(s32) = G_ANYEXT %sub25    $vgpr0 = COPY %res26...27 28---29name:            test_f16_poszero_nonsz_nofold30tracksRegLiveness: true31body:             |32  bb.0:33    liveins: $vgpr034 35    ; CHECK-LABEL: name: test_f16_poszero_nonsz_nofold36    ; CHECK: liveins: $vgpr037    ; CHECK-NEXT: {{  $}}38    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr039    ; CHECK-NEXT: %input:_(s16) = G_TRUNC [[COPY]](s32)40    ; CHECK-NEXT: %cst:_(s16) = G_FCONSTANT half 0xH000041    ; CHECK-NEXT: %sub:_(s16) = G_FSUB %cst, %input42    ; CHECK-NEXT: %res:_(s32) = G_ANYEXT %sub(s16)43    ; CHECK-NEXT: $vgpr0 = COPY %res(s32)44    %0:_(s32) = COPY $vgpr045    %input:_(s16) = G_TRUNC %046    %cst:_(s16) = G_FCONSTANT half 0.047    %sub:_(s16) = G_FSUB %cst, %input48    %res:_(s32) = G_ANYEXT %sub49    $vgpr0 = COPY %res50...51 52---53name:            test_f16_negzero54tracksRegLiveness: true55body:             |56  bb.0:57    liveins: $vgpr058 59    ; CHECK-LABEL: name: test_f16_negzero60    ; CHECK: liveins: $vgpr061    ; CHECK-NEXT: {{  $}}62    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr063    ; CHECK-NEXT: %input:_(s16) = G_TRUNC [[COPY]](s32)64    ; CHECK-NEXT: [[FNEG:%[0-9]+]]:_(s16) = G_FNEG %input65    ; CHECK-NEXT: [[FCANONICALIZE:%[0-9]+]]:_(s16) = G_FCANONICALIZE [[FNEG]]66    ; CHECK-NEXT: %res:_(s32) = G_ANYEXT [[FCANONICALIZE]](s16)67    ; CHECK-NEXT: $vgpr0 = COPY %res(s32)68    %0:_(s32) = COPY $vgpr069    %input:_(s16) = G_TRUNC %070    %cst:_(s16) = G_FCONSTANT half -0.071    %sub:_(s16) = G_FSUB %cst, %input72    %res:_(s32) = G_ANYEXT %sub73    $vgpr0 = COPY %res74...75 76---77name:            test_f32_poszero_nsz78tracksRegLiveness: true79body:             |80  bb.0:81    liveins: $vgpr082 83    ; CHECK-LABEL: name: test_f32_poszero_nsz84    ; CHECK: liveins: $vgpr085    ; CHECK-NEXT: {{  $}}86    ; CHECK-NEXT: %input:_(s32) = COPY $vgpr087    ; CHECK-NEXT: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG %input88    ; CHECK-NEXT: [[FCANONICALIZE:%[0-9]+]]:_(s32) = G_FCANONICALIZE [[FNEG]]89    ; CHECK-NEXT: $vgpr0 = COPY [[FCANONICALIZE]](s32)90    %input:_(s32) = COPY $vgpr091    %cst:_(s32) = G_FCONSTANT float 0.092    %sub:_(s32) = nsz G_FSUB %cst, %input93    $vgpr0 = COPY %sub94...95 96---97name:            test_f32_poszero_nonsz_nofold98tracksRegLiveness: true99body:             |100  bb.0:101    liveins: $vgpr0102 103    ; CHECK-LABEL: name: test_f32_poszero_nonsz_nofold104    ; CHECK: liveins: $vgpr0105    ; CHECK-NEXT: {{  $}}106    ; CHECK-NEXT: %input:_(s32) = COPY $vgpr0107    ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 0.000000e+00108    ; CHECK-NEXT: %sub:_(s32) = G_FSUB %cst, %input109    ; CHECK-NEXT: $vgpr0 = COPY %sub(s32)110    %input:_(s32) = COPY $vgpr0111    %cst:_(s32) = G_FCONSTANT float 0.0112    %sub:_(s32) = G_FSUB %cst, %input113    $vgpr0 = COPY %sub114...115 116---117name:            test_f32_negzero118tracksRegLiveness: true119body:             |120  bb.0:121    liveins: $vgpr0122 123    ; CHECK-LABEL: name: test_f32_negzero124    ; CHECK: liveins: $vgpr0125    ; CHECK-NEXT: {{  $}}126    ; CHECK-NEXT: %input:_(s32) = COPY $vgpr0127    ; CHECK-NEXT: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG %input128    ; CHECK-NEXT: [[FCANONICALIZE:%[0-9]+]]:_(s32) = G_FCANONICALIZE [[FNEG]]129    ; CHECK-NEXT: $vgpr0 = COPY [[FCANONICALIZE]](s32)130    %input:_(s32) = COPY $vgpr0131    %cst:_(s32) = G_FCONSTANT float -0.0132    %sub:_(s32) = G_FSUB %cst, %input133    $vgpr0 = COPY %sub134...135 136---137name:            test_f64_poszero_nsz138tracksRegLiveness: true139body:             |140  bb.0:141    liveins: $vgpr0_vgpr1142 143    ; CHECK-LABEL: name: test_f64_poszero_nsz144    ; CHECK: liveins: $vgpr0_vgpr1145    ; CHECK-NEXT: {{  $}}146    ; CHECK-NEXT: %input:_(s64) = COPY $vgpr0_vgpr1147    ; CHECK-NEXT: [[FNEG:%[0-9]+]]:_(s64) = G_FNEG %input148    ; CHECK-NEXT: [[FCANONICALIZE:%[0-9]+]]:_(s64) = G_FCANONICALIZE [[FNEG]]149    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FCANONICALIZE]](s64)150    %input:_(s64) = COPY $vgpr0_vgpr1151    %cst:_(s64) = G_FCONSTANT double 0.0152    %sub:_(s64) = nsz G_FSUB %cst, %input153    $vgpr0_vgpr1 = COPY %sub154...155 156---157name:            test_f64_poszero_nonsz_nofold158tracksRegLiveness: true159body:             |160  bb.0:161    liveins: $vgpr0_vgpr1162 163    ; CHECK-LABEL: name: test_f64_poszero_nonsz_nofold164    ; CHECK: liveins: $vgpr0_vgpr1165    ; CHECK-NEXT: {{  $}}166    ; CHECK-NEXT: %input:_(s64) = COPY $vgpr0_vgpr1167    ; CHECK-NEXT: %cst:_(s64) = G_FCONSTANT double 0.000000e+00168    ; CHECK-NEXT: %sub:_(s64) = G_FSUB %cst, %input169    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY %sub(s64)170    %input:_(s64) = COPY $vgpr0_vgpr1171    %cst:_(s64) = G_FCONSTANT double 0.0172    %sub:_(s64) = G_FSUB %cst, %input173    $vgpr0_vgpr1 = COPY %sub174...175 176---177name:            test_f64_negzero178tracksRegLiveness: true179body:             |180  bb.0:181    liveins: $vgpr0_vgpr1182 183    ; CHECK-LABEL: name: test_f64_negzero184    ; CHECK: liveins: $vgpr0_vgpr1185    ; CHECK-NEXT: {{  $}}186    ; CHECK-NEXT: %input:_(s64) = COPY $vgpr0_vgpr1187    ; CHECK-NEXT: [[FNEG:%[0-9]+]]:_(s64) = G_FNEG %input188    ; CHECK-NEXT: [[FCANONICALIZE:%[0-9]+]]:_(s64) = G_FCANONICALIZE [[FNEG]]189    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FCANONICALIZE]](s64)190    %input:_(s64) = COPY $vgpr0_vgpr1191    %cst:_(s64) = G_FCONSTANT double -0.0192    %sub:_(s64) = G_FSUB %cst, %input193    $vgpr0_vgpr1 = COPY %sub194...195 196---197name:            test_v4f16_poszero_nsz198tracksRegLiveness: true199body:             |200  bb.0:201    liveins: $vgpr0_vgpr1202 203    ; CHECK-LABEL: name: test_v4f16_poszero_nsz204    ; CHECK: liveins: $vgpr0_vgpr1205    ; CHECK-NEXT: {{  $}}206    ; CHECK-NEXT: %input:_(<4 x s16>) = COPY $vgpr0_vgpr1207    ; CHECK-NEXT: [[FNEG:%[0-9]+]]:_(<4 x s16>) = G_FNEG %input208    ; CHECK-NEXT: [[FCANONICALIZE:%[0-9]+]]:_(<4 x s16>) = G_FCANONICALIZE [[FNEG]]209    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FCANONICALIZE]](<4 x s16>)210    %input:_(<4 x s16>) = COPY $vgpr0_vgpr1211    %cst:_(s16) = G_FCONSTANT half 0.0212    %veccst:_(<4 x s16>) = G_BUILD_VECTOR %cst, %cst, %cst, %cst213    %sub:_(<4 x s16>) = nsz G_FSUB %veccst, %input214    $vgpr0_vgpr1 = COPY %sub215...216 217---218name:            test_v4f16_poszero_nonsz_nofold219tracksRegLiveness: true220body:             |221  bb.0:222    liveins: $vgpr0_vgpr1223 224    ; CHECK-LABEL: name: test_v4f16_poszero_nonsz_nofold225    ; CHECK: liveins: $vgpr0_vgpr1226    ; CHECK-NEXT: {{  $}}227    ; CHECK-NEXT: %input:_(<4 x s16>) = COPY $vgpr0_vgpr1228    ; CHECK-NEXT: %cst:_(s16) = G_FCONSTANT half 0xH0000229    ; CHECK-NEXT: %veccst:_(<4 x s16>) = G_BUILD_VECTOR %cst(s16), %cst(s16), %cst(s16), %cst(s16)230    ; CHECK-NEXT: %sub:_(<4 x s16>) = G_FSUB %veccst, %input231    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY %sub(<4 x s16>)232    %input:_(<4 x s16>) = COPY $vgpr0_vgpr1233    %cst:_(s16) = G_FCONSTANT half 0.0234    %veccst:_(<4 x s16>) = G_BUILD_VECTOR %cst, %cst, %cst, %cst235    %sub:_(<4 x s16>) = G_FSUB %veccst, %input236    $vgpr0_vgpr1 = COPY %sub237...238 239---240name:            test_v4f16_negzero241tracksRegLiveness: true242body:             |243  bb.0:244    liveins: $vgpr0_vgpr1245 246    ; CHECK-LABEL: name: test_v4f16_negzero247    ; CHECK: liveins: $vgpr0_vgpr1248    ; CHECK-NEXT: {{  $}}249    ; CHECK-NEXT: %input:_(<4 x s16>) = COPY $vgpr0_vgpr1250    ; CHECK-NEXT: [[FNEG:%[0-9]+]]:_(<4 x s16>) = G_FNEG %input251    ; CHECK-NEXT: [[FCANONICALIZE:%[0-9]+]]:_(<4 x s16>) = G_FCANONICALIZE [[FNEG]]252    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FCANONICALIZE]](<4 x s16>)253    %input:_(<4 x s16>) = COPY $vgpr0_vgpr1254    %cst:_(s16) = G_FCONSTANT half -0.0255    %veccst:_(<4 x s16>) = G_BUILD_VECTOR %cst, %cst, %cst, %cst256    %sub:_(<4 x s16>) = G_FSUB %veccst, %input257    $vgpr0_vgpr1 = COPY %sub258...259 260---261name:            test_v4f32262tracksRegLiveness: true263body:             |264  bb.0:265    liveins: $vgpr0_vgpr1_vgpr2_vgpr3266 267    ; CHECK-LABEL: name: test_v4f32268    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3269    ; CHECK-NEXT: {{  $}}270    ; CHECK-NEXT: %input:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3271    ; CHECK-NEXT: [[FNEG:%[0-9]+]]:_(<4 x s32>) = G_FNEG %input272    ; CHECK-NEXT: [[FCANONICALIZE:%[0-9]+]]:_(<4 x s32>) = G_FCANONICALIZE [[FNEG]]273    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FCANONICALIZE]](<4 x s32>)274    %input:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3275    %cst:_(s32) = G_FCONSTANT float 0.0276    %veccst:_(<4 x s32>) = G_BUILD_VECTOR %cst, %cst, %cst, %cst277    %sub:_(<4 x s32>) = nsz G_FSUB %veccst, %input278    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %sub279...280 281---282name:            test_v4f32_negzero283tracksRegLiveness: true284body:             |285  bb.0:286    liveins: $vgpr0_vgpr1_vgpr2_vgpr3287 288    ; CHECK-LABEL: name: test_v4f32_negzero289    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3290    ; CHECK-NEXT: {{  $}}291    ; CHECK-NEXT: %input:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3292    ; CHECK-NEXT: [[FNEG:%[0-9]+]]:_(<4 x s32>) = G_FNEG %input293    ; CHECK-NEXT: [[FCANONICALIZE:%[0-9]+]]:_(<4 x s32>) = G_FCANONICALIZE [[FNEG]]294    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FCANONICALIZE]](<4 x s32>)295    %input:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3296    %cst:_(s32) = G_FCONSTANT float -0.0297    %veccst:_(<4 x s32>) = G_BUILD_VECTOR %cst, %cst, %cst, %cst298    %sub:_(<4 x s32>) = G_FSUB %veccst, %input299    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %sub300...301 302---303name:            test_v4f32_negzero_undef_elt304tracksRegLiveness: true305body:             |306  bb.0:307    liveins: $vgpr0_vgpr1_vgpr2_vgpr3308 309    ; CHECK-LABEL: name: test_v4f32_negzero_undef_elt310    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3311    ; CHECK-NEXT: {{  $}}312    ; CHECK-NEXT: %input:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3313    ; CHECK-NEXT: [[FNEG:%[0-9]+]]:_(<4 x s32>) = G_FNEG %input314    ; CHECK-NEXT: [[FCANONICALIZE:%[0-9]+]]:_(<4 x s32>) = G_FCANONICALIZE [[FNEG]]315    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FCANONICALIZE]](<4 x s32>)316    %input:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3317    %cst:_(s32) = G_FCONSTANT float -0.0318    %undef:_(s32) = G_IMPLICIT_DEF319    %veccst:_(<4 x s32>) = G_BUILD_VECTOR %cst, %undef, %cst, %cst320    %sub:_(<4 x s32>) = G_FSUB %veccst, %input321    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %sub322...323 324---325name:            test_v4f32_poszero_undef_elt326tracksRegLiveness: true327body:             |328  bb.0:329    liveins: $vgpr0_vgpr1_vgpr2_vgpr3330 331    ; CHECK-LABEL: name: test_v4f32_poszero_undef_elt332    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3333    ; CHECK-NEXT: {{  $}}334    ; CHECK-NEXT: %input:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3335    ; CHECK-NEXT: [[FNEG:%[0-9]+]]:_(<4 x s32>) = G_FNEG %input336    ; CHECK-NEXT: [[FCANONICALIZE:%[0-9]+]]:_(<4 x s32>) = G_FCANONICALIZE [[FNEG]]337    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FCANONICALIZE]](<4 x s32>)338    %input:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3339    %cst:_(s32) = G_FCONSTANT float 0.0340    %undef:_(s32) = G_IMPLICIT_DEF341    %veccst:_(<4 x s32>) = G_BUILD_VECTOR %cst, %undef, %cst, %cst342    %sub:_(<4 x s32>) = nsz G_FSUB %veccst, %input343    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %sub344...345 346---347name:            test_v2f64348tracksRegLiveness: true349body:             |350  bb.0:351    liveins: $vgpr0_vgpr1_vgpr2_vgpr3352 353    ; CHECK-LABEL: name: test_v2f64354    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3355    ; CHECK-NEXT: {{  $}}356    ; CHECK-NEXT: %input:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3357    ; CHECK-NEXT: [[FNEG:%[0-9]+]]:_(<2 x s64>) = G_FNEG %input358    ; CHECK-NEXT: [[FCANONICALIZE:%[0-9]+]]:_(<2 x s64>) = G_FCANONICALIZE [[FNEG]]359    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FCANONICALIZE]](<2 x s64>)360    %input:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3361    %cst:_(s64) = G_FCONSTANT double 0.0362    %veccst:_(<2 x s64>) = G_BUILD_VECTOR %cst, %cst363    %sub:_(<2 x s64>) = nsz G_FSUB %veccst, %input364    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %sub365...366 367---368name:            test_v2f64_negzero369tracksRegLiveness: true370body:             |371  bb.0:372    liveins: $vgpr0_vgpr1_vgpr2_vgpr3373 374    ; CHECK-LABEL: name: test_v2f64_negzero375    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3376    ; CHECK-NEXT: {{  $}}377    ; CHECK-NEXT: %input:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3378    ; CHECK-NEXT: [[FNEG:%[0-9]+]]:_(<2 x s64>) = G_FNEG %input379    ; CHECK-NEXT: [[FCANONICALIZE:%[0-9]+]]:_(<2 x s64>) = G_FCANONICALIZE [[FNEG]]380    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FCANONICALIZE]](<2 x s64>)381    %input:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3382    %cst:_(s64) = G_FCONSTANT double -0.0383    %veccst:_(<2 x s64>) = G_BUILD_VECTOR %cst, %cst384    %sub:_(<2 x s64>) = G_FSUB %veccst, %input385    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %sub386...387 388