@@ -74,6 +74,23 @@ body: |
7474 %3:sreg_32 = S_XOR_B32 %2:sreg_32, %1:sreg_32, implicit-def $scc
7575 ...
7676
77+ ---
78+ name : salu16_usedby_valu32
79+ body : |
80+ bb.0:
81+ ; GCN-LABEL: name: salu16_usedby_valu32
82+ ; GCN: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
83+ ; GCN-NEXT: [[DEF1:%[0-9]+]]:sreg_32 = IMPLICIT_DEF
84+ ; GCN-NEXT: [[V_TRUNC_F16_t16_e64_:%[0-9]+]]:vgpr_16 = V_TRUNC_F16_t16_e64 0, [[DEF]].lo16, 0, 0, 0, implicit $mode, implicit $exec
85+ ; GCN-NEXT: [[DEF2:%[0-9]+]]:vgpr_16 = IMPLICIT_DEF
86+ ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vgpr_32 = REG_SEQUENCE [[V_TRUNC_F16_t16_e64_]], %subreg.lo16, [[DEF2]], %subreg.hi16
87+ ; GCN-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[REG_SEQUENCE]], [[DEF]], implicit-def $scc, implicit $exec
88+ %0:vgpr_32 = IMPLICIT_DEF
89+ %1:sreg_32 = COPY %0:vgpr_32
90+ %2:sreg_32 = S_TRUNC_F16 %1:sreg_32, implicit $mode
91+ %3:vgpr_32 = V_XOR_B32_e64 %2:sreg_32, %1:sreg_32, implicit-def $scc, implicit $exec
92+ ...
93+
7794---
7895name : salu32_usedby_salu16
7996body : |
@@ -89,6 +106,62 @@ body: |
89106 %3:sreg_32 = S_TRUNC_F16 %2:sreg_32, implicit $mode
90107 ...
91108
109+ ---
110+ name : salu32_usedby_valu16
111+ body : |
112+ bb.0:
113+ ; GCN-LABEL: name: salu32_usedby_valu16
114+ ; GCN: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
115+ ; GCN-NEXT: [[DEF1:%[0-9]+]]:sreg_32 = IMPLICIT_DEF
116+ ; GCN-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[DEF]], [[DEF]], implicit $exec
117+ ; GCN-NEXT: [[V_TRUNC_F16_t16_e64_:%[0-9]+]]:vgpr_16 = V_TRUNC_F16_t16_e64 0, [[V_XOR_B32_e64_]].lo16, 0, 0, 0, implicit $mode, implicit $exec
118+ %0:vgpr_32 = IMPLICIT_DEF
119+ %1:sreg_32 = COPY %0:vgpr_32
120+ %2:sreg_32 = S_XOR_B32 %1:sreg_32, %1:sreg_32, implicit-def $scc
121+ %3:vgpr_16 = V_TRUNC_F16_t16_e64 0, %2:sreg_32, 0, 0, 0, implicit $mode, implicit $exec
122+ ...
123+
124+ ---
125+ name : copy_vgpr16_sreg32_usedby_salu16
126+ body : |
127+ bb.0:
128+ ; GCN-LABEL: name: copy_vgpr16_sreg32_usedby_salu16
129+ ; GCN: [[DEF:%[0-9]+]]:vgpr_16 = IMPLICIT_DEF
130+ ; GCN-NEXT: [[DEF1:%[0-9]+]]:vgpr_16 = IMPLICIT_DEF
131+ ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vgpr_32 = REG_SEQUENCE [[DEF]], %subreg.lo16, [[DEF1]], %subreg.hi16
132+ ; GCN-NEXT: [[V_TRUNC_F16_t16_e64_:%[0-9]+]]:vgpr_16 = V_TRUNC_F16_t16_e64 0, [[REG_SEQUENCE]].lo16, 0, 0, 0, implicit $mode, implicit $exec
133+ %0:vgpr_16 = IMPLICIT_DEF
134+ %1:sreg_32 = COPY %0:vgpr_16
135+ %2:sreg_32 = S_TRUNC_F16 %1:sreg_32, implicit $mode
136+ ...
137+
138+ ---
139+ name : copy_vgpr16_sreg32_usedby_salu32
140+ body : |
141+ bb.0:
142+ ; GCN-LABEL: name: copy_vgpr16_sreg32_usedby_salu32
143+ ; GCN: [[DEF:%[0-9]+]]:vgpr_16 = IMPLICIT_DEF
144+ ; GCN-NEXT: [[DEF1:%[0-9]+]]:vgpr_16 = IMPLICIT_DEF
145+ ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vgpr_32 = REG_SEQUENCE [[DEF]], %subreg.lo16, [[DEF1]], %subreg.hi16
146+ ; GCN-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[REG_SEQUENCE]], [[REG_SEQUENCE]], implicit $exec
147+ %0:vgpr_16 = IMPLICIT_DEF
148+ %1:sreg_32 = COPY %0:vgpr_16
149+ %2:sreg_32 = S_XOR_B32 %1:sreg_32, %1:sreg_32, implicit-def $scc
150+ ...
151+
152+ ---
153+ name : copy_vgpr32_sreg32_usedby_valu16
154+ body : |
155+ bb.0:
156+ ; GCN-LABEL: name: copy_vgpr32_sreg32_usedby_valu16
157+ ; GCN: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
158+ ; GCN-NEXT: [[DEF1:%[0-9]+]]:sreg_32 = IMPLICIT_DEF
159+ ; GCN-NEXT: [[V_TRUNC_F16_t16_e64_:%[0-9]+]]:vgpr_16 = V_TRUNC_F16_t16_e64 0, [[DEF]].lo16, 0, 0, 0, implicit $mode, implicit $exec
160+ %0:vgpr_32 = IMPLICIT_DEF
161+ %1:sreg_32 = COPY %0:vgpr_32
162+ %2:vgpr_16 = V_TRUNC_F16_t16_e64 0, %1:sreg_32, 0, 0, 0, implicit $mode, implicit $exec
163+ ...
164+
92165---
93166name : S_FMAC_F16
94167body : |
0 commit comments