• Home
  • Raw
  • Download

Lines Matching refs:VI

3 …isched=0 -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,VI %s
42 ; VI-LABEL: frem_f16:
43 ; VI: ; %bb.0:
44 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
45 ; VI-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x34
46 ; VI-NEXT: s_waitcnt lgkmcnt(0)
47 ; VI-NEXT: v_mov_b32_e32 v0, s6
48 ; VI-NEXT: s_add_u32 s0, s8, 8
49 ; VI-NEXT: v_mov_b32_e32 v1, s7
50 ; VI-NEXT: s_addc_u32 s1, s9, 0
51 ; VI-NEXT: flat_load_ushort v2, v[0:1]
52 ; VI-NEXT: v_mov_b32_e32 v0, s0
53 ; VI-NEXT: v_mov_b32_e32 v1, s1
54 ; VI-NEXT: flat_load_ushort v0, v[0:1]
55 ; VI-NEXT: s_waitcnt vmcnt(1)
56 ; VI-NEXT: v_cvt_f32_f16_e32 v1, v2
57 ; VI-NEXT: s_waitcnt vmcnt(0)
58 ; VI-NEXT: v_cvt_f32_f16_e32 v3, v0
59 ; VI-NEXT: v_rcp_f32_e32 v3, v3
60 ; VI-NEXT: v_mul_f32_e32 v1, v1, v3
61 ; VI-NEXT: v_cvt_f16_f32_e32 v1, v1
62 ; VI-NEXT: v_div_fixup_f16 v1, v1, v0, v2
63 ; VI-NEXT: v_trunc_f16_e32 v1, v1
64 ; VI-NEXT: v_fma_f16 v2, -v1, v0, v2
65 ; VI-NEXT: v_mov_b32_e32 v0, s4
66 ; VI-NEXT: v_mov_b32_e32 v1, s5
67 ; VI-NEXT: flat_store_short v[0:1], v2
68 ; VI-NEXT: s_endpgm
102 ; VI-LABEL: fast_frem_f16:
103 ; VI: ; %bb.0:
104 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
105 ; VI-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x34
106 ; VI-NEXT: s_waitcnt lgkmcnt(0)
107 ; VI-NEXT: v_mov_b32_e32 v0, s6
108 ; VI-NEXT: s_add_u32 s0, s8, 8
109 ; VI-NEXT: v_mov_b32_e32 v1, s7
110 ; VI-NEXT: s_addc_u32 s1, s9, 0
111 ; VI-NEXT: flat_load_ushort v2, v[0:1]
112 ; VI-NEXT: v_mov_b32_e32 v0, s0
113 ; VI-NEXT: v_mov_b32_e32 v1, s1
114 ; VI-NEXT: flat_load_ushort v0, v[0:1]
115 ; VI-NEXT: s_waitcnt vmcnt(0)
116 ; VI-NEXT: v_rcp_f16_e32 v1, v0
117 ; VI-NEXT: v_mul_f16_e32 v1, v2, v1
118 ; VI-NEXT: v_trunc_f16_e32 v1, v1
119 ; VI-NEXT: v_fma_f16 v2, -v1, v0, v2
120 ; VI-NEXT: v_mov_b32_e32 v0, s4
121 ; VI-NEXT: v_mov_b32_e32 v1, s5
122 ; VI-NEXT: flat_store_short v[0:1], v2
123 ; VI-NEXT: s_endpgm
157 ; VI-LABEL: unsafe_frem_f16:
158 ; VI: ; %bb.0:
159 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
160 ; VI-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x34
161 ; VI-NEXT: s_waitcnt lgkmcnt(0)
162 ; VI-NEXT: v_mov_b32_e32 v0, s6
163 ; VI-NEXT: s_add_u32 s0, s8, 8
164 ; VI-NEXT: v_mov_b32_e32 v1, s7
165 ; VI-NEXT: s_addc_u32 s1, s9, 0
166 ; VI-NEXT: flat_load_ushort v2, v[0:1]
167 ; VI-NEXT: v_mov_b32_e32 v0, s0
168 ; VI-NEXT: v_mov_b32_e32 v1, s1
169 ; VI-NEXT: flat_load_ushort v0, v[0:1]
170 ; VI-NEXT: s_waitcnt vmcnt(0)
171 ; VI-NEXT: v_rcp_f16_e32 v1, v0
172 ; VI-NEXT: v_mul_f16_e32 v1, v2, v1
173 ; VI-NEXT: v_trunc_f16_e32 v1, v1
174 ; VI-NEXT: v_fma_f16 v2, -v1, v0, v2
175 ; VI-NEXT: v_mov_b32_e32 v0, s4
176 ; VI-NEXT: v_mov_b32_e32 v1, s5
177 ; VI-NEXT: flat_store_short v[0:1], v2
178 ; VI-NEXT: s_endpgm
217 ; VI-LABEL: frem_f32:
218 ; VI: ; %bb.0:
219 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
220 ; VI-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x34
221 ; VI-NEXT: s_waitcnt lgkmcnt(0)
222 ; VI-NEXT: s_load_dword s2, s[6:7], 0x0
223 ; VI-NEXT: s_load_dword s0, s[8:9], 0x10
224 ; VI-NEXT: s_waitcnt lgkmcnt(0)
225 ; VI-NEXT: v_mov_b32_e32 v0, s0
226 ; VI-NEXT: v_div_scale_f32 v1, s[0:1], v0, v0, s2
227 ; VI-NEXT: v_div_scale_f32 v2, vcc, s2, v0, s2
228 ; VI-NEXT: v_rcp_f32_e32 v3, v1
229 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 3
230 ; VI-NEXT: v_fma_f32 v4, -v1, v3, 1.0
231 ; VI-NEXT: v_fma_f32 v3, v4, v3, v3
232 ; VI-NEXT: v_mul_f32_e32 v4, v2, v3
233 ; VI-NEXT: v_fma_f32 v5, -v1, v4, v2
234 ; VI-NEXT: v_fma_f32 v4, v5, v3, v4
235 ; VI-NEXT: v_fma_f32 v1, -v1, v4, v2
236 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 0
237 ; VI-NEXT: v_div_fmas_f32 v1, v1, v3, v4
238 ; VI-NEXT: v_div_fixup_f32 v1, v1, v0, s2
239 ; VI-NEXT: v_trunc_f32_e32 v1, v1
240 ; VI-NEXT: v_fma_f32 v2, -v1, v0, s2
241 ; VI-NEXT: v_mov_b32_e32 v0, s4
242 ; VI-NEXT: v_mov_b32_e32 v1, s5
243 ; VI-NEXT: flat_store_dword v[0:1], v2
244 ; VI-NEXT: s_endpgm
272 ; VI-LABEL: fast_frem_f32:
273 ; VI: ; %bb.0:
274 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
275 ; VI-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x34
276 ; VI-NEXT: s_waitcnt lgkmcnt(0)
277 ; VI-NEXT: s_load_dword s0, s[6:7], 0x0
278 ; VI-NEXT: s_load_dword s1, s[8:9], 0x10
279 ; VI-NEXT: s_waitcnt lgkmcnt(0)
280 ; VI-NEXT: v_mov_b32_e32 v1, s0
281 ; VI-NEXT: v_rcp_f32_e32 v0, s1
282 ; VI-NEXT: v_mul_f32_e32 v0, s0, v0
283 ; VI-NEXT: v_trunc_f32_e32 v0, v0
284 ; VI-NEXT: v_fma_f32 v2, -v0, s1, v1
285 ; VI-NEXT: v_mov_b32_e32 v0, s4
286 ; VI-NEXT: v_mov_b32_e32 v1, s5
287 ; VI-NEXT: flat_store_dword v[0:1], v2
288 ; VI-NEXT: s_endpgm
316 ; VI-LABEL: unsafe_frem_f32:
317 ; VI: ; %bb.0:
318 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
319 ; VI-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x34
320 ; VI-NEXT: s_waitcnt lgkmcnt(0)
321 ; VI-NEXT: s_load_dword s0, s[6:7], 0x0
322 ; VI-NEXT: s_load_dword s1, s[8:9], 0x10
323 ; VI-NEXT: s_waitcnt lgkmcnt(0)
324 ; VI-NEXT: v_mov_b32_e32 v1, s0
325 ; VI-NEXT: v_rcp_f32_e32 v0, s1
326 ; VI-NEXT: v_mul_f32_e32 v0, s0, v0
327 ; VI-NEXT: v_trunc_f32_e32 v0, v0
328 ; VI-NEXT: v_fma_f32 v2, -v0, s1, v1
329 ; VI-NEXT: v_mov_b32_e32 v0, s4
330 ; VI-NEXT: v_mov_b32_e32 v1, s5
331 ; VI-NEXT: flat_store_dword v[0:1], v2
332 ; VI-NEXT: s_endpgm
370 ; VI-LABEL: frem_f64:
371 ; VI: ; %bb.0:
372 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
373 ; VI-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x34
374 ; VI-NEXT: s_waitcnt lgkmcnt(0)
375 ; VI-NEXT: s_load_dwordx2 s[0:1], s[6:7], 0x0
376 ; VI-NEXT: s_load_dwordx2 s[2:3], s[8:9], 0x0
377 ; VI-NEXT: s_waitcnt lgkmcnt(0)
378 ; VI-NEXT: v_mov_b32_e32 v0, s2
379 ; VI-NEXT: v_mov_b32_e32 v1, s3
380 ; VI-NEXT: v_div_scale_f64 v[2:3], s[2:3], v[0:1], v[0:1], s[0:1]
381 ; VI-NEXT: v_div_scale_f64 v[8:9], vcc, s[0:1], v[0:1], s[0:1]
382 ; VI-NEXT: v_rcp_f64_e32 v[4:5], v[2:3]
383 ; VI-NEXT: v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0
384 ; VI-NEXT: v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]
385 ; VI-NEXT: v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0
386 ; VI-NEXT: v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]
387 ; VI-NEXT: v_mul_f64 v[6:7], v[8:9], v[4:5]
388 ; VI-NEXT: v_fma_f64 v[2:3], -v[2:3], v[6:7], v[8:9]
389 ; VI-NEXT: v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[6:7]
390 ; VI-NEXT: v_div_fixup_f64 v[2:3], v[2:3], v[0:1], s[0:1]
391 ; VI-NEXT: v_trunc_f64_e32 v[2:3], v[2:3]
392 ; VI-NEXT: v_fma_f64 v[0:1], -v[2:3], v[0:1], s[0:1]
393 ; VI-NEXT: v_mov_b32_e32 v2, s4
394 ; VI-NEXT: v_mov_b32_e32 v3, s5
395 ; VI-NEXT: flat_store_dwordx2 v[2:3], v[0:1]
396 ; VI-NEXT: s_endpgm
433 ; VI-LABEL: fast_frem_f64:
434 ; VI: ; %bb.0:
435 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
436 ; VI-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x34
437 ; VI-NEXT: s_waitcnt lgkmcnt(0)
438 ; VI-NEXT: s_load_dwordx2 s[0:1], s[6:7], 0x0
439 ; VI-NEXT: s_load_dwordx2 s[2:3], s[8:9], 0x0
440 ; VI-NEXT: s_waitcnt lgkmcnt(0)
441 ; VI-NEXT: v_mov_b32_e32 v0, s2
442 ; VI-NEXT: v_mov_b32_e32 v1, s3
443 ; VI-NEXT: v_div_scale_f64 v[2:3], s[2:3], v[0:1], v[0:1], s[0:1]
444 ; VI-NEXT: v_div_scale_f64 v[8:9], vcc, s[0:1], v[0:1], s[0:1]
445 ; VI-NEXT: v_rcp_f64_e32 v[4:5], v[2:3]
446 ; VI-NEXT: v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0
447 ; VI-NEXT: v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]
448 ; VI-NEXT: v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0
449 ; VI-NEXT: v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]
450 ; VI-NEXT: v_mul_f64 v[6:7], v[8:9], v[4:5]
451 ; VI-NEXT: v_fma_f64 v[2:3], -v[2:3], v[6:7], v[8:9]
452 ; VI-NEXT: v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[6:7]
453 ; VI-NEXT: v_div_fixup_f64 v[2:3], v[2:3], v[0:1], s[0:1]
454 ; VI-NEXT: v_trunc_f64_e32 v[2:3], v[2:3]
455 ; VI-NEXT: v_fma_f64 v[0:1], -v[2:3], v[0:1], s[0:1]
456 ; VI-NEXT: v_mov_b32_e32 v2, s4
457 ; VI-NEXT: v_mov_b32_e32 v3, s5
458 ; VI-NEXT: flat_store_dwordx2 v[2:3], v[0:1]
459 ; VI-NEXT: s_endpgm
487 ; VI-LABEL: unsafe_frem_f64:
488 ; VI: ; %bb.0:
489 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
490 ; VI-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x34
491 ; VI-NEXT: s_waitcnt lgkmcnt(0)
492 ; VI-NEXT: s_load_dwordx2 s[0:1], s[6:7], 0x0
493 ; VI-NEXT: s_load_dwordx2 s[2:3], s[8:9], 0x0
494 ; VI-NEXT: s_waitcnt lgkmcnt(0)
495 ; VI-NEXT: v_mov_b32_e32 v3, s1
496 ; VI-NEXT: v_rcp_f64_e32 v[0:1], s[2:3]
497 ; VI-NEXT: v_mov_b32_e32 v2, s0
498 ; VI-NEXT: v_mul_f64 v[0:1], s[0:1], v[0:1]
499 ; VI-NEXT: v_trunc_f64_e32 v[0:1], v[0:1]
500 ; VI-NEXT: v_fma_f64 v[0:1], -v[0:1], s[2:3], v[2:3]
501 ; VI-NEXT: v_mov_b32_e32 v2, s4
502 ; VI-NEXT: v_mov_b32_e32 v3, s5
503 ; VI-NEXT: flat_store_dwordx2 v[2:3], v[0:1]
504 ; VI-NEXT: s_endpgm
570 ; VI-LABEL: frem_v2f16:
571 ; VI: ; %bb.0:
572 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
573 ; VI-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x34
574 ; VI-NEXT: s_waitcnt lgkmcnt(0)
575 ; VI-NEXT: s_load_dword s0, s[6:7], 0x0
576 ; VI-NEXT: s_load_dword s1, s[8:9], 0x10
577 ; VI-NEXT: s_waitcnt lgkmcnt(0)
578 ; VI-NEXT: v_cvt_f32_f16_e32 v0, s0
579 ; VI-NEXT: v_cvt_f32_f16_e32 v2, s1
580 ; VI-NEXT: s_lshr_b32 s3, s1, 16
581 ; VI-NEXT: v_cvt_f32_f16_e32 v3, s3
582 ; VI-NEXT: v_mov_b32_e32 v1, s1
583 ; VI-NEXT: v_rcp_f32_e32 v2, v2
584 ; VI-NEXT: s_lshr_b32 s2, s0, 16
585 ; VI-NEXT: v_rcp_f32_e32 v3, v3
586 ; VI-NEXT: v_mul_f32_e32 v0, v0, v2
587 ; VI-NEXT: v_cvt_f16_f32_e32 v0, v0
588 ; VI-NEXT: v_mov_b32_e32 v2, s3
589 ; VI-NEXT: v_div_fixup_f16 v0, v0, v1, s0
590 ; VI-NEXT: v_trunc_f16_e32 v0, v0
591 ; VI-NEXT: v_fma_f16 v0, -v0, v1, s0
592 ; VI-NEXT: v_cvt_f32_f16_e32 v1, s2
593 ; VI-NEXT: v_mul_f32_e32 v1, v1, v3
594 ; VI-NEXT: v_cvt_f16_f32_e32 v1, v1
595 ; VI-NEXT: v_div_fixup_f16 v1, v1, v2, s2
596 ; VI-NEXT: v_trunc_f16_e32 v1, v1
597 ; VI-NEXT: v_fma_f16 v1, -v1, v2, s2
598 ; VI-NEXT: v_mov_b32_e32 v2, 16
599 ; VI-NEXT: v_lshlrev_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1…
600 ; VI-NEXT: v_or_b32_sdwa v2, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel…
601 ; VI-NEXT: v_mov_b32_e32 v0, s4
602 ; VI-NEXT: v_mov_b32_e32 v1, s5
603 ; VI-NEXT: flat_store_dword v[0:1], v2
604 ; VI-NEXT: s_endpgm
712 ; VI-LABEL: frem_v4f16:
713 ; VI: ; %bb.0:
714 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
715 ; VI-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x34
716 ; VI-NEXT: s_waitcnt lgkmcnt(0)
717 ; VI-NEXT: s_load_dwordx2 s[0:1], s[6:7], 0x0
718 ; VI-NEXT: s_load_dwordx2 s[2:3], s[8:9], 0x20
719 ; VI-NEXT: s_waitcnt lgkmcnt(0)
720 ; VI-NEXT: v_cvt_f32_f16_e32 v0, s0
721 ; VI-NEXT: v_cvt_f32_f16_e32 v2, s2
722 ; VI-NEXT: s_lshr_b32 s8, s2, 16
723 ; VI-NEXT: v_cvt_f32_f16_e32 v3, s8
724 ; VI-NEXT: v_mov_b32_e32 v1, s2
725 ; VI-NEXT: v_rcp_f32_e32 v2, v2
726 ; VI-NEXT: s_lshr_b32 s6, s0, 16
727 ; VI-NEXT: v_rcp_f32_e32 v3, v3
728 ; VI-NEXT: v_cvt_f32_f16_e32 v4, s3
729 ; VI-NEXT: v_mul_f32_e32 v0, v0, v2
730 ; VI-NEXT: v_cvt_f16_f32_e32 v0, v0
731 ; VI-NEXT: v_mov_b32_e32 v2, s8
732 ; VI-NEXT: v_rcp_f32_e32 v4, v4
733 ; VI-NEXT: s_lshr_b32 s9, s3, 16
734 ; VI-NEXT: v_div_fixup_f16 v0, v0, v1, s0
735 ; VI-NEXT: v_trunc_f16_e32 v0, v0
736 ; VI-NEXT: v_fma_f16 v0, -v0, v1, s0
737 ; VI-NEXT: v_cvt_f32_f16_e32 v1, s6
738 ; VI-NEXT: v_cvt_f32_f16_e32 v5, s9
739 ; VI-NEXT: s_lshr_b32 s7, s1, 16
740 ; VI-NEXT: v_mul_f32_e32 v1, v1, v3
741 ; VI-NEXT: v_cvt_f16_f32_e32 v1, v1
742 ; VI-NEXT: v_mov_b32_e32 v3, s3
743 ; VI-NEXT: v_rcp_f32_e32 v5, v5
744 ; VI-NEXT: v_div_fixup_f16 v1, v1, v2, s6
745 ; VI-NEXT: v_trunc_f16_e32 v1, v1
746 ; VI-NEXT: v_fma_f16 v1, -v1, v2, s6
747 ; VI-NEXT: v_cvt_f32_f16_e32 v2, s1
748 ; VI-NEXT: v_mul_f32_e32 v2, v2, v4
749 ; VI-NEXT: v_cvt_f16_f32_e32 v2, v2
750 ; VI-NEXT: v_mov_b32_e32 v4, s9
751 ; VI-NEXT: v_div_fixup_f16 v2, v2, v3, s1
752 ; VI-NEXT: v_trunc_f16_e32 v2, v2
753 ; VI-NEXT: v_fma_f16 v2, -v2, v3, s1
754 ; VI-NEXT: v_cvt_f32_f16_e32 v3, s7
755 ; VI-NEXT: v_mul_f32_e32 v3, v3, v5
756 ; VI-NEXT: v_cvt_f16_f32_e32 v3, v3
757 ; VI-NEXT: v_div_fixup_f16 v3, v3, v4, s7
758 ; VI-NEXT: v_trunc_f16_e32 v3, v3
759 ; VI-NEXT: v_fma_f16 v3, -v3, v4, s7
760 ; VI-NEXT: v_mov_b32_e32 v4, 16
761 ; VI-NEXT: v_lshlrev_b32_sdwa v1, v4, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1…
762 ; VI-NEXT: v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel…
763 ; VI-NEXT: v_lshlrev_b32_sdwa v1, v4, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1…
764 ; VI-NEXT: v_or_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel…
765 ; VI-NEXT: v_mov_b32_e32 v2, s4
766 ; VI-NEXT: v_mov_b32_e32 v3, s5
767 ; VI-NEXT: flat_store_dwordx2 v[2:3], v[0:1]
768 ; VI-NEXT: s_endpgm
823 ; VI-LABEL: frem_v2f32:
824 ; VI: ; %bb.0:
825 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
826 ; VI-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x34
827 ; VI-NEXT: s_waitcnt lgkmcnt(0)
828 ; VI-NEXT: s_load_dwordx2 s[0:1], s[6:7], 0x0
829 ; VI-NEXT: s_load_dwordx2 s[2:3], s[8:9], 0x20
830 ; VI-NEXT: s_waitcnt lgkmcnt(0)
831 ; VI-NEXT: v_mov_b32_e32 v0, s2
832 ; VI-NEXT: v_div_scale_f32 v1, s[6:7], v0, v0, s0
833 ; VI-NEXT: v_div_scale_f32 v2, vcc, s0, v0, s0
834 ; VI-NEXT: v_rcp_f32_e32 v3, v1
835 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 3
836 ; VI-NEXT: v_fma_f32 v4, -v1, v3, 1.0
837 ; VI-NEXT: v_fma_f32 v3, v4, v3, v3
838 ; VI-NEXT: v_mul_f32_e32 v4, v2, v3
839 ; VI-NEXT: v_fma_f32 v5, -v1, v4, v2
840 ; VI-NEXT: v_fma_f32 v4, v5, v3, v4
841 ; VI-NEXT: v_fma_f32 v1, -v1, v4, v2
842 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 0
843 ; VI-NEXT: v_div_fmas_f32 v1, v1, v3, v4
844 ; VI-NEXT: v_div_fixup_f32 v1, v1, v0, s0
845 ; VI-NEXT: v_trunc_f32_e32 v1, v1
846 ; VI-NEXT: v_fma_f32 v0, -v1, v0, s0
847 ; VI-NEXT: v_mov_b32_e32 v1, s3
848 ; VI-NEXT: v_div_scale_f32 v2, s[2:3], v1, v1, s1
849 ; VI-NEXT: v_div_scale_f32 v3, vcc, s1, v1, s1
850 ; VI-NEXT: v_rcp_f32_e32 v4, v2
851 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 3
852 ; VI-NEXT: v_fma_f32 v5, -v2, v4, 1.0
853 ; VI-NEXT: v_fma_f32 v4, v5, v4, v4
854 ; VI-NEXT: v_mul_f32_e32 v5, v3, v4
855 ; VI-NEXT: v_fma_f32 v6, -v2, v5, v3
856 ; VI-NEXT: v_fma_f32 v5, v6, v4, v5
857 ; VI-NEXT: v_fma_f32 v2, -v2, v5, v3
858 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 0
859 ; VI-NEXT: v_div_fmas_f32 v2, v2, v4, v5
860 ; VI-NEXT: v_div_fixup_f32 v2, v2, v1, s1
861 ; VI-NEXT: v_trunc_f32_e32 v2, v2
862 ; VI-NEXT: v_fma_f32 v1, -v2, v1, s1
863 ; VI-NEXT: v_mov_b32_e32 v2, s4
864 ; VI-NEXT: v_mov_b32_e32 v3, s5
865 ; VI-NEXT: flat_store_dwordx2 v[2:3], v[0:1]
866 ; VI-NEXT: s_endpgm
953 ; VI-LABEL: frem_v4f32:
954 ; VI: ; %bb.0:
955 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
956 ; VI-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x34
957 ; VI-NEXT: s_waitcnt lgkmcnt(0)
958 ; VI-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0
959 ; VI-NEXT: s_load_dwordx4 s[8:11], s[8:9], 0x40
960 ; VI-NEXT: s_waitcnt lgkmcnt(0)
961 ; VI-NEXT: v_mov_b32_e32 v0, s8
962 ; VI-NEXT: v_div_scale_f32 v1, s[6:7], v0, v0, s0
963 ; VI-NEXT: v_div_scale_f32 v2, vcc, s0, v0, s0
964 ; VI-NEXT: v_rcp_f32_e32 v3, v1
965 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 3
966 ; VI-NEXT: v_fma_f32 v4, -v1, v3, 1.0
967 ; VI-NEXT: v_fma_f32 v3, v4, v3, v3
968 ; VI-NEXT: v_mul_f32_e32 v4, v2, v3
969 ; VI-NEXT: v_fma_f32 v5, -v1, v4, v2
970 ; VI-NEXT: v_fma_f32 v4, v5, v3, v4
971 ; VI-NEXT: v_fma_f32 v1, -v1, v4, v2
972 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 0
973 ; VI-NEXT: v_div_fmas_f32 v1, v1, v3, v4
974 ; VI-NEXT: v_div_fixup_f32 v1, v1, v0, s0
975 ; VI-NEXT: v_trunc_f32_e32 v1, v1
976 ; VI-NEXT: v_fma_f32 v0, -v1, v0, s0
977 ; VI-NEXT: v_mov_b32_e32 v1, s9
978 ; VI-NEXT: v_div_scale_f32 v2, s[6:7], v1, v1, s1
979 ; VI-NEXT: v_div_scale_f32 v3, vcc, s1, v1, s1
980 ; VI-NEXT: v_rcp_f32_e32 v4, v2
981 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 3
982 ; VI-NEXT: v_fma_f32 v5, -v2, v4, 1.0
983 ; VI-NEXT: v_fma_f32 v4, v5, v4, v4
984 ; VI-NEXT: v_mul_f32_e32 v5, v3, v4
985 ; VI-NEXT: v_fma_f32 v6, -v2, v5, v3
986 ; VI-NEXT: v_fma_f32 v5, v6, v4, v5
987 ; VI-NEXT: v_fma_f32 v2, -v2, v5, v3
988 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 0
989 ; VI-NEXT: v_div_fmas_f32 v2, v2, v4, v5
990 ; VI-NEXT: v_div_fixup_f32 v2, v2, v1, s1
991 ; VI-NEXT: v_trunc_f32_e32 v2, v2
992 ; VI-NEXT: v_fma_f32 v1, -v2, v1, s1
993 ; VI-NEXT: v_mov_b32_e32 v2, s10
994 ; VI-NEXT: v_div_scale_f32 v3, s[0:1], v2, v2, s2
995 ; VI-NEXT: v_div_scale_f32 v4, vcc, s2, v2, s2
996 ; VI-NEXT: v_rcp_f32_e32 v5, v3
997 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 3
998 ; VI-NEXT: v_fma_f32 v6, -v3, v5, 1.0
999 ; VI-NEXT: v_fma_f32 v5, v6, v5, v5
1000 ; VI-NEXT: v_mul_f32_e32 v6, v4, v5
1001 ; VI-NEXT: v_fma_f32 v7, -v3, v6, v4
1002 ; VI-NEXT: v_fma_f32 v6, v7, v5, v6
1003 ; VI-NEXT: v_fma_f32 v3, -v3, v6, v4
1004 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 0
1005 ; VI-NEXT: v_div_fmas_f32 v3, v3, v5, v6
1006 ; VI-NEXT: v_div_fixup_f32 v3, v3, v2, s2
1007 ; VI-NEXT: v_trunc_f32_e32 v3, v3
1008 ; VI-NEXT: v_fma_f32 v2, -v3, v2, s2
1009 ; VI-NEXT: v_mov_b32_e32 v3, s11
1010 ; VI-NEXT: v_div_scale_f32 v4, s[0:1], v3, v3, s3
1011 ; VI-NEXT: v_div_scale_f32 v5, vcc, s3, v3, s3
1012 ; VI-NEXT: v_rcp_f32_e32 v6, v4
1013 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 3
1014 ; VI-NEXT: v_fma_f32 v7, -v4, v6, 1.0
1015 ; VI-NEXT: v_fma_f32 v6, v7, v6, v6
1016 ; VI-NEXT: v_mul_f32_e32 v7, v5, v6
1017 ; VI-NEXT: v_fma_f32 v8, -v4, v7, v5
1018 ; VI-NEXT: v_fma_f32 v7, v8, v6, v7
1019 ; VI-NEXT: v_fma_f32 v4, -v4, v7, v5
1020 ; VI-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 0
1021 ; VI-NEXT: v_div_fmas_f32 v4, v4, v6, v7
1022 ; VI-NEXT: v_div_fixup_f32 v4, v4, v3, s3
1023 ; VI-NEXT: v_trunc_f32_e32 v4, v4
1024 ; VI-NEXT: v_fma_f32 v3, -v4, v3, s3
1025 ; VI-NEXT: v_mov_b32_e32 v4, s4
1026 ; VI-NEXT: v_mov_b32_e32 v5, s5
1027 ; VI-NEXT: flat_store_dwordx4 v[4:5], v[0:3]
1028 ; VI-NEXT: s_endpgm
1081 ; VI-LABEL: frem_v2f64:
1082 ; VI: ; %bb.0:
1083 ; VI-NEXT: s_load_dwordx4 s[4:7], s[0:1], 0x24
1084 ; VI-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x34
1085 ; VI-NEXT: s_waitcnt lgkmcnt(0)
1086 ; VI-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0
1087 ; VI-NEXT: s_load_dwordx4 s[8:11], s[8:9], 0x40
1088 ; VI-NEXT: s_waitcnt lgkmcnt(0)
1089 ; VI-NEXT: v_mov_b32_e32 v0, s8
1090 ; VI-NEXT: v_mov_b32_e32 v1, s9
1091 ; VI-NEXT: v_div_scale_f64 v[2:3], s[6:7], v[0:1], v[0:1], s[0:1]
1092 ; VI-NEXT: v_div_scale_f64 v[8:9], vcc, s[0:1], v[0:1], s[0:1]
1093 ; VI-NEXT: v_rcp_f64_e32 v[4:5], v[2:3]
1094 ; VI-NEXT: v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0
1095 ; VI-NEXT: v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]
1096 ; VI-NEXT: v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0
1097 ; VI-NEXT: v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]
1098 ; VI-NEXT: v_mul_f64 v[6:7], v[8:9], v[4:5]
1099 ; VI-NEXT: v_fma_f64 v[2:3], -v[2:3], v[6:7], v[8:9]
1100 ; VI-NEXT: v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[6:7]
1101 ; VI-NEXT: v_div_fixup_f64 v[2:3], v[2:3], v[0:1], s[0:1]
1102 ; VI-NEXT: v_trunc_f64_e32 v[2:3], v[2:3]
1103 ; VI-NEXT: v_fma_f64 v[0:1], -v[2:3], v[0:1], s[0:1]
1104 ; VI-NEXT: v_mov_b32_e32 v2, s10
1105 ; VI-NEXT: v_mov_b32_e32 v3, s11
1106 ; VI-NEXT: v_div_scale_f64 v[4:5], s[0:1], v[2:3], v[2:3], s[2:3]
1107 ; VI-NEXT: v_div_scale_f64 v[10:11], vcc, s[2:3], v[2:3], s[2:3]
1108 ; VI-NEXT: v_rcp_f64_e32 v[6:7], v[4:5]
1109 ; VI-NEXT: v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0
1110 ; VI-NEXT: v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]
1111 ; VI-NEXT: v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0
1112 ; VI-NEXT: v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]
1113 ; VI-NEXT: v_mul_f64 v[8:9], v[10:11], v[6:7]
1114 ; VI-NEXT: v_fma_f64 v[4:5], -v[4:5], v[8:9], v[10:11]
1115 ; VI-NEXT: v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[8:9]
1116 ; VI-NEXT: v_div_fixup_f64 v[4:5], v[4:5], v[2:3], s[2:3]
1117 ; VI-NEXT: v_trunc_f64_e32 v[4:5], v[4:5]
1118 ; VI-NEXT: v_fma_f64 v[2:3], -v[4:5], v[2:3], s[2:3]
1119 ; VI-NEXT: v_mov_b32_e32 v4, s4
1120 ; VI-NEXT: v_mov_b32_e32 v5, s5
1121 ; VI-NEXT: flat_store_dwordx4 v[4:5], v[0:3]
1122 ; VI-NEXT: s_endpgm