@@ -59,6 +59,7 @@ body: |
5959 %4:vgpr_16 = COPY %3:sgpr_lo16
6060 %5:vgpr_32 = V_ALIGNBIT_B32_t16_e64 0, %0:sreg_32, 0, killed %1:sreg_32, 0, killed %4:vgpr_16, 0, 0, implicit $exec
6161 S_ENDPGM 0, implicit %5
62+ ...
6263
6364---
6465name : fold_16bit_madmix_clamp
@@ -197,3 +198,28 @@ body: |
197198 $vgpr0 = COPY %4
198199 S_ENDPGM 0, implicit $vgpr0
199200 ...
201+
202+ ---
203+ name : fold_imm16_across_reg_sequence
204+ tracksRegLiveness : true
205+ registers :
206+ body : |
207+ bb.0:
208+ liveins: $vgpr0, $vgpr1, $vgpr2
209+ ; CHECK-LABEL: name: fold_imm16_across_reg_sequence
210+ ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2
211+ ; CHECK-NEXT: {{ $}}
212+ ; CHECK-NEXT: [[V_MOV_B16_t16_e64_:%[0-9]+]]:vgpr_16 = V_MOV_B16_t16_e64 0, -1, 0, implicit $exec
213+ ; CHECK-NEXT: [[V_MOV_B16_t16_e64_1:%[0-9]+]]:vgpr_16 = V_MOV_B16_t16_e64 0, -1, 0, implicit $exec
214+ ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vgpr_32 = REG_SEQUENCE [[V_MOV_B16_t16_e64_]], %subreg.lo16, [[V_MOV_B16_t16_e64_1]], %subreg.hi16
215+ ; CHECK-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 0, -1, 0, -1, 0, 0, implicit $mode, implicit $exec
216+ ; CHECK-NEXT: $vgpr0 = COPY [[V_MAX_F32_e64_]]
217+ ; CHECK-NEXT: S_ENDPGM 0, implicit $vgpr0
218+ %0:vgpr_16 = V_MOV_B16_t16_e64 0, -1, 0, implicit $exec
219+ %1:vgpr_16 = V_MOV_B16_t16_e64 0, -1, 0, implicit $exec
220+ %2:vgpr_32 = REG_SEQUENCE %0, %subreg.lo16, %1, %subreg.hi16
221+ %3:vgpr_32 = nofpexcept V_MAX_F32_e64 0, %2, 0, %2, 0, 0, implicit $mode, implicit $exec
222+ $vgpr0 = COPY %3
223+ S_ENDPGM 0, implicit $vgpr0
224+ ...
225+
0 commit comments