221 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=hawaii -run-pass=regbankselect -regbankselect-fast -verify-machineinstrs -o - %s | FileCheck -check-prefixes=CHECK,FAST %s3# RUN: llc -mtriple=amdgcn -mcpu=hawaii -run-pass=regbankselect -regbankselect-greedy -verify-machineinstrs -o - %s | FileCheck -check-prefixes=CHECK,GREEDY %s4 5---6name: test_implicit_def_s32_vgpr_use7legalized: true8body: |9 bb.0:10 liveins: $vgpr0_vgpr111 12 ; CHECK-LABEL: name: test_implicit_def_s32_vgpr_use13 ; CHECK: liveins: $vgpr0_vgpr114 ; CHECK-NEXT: {{ $}}15 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr116 ; CHECK-NEXT: [[DEF:%[0-9]+]]:sgpr(s32) = G_IMPLICIT_DEF17 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY [[DEF]](s32)18 ; CHECK-NEXT: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store (s32), addrspace 1)19 %0:_(p1) = COPY $vgpr0_vgpr120 %1:_(s32) = G_IMPLICIT_DEF21 G_STORE %1, %0 :: (store (s32), addrspace 1)22 23...24 25---26name: test_implicit_def_s32_sgpr_use27legalized: true28body: |29 bb.0:30 ; CHECK-LABEL: name: test_implicit_def_s32_sgpr_use31 ; CHECK: [[DEF:%[0-9]+]]:sgpr(s32) = G_IMPLICIT_DEF32 ; CHECK-NEXT: G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.amdgcn.s.sendmsg), 0, [[DEF]](s32)33 %0:_(s32) = G_IMPLICIT_DEF34 G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.amdgcn.s.sendmsg), 0, %035 36...37 38---39name: test_implicit_def_s64_vgpr_use40legalized: true41body: |42 bb.0:43 liveins: $vgpr0_vgpr144 45 ; CHECK-LABEL: name: test_implicit_def_s64_vgpr_use46 ; CHECK: liveins: $vgpr0_vgpr147 ; CHECK-NEXT: {{ $}}48 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr149 ; CHECK-NEXT: [[DEF:%[0-9]+]]:sgpr(s64) = G_IMPLICIT_DEF50 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY [[DEF]](s64)51 ; CHECK-NEXT: G_STORE [[COPY1]](s64), [[COPY]](p1) :: (store (s64), addrspace 1)52 %0:_(p1) = COPY $vgpr0_vgpr153 %1:_(s64) = G_IMPLICIT_DEF54 G_STORE %1, %0 :: (store (s64), addrspace 1)55 56...57 58---59name: test_implicit_def_v3s32_vgpr_use60legalized: true61body: |62 bb.0:63 liveins: $vgpr0_vgpr164 65 ; CHECK-LABEL: name: test_implicit_def_v3s32_vgpr_use66 ; CHECK: liveins: $vgpr0_vgpr167 ; CHECK-NEXT: {{ $}}68 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr169 ; CHECK-NEXT: [[DEF:%[0-9]+]]:sgpr(<3 x s32>) = G_IMPLICIT_DEF70 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<3 x s32>) = COPY [[DEF]](<3 x s32>)71 ; CHECK-NEXT: G_STORE [[COPY1]](<3 x s32>), [[COPY]](p1) :: (store (<3 x s32>), align 4, addrspace 1)72 %0:_(p1) = COPY $vgpr0_vgpr173 %1:_(<3 x s32>) = G_IMPLICIT_DEF74 G_STORE %1, %0 :: (store (<3 x s32>), addrspace 1, align 4)75 76...77 78---79name: test_implicit_def_v4s32_vgpr_use80legalized: true81body: |82 bb.0:83 liveins: $vgpr0_vgpr184 85 ; CHECK-LABEL: name: test_implicit_def_v4s32_vgpr_use86 ; CHECK: liveins: $vgpr0_vgpr187 ; CHECK-NEXT: {{ $}}88 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr189 ; CHECK-NEXT: [[DEF:%[0-9]+]]:sgpr(<4 x s32>) = G_IMPLICIT_DEF90 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<4 x s32>) = COPY [[DEF]](<4 x s32>)91 ; CHECK-NEXT: G_STORE [[COPY1]](<4 x s32>), [[COPY]](p1) :: (store (<4 x s32>), align 4, addrspace 1)92 %0:_(p1) = COPY $vgpr0_vgpr193 %1:_(<4 x s32>) = G_IMPLICIT_DEF94 G_STORE %1, %0 :: (store (<4 x s32>), addrspace 1, align 4)95 96...97 98---99name: test_implicit_def_s64_sgpr_use100legalized: true101body: |102 bb.0:103 ; CHECK-LABEL: name: test_implicit_def_s64_sgpr_use104 ; CHECK: [[DEF:%[0-9]+]]:sgpr(s64) = G_IMPLICIT_DEF105 ; CHECK-NEXT: $sgpr8_sgpr9 = COPY [[DEF]](s64)106 %0:_(s64) = G_IMPLICIT_DEF107 $sgpr8_sgpr9 = COPY %0108 109...110 111---112name: test_implicit_def_s128_sgpr_use113legalized: true114body: |115 bb.0:116 ; CHECK-LABEL: name: test_implicit_def_s128_sgpr_use117 ; CHECK: [[DEF:%[0-9]+]]:sgpr(s128) = G_IMPLICIT_DEF118 ; CHECK-NEXT: $sgpr8_sgpr9_sgpr10_sgpr11 = COPY [[DEF]](s128)119 %0:_(s128) = G_IMPLICIT_DEF120 $sgpr8_sgpr9_sgpr10_sgpr11 = COPY %0121 122...123 124---125name: test_implicit_def_s1_sgpr_use126legalized: true127body: |128 bb.0:129 liveins: $sgpr8, $sgpr9130 ; CHECK-LABEL: name: test_implicit_def_s1_sgpr_use131 ; CHECK: liveins: $sgpr8, $sgpr9132 ; CHECK-NEXT: {{ $}}133 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr8134 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr9135 ; CHECK-NEXT: [[DEF:%[0-9]+]]:sgpr(s32) = G_IMPLICIT_DEF136 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[DEF]](s32)137 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1)138 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[ZEXT]](s32), [[COPY]], [[COPY1]]139 ; CHECK-NEXT: S_ENDPGM 0, implicit [[SELECT]](s32)140 %0:_(s32) = COPY $sgpr8141 %1:_(s32) = COPY $sgpr9142 %2:_(s1) = G_IMPLICIT_DEF143 %3:_(s32) = G_SELECT %2, %0, %1144 S_ENDPGM 0, implicit %3145 146...147 148---149name: test_implicit_def_s1_vcc_use150legalized: true151body: |152 bb.0:153 liveins: $vgpr0, $vgpr1154 ; CHECK-LABEL: name: test_implicit_def_s1_vcc_use155 ; CHECK: liveins: $vgpr0, $vgpr1156 ; CHECK-NEXT: {{ $}}157 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0158 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1159 ; CHECK-NEXT: [[DEF:%[0-9]+]]:sgpr(s32) = G_IMPLICIT_DEF160 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[DEF]](s32)161 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)162 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY2]](s1), [[COPY]], [[COPY1]]163 ; CHECK-NEXT: S_ENDPGM 0, implicit [[SELECT]](s32)164 %0:_(s32) = COPY $vgpr0165 %1:_(s32) = COPY $vgpr1166 %2:_(s1) = G_IMPLICIT_DEF167 %3:_(s32) = G_SELECT %2, %0, %1168 S_ENDPGM 0, implicit %3169 170...171 172---173name: test_implicit_def_s1_explicit_vcc_use_0174legalized: true175body: |176 bb.0:177 liveins: $vgpr0, $vgpr1178 ; FAST-LABEL: name: test_implicit_def_s1_explicit_vcc_use_0179 ; FAST: liveins: $vgpr0, $vgpr1180 ; FAST-NEXT: {{ $}}181 ; FAST-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0182 ; FAST-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1183 ; FAST-NEXT: [[DEF:%[0-9]+]]:sgpr(s32) = G_IMPLICIT_DEF184 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[DEF]](s32)185 ; FAST-NEXT: [[COPY2:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)186 ; FAST-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY2]](s1), [[COPY]], [[COPY1]]187 ; FAST-NEXT: S_ENDPGM 0, implicit [[SELECT]](s32)188 ; GREEDY-LABEL: name: test_implicit_def_s1_explicit_vcc_use_0189 ; GREEDY: liveins: $vgpr0, $vgpr1190 ; GREEDY-NEXT: {{ $}}191 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0192 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1193 ; GREEDY-NEXT: [[DEF:%[0-9]+]]:vcc(s1) = G_IMPLICIT_DEF194 ; GREEDY-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[DEF]](s1), [[COPY]], [[COPY1]]195 ; GREEDY-NEXT: S_ENDPGM 0, implicit [[SELECT]](s32)196 %0:_(s32) = COPY $vgpr0197 %1:_(s32) = COPY $vgpr1198 %2:vcc(s1) = G_IMPLICIT_DEF199 %3:_(s32) = G_SELECT %2, %0, %1200 S_ENDPGM 0, implicit %3201 202...203 204---205name: test_implicit_def_s1_explicit_vcc_use_1206legalized: true207body: |208 bb.0:209 ; FAST-LABEL: name: test_implicit_def_s1_explicit_vcc_use_1210 ; FAST: [[DEF:%[0-9]+]]:sgpr(s32) = G_IMPLICIT_DEF211 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[DEF]](s32)212 ; FAST-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)213 ; FAST-NEXT: S_ENDPGM 0, implicit [[COPY]](s1)214 ; GREEDY-LABEL: name: test_implicit_def_s1_explicit_vcc_use_1215 ; GREEDY: [[DEF:%[0-9]+]]:vcc(s1) = G_IMPLICIT_DEF216 ; GREEDY-NEXT: S_ENDPGM 0, implicit [[DEF]](s1)217 %2:vcc(s1) = G_IMPLICIT_DEF218 S_ENDPGM 0, implicit %2219 220...221