brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.3 KiB · e0e783e Raw
361 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass="amdgpu-regbankselect,amdgpu-regbanklegalize" %s -verify-machineinstrs -o - | FileCheck %s3 4---5name: sext_s32_to_s64_s6legalized: true7 8body: |9  bb.0:10    liveins: $sgpr011    ; CHECK-LABEL: name: sext_s32_to_s64_s12    ; CHECK: liveins: $sgpr013    ; CHECK-NEXT: {{  $}}14    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr015    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 3116    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:sgpr(s32) = G_ASHR [[COPY]], [[C]](s32)17    ; CHECK-NEXT: [[MV:%[0-9]+]]:sgpr(s64) = G_MERGE_VALUES [[COPY]](s32), [[ASHR]](s32)18    %0:_(s32) = COPY $sgpr019    %1:_(s64) = G_SEXT %020...21 22---23name: sext_s16_to_s64_s24legalized: true25 26body: |27  bb.0:28    liveins: $sgpr029    ; CHECK-LABEL: name: sext_s16_to_s64_s30    ; CHECK: liveins: $sgpr031    ; CHECK-NEXT: {{  $}}32    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr033    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)34    ; CHECK-NEXT: [[SEXT:%[0-9]+]]:sgpr(s32) = G_SEXT [[TRUNC]](s16)35    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 3136    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:sgpr(s32) = G_ASHR [[SEXT]], [[C]](s32)37    ; CHECK-NEXT: [[MV:%[0-9]+]]:sgpr(s64) = G_MERGE_VALUES [[SEXT]](s32), [[ASHR]](s32)38    %0:_(s32) = COPY $sgpr039    %1:_(s16) = G_TRUNC %040    %2:_(s64) = G_SEXT %141...42 43---44name: sext_s32_to_s64_v45legalized: true46 47body: |48  bb.0:49    liveins: $vgpr0_vgpr150    ; CHECK-LABEL: name: sext_s32_to_s64_v51    ; CHECK: liveins: $vgpr0_vgpr152    ; CHECK-NEXT: {{  $}}53    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr054    ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 3155    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:vgpr(s32) = G_ASHR [[COPY]], [[C]](s32)56    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY]](s32), [[ASHR]](s32)57    %0:_(s32) = COPY $vgpr058    %1:_(s64) = G_SEXT %059...60 61---62name: sext_s1_to_s16_scc63legalized: true64 65body: |66  bb.0:67    liveins: $sgpr0, $sgpr168    ; CHECK-LABEL: name: sext_s1_to_s16_scc69    ; CHECK: liveins: $sgpr0, $sgpr170    ; CHECK-NEXT: {{  $}}71    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr072    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr173    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]74    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 175    ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[ICMP]], [[C]]76    ; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -177    ; CHECK-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 078    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[AND]](s32), [[C1]], [[C2]]79    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[SELECT]](s32)80    ; CHECK-NEXT: [[C3:%[0-9]+]]:sgpr(s16) = G_CONSTANT i16 25581    ; CHECK-NEXT: [[AND1:%[0-9]+]]:sgpr(s16) = G_AND [[TRUNC]], [[C3]]82    %0:_(s32) = COPY $sgpr083    %1:_(s32) = COPY $sgpr184    %2:_(s1) = G_ICMP intpred(eq), %0, %185    %3:_(s16) = G_SEXT %286    %4:_(s16) = G_CONSTANT i16 25587    %5:_(s16) = G_AND %3, %488...89 90---91name: sext_s1_to_s32_scc92legalized: true93 94body: |95  bb.0:96    liveins: $sgpr0, $sgpr197    ; CHECK-LABEL: name: sext_s1_to_s32_scc98    ; CHECK: liveins: $sgpr0, $sgpr199    ; CHECK-NEXT: {{  $}}100    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0101    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1102    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]103    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1104    ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[ICMP]], [[C]]105    ; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -1106    ; CHECK-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0107    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[AND]](s32), [[C1]], [[C2]]108    %0:_(s32) = COPY $sgpr0109    %1:_(s32) = COPY $sgpr1110    %2:_(s1) = G_ICMP intpred(eq), %0, %1111    %3:_(s32) = G_SEXT %2112...113 114---115name: sext_s1_to_s64_scc116legalized: true117 118body: |119  bb.0:120    liveins: $sgpr0, $sgpr1121    ; CHECK-LABEL: name: sext_s1_to_s64_scc122    ; CHECK: liveins: $sgpr0, $sgpr1123    ; CHECK-NEXT: {{  $}}124    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0125    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1126    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]127    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1128    ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[ICMP]], [[C]]129    ; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s64) = G_CONSTANT i64 -1130    ; CHECK-NEXT: [[C2:%[0-9]+]]:sgpr(s64) = G_CONSTANT i64 0131    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:sgpr(s64) = G_SELECT [[AND]](s32), [[C1]], [[C2]]132    %0:_(s32) = COPY $sgpr0133    %1:_(s32) = COPY $sgpr1134    %2:_(s1) = G_ICMP intpred(eq), %0, %1135    %3:_(s64) = G_SEXT %2136...137 138---139name: sext_s1_to_s16_vcc140legalized: true141 142body: |143  bb.0:144    liveins: $vgpr0, $vgpr1145    ; CHECK-LABEL: name: sext_s1_to_s16_vcc146    ; CHECK: liveins: $vgpr0, $vgpr1147    ; CHECK-NEXT: {{  $}}148    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0149    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1150    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]151    ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s16) = G_CONSTANT i16 -1152    ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s16) = G_CONSTANT i16 0153    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s16) = G_SELECT [[ICMP]](s1), [[C]], [[C1]]154    %0:_(s32) = COPY $vgpr0155    %1:_(s32) = COPY $vgpr1156    %2:_(s1) = G_ICMP intpred(eq), %0, %1157    %3:_(s16) = G_SEXT %2158...159 160---161name: sext_s1_to_s32_vcc162legalized: true163 164body: |165  bb.0:166    liveins: $vgpr0, $vgpr1167    ; CHECK-LABEL: name: sext_s1_to_s32_vcc168    ; CHECK: liveins: $vgpr0, $vgpr1169    ; CHECK-NEXT: {{  $}}170    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0171    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1172    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]173    ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 -1174    ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0175    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[C]], [[C1]]176    %0:_(s32) = COPY $vgpr0177    %1:_(s32) = COPY $vgpr1178    %2:_(s1) = G_ICMP intpred(eq), %0, %1179    %3:_(s32) = G_SEXT %2180...181 182---183name: sext_s1_to_s64_vcc184legalized: true185 186body: |187  bb.0:188    liveins: $vgpr0, $vgpr1189    ; CHECK-LABEL: name: sext_s1_to_s64_vcc190    ; CHECK: liveins: $vgpr0, $vgpr1191    ; CHECK-NEXT: {{  $}}192    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0193    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1194    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]195    ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 -1196    ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0197    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[C]], [[C1]]198    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT]](s32)199    %0:_(s32) = COPY $vgpr0200    %1:_(s32) = COPY $vgpr1201    %2:_(s1) = G_ICMP intpred(eq), %0, %1202    %3:_(s64) = G_SEXT %2203...204 205---206name: sext_s1_to_s16_sgpr207legalized: true208 209body: |210  bb.0:211    liveins: $sgpr0212    ; CHECK-LABEL: name: sext_s1_to_s16_sgpr213    ; CHECK: liveins: $sgpr0214    ; CHECK-NEXT: {{  $}}215    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0216    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1217    ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[COPY]], [[C]]218    ; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -1219    ; CHECK-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0220    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[AND]](s32), [[C1]], [[C2]]221    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[SELECT]](s32)222    ; CHECK-NEXT: [[C3:%[0-9]+]]:sgpr(s16) = G_CONSTANT i16 255223    ; CHECK-NEXT: [[AND1:%[0-9]+]]:sgpr(s16) = G_AND [[TRUNC]], [[C3]]224    %0:_(s32) = COPY $sgpr0225    %1:_(s1) = G_TRUNC %0226    %2:_(s16) = G_SEXT %1227    %3:_(s16) = G_CONSTANT i16 255228    %4:_(s16) = G_AND %2, %3229...230 231---232name: sext_s1_to_s32_sgpr233legalized: true234 235body: |236  bb.0:237    liveins: $sgpr0238    ; CHECK-LABEL: name: sext_s1_to_s32_sgpr239    ; CHECK: liveins: $sgpr0240    ; CHECK-NEXT: {{  $}}241    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0242    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1243    ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[COPY]], [[C]]244    ; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -1245    ; CHECK-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0246    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[AND]](s32), [[C1]], [[C2]]247    %0:_(s32) = COPY $sgpr0248    %1:_(s1) = G_TRUNC %0249    %2:_(s32) = G_SEXT %1250...251 252---253name: sext_s1_to_s64_sgpr254legalized: true255 256body: |257  bb.0:258    liveins: $sgpr0259    ; CHECK-LABEL: name: sext_s1_to_s64_sgpr260    ; CHECK: liveins: $sgpr0261    ; CHECK-NEXT: {{  $}}262    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0263    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1264    ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[COPY]], [[C]]265    ; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s64) = G_CONSTANT i64 -1266    ; CHECK-NEXT: [[C2:%[0-9]+]]:sgpr(s64) = G_CONSTANT i64 0267    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:sgpr(s64) = G_SELECT [[AND]](s32), [[C1]], [[C2]]268    %0:_(s32) = COPY $sgpr0269    %1:_(s1) = G_TRUNC %0270    %2:_(s64) = G_SEXT %1271...272 273---274name: sext_s1_to_s16_vgpr275legalized: true276 277body: |278  bb.0:279    liveins: $vgpr0280    ; CHECK-LABEL: name: sext_s1_to_s16_vgpr281    ; CHECK: liveins: $vgpr0282    ; CHECK-NEXT: {{  $}}283    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0284    ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1285    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[COPY]], [[C]]286    ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0287    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[AND]](s32), [[C1]]288    ; CHECK-NEXT: [[C2:%[0-9]+]]:vgpr(s16) = G_CONSTANT i16 -1289    ; CHECK-NEXT: [[C3:%[0-9]+]]:vgpr(s16) = G_CONSTANT i16 0290    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s16) = G_SELECT [[ICMP]](s1), [[C2]], [[C3]]291    %0:_(s32) = COPY $vgpr0292    %1:_(s1) = G_TRUNC %0293    %2:_(s16) = G_SEXT %1294...295 296---297name: sext_s1_to_s32_vgpr298legalized: true299 300body: |301  bb.0:302    liveins: $vgpr0303    ; CHECK-LABEL: name: sext_s1_to_s32_vgpr304    ; CHECK: liveins: $vgpr0305    ; CHECK-NEXT: {{  $}}306    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0307    ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1308    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[COPY]], [[C]]309    ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0310    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[AND]](s32), [[C1]]311    ; CHECK-NEXT: [[C2:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 -1312    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[C2]], [[C1]]313    %0:_(s32) = COPY $vgpr0314    %1:_(s1) = G_TRUNC %0315    %2:_(s32) = G_SEXT %1316...317 318---319name: sext_s1_to_s64_vgpr320legalized: true321 322body: |323  bb.0:324    liveins: $vgpr0325    ; CHECK-LABEL: name: sext_s1_to_s64_vgpr326    ; CHECK: liveins: $vgpr0327    ; CHECK-NEXT: {{  $}}328    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0329    ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1330    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[COPY]], [[C]]331    ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0332    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[AND]](s32), [[C1]]333    ; CHECK-NEXT: [[C2:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 -1334    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[C2]], [[C1]]335    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT]](s32)336    %0:_(s32) = COPY $vgpr0337    %1:_(s1) = G_TRUNC %0338    %2:_(s64) = G_SEXT %1339...340 341---342name: sext_s16_to_s64_vgpr343legalized: true344 345body: |346  bb.0:347    liveins: $vgpr0348    ; CHECK-LABEL: name: sext_s16_to_s64_vgpr349    ; CHECK: liveins: $vgpr0350    ; CHECK-NEXT: {{  $}}351    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0352    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)353    ; CHECK-NEXT: [[SEXT:%[0-9]+]]:vgpr(s32) = G_SEXT [[TRUNC]](s16)354    ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 31355    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:vgpr(s32) = G_ASHR [[SEXT]], [[C]](s32)356    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SEXT]](s32), [[ASHR]](s32)357    %0:_(s32) = COPY $vgpr0358    %1:_(s16) = G_TRUNC %0359    %2:_(s64) = G_SEXT %1360...361