Lines Matching refs:VI
3 …ble-misched=0 -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck --check-prefix=VI %s
38 ; VI-LABEL: frem_f16:
39 ; VI: ; %bb.0:
40 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
41 ; VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x34
42 ; VI-NEXT: s_waitcnt lgkmcnt(0)
43 ; VI-NEXT: s_load_dword s2, s[6:7], 0x0
44 ; VI-NEXT: s_load_dword s0, s[0:1], 0x8
45 ; VI-NEXT: s_waitcnt lgkmcnt(0)
46 ; VI-NEXT: v_cvt_f32_f16_e32 v0, s2
47 ; VI-NEXT: v_cvt_f32_f16_e32 v2, s0
48 ; VI-NEXT: v_mov_b32_e32 v1, s0
49 ; VI-NEXT: v_rcp_f32_e32 v2, v2
50 ; VI-NEXT: v_mul_f32_e32 v0, v0, v2
51 ; VI-NEXT: v_cvt_f16_f32_e32 v0, v0
52 ; VI-NEXT: v_div_fixup_f16 v0, v0, v1, s2
53 ; VI-NEXT: v_trunc_f16_e32 v0, v0
54 ; VI-NEXT: v_fma_f16 v2, -v0, v1, s2
55 ; VI-NEXT: v_mov_b32_e32 v0, s4
56 ; VI-NEXT: v_mov_b32_e32 v1, s5
57 ; VI-NEXT: flat_store_short v[0:1], v2
58 ; VI-NEXT: s_endpgm
88 ; VI-LABEL: fast_frem_f16:
89 ; VI: ; %bb.0:
90 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
91 ; VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x34
92 ; VI-NEXT: s_waitcnt lgkmcnt(0)
93 ; VI-NEXT: s_load_dword s2, s[6:7], 0x0
94 ; VI-NEXT: s_load_dword s0, s[0:1], 0x8
95 ; VI-NEXT: s_waitcnt lgkmcnt(0)
96 ; VI-NEXT: v_mov_b32_e32 v1, s2
97 ; VI-NEXT: v_rcp_f16_e32 v0, s0
98 ; VI-NEXT: v_mul_f16_e32 v0, s2, v0
99 ; VI-NEXT: v_trunc_f16_e32 v0, v0
100 ; VI-NEXT: v_fma_f16 v2, -v0, s0, v1
101 ; VI-NEXT: v_mov_b32_e32 v0, s4
102 ; VI-NEXT: v_mov_b32_e32 v1, s5
103 ; VI-NEXT: flat_store_short v[0:1], v2
104 ; VI-NEXT: s_endpgm
134 ; VI-LABEL: unsafe_frem_f16:
135 ; VI: ; %bb.0:
136 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
137 ; VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x34
138 ; VI-NEXT: s_waitcnt lgkmcnt(0)
139 ; VI-NEXT: s_load_dword s2, s[6:7], 0x0
140 ; VI-NEXT: s_load_dword s0, s[0:1], 0x8
141 ; VI-NEXT: s_waitcnt lgkmcnt(0)
142 ; VI-NEXT: v_mov_b32_e32 v1, s2
143 ; VI-NEXT: v_rcp_f16_e32 v0, s0
144 ; VI-NEXT: v_mul_f16_e32 v0, s2, v0
145 ; VI-NEXT: v_trunc_f16_e32 v0, v0
146 ; VI-NEXT: v_fma_f16 v2, -v0, s0, v1
147 ; VI-NEXT: v_mov_b32_e32 v0, s4
148 ; VI-NEXT: v_mov_b32_e32 v1, s5
149 ; VI-NEXT: flat_store_short v[0:1], v2
150 ; VI-NEXT: s_endpgm
189 ; VI-LABEL: frem_f32:
190 ; VI: ; %bb.0:
191 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
192 ; VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x34
193 ; VI-NEXT: s_waitcnt lgkmcnt(0)
194 ; VI-NEXT: s_load_dword s2, s[6:7], 0x0
195 ; VI-NEXT: s_load_dword s0, s[0:1], 0x10
196 ; VI-NEXT: s_waitcnt lgkmcnt(0)
197 ; VI-NEXT: v_mov_b32_e32 v0, s0
198 ; VI-NEXT: v_div_scale_f32 v1, s[0:1], v0, v0, s2
199 ; VI-NEXT: v_div_scale_f32 v2, vcc, s2, v0, s2
200 ; VI-NEXT: v_rcp_f32_e32 v3, v1
201 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 3
202 ; VI-NEXT: v_fma_f32 v4, -v1, v3, 1.0
203 ; VI-NEXT: v_fma_f32 v3, v4, v3, v3
204 ; VI-NEXT: v_mul_f32_e32 v4, v2, v3
205 ; VI-NEXT: v_fma_f32 v5, -v1, v4, v2
206 ; VI-NEXT: v_fma_f32 v4, v5, v3, v4
207 ; VI-NEXT: v_fma_f32 v1, -v1, v4, v2
208 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 0
209 ; VI-NEXT: v_div_fmas_f32 v1, v1, v3, v4
210 ; VI-NEXT: v_div_fixup_f32 v1, v1, v0, s2
211 ; VI-NEXT: v_trunc_f32_e32 v1, v1
212 ; VI-NEXT: v_fma_f32 v2, -v1, v0, s2
213 ; VI-NEXT: v_mov_b32_e32 v0, s4
214 ; VI-NEXT: v_mov_b32_e32 v1, s5
215 ; VI-NEXT: flat_store_dword v[0:1], v2
216 ; VI-NEXT: s_endpgm
244 ; VI-LABEL: fast_frem_f32:
245 ; VI: ; %bb.0:
246 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
247 ; VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x34
248 ; VI-NEXT: s_waitcnt lgkmcnt(0)
249 ; VI-NEXT: s_load_dword s2, s[6:7], 0x0
250 ; VI-NEXT: s_load_dword s0, s[0:1], 0x10
251 ; VI-NEXT: s_waitcnt lgkmcnt(0)
252 ; VI-NEXT: v_mov_b32_e32 v1, s2
253 ; VI-NEXT: v_rcp_f32_e32 v0, s0
254 ; VI-NEXT: v_mul_f32_e32 v0, s2, v0
255 ; VI-NEXT: v_trunc_f32_e32 v0, v0
256 ; VI-NEXT: v_fma_f32 v2, -v0, s0, v1
257 ; VI-NEXT: v_mov_b32_e32 v0, s4
258 ; VI-NEXT: v_mov_b32_e32 v1, s5
259 ; VI-NEXT: flat_store_dword v[0:1], v2
260 ; VI-NEXT: s_endpgm
288 ; VI-LABEL: unsafe_frem_f32:
289 ; VI: ; %bb.0:
290 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
291 ; VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x34
292 ; VI-NEXT: s_waitcnt lgkmcnt(0)
293 ; VI-NEXT: s_load_dword s2, s[6:7], 0x0
294 ; VI-NEXT: s_load_dword s0, s[0:1], 0x10
295 ; VI-NEXT: s_waitcnt lgkmcnt(0)
296 ; VI-NEXT: v_mov_b32_e32 v1, s2
297 ; VI-NEXT: v_rcp_f32_e32 v0, s0
298 ; VI-NEXT: v_mul_f32_e32 v0, s2, v0
299 ; VI-NEXT: v_trunc_f32_e32 v0, v0
300 ; VI-NEXT: v_fma_f32 v2, -v0, s0, v1
301 ; VI-NEXT: v_mov_b32_e32 v0, s4
302 ; VI-NEXT: v_mov_b32_e32 v1, s5
303 ; VI-NEXT: flat_store_dword v[0:1], v2
304 ; VI-NEXT: s_endpgm
342 ; VI-LABEL: frem_f64:
343 ; VI: ; %bb.0:
344 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
345 ; VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x34
346 ; VI-NEXT: s_waitcnt lgkmcnt(0)
347 ; VI-NEXT: s_load_dwordx2 s[2:3], s[6:7], 0x0
348 ; VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x0
349 ; VI-NEXT: s_waitcnt lgkmcnt(0)
350 ; VI-NEXT: v_mov_b32_e32 v0, s0
351 ; VI-NEXT: v_mov_b32_e32 v1, s1
352 ; VI-NEXT: v_div_scale_f64 v[2:3], s[0:1], v[0:1], v[0:1], s[2:3]
353 ; VI-NEXT: v_div_scale_f64 v[8:9], vcc, s[2:3], v[0:1], s[2:3]
354 ; VI-NEXT: v_rcp_f64_e32 v[4:5], v[2:3]
355 ; VI-NEXT: v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0
356 ; VI-NEXT: v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]
357 ; VI-NEXT: v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0
358 ; VI-NEXT: v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]
359 ; VI-NEXT: v_mul_f64 v[6:7], v[8:9], v[4:5]
360 ; VI-NEXT: v_fma_f64 v[2:3], -v[2:3], v[6:7], v[8:9]
361 ; VI-NEXT: v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[6:7]
362 ; VI-NEXT: v_div_fixup_f64 v[2:3], v[2:3], v[0:1], s[2:3]
363 ; VI-NEXT: v_trunc_f64_e32 v[2:3], v[2:3]
364 ; VI-NEXT: v_fma_f64 v[0:1], -v[2:3], v[0:1], s[2:3]
365 ; VI-NEXT: v_mov_b32_e32 v2, s4
366 ; VI-NEXT: v_mov_b32_e32 v3, s5
367 ; VI-NEXT: flat_store_dwordx2 v[2:3], v[0:1]
368 ; VI-NEXT: s_endpgm
402 ; VI-LABEL: fast_frem_f64:
403 ; VI: ; %bb.0:
404 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
405 ; VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x34
406 ; VI-NEXT: s_waitcnt lgkmcnt(0)
407 ; VI-NEXT: s_load_dwordx2 s[2:3], s[6:7], 0x0
408 ; VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x0
409 ; VI-NEXT: s_waitcnt lgkmcnt(0)
410 ; VI-NEXT: v_rcp_f64_e32 v[0:1], s[0:1]
411 ; VI-NEXT: v_fma_f64 v[2:3], -s[0:1], v[0:1], 1.0
412 ; VI-NEXT: v_fma_f64 v[0:1], v[2:3], v[0:1], v[0:1]
413 ; VI-NEXT: v_fma_f64 v[2:3], -s[0:1], v[0:1], 1.0
414 ; VI-NEXT: v_fma_f64 v[0:1], v[2:3], v[0:1], v[0:1]
415 ; VI-NEXT: v_mov_b32_e32 v2, s2
416 ; VI-NEXT: v_mov_b32_e32 v3, s3
417 ; VI-NEXT: v_mul_f64 v[4:5], s[2:3], v[0:1]
418 ; VI-NEXT: v_fma_f64 v[6:7], -s[0:1], v[4:5], v[2:3]
419 ; VI-NEXT: v_fma_f64 v[0:1], v[6:7], v[0:1], v[4:5]
420 ; VI-NEXT: v_trunc_f64_e32 v[0:1], v[0:1]
421 ; VI-NEXT: v_fma_f64 v[0:1], -v[0:1], s[0:1], v[2:3]
422 ; VI-NEXT: v_mov_b32_e32 v2, s4
423 ; VI-NEXT: v_mov_b32_e32 v3, s5
424 ; VI-NEXT: flat_store_dwordx2 v[2:3], v[0:1]
425 ; VI-NEXT: s_endpgm
459 ; VI-LABEL: unsafe_frem_f64:
460 ; VI: ; %bb.0:
461 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
462 ; VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x34
463 ; VI-NEXT: s_waitcnt lgkmcnt(0)
464 ; VI-NEXT: s_load_dwordx2 s[2:3], s[6:7], 0x0
465 ; VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x0
466 ; VI-NEXT: s_waitcnt lgkmcnt(0)
467 ; VI-NEXT: v_rcp_f64_e32 v[0:1], s[0:1]
468 ; VI-NEXT: v_fma_f64 v[2:3], -s[0:1], v[0:1], 1.0
469 ; VI-NEXT: v_fma_f64 v[0:1], v[2:3], v[0:1], v[0:1]
470 ; VI-NEXT: v_fma_f64 v[2:3], -s[0:1], v[0:1], 1.0
471 ; VI-NEXT: v_fma_f64 v[0:1], v[2:3], v[0:1], v[0:1]
472 ; VI-NEXT: v_mov_b32_e32 v2, s2
473 ; VI-NEXT: v_mov_b32_e32 v3, s3
474 ; VI-NEXT: v_mul_f64 v[4:5], s[2:3], v[0:1]
475 ; VI-NEXT: v_fma_f64 v[6:7], -s[0:1], v[4:5], v[2:3]
476 ; VI-NEXT: v_fma_f64 v[0:1], v[6:7], v[0:1], v[4:5]
477 ; VI-NEXT: v_trunc_f64_e32 v[0:1], v[0:1]
478 ; VI-NEXT: v_fma_f64 v[0:1], -v[0:1], s[0:1], v[2:3]
479 ; VI-NEXT: v_mov_b32_e32 v2, s4
480 ; VI-NEXT: v_mov_b32_e32 v3, s5
481 ; VI-NEXT: flat_store_dwordx2 v[2:3], v[0:1]
482 ; VI-NEXT: s_endpgm
548 ; VI-LABEL: frem_v2f16:
549 ; VI: ; %bb.0:
550 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
551 ; VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x34
552 ; VI-NEXT: s_waitcnt lgkmcnt(0)
553 ; VI-NEXT: s_load_dword s2, s[6:7], 0x0
554 ; VI-NEXT: s_load_dword s0, s[0:1], 0x10
555 ; VI-NEXT: s_waitcnt lgkmcnt(0)
556 ; VI-NEXT: v_cvt_f32_f16_e32 v0, s2
557 ; VI-NEXT: v_cvt_f32_f16_e32 v2, s0
558 ; VI-NEXT: s_lshr_b32 s3, s0, 16
559 ; VI-NEXT: v_cvt_f32_f16_e32 v3, s3
560 ; VI-NEXT: v_mov_b32_e32 v1, s0
561 ; VI-NEXT: v_rcp_f32_e32 v2, v2
562 ; VI-NEXT: s_lshr_b32 s1, s2, 16
563 ; VI-NEXT: v_rcp_f32_e32 v3, v3
564 ; VI-NEXT: v_mul_f32_e32 v0, v0, v2
565 ; VI-NEXT: v_cvt_f16_f32_e32 v0, v0
566 ; VI-NEXT: v_mov_b32_e32 v2, s3
567 ; VI-NEXT: v_div_fixup_f16 v0, v0, v1, s2
568 ; VI-NEXT: v_trunc_f16_e32 v0, v0
569 ; VI-NEXT: v_fma_f16 v0, -v0, v1, s2
570 ; VI-NEXT: v_cvt_f32_f16_e32 v1, s1
571 ; VI-NEXT: v_mul_f32_e32 v1, v1, v3
572 ; VI-NEXT: v_cvt_f16_f32_e32 v1, v1
573 ; VI-NEXT: v_div_fixup_f16 v1, v1, v2, s1
574 ; VI-NEXT: v_trunc_f16_e32 v1, v1
575 ; VI-NEXT: v_fma_f16 v1, -v1, v2, s1
576 ; VI-NEXT: v_mov_b32_e32 v2, 16
577 ; VI-NEXT: v_lshlrev_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1…
578 ; VI-NEXT: v_or_b32_sdwa v2, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel…
579 ; VI-NEXT: v_mov_b32_e32 v0, s4
580 ; VI-NEXT: v_mov_b32_e32 v1, s5
581 ; VI-NEXT: flat_store_dword v[0:1], v2
582 ; VI-NEXT: s_endpgm
690 ; VI-LABEL: frem_v4f16:
691 ; VI: ; %bb.0:
692 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
693 ; VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x34
694 ; VI-NEXT: s_waitcnt lgkmcnt(0)
695 ; VI-NEXT: s_load_dwordx2 s[2:3], s[6:7], 0x0
696 ; VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x20
697 ; VI-NEXT: s_waitcnt lgkmcnt(0)
698 ; VI-NEXT: v_cvt_f32_f16_e32 v0, s2
699 ; VI-NEXT: v_cvt_f32_f16_e32 v2, s0
700 ; VI-NEXT: s_lshr_b32 s8, s0, 16
701 ; VI-NEXT: v_cvt_f32_f16_e32 v3, s8
702 ; VI-NEXT: v_mov_b32_e32 v1, s0
703 ; VI-NEXT: v_rcp_f32_e32 v2, v2
704 ; VI-NEXT: s_lshr_b32 s6, s2, 16
705 ; VI-NEXT: v_rcp_f32_e32 v3, v3
706 ; VI-NEXT: v_cvt_f32_f16_e32 v4, s1
707 ; VI-NEXT: v_mul_f32_e32 v0, v0, v2
708 ; VI-NEXT: v_cvt_f16_f32_e32 v0, v0
709 ; VI-NEXT: v_mov_b32_e32 v2, s8
710 ; VI-NEXT: v_rcp_f32_e32 v4, v4
711 ; VI-NEXT: s_lshr_b32 s9, s1, 16
712 ; VI-NEXT: v_div_fixup_f16 v0, v0, v1, s2
713 ; VI-NEXT: v_trunc_f16_e32 v0, v0
714 ; VI-NEXT: v_fma_f16 v0, -v0, v1, s2
715 ; VI-NEXT: v_cvt_f32_f16_e32 v1, s6
716 ; VI-NEXT: v_cvt_f32_f16_e32 v5, s9
717 ; VI-NEXT: s_lshr_b32 s7, s3, 16
718 ; VI-NEXT: v_mul_f32_e32 v1, v1, v3
719 ; VI-NEXT: v_cvt_f16_f32_e32 v1, v1
720 ; VI-NEXT: v_mov_b32_e32 v3, s1
721 ; VI-NEXT: v_rcp_f32_e32 v5, v5
722 ; VI-NEXT: v_div_fixup_f16 v1, v1, v2, s6
723 ; VI-NEXT: v_trunc_f16_e32 v1, v1
724 ; VI-NEXT: v_fma_f16 v1, -v1, v2, s6
725 ; VI-NEXT: v_cvt_f32_f16_e32 v2, s3
726 ; VI-NEXT: v_mul_f32_e32 v2, v2, v4
727 ; VI-NEXT: v_cvt_f16_f32_e32 v2, v2
728 ; VI-NEXT: v_mov_b32_e32 v4, s9
729 ; VI-NEXT: v_div_fixup_f16 v2, v2, v3, s3
730 ; VI-NEXT: v_trunc_f16_e32 v2, v2
731 ; VI-NEXT: v_fma_f16 v2, -v2, v3, s3
732 ; VI-NEXT: v_cvt_f32_f16_e32 v3, s7
733 ; VI-NEXT: v_mul_f32_e32 v3, v3, v5
734 ; VI-NEXT: v_cvt_f16_f32_e32 v3, v3
735 ; VI-NEXT: v_div_fixup_f16 v3, v3, v4, s7
736 ; VI-NEXT: v_trunc_f16_e32 v3, v3
737 ; VI-NEXT: v_fma_f16 v3, -v3, v4, s7
738 ; VI-NEXT: v_mov_b32_e32 v4, 16
739 ; VI-NEXT: v_lshlrev_b32_sdwa v1, v4, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1…
740 ; VI-NEXT: v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel…
741 ; VI-NEXT: v_lshlrev_b32_sdwa v1, v4, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1…
742 ; VI-NEXT: v_or_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel…
743 ; VI-NEXT: v_mov_b32_e32 v2, s4
744 ; VI-NEXT: v_mov_b32_e32 v3, s5
745 ; VI-NEXT: flat_store_dwordx2 v[2:3], v[0:1]
746 ; VI-NEXT: s_endpgm
801 ; VI-LABEL: frem_v2f32:
802 ; VI: ; %bb.0:
803 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
804 ; VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x34
805 ; VI-NEXT: s_waitcnt lgkmcnt(0)
806 ; VI-NEXT: s_load_dwordx2 s[2:3], s[6:7], 0x0
807 ; VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x20
808 ; VI-NEXT: s_waitcnt lgkmcnt(0)
809 ; VI-NEXT: v_mov_b32_e32 v0, s0
810 ; VI-NEXT: v_div_scale_f32 v1, s[6:7], v0, v0, s2
811 ; VI-NEXT: v_div_scale_f32 v2, vcc, s2, v0, s2
812 ; VI-NEXT: v_rcp_f32_e32 v3, v1
813 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 3
814 ; VI-NEXT: v_fma_f32 v4, -v1, v3, 1.0
815 ; VI-NEXT: v_fma_f32 v3, v4, v3, v3
816 ; VI-NEXT: v_mul_f32_e32 v4, v2, v3
817 ; VI-NEXT: v_fma_f32 v5, -v1, v4, v2
818 ; VI-NEXT: v_fma_f32 v4, v5, v3, v4
819 ; VI-NEXT: v_fma_f32 v1, -v1, v4, v2
820 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 0
821 ; VI-NEXT: v_div_fmas_f32 v1, v1, v3, v4
822 ; VI-NEXT: v_div_fixup_f32 v1, v1, v0, s2
823 ; VI-NEXT: v_trunc_f32_e32 v1, v1
824 ; VI-NEXT: v_fma_f32 v0, -v1, v0, s2
825 ; VI-NEXT: v_mov_b32_e32 v1, s1
826 ; VI-NEXT: v_div_scale_f32 v2, s[0:1], v1, v1, s3
827 ; VI-NEXT: v_div_scale_f32 v3, vcc, s3, v1, s3
828 ; VI-NEXT: v_rcp_f32_e32 v4, v2
829 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 3
830 ; VI-NEXT: v_fma_f32 v5, -v2, v4, 1.0
831 ; VI-NEXT: v_fma_f32 v4, v5, v4, v4
832 ; VI-NEXT: v_mul_f32_e32 v5, v3, v4
833 ; VI-NEXT: v_fma_f32 v6, -v2, v5, v3
834 ; VI-NEXT: v_fma_f32 v5, v6, v4, v5
835 ; VI-NEXT: v_fma_f32 v2, -v2, v5, v3
836 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 0
837 ; VI-NEXT: v_div_fmas_f32 v2, v2, v4, v5
838 ; VI-NEXT: v_div_fixup_f32 v2, v2, v1, s3
839 ; VI-NEXT: v_trunc_f32_e32 v2, v2
840 ; VI-NEXT: v_fma_f32 v1, -v2, v1, s3
841 ; VI-NEXT: v_mov_b32_e32 v2, s4
842 ; VI-NEXT: v_mov_b32_e32 v3, s5
843 ; VI-NEXT: flat_store_dwordx2 v[2:3], v[0:1]
844 ; VI-NEXT: s_endpgm
931 ; VI-LABEL: frem_v4f32:
932 ; VI: ; %bb.0:
933 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
934 ; VI-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x34
935 ; VI-NEXT: s_waitcnt lgkmcnt(0)
936 ; VI-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0
937 ; VI-NEXT: s_load_dwordx4 s[8:11], s[8:9], 0x40
938 ; VI-NEXT: s_waitcnt lgkmcnt(0)
939 ; VI-NEXT: v_mov_b32_e32 v0, s8
940 ; VI-NEXT: v_div_scale_f32 v1, s[6:7], v0, v0, s0
941 ; VI-NEXT: v_div_scale_f32 v2, vcc, s0, v0, s0
942 ; VI-NEXT: v_rcp_f32_e32 v3, v1
943 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 3
944 ; VI-NEXT: v_fma_f32 v4, -v1, v3, 1.0
945 ; VI-NEXT: v_fma_f32 v3, v4, v3, v3
946 ; VI-NEXT: v_mul_f32_e32 v4, v2, v3
947 ; VI-NEXT: v_fma_f32 v5, -v1, v4, v2
948 ; VI-NEXT: v_fma_f32 v4, v5, v3, v4
949 ; VI-NEXT: v_fma_f32 v1, -v1, v4, v2
950 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 0
951 ; VI-NEXT: v_div_fmas_f32 v1, v1, v3, v4
952 ; VI-NEXT: v_div_fixup_f32 v1, v1, v0, s0
953 ; VI-NEXT: v_trunc_f32_e32 v1, v1
954 ; VI-NEXT: v_fma_f32 v0, -v1, v0, s0
955 ; VI-NEXT: v_mov_b32_e32 v1, s9
956 ; VI-NEXT: v_div_scale_f32 v2, s[6:7], v1, v1, s1
957 ; VI-NEXT: v_div_scale_f32 v3, vcc, s1, v1, s1
958 ; VI-NEXT: v_rcp_f32_e32 v4, v2
959 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 3
960 ; VI-NEXT: v_fma_f32 v5, -v2, v4, 1.0
961 ; VI-NEXT: v_fma_f32 v4, v5, v4, v4
962 ; VI-NEXT: v_mul_f32_e32 v5, v3, v4
963 ; VI-NEXT: v_fma_f32 v6, -v2, v5, v3
964 ; VI-NEXT: v_fma_f32 v5, v6, v4, v5
965 ; VI-NEXT: v_fma_f32 v2, -v2, v5, v3
966 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 0
967 ; VI-NEXT: v_div_fmas_f32 v2, v2, v4, v5
968 ; VI-NEXT: v_div_fixup_f32 v2, v2, v1, s1
969 ; VI-NEXT: v_trunc_f32_e32 v2, v2
970 ; VI-NEXT: v_fma_f32 v1, -v2, v1, s1
971 ; VI-NEXT: v_mov_b32_e32 v2, s10
972 ; VI-NEXT: v_div_scale_f32 v3, s[0:1], v2, v2, s2
973 ; VI-NEXT: v_div_scale_f32 v4, vcc, s2, v2, s2
974 ; VI-NEXT: v_rcp_f32_e32 v5, v3
975 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 3
976 ; VI-NEXT: v_fma_f32 v6, -v3, v5, 1.0
977 ; VI-NEXT: v_fma_f32 v5, v6, v5, v5
978 ; VI-NEXT: v_mul_f32_e32 v6, v4, v5
979 ; VI-NEXT: v_fma_f32 v7, -v3, v6, v4
980 ; VI-NEXT: v_fma_f32 v6, v7, v5, v6
981 ; VI-NEXT: v_fma_f32 v3, -v3, v6, v4
982 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 0
983 ; VI-NEXT: v_div_fmas_f32 v3, v3, v5, v6
984 ; VI-NEXT: v_div_fixup_f32 v3, v3, v2, s2
985 ; VI-NEXT: v_trunc_f32_e32 v3, v3
986 ; VI-NEXT: v_fma_f32 v2, -v3, v2, s2
987 ; VI-NEXT: v_mov_b32_e32 v3, s11
988 ; VI-NEXT: v_div_scale_f32 v4, s[0:1], v3, v3, s3
989 ; VI-NEXT: v_div_scale_f32 v5, vcc, s3, v3, s3
990 ; VI-NEXT: v_rcp_f32_e32 v6, v4
991 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 3
992 ; VI-NEXT: v_fma_f32 v7, -v4, v6, 1.0
993 ; VI-NEXT: v_fma_f32 v6, v7, v6, v6
994 ; VI-NEXT: v_mul_f32_e32 v7, v5, v6
995 ; VI-NEXT: v_fma_f32 v8, -v4, v7, v5
996 ; VI-NEXT: v_fma_f32 v7, v8, v6, v7
997 ; VI-NEXT: v_fma_f32 v4, -v4, v7, v5
998 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 0
999 ; VI-NEXT: v_div_fmas_f32 v4, v4, v6, v7
1000 ; VI-NEXT: v_div_fixup_f32 v4, v4, v3, s3
1001 ; VI-NEXT: v_trunc_f32_e32 v4, v4
1002 ; VI-NEXT: v_fma_f32 v3, -v4, v3, s3
1003 ; VI-NEXT: v_mov_b32_e32 v4, s4
1004 ; VI-NEXT: v_mov_b32_e32 v5, s5
1005 ; VI-NEXT: flat_store_dwordx4 v[4:5], v[0:3]
1006 ; VI-NEXT: s_endpgm
1059 ; VI-LABEL: frem_v2f64:
1060 ; VI: ; %bb.0:
1061 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
1062 ; VI-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x34
1063 ; VI-NEXT: s_waitcnt lgkmcnt(0)
1064 ; VI-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0
1065 ; VI-NEXT: s_load_dwordx4 s[8:11], s[8:9], 0x40
1066 ; VI-NEXT: s_waitcnt lgkmcnt(0)
1067 ; VI-NEXT: v_mov_b32_e32 v0, s8
1068 ; VI-NEXT: v_mov_b32_e32 v1, s9
1069 ; VI-NEXT: v_div_scale_f64 v[2:3], s[6:7], v[0:1], v[0:1], s[0:1]
1070 ; VI-NEXT: v_div_scale_f64 v[8:9], vcc, s[0:1], v[0:1], s[0:1]
1071 ; VI-NEXT: v_rcp_f64_e32 v[4:5], v[2:3]
1072 ; VI-NEXT: v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0
1073 ; VI-NEXT: v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]
1074 ; VI-NEXT: v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0
1075 ; VI-NEXT: v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]
1076 ; VI-NEXT: v_mul_f64 v[6:7], v[8:9], v[4:5]
1077 ; VI-NEXT: v_fma_f64 v[2:3], -v[2:3], v[6:7], v[8:9]
1078 ; VI-NEXT: v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[6:7]
1079 ; VI-NEXT: v_div_fixup_f64 v[2:3], v[2:3], v[0:1], s[0:1]
1080 ; VI-NEXT: v_trunc_f64_e32 v[2:3], v[2:3]
1081 ; VI-NEXT: v_fma_f64 v[0:1], -v[2:3], v[0:1], s[0:1]
1082 ; VI-NEXT: v_mov_b32_e32 v2, s10
1083 ; VI-NEXT: v_mov_b32_e32 v3, s11
1084 ; VI-NEXT: v_div_scale_f64 v[4:5], s[0:1], v[2:3], v[2:3], s[2:3]
1085 ; VI-NEXT: v_div_scale_f64 v[10:11], vcc, s[2:3], v[2:3], s[2:3]
1086 ; VI-NEXT: v_rcp_f64_e32 v[6:7], v[4:5]
1087 ; VI-NEXT: v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0
1088 ; VI-NEXT: v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]
1089 ; VI-NEXT: v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0
1090 ; VI-NEXT: v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]
1091 ; VI-NEXT: v_mul_f64 v[8:9], v[10:11], v[6:7]
1092 ; VI-NEXT: v_fma_f64 v[4:5], -v[4:5], v[8:9], v[10:11]
1093 ; VI-NEXT: v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[8:9]
1094 ; VI-NEXT: v_div_fixup_f64 v[4:5], v[4:5], v[2:3], s[2:3]
1095 ; VI-NEXT: v_trunc_f64_e32 v[4:5], v[4:5]
1096 ; VI-NEXT: v_fma_f64 v[2:3], -v[4:5], v[2:3], s[2:3]
1097 ; VI-NEXT: v_mov_b32_e32 v4, s4
1098 ; VI-NEXT: v_mov_b32_e32 v5, s5
1099 ; VI-NEXT: flat_store_dwordx4 v[4:5], v[0:3]
1100 ; VI-NEXT: s_endpgm