@@ -75,15 +75,8 @@ define bfloat @v_mad_mixlo_bf16_bf16lo_bf16lo_f32_clamp_post_cvt(bfloat %src0, b
7575; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
7676; GFX1250-NEXT: s_wait_kmcnt 0x0
7777; GFX1250-NEXT: v_fma_mixlo_bf16 v0, v0, v1, v2 op_sel_hi:[1,1,0]
78- ; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
79- ; GFX1250-NEXT: v_lshlrev_b32_e32 v0, 16, v0
80- ; GFX1250-NEXT: v_max_num_f32_e32 v0, 0, v0
81- ; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
82- ; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
83- ; GFX1250-NEXT: v_lshlrev_b32_e32 v0, 16, v0
84- ; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
85- ; GFX1250-NEXT: v_min_num_f32_e32 v0, 1.0, v0
86- ; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
78+ ; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
79+ ; GFX1250-NEXT: v_pk_max_num_bf16 v0, v0, v0 clamp
8780; GFX1250-NEXT: s_set_pc_i64 s[30:31]
8881 %src0.ext = fpext bfloat %src0 to float
8982 %src1.ext = fpext bfloat %src1 to float
@@ -199,9 +192,8 @@ define <2 x bfloat> @v_mad_mix_v2f32_clamp_postcvt(<2 x bfloat> %src0, <2 x bflo
199192; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
200193; GFX1250-NEXT: v_pk_fma_f32 v[0:1], v[4:5], v[6:7], v[0:1]
201194; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, v1
202- ; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
203- ; GFX1250-NEXT: v_pk_max_num_bf16 v0, v0, 0
204- ; GFX1250-NEXT: v_pk_min_num_bf16 v0, v0, 1.0 op_sel_hi:[1,0]
195+ ; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
196+ ; GFX1250-NEXT: v_pk_max_num_bf16 v0, v0, v0 clamp
205197; GFX1250-NEXT: s_set_pc_i64 s[30:31]
206198 %src0.ext = fpext <2 x bfloat> %src0 to <2 x float >
207199 %src1.ext = fpext <2 x bfloat> %src1 to <2 x float >
@@ -219,16 +211,13 @@ define <3 x bfloat> @v_mad_mix_v3f32_clamp_postcvt(<3 x bfloat> %src0, <3 x bflo
219211; GFX1250: ; %bb.0:
220212; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
221213; GFX1250-NEXT: s_wait_kmcnt 0x0
222- ; GFX1250-NEXT: v_fma_mixlo_bf16 v6, v0, v2, v4 op_sel_hi:[1,1,1]
223- ; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
224- ; GFX1250-NEXT: v_fma_mixhi_bf16 v6, v0, v2, v4 op_sel:[1,1,1] op_sel_hi:[1,1,1]
225- ; GFX1250-NEXT: v_fma_mixlo_bf16 v0, v1, v3, v5 op_sel_hi:[1,1,1]
226- ; GFX1250-NEXT: v_pk_max_num_bf16 v1, v6, 0
214+ ; GFX1250-NEXT: v_fma_mixlo_bf16 v6, v0, v2, v4 op_sel_hi:[1,1,1] clamp
215+ ; GFX1250-NEXT: v_fma_mixlo_bf16 v1, v1, v3, v5 op_sel_hi:[1,1,1]
227216; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
228- ; GFX1250-NEXT: v_pk_max_num_bf16 v2 , v0, 0
229- ; GFX1250-NEXT: v_pk_min_num_bf16 v0 , v1, 1.0 op_sel_hi:[1,0]
217+ ; GFX1250-NEXT: v_fma_mixhi_bf16 v6 , v0, v2, v4 op_sel:[1,1,1] op_sel_hi:[1,1,1] clamp
218+ ; GFX1250-NEXT: v_pk_max_num_bf16 v1 , v1, v1 clamp
230219; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2)
231- ; GFX1250-NEXT: v_pk_min_num_bf16 v1, v2, 1.0
220+ ; GFX1250-NEXT: v_mov_b32_e32 v0, v6
232221; GFX1250-NEXT: s_set_pc_i64 s[30:31]
233222 %src0.ext = fpext <3 x bfloat> %src0 to <3 x float >
234223 %src1.ext = fpext <3 x bfloat> %src1 to <3 x float >
@@ -261,11 +250,8 @@ define <4 x bfloat> @v_mad_mix_v4f32_clamp_postcvt(<4 x bfloat> %src0, <4 x bflo
261250; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, v1
262251; GFX1250-NEXT: v_cvt_pk_bf16_f32 v1, v2, v3
263252; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
264- ; GFX1250-NEXT: v_pk_max_num_bf16 v0, v0, 0
265- ; GFX1250-NEXT: v_pk_max_num_bf16 v1, v1, 0
266- ; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
267- ; GFX1250-NEXT: v_pk_min_num_bf16 v0, v0, 1.0 op_sel_hi:[1,0]
268- ; GFX1250-NEXT: v_pk_min_num_bf16 v1, v1, 1.0 op_sel_hi:[1,0]
253+ ; GFX1250-NEXT: v_pk_max_num_bf16 v0, v0, v0 clamp
254+ ; GFX1250-NEXT: v_pk_max_num_bf16 v1, v1, v1 clamp
269255; GFX1250-NEXT: s_set_pc_i64 s[30:31]
270256 %src0.ext = fpext <4 x bfloat> %src0 to <4 x float >
271257 %src1.ext = fpext <4 x bfloat> %src1 to <4 x float >
@@ -291,15 +277,7 @@ define <2 x bfloat> @v_mad_mix_v2f32_clamp_postcvt_lo(<2 x bfloat> %src0, <2 x b
291277; GFX1250-NEXT: v_pk_fma_f32 v[0:1], v[4:5], v[6:7], v[0:1]
292278; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, v1
293279; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
294- ; GFX1250-NEXT: v_lshlrev_b32_e32 v1, 16, v0
295- ; GFX1250-NEXT: v_max_num_f32_e32 v1, 0, v1
296- ; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
297- ; GFX1250-NEXT: v_cvt_pk_bf16_f32 v1, v1, s0
298- ; GFX1250-NEXT: v_lshlrev_b32_e32 v1, 16, v1
299- ; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
300- ; GFX1250-NEXT: v_min_num_f32_e32 v1, 1.0, v1
301- ; GFX1250-NEXT: v_cvt_pk_bf16_f32 v1, v1, s0
302- ; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
280+ ; GFX1250-NEXT: v_pk_max_num_bf16 v1, v0, v0 clamp
303281; GFX1250-NEXT: v_bfi_b32 v0, 0xffff, v1, v0
304282; GFX1250-NEXT: s_set_pc_i64 s[30:31]
305283 %src0.ext = fpext <2 x bfloat> %src0 to <2 x float >
@@ -328,14 +306,8 @@ define <2 x bfloat> @v_mad_mix_v2f32_clamp_postcvt_hi(<2 x bfloat> %src0, <2 x b
328306; GFX1250-NEXT: v_pk_fma_f32 v[0:1], v[4:5], v[6:7], v[0:1]
329307; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, v1
330308; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
331- ; GFX1250-NEXT: v_and_b32_e32 v1, 0xffff0000, v0
332- ; GFX1250-NEXT: v_max_num_f32_e32 v1, 0, v1
333- ; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
334- ; GFX1250-NEXT: v_cvt_pk_bf16_f32 v1, v1, s0
335- ; GFX1250-NEXT: v_lshlrev_b32_e32 v1, 16, v1
336- ; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
337- ; GFX1250-NEXT: v_min_num_f32_e32 v1, 1.0, v1
338- ; GFX1250-NEXT: v_cvt_pk_bf16_f32 v1, v1, s0
309+ ; GFX1250-NEXT: v_lshrrev_b32_e32 v1, 16, v0
310+ ; GFX1250-NEXT: v_pk_max_num_bf16 v1, v1, v1 clamp
339311; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
340312; GFX1250-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
341313; GFX1250-NEXT: s_set_pc_i64 s[30:31]
0 commit comments