287 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: anyext_s32_to_s64_s6legalized: true7 8body: |9 bb.0:10 liveins: $sgpr011 ; CHECK-LABEL: name: anyext_s32_to_s64_s12 ; CHECK: liveins: $sgpr013 ; CHECK-NEXT: {{ $}}14 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr015 ; CHECK-NEXT: [[DEF:%[0-9]+]]:sgpr(s32) = G_IMPLICIT_DEF16 ; CHECK-NEXT: [[MV:%[0-9]+]]:sgpr(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)17 %0:_(s32) = COPY $sgpr018 %1:_(s64) = G_ANYEXT %019...20 21---22name: anyext_s32_to_s64_v23legalized: true24 25body: |26 bb.0:27 liveins: $vgpr028 ; CHECK-LABEL: name: anyext_s32_to_s64_v29 ; CHECK: liveins: $vgpr030 ; CHECK-NEXT: {{ $}}31 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr032 ; CHECK-NEXT: [[DEF:%[0-9]+]]:vgpr(s32) = G_IMPLICIT_DEF33 ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)34 %0:_(s32) = COPY $vgpr035 %1:_(s64) = G_ANYEXT %036...37 38---39name: anyext_s1_to_s16_scc40legalized: true41 42body: |43 bb.0:44 liveins: $sgpr0, $sgpr145 ; CHECK-LABEL: name: anyext_s1_to_s16_scc46 ; CHECK: liveins: $sgpr0, $sgpr147 ; CHECK-NEXT: {{ $}}48 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr049 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr150 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]51 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[ICMP]](s32)52 %0:_(s32) = COPY $sgpr053 %1:_(s32) = COPY $sgpr154 %2:_(s1) = G_ICMP intpred(eq), %0, %155 %3:_(s16) = G_ANYEXT %256...57 58---59name: anyext_s1_to_s32_scc60legalized: true61 62body: |63 bb.0:64 liveins: $sgpr0, $sgpr165 ; CHECK-LABEL: name: anyext_s1_to_s32_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: S_ENDPGM 0, implicit [[ICMP]](s32)72 %0:_(s32) = COPY $sgpr073 %1:_(s32) = COPY $sgpr174 %2:_(s1) = G_ICMP intpred(eq), %0, %175 %3:_(s32) = G_ANYEXT %276 S_ENDPGM 0, implicit %377...78 79---80name: anyext_s1_to_s64_scc81legalized: true82 83body: |84 bb.0:85 liveins: $sgpr0, $sgpr186 ; CHECK-LABEL: name: anyext_s1_to_s64_scc87 ; CHECK: liveins: $sgpr0, $sgpr188 ; CHECK-NEXT: {{ $}}89 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr090 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr191 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]92 ; CHECK-NEXT: [[DEF:%[0-9]+]]:sgpr(s32) = G_IMPLICIT_DEF93 ; CHECK-NEXT: [[MV:%[0-9]+]]:sgpr(s64) = G_MERGE_VALUES [[ICMP]](s32), [[DEF]](s32)94 %0:_(s32) = COPY $sgpr095 %1:_(s32) = COPY $sgpr196 %2:_(s1) = G_ICMP intpred(eq), %0, %197 %3:_(s64) = G_ANYEXT %298...99 100---101name: anyext_s1_to_s16_vcc102legalized: true103 104body: |105 bb.0:106 liveins: $vgpr0, $vgpr1107 ; CHECK-LABEL: name: anyext_s1_to_s16_vcc108 ; CHECK: liveins: $vgpr0, $vgpr1109 ; CHECK-NEXT: {{ $}}110 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0111 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1112 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]113 ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s16) = G_CONSTANT i16 1114 ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s16) = G_CONSTANT i16 0115 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s16) = G_SELECT [[ICMP]](s1), [[C]], [[C1]]116 %0:_(s32) = COPY $vgpr0117 %1:_(s32) = COPY $vgpr1118 %2:_(s1) = G_ICMP intpred(eq), %0, %1119 %3:_(s16) = G_ANYEXT %2120...121 122---123name: anyext_s1_to_s32_vcc124legalized: true125 126body: |127 bb.0:128 liveins: $vgpr0, $vgpr1129 ; CHECK-LABEL: name: anyext_s1_to_s32_vcc130 ; CHECK: liveins: $vgpr0, $vgpr1131 ; CHECK-NEXT: {{ $}}132 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0133 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1134 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]135 ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1136 ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0137 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[C]], [[C1]]138 %0:_(s32) = COPY $vgpr0139 %1:_(s32) = COPY $vgpr1140 %2:_(s1) = G_ICMP intpred(eq), %0, %1141 %3:_(s32) = G_ANYEXT %2142...143 144---145name: anyext_s1_to_s64_vcc146legalized: true147 148body: |149 bb.0:150 liveins: $vgpr0, $vgpr1151 ; CHECK-LABEL: name: anyext_s1_to_s64_vcc152 ; CHECK: liveins: $vgpr0, $vgpr1153 ; CHECK-NEXT: {{ $}}154 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0155 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1156 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]157 ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1158 ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0159 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[C]], [[C1]]160 ; CHECK-NEXT: [[DEF:%[0-9]+]]:vgpr(s32) = G_IMPLICIT_DEF161 ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[DEF]](s32)162 %0:_(s32) = COPY $vgpr0163 %1:_(s32) = COPY $vgpr1164 %2:_(s1) = G_ICMP intpred(eq), %0, %1165 %3:_(s64) = G_ANYEXT %2166...167 168---169name: anyext_s1_to_s16_sgpr170legalized: true171 172body: |173 bb.0:174 liveins: $sgpr0175 ; CHECK-LABEL: name: anyext_s1_to_s16_sgpr176 ; CHECK: liveins: $sgpr0177 ; CHECK-NEXT: {{ $}}178 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0179 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)180 %0:_(s32) = COPY $sgpr0181 %1:_(s1) = G_TRUNC %0182 %2:_(s16) = G_ANYEXT %1183...184 185---186name: anyext_s1_to_s32_sgpr187legalized: true188 189body: |190 bb.0:191 liveins: $sgpr0192 ; CHECK-LABEL: name: anyext_s1_to_s32_sgpr193 ; CHECK: liveins: $sgpr0194 ; CHECK-NEXT: {{ $}}195 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0196 ; CHECK-NEXT: S_ENDPGM 0, implicit [[COPY]](s32)197 %0:_(s32) = COPY $sgpr0198 %1:_(s1) = G_TRUNC %0199 %2:_(s32) = G_ANYEXT %1200 S_ENDPGM 0, implicit %2201...202 203---204name: anyext_s1_to_s64_sgpr205legalized: true206 207body: |208 bb.0:209 liveins: $sgpr0210 ; CHECK-LABEL: name: anyext_s1_to_s64_sgpr211 ; CHECK: liveins: $sgpr0212 ; CHECK-NEXT: {{ $}}213 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0214 ; CHECK-NEXT: [[DEF:%[0-9]+]]:sgpr(s32) = G_IMPLICIT_DEF215 ; CHECK-NEXT: [[MV:%[0-9]+]]:sgpr(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)216 %0:_(s32) = COPY $sgpr0217 %1:_(s1) = G_TRUNC %0218 %2:_(s64) = G_ANYEXT %1219...220 221---222name: anyext_s1_to_s16_vgpr223legalized: true224 225body: |226 bb.0:227 liveins: $vgpr0228 ; CHECK-LABEL: name: anyext_s1_to_s16_vgpr229 ; CHECK: liveins: $vgpr0230 ; CHECK-NEXT: {{ $}}231 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0232 ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1233 ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[COPY]], [[C]]234 ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0235 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[AND]](s32), [[C1]]236 ; CHECK-NEXT: [[C2:%[0-9]+]]:vgpr(s16) = G_CONSTANT i16 1237 ; CHECK-NEXT: [[C3:%[0-9]+]]:vgpr(s16) = G_CONSTANT i16 0238 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s16) = G_SELECT [[ICMP]](s1), [[C2]], [[C3]]239 %0:_(s32) = COPY $vgpr0240 %1:_(s1) = G_TRUNC %0241 %2:_(s16) = G_ANYEXT %1242...243 244---245name: anyext_s1_to_s32_vgpr246legalized: true247 248body: |249 bb.0:250 liveins: $vgpr0251 ; CHECK-LABEL: name: anyext_s1_to_s32_vgpr252 ; CHECK: liveins: $vgpr0253 ; CHECK-NEXT: {{ $}}254 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0255 ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1256 ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[COPY]], [[C]]257 ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0258 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[AND]](s32), [[C1]]259 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[C]], [[C1]]260 %0:_(s32) = COPY $vgpr0261 %1:_(s1) = G_TRUNC %0262 %2:_(s32) = G_ANYEXT %1263...264 265---266name: anyext_s1_to_s64_vgpr267legalized: true268 269body: |270 bb.0:271 liveins: $vgpr0272 ; CHECK-LABEL: name: anyext_s1_to_s64_vgpr273 ; CHECK: liveins: $vgpr0274 ; CHECK-NEXT: {{ $}}275 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0276 ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1277 ; CHECK-NEXT: [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[COPY]], [[C]]278 ; CHECK-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0279 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[AND]](s32), [[C1]]280 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[C]], [[C1]]281 ; CHECK-NEXT: [[DEF:%[0-9]+]]:vgpr(s32) = G_IMPLICIT_DEF282 ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[DEF]](s32)283 %0:_(s32) = COPY $vgpr0284 %1:_(s1) = G_TRUNC %0285 %2:_(s64) = G_ANYEXT %1286...287