# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py # RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=regbankselect %s -o - | FileCheck %s # RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=regbankselect %s -o - | FileCheck %s # RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=regbankselect %s -o - | FileCheck %s --- name: test_freeze_s1_vgpr_to_vgpr legalized: true body: | bb.0: liveins: $vgpr0 ; CHECK-LABEL: name: test_freeze_s1_vgpr_to_vgpr ; CHECK: liveins: $vgpr0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32) ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(s1) = G_FREEZE [[TRUNC]] ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[FREEZE]](s1) ; CHECK-NEXT: $vgpr0 = COPY [[ANYEXT]](s32) %0:_(s32) = COPY $vgpr0 %1:_(s1) = G_TRUNC %0(s32) %2:_(s1) = G_FREEZE %1 %3:_(s32) = G_ANYEXT %2(s1) $vgpr0 = COPY %3(s32) ... --- name: test_freeze_s1_vgpr_to_agpr legalized: true body: | bb.0: liveins: $vgpr0 ; CHECK-LABEL: name: test_freeze_s1_vgpr_to_agpr ; CHECK: liveins: $vgpr0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32) ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(s1) = G_FREEZE [[TRUNC]] ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[FREEZE]](s1) ; CHECK-NEXT: $agpr0 = COPY [[ANYEXT]](s32) %0:_(s32) = COPY $vgpr0 %1:_(s1) = G_TRUNC %0(s32) %2:_(s1) = G_FREEZE %1 %3:_(s32) = G_ANYEXT %2(s1) $agpr0 = COPY %3(s32) ... --- name: test_freeze_s1_vcc legalized: true body: | bb.0: liveins: $vgpr0, $vgpr1 ; CHECK-LABEL: name: test_freeze_s1_vcc ; CHECK: liveins: $vgpr0, $vgpr1 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]] ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vcc(s1) = G_FREEZE [[ICMP]] ; CHECK-NEXT: S_ENDPGM 0, implicit [[FREEZE]](s1) %0:_(s32) = COPY $vgpr0 %1:_(s32) = COPY $vgpr1 %2:_(s1) = G_ICMP intpred(eq), %0(s32), %1 %3:_(s1) = G_FREEZE %2 S_ENDPGM 0, implicit %3 ... --- name: test_freeze_s16_vgpr_to_vgpr legalized: true body: | bb.0: liveins: $vgpr0 ; CHECK-LABEL: name: test_freeze_s16_vgpr_to_vgpr ; CHECK: liveins: $vgpr0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32) ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(s16) = G_FREEZE [[TRUNC]] ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[FREEZE]](s16) ; CHECK-NEXT: $vgpr0 = COPY [[ANYEXT]](s32) %0:_(s32) = COPY $vgpr0 %1:_(s16) = G_TRUNC %0(s32) %2:_(s16) = G_FREEZE %1 %3:_(s32) = G_ANYEXT %2(s16) $vgpr0 = COPY %3(s32) ... --- name: test_freeze_s32_vgpr_to_vgpr legalized: true body: | bb.0: liveins: $vgpr0 ; CHECK-LABEL: name: test_freeze_s32_vgpr_to_vgpr ; CHECK: liveins: $vgpr0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(s32) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](s32) %0:_(s32) = COPY $vgpr0 %1:_(s32) = G_FREEZE %0 $vgpr0 = COPY %1(s32) ... --- name: test_freeze_s32_sgpr_to_sgpr legalized: true body: | bb.0: liveins: $sgpr0 ; CHECK-LABEL: name: test_freeze_s32_sgpr_to_sgpr ; CHECK: liveins: $sgpr0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:sgpr(s32) = G_FREEZE [[COPY]] ; CHECK-NEXT: $sgpr0 = COPY [[FREEZE]](s32) %0:_(s32) = COPY $sgpr0 %1:_(s32) = G_FREEZE %0 $sgpr0 = COPY %1(s32) ... --- name: test_freeze_s32_sgpr_to_vgpr legalized: true body: | bb.0: liveins: $sgpr0 ; CHECK-LABEL: name: test_freeze_s32_sgpr_to_vgpr ; CHECK: liveins: $sgpr0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:sgpr(s32) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](s32) %0:_(s32) = COPY $sgpr0 %1:_(s32) = G_FREEZE %0 $vgpr0 = COPY %1(s32) ... --- name: test_freeze_s32_vgpr_to_agpr legalized: true body: | bb.0: liveins: $vgpr0 ; CHECK-LABEL: name: test_freeze_s32_vgpr_to_agpr ; CHECK: liveins: $vgpr0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(s32) = G_FREEZE [[COPY]] ; CHECK-NEXT: $agpr0 = COPY [[FREEZE]](s32) %0:_(s32) = COPY $vgpr0 %1:_(s32) = G_FREEZE %0 $agpr0 = COPY %1(s32) ... --- name: test_freeze_s32_sgpr_to_agpr legalized: true body: | bb.0: liveins: $sgpr0 ; CHECK-LABEL: name: test_freeze_s32_sgpr_to_agpr ; CHECK: liveins: $sgpr0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:sgpr(s32) = G_FREEZE [[COPY]] ; CHECK-NEXT: $agpr0 = COPY [[FREEZE]](s32) %0:_(s32) = COPY $sgpr0 %1:_(s32) = G_FREEZE %0 $agpr0 = COPY %1(s32) ... --- name: test_freeze_s32_agpr_to_vgpr legalized: true body: | bb.0: liveins: $agpr0 ; CHECK-LABEL: name: test_freeze_s32_agpr_to_vgpr ; CHECK: liveins: $agpr0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:agpr(s32) = COPY $agpr0 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:agpr(s32) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](s32) %0:_(s32) = COPY $agpr0 %1:_(s32) = G_FREEZE %0 $vgpr0 = COPY %1(s32) ... --- name: test_freeze_s32_agpr_to_agpr legalized: true body: | bb.0: liveins: $agpr0 ; CHECK-LABEL: name: test_freeze_s32_agpr_to_agpr ; CHECK: liveins: $agpr0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:agpr(s32) = COPY $agpr0 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:agpr(s32) = G_FREEZE [[COPY]] ; CHECK-NEXT: $agpr0 = COPY [[FREEZE]](s32) %0:_(s32) = COPY $agpr0 %1:_(s32) = G_FREEZE %0 $agpr0 = COPY %1(s32) ... --- name: test_freeze_s64 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1 ; CHECK-LABEL: name: test_freeze_s64 ; CHECK: liveins: $vgpr0_vgpr1 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(s64) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](s64) %0:_(s64) = COPY $vgpr0_vgpr1 %1:_(s64) = G_FREEZE %0 $vgpr0_vgpr1 = COPY %1(s64) ... --- name: test_freeze_s128 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 ; CHECK-LABEL: name: test_freeze_s128 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(s128) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FREEZE]](s128) %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 %1:_(s128) = G_FREEZE %0 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(s128) ... --- name: test_freeze_256 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 ; CHECK-LABEL: name: test_freeze_256 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(s256) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[FREEZE]](s256) %0:_(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 %1:_(s256) = G_FREEZE %0 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1(s256) ... --- name: test_freeze_s512 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 ; CHECK-LABEL: name: test_freeze_s512 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(s512) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[FREEZE]](s512) %0:_(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 %1:_(s512) = G_FREEZE %0 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %1(s512) ... --- name: test_freeze_v2s32 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1 ; CHECK-LABEL: name: test_freeze_v2s32 ; CHECK: liveins: $vgpr0_vgpr1 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<2 x s32>) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](<2 x s32>) %0:_(<2 x s32>) = COPY $vgpr0_vgpr1 %1:_(<2 x s32>) = G_FREEZE %0 $vgpr0_vgpr1 = COPY %1(<2 x s32>) ... --- name: test_freeze_v3s32 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1_vgpr2 ; CHECK-LABEL: name: test_freeze_v3s32 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<3 x s32>) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[FREEZE]](<3 x s32>) %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 %1:_(<3 x s32>) = G_FREEZE %0 $vgpr0_vgpr1_vgpr2 = COPY %1(<3 x s32>) ... --- name: test_freeze_v4s32 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 ; CHECK-LABEL: name: test_freeze_v4s32 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<4 x s32>) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FREEZE]](<4 x s32>) %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 %1:_(<4 x s32>) = G_FREEZE %0 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(<4 x s32>) ... --- name: test_freeze_v5s32 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 ; CHECK-LABEL: name: test_freeze_v5s32 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<5 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<5 x s32>) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY [[FREEZE]](<5 x s32>) %0:_(<5 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 %1:_(<5 x s32>) = G_FREEZE %0 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY %1(<5 x s32>) ... --- name: test_freeze_v8s32 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 ; CHECK-LABEL: name: test_freeze_v8s32 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<8 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<8 x s32>) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[FREEZE]](<8 x s32>) %0:_(<8 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 %1:_(<8 x s32>) = G_FREEZE %0 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1(<8 x s32>) ... --- name: test_freeze_v16s32 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 ; CHECK-LABEL: name: test_freeze_v16s32 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<16 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<16 x s32>) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[FREEZE]](<16 x s32>) %0:_(<16 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 %1:_(<16 x s32>) = G_FREEZE %0 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %1(<16 x s32>) ... --- name: test_freeze_v2s16 legalized: true body: | bb.0: liveins: $vgpr0 ; CHECK-LABEL: name: test_freeze_v2s16 ; CHECK: liveins: $vgpr0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<2 x s16>) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](<2 x s16>) %0:_(<2 x s16>) = COPY $vgpr0 %1:_(<2 x s16>) = G_FREEZE %0 $vgpr0 = COPY %1(<2 x s16>) ... --- name: test_freeze_v4s16 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1 ; CHECK-LABEL: name: test_freeze_v4s16 ; CHECK: liveins: $vgpr0_vgpr1 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<4 x s16>) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](<4 x s16>) %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 %1:_(<4 x s16>) = G_FREEZE %0 $vgpr0_vgpr1 = COPY %1(<4 x s16>) ... --- name: test_freeze_v6s16 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1_vgpr2 ; CHECK-LABEL: name: test_freeze_v6s16 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr2 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<6 x s16>) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[FREEZE]](<6 x s16>) %0:_(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr2 %1:_(<6 x s16>) = G_FREEZE %0 $vgpr0_vgpr1_vgpr2 = COPY %1(<6 x s16>) ... --- name: test_freeze_v8s16 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 ; CHECK-LABEL: name: test_freeze_v8s16 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<8 x s16>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<8 x s16>) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FREEZE]](<8 x s16>) %0:_(<8 x s16>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 %1:_(<8 x s16>) = G_FREEZE %0 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(<8 x s16>) ... --- name: test_freeze_v2s64 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 ; CHECK-LABEL: name: test_freeze_v2s64 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(<2 x s64>) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[FREEZE]](<2 x s64>) %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 %1:_(<2 x s64>) = G_FREEZE %0 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1(<2 x s64>) ... --- name: test_freeze_p0 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1 ; CHECK-LABEL: name: test_freeze_p0 ; CHECK: liveins: $vgpr0_vgpr1 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(p0) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](p0) %0:_(p0) = COPY $vgpr0_vgpr1 %1:_(p0) = G_FREEZE %0 $vgpr0_vgpr1 = COPY %1(p0) ... --- name: test_freeze_p1 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1 ; CHECK-LABEL: name: test_freeze_p1 ; CHECK: liveins: $vgpr0_vgpr1 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(p1) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](p1) %0:_(p1) = COPY $vgpr0_vgpr1 %1:_(p1) = G_FREEZE %0 $vgpr0_vgpr1 = COPY %1(p1) ... --- name: test_freeze_p2 legalized: true body: | bb.0: liveins: $vgpr0 ; CHECK-LABEL: name: test_freeze_p2 ; CHECK: liveins: $vgpr0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p2) = COPY $vgpr0 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(p2) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](p2) %0:_(p2) = COPY $vgpr0 %1:_(p2) = G_FREEZE %0 $vgpr0 = COPY %1(p2) ... --- name: test_freeze_p3 legalized: true body: | bb.0: liveins: $vgpr0 ; CHECK-LABEL: name: test_freeze_p3 ; CHECK: liveins: $vgpr0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(p3) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](p3) %0:_(p3) = COPY $vgpr0 %1:_(p3) = G_FREEZE %0 $vgpr0 = COPY %1(p3) ... --- name: test_freeze_p4 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1 ; CHECK-LABEL: name: test_freeze_p4 ; CHECK: liveins: $vgpr0_vgpr1 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p4) = COPY $vgpr0_vgpr1 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(p4) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](p4) %0:_(p4) = COPY $vgpr0_vgpr1 %1:_(p4) = G_FREEZE %0 $vgpr0_vgpr1 = COPY %1(p4) ... --- name: test_freeze_p5 legalized: true body: | bb.0: liveins: $vgpr0 ; CHECK-LABEL: name: test_freeze_p5 ; CHECK: liveins: $vgpr0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p5) = COPY $vgpr0 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(p5) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0 = COPY [[FREEZE]](p5) %0:_(p5) = COPY $vgpr0 %1:_(p5) = G_FREEZE %0 $vgpr0 = COPY %1(p5) ... --- name: test_freeze_p999 legalized: true body: | bb.0: liveins: $vgpr0_vgpr1 ; CHECK-LABEL: name: test_freeze_p999 ; CHECK: liveins: $vgpr0_vgpr1 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p999) = COPY $vgpr0_vgpr1 ; CHECK-NEXT: [[FREEZE:%[0-9]+]]:vgpr(p999) = G_FREEZE [[COPY]] ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FREEZE]](p999) %0:_(p999) = COPY $vgpr0_vgpr1 %1:_(p999) = G_FREEZE %0 $vgpr0_vgpr1 = COPY %1(p999) ...