brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.6 KiB · d4baa5f Raw
351 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: zext_s32_to_s64_s6legalized: true7 8body: |9  bb.0:10    liveins: $sgpr011    ; CHECK-LABEL: name: zext_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 016    ; CHECK-NEXT: [[MV:%[0-9]+]]:sgpr(s64) = G_MERGE_VALUES [[COPY]](s32), [[C]](s32)17    %0:_(s32) = COPY $sgpr018    %1:_(s64) = G_ZEXT %019...20 21---22name: zext_s16_to_s64_s23legalized: true24 25body: |26  bb.0:27    liveins: $sgpr028    ; CHECK-LABEL: name: zext_s16_to_s64_s29    ; CHECK: liveins: $sgpr030    ; CHECK-NEXT: {{  $}}31    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr032    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)33    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s16)34    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 035    ; CHECK-NEXT: [[MV:%[0-9]+]]:sgpr(s64) = G_MERGE_VALUES [[ZEXT]](s32), [[C]](s32)36    %0:_(s32) = COPY $sgpr037    %1:_(s16) = G_TRUNC %038    %2:_(s64) = G_ZEXT %139...40 41---42name: zext_s32_to_s64_v43legalized: true44 45body: |46  bb.0:47    liveins: $vgpr0_vgpr148    ; CHECK-LABEL: name: zext_s32_to_s64_v49    ; CHECK: liveins: $vgpr0_vgpr150    ; CHECK-NEXT: {{  $}}51    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr052    ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 053    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY]](s32), [[C]](s32)54    %0:_(s32) = COPY $vgpr055    %1:_(s64) = G_ZEXT %056...57 58---59name: zext_s1_to_s16_scc60legalized: true61 62body: |63  bb.0:64    liveins: $sgpr0, $sgpr165    ; CHECK-LABEL: name: zext_s1_to_s16_scc66    ; CHECK: liveins: $sgpr0, $sgpr167    ; CHECK-NEXT: {{  $}}68    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr069    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr170    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]71    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 172    ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[ICMP]], [[C]]73    ; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 074    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[AND]](s32), [[C]], [[C1]]75    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[SELECT]](s32)76    ; CHECK-NEXT: [[C2:%[0-9]+]]:sgpr(s16) = G_CONSTANT i16 25577    ; CHECK-NEXT: [[AND1:%[0-9]+]]:sgpr(s16) = G_AND [[TRUNC]], [[C2]]78    %0:_(s32) = COPY $sgpr079    %1:_(s32) = COPY $sgpr180    %2:_(s1) = G_ICMP intpred(eq), %0, %181    %3:_(s16) = G_ZEXT %282    %4:_(s16) = G_CONSTANT i16 25583    %5:_(s16) = G_AND %3, %484...85 86---87name: zext_s1_to_s32_scc88legalized: true89 90body: |91  bb.0:92    liveins: $sgpr0, $sgpr193    ; CHECK-LABEL: name: zext_s1_to_s32_scc94    ; CHECK: liveins: $sgpr0, $sgpr195    ; CHECK-NEXT: {{  $}}96    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr097    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr198    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]99    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1100    ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[ICMP]], [[C]]101    ; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0102    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[AND]](s32), [[C]], [[C1]]103    %0:_(s32) = COPY $sgpr0104    %1:_(s32) = COPY $sgpr1105    %2:_(s1) = G_ICMP intpred(eq), %0, %1106    %3:_(s32) = G_ZEXT %2107...108 109---110name: zext_s1_to_s64_scc111legalized: true112 113body: |114  bb.0:115    liveins: $sgpr0, $sgpr1116    ; CHECK-LABEL: name: zext_s1_to_s64_scc117    ; CHECK: liveins: $sgpr0, $sgpr1118    ; CHECK-NEXT: {{  $}}119    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0120    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1121    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]122    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1123    ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[ICMP]], [[C]]124    ; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s64) = G_CONSTANT i64 1125    ; CHECK-NEXT: [[C2:%[0-9]+]]:sgpr(s64) = G_CONSTANT i64 0126    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:sgpr(s64) = G_SELECT [[AND]](s32), [[C1]], [[C2]]127    %0:_(s32) = COPY $sgpr0128    %1:_(s32) = COPY $sgpr1129    %2:_(s1) = G_ICMP intpred(eq), %0, %1130    %3:_(s64) = G_ZEXT %2131...132 133---134name: zext_s1_to_s16_vcc135legalized: true136 137body: |138  bb.0:139    liveins: $vgpr0, $vgpr1140    ; CHECK-LABEL: name: zext_s1_to_s16_vcc141    ; CHECK: liveins: $vgpr0, $vgpr1142    ; CHECK-NEXT: {{  $}}143    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0144    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1145    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]146    ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s16) = G_CONSTANT i16 1147    ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s16) = G_CONSTANT i16 0148    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s16) = G_SELECT [[ICMP]](s1), [[C]], [[C1]]149    %0:_(s32) = COPY $vgpr0150    %1:_(s32) = COPY $vgpr1151    %2:_(s1) = G_ICMP intpred(eq), %0, %1152    %3:_(s16) = G_ZEXT %2153...154 155---156name: zext_s1_to_s32_vcc157legalized: true158 159body: |160  bb.0:161    liveins: $vgpr0, $vgpr1162    ; CHECK-LABEL: name: zext_s1_to_s32_vcc163    ; CHECK: liveins: $vgpr0, $vgpr1164    ; CHECK-NEXT: {{  $}}165    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0166    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1167    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]168    ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1169    ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0170    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[C]], [[C1]]171    %0:_(s32) = COPY $vgpr0172    %1:_(s32) = COPY $vgpr1173    %2:_(s1) = G_ICMP intpred(eq), %0, %1174    %3:_(s32) = G_ZEXT %2175...176 177---178name: zext_s1_to_s64_vcc179legalized: true180 181body: |182  bb.0:183    liveins: $vgpr0, $vgpr1184    ; CHECK-LABEL: name: zext_s1_to_s64_vcc185    ; CHECK: liveins: $vgpr0, $vgpr1186    ; CHECK-NEXT: {{  $}}187    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0188    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1189    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]190    ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1191    ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0192    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[C]], [[C1]]193    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[C1]](s32)194    %0:_(s32) = COPY $vgpr0195    %1:_(s32) = COPY $vgpr1196    %2:_(s1) = G_ICMP intpred(eq), %0, %1197    %3:_(s64) = G_ZEXT %2198...199 200---201name: zext_s1_to_s16_sgpr202legalized: true203 204body: |205  bb.0:206    liveins: $sgpr0207    ; CHECK-LABEL: name: zext_s1_to_s16_sgpr208    ; CHECK: liveins: $sgpr0209    ; CHECK-NEXT: {{  $}}210    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0211    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1212    ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[COPY]], [[C]]213    ; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0214    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[AND]](s32), [[C]], [[C1]]215    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[SELECT]](s32)216    ; CHECK-NEXT: [[C2:%[0-9]+]]:sgpr(s16) = G_CONSTANT i16 255217    ; CHECK-NEXT: [[AND1:%[0-9]+]]:sgpr(s16) = G_AND [[TRUNC]], [[C2]]218    %0:_(s32) = COPY $sgpr0219    %1:_(s1) = G_TRUNC %0220    %2:_(s16) = G_ZEXT %1221    %3:_(s16) = G_CONSTANT i16 255222    %4:_(s16) = G_AND %2, %3223...224 225---226name: zext_s1_to_s32_sgpr227legalized: true228 229body: |230  bb.0:231    liveins: $sgpr0232    ; CHECK-LABEL: name: zext_s1_to_s32_sgpr233    ; CHECK: liveins: $sgpr0234    ; CHECK-NEXT: {{  $}}235    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0236    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1237    ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[COPY]], [[C]]238    ; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0239    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[AND]](s32), [[C]], [[C1]]240    %0:_(s32) = COPY $sgpr0241    %1:_(s1) = G_TRUNC %0242    %2:_(s32) = G_ZEXT %1243...244 245---246name: zext_s1_to_s64_sgpr247legalized: true248 249body: |250  bb.0:251    liveins: $sgpr0252    ; CHECK-LABEL: name: zext_s1_to_s64_sgpr253    ; CHECK: liveins: $sgpr0254    ; CHECK-NEXT: {{  $}}255    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0256    ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1257    ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[COPY]], [[C]]258    ; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s64) = G_CONSTANT i64 1259    ; CHECK-NEXT: [[C2:%[0-9]+]]:sgpr(s64) = G_CONSTANT i64 0260    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:sgpr(s64) = G_SELECT [[AND]](s32), [[C1]], [[C2]]261    %0:_(s32) = COPY $sgpr0262    %1:_(s1) = G_TRUNC %0263    %2:_(s64) = G_ZEXT %1264...265 266---267name: zext_s1_to_s16_vgpr268legalized: true269 270body: |271  bb.0:272    liveins: $vgpr0273    ; CHECK-LABEL: name: zext_s1_to_s16_vgpr274    ; CHECK: liveins: $vgpr0275    ; CHECK-NEXT: {{  $}}276    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0277    ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1278    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[COPY]], [[C]]279    ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0280    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[AND]](s32), [[C1]]281    ; CHECK-NEXT: [[C2:%[0-9]+]]:vgpr(s16) = G_CONSTANT i16 1282    ; CHECK-NEXT: [[C3:%[0-9]+]]:vgpr(s16) = G_CONSTANT i16 0283    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s16) = G_SELECT [[ICMP]](s1), [[C2]], [[C3]]284    %0:_(s32) = COPY $vgpr0285    %1:_(s1) = G_TRUNC %0286    %2:_(s16) = G_ZEXT %1287...288 289---290name: zext_s1_to_s32_vgpr291legalized: true292 293body: |294  bb.0:295    liveins: $vgpr0296    ; CHECK-LABEL: name: zext_s1_to_s32_vgpr297    ; CHECK: liveins: $vgpr0298    ; CHECK-NEXT: {{  $}}299    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0300    ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1301    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[COPY]], [[C]]302    ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0303    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[AND]](s32), [[C1]]304    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[C]], [[C1]]305    %0:_(s32) = COPY $vgpr0306    %1:_(s1) = G_TRUNC %0307    %2:_(s32) = G_ZEXT %1308...309 310---311name: zext_s1_to_s64_vgpr312legalized: true313 314body: |315  bb.0:316    liveins: $vgpr0317    ; CHECK-LABEL: name: zext_s1_to_s64_vgpr318    ; CHECK: liveins: $vgpr0319    ; CHECK-NEXT: {{  $}}320    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0321    ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1322    ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[COPY]], [[C]]323    ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0324    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[AND]](s32), [[C1]]325    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[C]], [[C1]]326    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[C1]](s32)327    %0:_(s32) = COPY $vgpr0328    %1:_(s1) = G_TRUNC %0329    %2:_(s64) = G_ZEXT %1330...331 332---333name: zext_s16_to_s64_vgpr334legalized: true335 336body: |337  bb.0:338    liveins: $vgpr0339    ; CHECK-LABEL: name: zext_s16_to_s64_vgpr340    ; CHECK: liveins: $vgpr0341    ; CHECK-NEXT: {{  $}}342    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0343    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)344    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:vgpr(s32) = G_ZEXT [[TRUNC]](s16)345    ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0346    ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[ZEXT]](s32), [[C]](s32)347    %0:_(s32) = COPY $vgpr0348    %1:_(s16) = G_TRUNC %0349    %2:_(s64) = G_ZEXT %1350...351