xref: /llvm-project/llvm/test/CodeGen/AMDGPU/minimumnum.ll (revision 1547382033ca156c13fc16c3b2baed7350b6de8e)
1ee61a4dbSMatt Arsenault; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2ee61a4dbSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 < %s | FileCheck -check-prefix=GFX8 %s
3ee61a4dbSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefix=GFX9 %s
4ee61a4dbSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1030 < %s | FileCheck -check-prefix=GFX10 %s
5ee61a4dbSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 < %s | FileCheck -check-prefix=GFX11 %s
6ee61a4dbSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1200 < %s | FileCheck -check-prefix=GFX12 %s
7ee61a4dbSMatt Arsenault
8ee61a4dbSMatt Arsenaultdefine half @v_minimumnum_f16(half %x, half %y) {
9ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f16:
10ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
11ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f16_e32 v1, v1, v1
13ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f16_e32 v0, v0, v0
14ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f16_e32 v0, v0, v1
15ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
16ee61a4dbSMatt Arsenault;
17ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f16:
18ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
19ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f16_e32 v1, v1, v1
21ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f16_e32 v0, v0, v0
22ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f16_e32 v0, v0, v1
23ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
24ee61a4dbSMatt Arsenault;
25ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f16:
26ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
27ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f16_e32 v1, v1, v1
29ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f16_e32 v0, v0, v0
30ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f16_e32 v0, v0, v1
31ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
32ee61a4dbSMatt Arsenault;
33ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f16:
34ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
35ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f16_e32 v1, v1, v1
37ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f16_e32 v0, v0, v0
38ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
39ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f16_e32 v0, v0, v1
40ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
41ee61a4dbSMatt Arsenault;
42ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f16:
43ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
44ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
45ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
46ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
47ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
48ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
49ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f16_e32 v1, v1, v1
50ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f16_e32 v0, v0, v0
51ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
52ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f16_e32 v0, v0, v1
53ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
54ee61a4dbSMatt Arsenault  %result = call half @llvm.minimumnum.f16(half %x, half %y)
55ee61a4dbSMatt Arsenault  ret half %result
56ee61a4dbSMatt Arsenault}
57ee61a4dbSMatt Arsenault
58ee61a4dbSMatt Arsenaultdefine half @v_minimumnum_f16_nnan(half %x, half %y) {
59ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f16_nnan:
60ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
61ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f16_e32 v0, v0, v1
63ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
64ee61a4dbSMatt Arsenault;
65ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f16_nnan:
66ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
67ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f16_e32 v0, v0, v1
69ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
70ee61a4dbSMatt Arsenault;
71ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f16_nnan:
72ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
73ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
74ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f16_e32 v0, v0, v1
75ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
76ee61a4dbSMatt Arsenault;
77ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f16_nnan:
78ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
79ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
80ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f16_e32 v0, v0, v1
81ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
82ee61a4dbSMatt Arsenault;
83ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f16_nnan:
84ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
85ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
86ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
87ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
88ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
89ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
90ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f16_e32 v0, v0, v1
91ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
92ee61a4dbSMatt Arsenault  %result = call nnan half @llvm.minimumnum.f16(half %x, half %y)
93ee61a4dbSMatt Arsenault  ret half %result
94ee61a4dbSMatt Arsenault}
95ee61a4dbSMatt Arsenault
96ee61a4dbSMatt Arsenaultdefine half @v_minimumnum_f16_1.0(half %x) {
97ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f16_1.0:
98ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
99ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
100ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f16_e32 v0, v0, v0
101ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f16_e32 v0, 1.0, v0
102ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
103ee61a4dbSMatt Arsenault;
104ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f16_1.0:
105ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
106ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
107ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f16_e32 v0, v0, v0
108ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f16_e32 v0, 1.0, v0
109ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
110ee61a4dbSMatt Arsenault;
111ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f16_1.0:
112ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
113ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
114ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f16_e32 v0, v0, v0
115ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f16_e32 v0, 1.0, v0
116ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
117ee61a4dbSMatt Arsenault;
118ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f16_1.0:
119ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
120ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
121ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f16_e32 v0, v0, v0
122ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
123ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f16_e32 v0, 1.0, v0
124ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
125ee61a4dbSMatt Arsenault;
126ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f16_1.0:
127ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
128ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
129ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
130ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
131ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
132ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
133ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f16_e32 v0, v0, v0
134ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
135ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f16_e32 v0, 1.0, v0
136ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
137ee61a4dbSMatt Arsenault  %result = call half @llvm.minimumnum.f16(half %x, half 1.0)
138ee61a4dbSMatt Arsenault  ret half %result
139ee61a4dbSMatt Arsenault}
140ee61a4dbSMatt Arsenault
141ee61a4dbSMatt Arsenaultdefine bfloat @v_minimumnum_bf16(bfloat %x, bfloat %y) {
142ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_bf16:
143ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
144ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
145ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v0
146ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v2
147ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v1
148ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc
149ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v2
150ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cndmask_b32_e32 v1, v1, v0, vcc
151ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v1
152ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 16, v0
153ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cmp_lt_f32_e32 vcc, v3, v2
154ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cndmask_b32_e32 v2, v1, v0, vcc
155ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
156ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v2
157ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_bfe_u32 v3, v2, 16, 1
158ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_add_u32_e32 v3, vcc, v3, v2
159ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_movk_i32 s4, 0x7fff
160ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_add_u32_e32 v3, vcc, s4, v3
161ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_or_b32_e32 v4, 0x400000, v2
162ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v2
163ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc
164ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_movk_i32 s4, 0x8000
165ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
166ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cmp_eq_u16_e32 vcc, s4, v0
167ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cndmask_b32_e32 v0, v3, v0, vcc
168ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cmp_eq_u16_e32 vcc, s4, v1
169ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc
170ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_and_b32_e32 v1, 0xffff0000, v2
171ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cmp_eq_f32_e32 vcc, 0, v1
172ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cndmask_b32_e32 v0, v3, v0, vcc
173ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
174ee61a4dbSMatt Arsenault;
175ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_bf16:
176ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
177ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
178ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v0
179ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cmp_u_f32_e32 vcc, v2, v2
180ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v1
181ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc
182ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cmp_u_f32_e32 vcc, v3, v3
183ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cndmask_b32_e32 v1, v1, v0, vcc
184ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v0
185ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v1
186ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cmp_lt_f32_e32 vcc, v2, v3
187ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cndmask_b32_e32 v2, v1, v0, vcc
188ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
189ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v2, v2, v2
190ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_bfe_u32 v3, v2, 16, 1
191ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_movk_i32 s4, 0x7fff
192ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_add3_u32 v3, v3, v2, s4
193ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_or_b32_e32 v4, 0x400000, v2
194ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cmp_u_f32_e32 vcc, v2, v2
195ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc
196ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_movk_i32 s4, 0x8000
197ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
198ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cmp_eq_u16_e32 vcc, s4, v0
199ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cndmask_b32_e32 v0, v3, v0, vcc
200ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cmp_eq_u16_e32 vcc, s4, v1
201ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc
202ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff0000, v2
203ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cmp_eq_f32_e32 vcc, 0, v1
204ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cndmask_b32_e32 v0, v3, v0, vcc
205ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
206ee61a4dbSMatt Arsenault;
207ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_bf16:
208ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
209ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
210ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v0
211ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v1
212ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v2
213ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc_lo
214ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v3
215ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v0
216ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cndmask_b32_e32 v1, v1, v0, vcc_lo
217ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v1
218ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cmp_lt_f32_e32 vcc_lo, v2, v3
219ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cndmask_b32_e32 v2, v1, v0, vcc_lo
220ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
221ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v2, v2, v2
222ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_bfe_u32 v3, v2, 16, 1
223ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_or_b32_e32 v4, 0x400000, v2
224ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v2
225ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_add3_u32 v3, v3, v2, 0x7fff
226ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc_lo
227ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cmp_eq_u16_e32 vcc_lo, 0x8000, v0
228ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
229ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff0000, v2
230ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cndmask_b32_e32 v0, v3, v0, vcc_lo
231ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cmp_eq_u16_e32 vcc_lo, 0x8000, v1
232ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc_lo
233ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cmp_eq_f32_e32 vcc_lo, 0, v2
234ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cndmask_b32_e32 v0, v3, v0, vcc_lo
235ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
236ee61a4dbSMatt Arsenault;
237ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_bf16:
238ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
239ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
240ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_lshlrev_b32_e32 v2, 16, v0
241ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
242ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v2
243ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc_lo
244ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_lshlrev_b32_e32 v3, 16, v1
245ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_lshlrev_b32_e32 v2, 16, v0
246ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
247ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v3
248ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cndmask_b32_e32 v1, v1, v0, vcc_lo
249ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_lshlrev_b32_e32 v3, 16, v1
250ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
251ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cmp_lt_f32_e32 vcc_lo, v2, v3
252ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cndmask_b32_e32 v2, v1, v0, vcc_lo
253ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
254ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
255ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f32_e32 v2, v2, v2
256ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_bfe_u32 v3, v2, 16, 1
257ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_or_b32_e32 v4, 0x400000, v2
258ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v2
259ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
260ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_add3_u32 v3, v3, v2, 0x7fff
261ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc_lo
262ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cmp_eq_u16_e32 vcc_lo, 0x8000, v0
263ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
264ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
265ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_and_b32_e32 v2, 0xffff0000, v2
266ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cndmask_b32_e32 v0, v3, v0, vcc_lo
267ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cmp_eq_u16_e32 vcc_lo, 0x8000, v1
268ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4)
269ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc_lo
270ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cmp_eq_f32_e32 vcc_lo, 0, v2
271ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
272ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cndmask_b32_e32 v0, v3, v0, vcc_lo
273ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
274ee61a4dbSMatt Arsenault;
275ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_bf16:
276ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
277ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
278ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
279ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
280ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
281ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
282ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_lshlrev_b32_e32 v2, 16, v0
283ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
284ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v2
285ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc_lo
286ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_lshlrev_b32_e32 v3, 16, v1
287ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_lshlrev_b32_e32 v2, 16, v0
288ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
289ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v3
290ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cndmask_b32_e32 v1, v1, v0, vcc_lo
291ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_lshlrev_b32_e32 v3, 16, v1
292ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
293ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cmp_lt_f32_e32 vcc_lo, v2, v3
294ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cndmask_b32_e32 v2, v1, v0, vcc_lo
295ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_lshlrev_b32_e32 v2, 16, v2
296ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
297ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f32_e32 v2, v2, v2
298ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_bfe_u32 v3, v2, 16, 1
299ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_or_b32_e32 v4, 0x400000, v2
300ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v2
301ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
302ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_add3_u32 v3, v3, v2, 0x7fff
303ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc_lo
304ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cmp_eq_u16_e32 vcc_lo, 0x8000, v0
305ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
306ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
307ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_and_b32_e32 v2, 0xffff0000, v2
308ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cndmask_b32_e32 v0, v3, v0, vcc_lo
309ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cmp_eq_u16_e32 vcc_lo, 0x8000, v1
310ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4)
311ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc_lo
312ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cmp_eq_f32_e32 vcc_lo, 0, v2
313ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2)
314ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cndmask_b32_e32 v0, v3, v0, vcc_lo
315ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
316ee61a4dbSMatt Arsenault  %result = call bfloat @llvm.minimumnum.bf16(bfloat %x, bfloat %y)
317ee61a4dbSMatt Arsenault  ret bfloat %result
318ee61a4dbSMatt Arsenault}
319ee61a4dbSMatt Arsenault
320ee61a4dbSMatt Arsenaultdefine bfloat @v_minimumnum_bf16_nnan(bfloat %x, bfloat %y) {
321ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_bf16_nnan:
322ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
323ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
324ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v1
325ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 16, v0
326ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cmp_lt_f32_e32 vcc, v3, v2
327ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_movk_i32 s4, 0x8000
328ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cndmask_b32_e32 v2, v1, v0, vcc
329ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cmp_eq_u16_e32 vcc, s4, v0
330ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc
331ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cmp_eq_u16_e32 vcc, s4, v1
332ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc
333ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
334ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cmp_eq_f32_e32 vcc, 0, v1
335ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc
336ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
337ee61a4dbSMatt Arsenault;
338ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_bf16_nnan:
339ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
340ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
341ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 16, v1
342ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 16, v0
343ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cmp_lt_f32_e32 vcc, v3, v2
344ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_movk_i32 s4, 0x8000
345ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cndmask_b32_e32 v2, v1, v0, vcc
346ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cmp_eq_u16_e32 vcc, s4, v0
347ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc
348ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cmp_eq_u16_e32 vcc, s4, v1
349ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc
350ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
351ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cmp_eq_f32_e32 vcc, 0, v1
352ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc
353ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
354ee61a4dbSMatt Arsenault;
355ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_bf16_nnan:
356ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
357ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
358ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v1
359ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v0
360ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cmp_lt_f32_e32 vcc_lo, v3, v2
361ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cndmask_b32_e32 v2, v1, v0, vcc_lo
362ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cmp_eq_u16_e32 vcc_lo, 0x8000, v0
363ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v2
364ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc_lo
365ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cmp_eq_u16_e32 vcc_lo, 0x8000, v1
366ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc_lo
367ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cmp_eq_f32_e32 vcc_lo, 0, v3
368ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc_lo
369ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
370ee61a4dbSMatt Arsenault;
371ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_bf16_nnan:
372ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
373ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
374ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_lshlrev_b32_e32 v2, 16, v1
375ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_lshlrev_b32_e32 v3, 16, v0
376ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
377ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cmp_lt_f32_e32 vcc_lo, v3, v2
378ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cndmask_b32_e32 v2, v1, v0, vcc_lo
379ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cmp_eq_u16_e32 vcc_lo, 0x8000, v0
380ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_dual_cndmask_b32 v0, v2, v0 :: v_dual_lshlrev_b32 v3, 16, v2
381ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cmp_eq_u16_e32 vcc_lo, 0x8000, v1
382ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3)
383ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc_lo
384ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cmp_eq_f32_e32 vcc_lo, 0, v3
385ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
386ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc_lo
387ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
388ee61a4dbSMatt Arsenault;
389ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_bf16_nnan:
390ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
391ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
392ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
393ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
394ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
395ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
396ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_lshlrev_b32_e32 v2, 16, v1
397ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_lshlrev_b32_e32 v3, 16, v0
398ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
399ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cmp_lt_f32_e32 vcc_lo, v3, v2
400ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cndmask_b32_e32 v2, v1, v0, vcc_lo
401ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cmp_eq_u16_e32 vcc_lo, 0x8000, v0
402ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_dual_cndmask_b32 v0, v2, v0 :: v_dual_lshlrev_b32 v3, 16, v2
403ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cmp_eq_u16_e32 vcc_lo, 0x8000, v1
404ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3)
405ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc_lo
406ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cmp_eq_f32_e32 vcc_lo, 0, v3
407ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2)
408ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc_lo
409ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
410ee61a4dbSMatt Arsenault  %result = call nnan bfloat @llvm.minimumnum.bf16(bfloat %x, bfloat %y)
411ee61a4dbSMatt Arsenault  ret bfloat %result
412ee61a4dbSMatt Arsenault}
413ee61a4dbSMatt Arsenault
414ee61a4dbSMatt Arsenaultdefine float @v_minimumnum_f32(float %x, float %y) {
415ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f32:
416ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
417ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
418ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v1
419ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v0
420ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, v0, v1
421ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
422ee61a4dbSMatt Arsenault;
423ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f32:
424ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
425ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
426ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v1, v1, v1
427ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v0, v0, v0
428ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, v0, v1
429ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
430ee61a4dbSMatt Arsenault;
431ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f32:
432ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
433ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
434ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v1, v1, v1
435ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v0, v0, v0
436ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, v0, v1
437ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
438ee61a4dbSMatt Arsenault;
439ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f32:
440ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
441ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
442ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_dual_max_f32 v1, v1, v1 :: v_dual_max_f32 v0, v0, v0
443ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
444ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f32_e32 v0, v0, v1
445ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
446ee61a4dbSMatt Arsenault;
447ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f32:
448ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
449ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
450ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
451ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
452ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
453ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
454ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_dual_max_num_f32 v1, v1, v1 :: v_dual_max_num_f32 v0, v0, v0
455ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
456ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f32_e32 v0, v0, v1
457ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
458ee61a4dbSMatt Arsenault  %result = call float @llvm.minimumnum.f32(float %x, float %y)
459ee61a4dbSMatt Arsenault  ret float %result
460ee61a4dbSMatt Arsenault}
461ee61a4dbSMatt Arsenault
462ee61a4dbSMatt Arsenaultdefine float @v_minimumnum_f32_nnan(float %x, float %y) {
463ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f32_nnan:
464ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
465ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
466ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, v0, v1
467ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
468ee61a4dbSMatt Arsenault;
469ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f32_nnan:
470ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
471ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
472ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, v0, v1
473ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
474ee61a4dbSMatt Arsenault;
475ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f32_nnan:
476ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
477ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
478ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, v0, v1
479ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
480ee61a4dbSMatt Arsenault;
481ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f32_nnan:
482ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
483ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
484ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f32_e32 v0, v0, v1
485ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
486ee61a4dbSMatt Arsenault;
487ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f32_nnan:
488ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
489ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
490ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
491ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
492ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
493ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
494ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f32_e32 v0, v0, v1
495ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
496ee61a4dbSMatt Arsenault  %result = call nnan float @llvm.minimumnum.f32(float %x, float %y)
497ee61a4dbSMatt Arsenault  ret float %result
498ee61a4dbSMatt Arsenault}
499ee61a4dbSMatt Arsenault
500ee61a4dbSMatt Arsenaultdefine double @v_minimumnum_f64(double %x, double %y) {
501ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f64:
502ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
503ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
504ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]
505ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
506ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
507ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
508ee61a4dbSMatt Arsenault;
509ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f64:
510ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
511ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
512ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]
513ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
514ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
515ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
516ee61a4dbSMatt Arsenault;
517ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f64:
518ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
519ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
520ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]
521ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
522ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
523ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
524ee61a4dbSMatt Arsenault;
525ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f64:
526ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
527ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
528ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]
529ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
530ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
531ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
532ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
533ee61a4dbSMatt Arsenault;
534ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f64:
535ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
536ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
537ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
538ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
539ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
540ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
541ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]
542ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]
543ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
544ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]
545ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
546ee61a4dbSMatt Arsenault  %result = call double @llvm.minimumnum.f64(double %x, double %y)
547ee61a4dbSMatt Arsenault  ret double %result
548ee61a4dbSMatt Arsenault}
549ee61a4dbSMatt Arsenault
550ee61a4dbSMatt Arsenaultdefine double @v_minimumnum_f64_nnan(double %x, double %y) {
551ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f64_nnan:
552ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
553ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
554ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
555ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
556ee61a4dbSMatt Arsenault;
557ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f64_nnan:
558ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
559ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
560ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
561ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
562ee61a4dbSMatt Arsenault;
563ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f64_nnan:
564ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
565ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
566ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
567ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
568ee61a4dbSMatt Arsenault;
569ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f64_nnan:
570ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
571ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
572ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
573ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
574ee61a4dbSMatt Arsenault;
575ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f64_nnan:
576ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
577ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
578ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
579ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
580ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
581ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
582ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]
583ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
584ee61a4dbSMatt Arsenault  %result = call nnan double @llvm.minimumnum.f64(double %x, double %y)
585ee61a4dbSMatt Arsenault  ret double %result
586ee61a4dbSMatt Arsenault}
587ee61a4dbSMatt Arsenault
588ee61a4dbSMatt Arsenaultdefine float @v_minimumnum_f32_1.0(float %x) {
589ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f32_1.0:
590ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
591ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
592ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v0
593ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, 1.0, v0
594ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
595ee61a4dbSMatt Arsenault;
596ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f32_1.0:
597ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
598ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
599ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v0, v0, v0
600ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, 1.0, v0
601ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
602ee61a4dbSMatt Arsenault;
603ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f32_1.0:
604ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
605ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
606ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v0, v0, v0
607ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, 1.0, v0
608ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
609ee61a4dbSMatt Arsenault;
610ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f32_1.0:
611ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
612ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
613ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f32_e32 v0, v0, v0
614ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
615ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f32_e32 v0, 1.0, v0
616ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
617ee61a4dbSMatt Arsenault;
618ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f32_1.0:
619ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
620ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
621ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
622ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
623ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
624ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
625ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f32_e32 v0, v0, v0
626ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
627ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f32_e32 v0, 1.0, v0
628ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
629ee61a4dbSMatt Arsenault  %result = call float @llvm.minimumnum.f32(float %x, float 1.0)
630ee61a4dbSMatt Arsenault  ret float %result
631ee61a4dbSMatt Arsenault}
632ee61a4dbSMatt Arsenault
633ee61a4dbSMatt Arsenaultdefine float @v_minimumnum_f32_rhs_not_snan(float %x, float %y) {
634ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f32_rhs_not_snan:
635ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
636ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
637ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v1
638ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v0
639ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, v0, v1
640ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
641ee61a4dbSMatt Arsenault;
642ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f32_rhs_not_snan:
643ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
644ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
645ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v1, v1, v1
646ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v0, v0, v0
647ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, v0, v1
648ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
649ee61a4dbSMatt Arsenault;
650ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f32_rhs_not_snan:
651ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
652ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
653ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v1, v1, v1
654ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v0, v0, v0
655ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, v0, v1
656ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
657ee61a4dbSMatt Arsenault;
658ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f32_rhs_not_snan:
659ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
660ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
661ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_dual_max_f32 v1, v1, v1 :: v_dual_max_f32 v0, v0, v0
662ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
663ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f32_e32 v0, v0, v1
664ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
665ee61a4dbSMatt Arsenault;
666ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f32_rhs_not_snan:
667ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
668ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
669ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
670ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
671ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
672ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
673ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_dual_max_num_f32 v1, v1, v1 :: v_dual_max_num_f32 v0, v0, v0
674ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
675ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f32_e32 v0, v0, v1
676ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
677ee61a4dbSMatt Arsenault  %canon.y = call float @llvm.canonicalize.f32(float %y)
678ee61a4dbSMatt Arsenault  %result = call float @llvm.minimumnum.f32(float %x, float %canon.y)
679ee61a4dbSMatt Arsenault  ret float %result
680ee61a4dbSMatt Arsenault}
681ee61a4dbSMatt Arsenault
682ee61a4dbSMatt Arsenaultdefine float @v_minimumnum_f32_lhs_not_snan(float %x, float %y) {
683ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f32_lhs_not_snan:
684ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
685ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
686ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v0
687ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v1
688ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, v0, v1
689ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
690ee61a4dbSMatt Arsenault;
691ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f32_lhs_not_snan:
692ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
693ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
694ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v0, v0, v0
695ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v1, v1, v1
696ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, v0, v1
697ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
698ee61a4dbSMatt Arsenault;
699ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f32_lhs_not_snan:
700ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
701ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
702ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v0, v0, v0
703ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v1, v1, v1
704ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, v0, v1
705ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
706ee61a4dbSMatt Arsenault;
707ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f32_lhs_not_snan:
708ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
709ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
710ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1
711ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
712ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f32_e32 v0, v0, v1
713ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
714ee61a4dbSMatt Arsenault;
715ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f32_lhs_not_snan:
716ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
717ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
718ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
719ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
720ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
721ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
722ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v1
723ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
724ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f32_e32 v0, v0, v1
725ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
726ee61a4dbSMatt Arsenault  %canon.x = call float @llvm.canonicalize.f32(float %x)
727ee61a4dbSMatt Arsenault  %result = call float @llvm.minimumnum.f32(float %canon.x, float %y)
728ee61a4dbSMatt Arsenault  ret float %result
729ee61a4dbSMatt Arsenault}
730ee61a4dbSMatt Arsenault
731ee61a4dbSMatt Arsenaultdefine float @v_minimumnum_f32_both_operands_not_snan(float %x, float %y) {
732ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f32_both_operands_not_snan:
733ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
734ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
735ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v0
736ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v1
737ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, v0, v1
738ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
739ee61a4dbSMatt Arsenault;
740ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f32_both_operands_not_snan:
741ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
742ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
743ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v0, v0, v0
744ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v1, v1, v1
745ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, v0, v1
746ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
747ee61a4dbSMatt Arsenault;
748ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f32_both_operands_not_snan:
749ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
750ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
751ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v0, v0, v0
752ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v1, v1, v1
753ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, v0, v1
754ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
755ee61a4dbSMatt Arsenault;
756ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f32_both_operands_not_snan:
757ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
758ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
759ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1
760ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
761ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f32_e32 v0, v0, v1
762ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
763ee61a4dbSMatt Arsenault;
764ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f32_both_operands_not_snan:
765ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
766ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
767ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
768ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
769ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
770ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
771ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v1
772ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
773ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f32_e32 v0, v0, v1
774ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
775ee61a4dbSMatt Arsenault  %canon.x = call float @llvm.canonicalize.f32(float %x)
776ee61a4dbSMatt Arsenault  %canon.y = call float @llvm.canonicalize.f32(float %y)
777ee61a4dbSMatt Arsenault  %result = call float @llvm.minimumnum.f32(float %canon.x, float %canon.y)
778ee61a4dbSMatt Arsenault  ret float %result
779ee61a4dbSMatt Arsenault}
780ee61a4dbSMatt Arsenault
781ee61a4dbSMatt Arsenaultdefine double @v_minimumnum_f64_1.0(double %x) {
782ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f64_1.0:
783ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
784ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
785ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
786ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], 1.0
787ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
788ee61a4dbSMatt Arsenault;
789ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f64_1.0:
790ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
791ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
792ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
793ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], 1.0
794ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
795ee61a4dbSMatt Arsenault;
796ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f64_1.0:
797ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
798ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
799ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
800ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], 1.0
801ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
802ee61a4dbSMatt Arsenault;
803ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f64_1.0:
804ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
805ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
806ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
807ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
808ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], 1.0
809ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
810ee61a4dbSMatt Arsenault;
811ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f64_1.0:
812ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
813ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
814ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
815ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
816ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
817ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
818ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]
819ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
820ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], 1.0, v[0:1]
821ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
822ee61a4dbSMatt Arsenault  %result = call double @llvm.minimumnum.f64(double %x, double 1.0)
823ee61a4dbSMatt Arsenault  ret double %result
824ee61a4dbSMatt Arsenault}
825ee61a4dbSMatt Arsenault
826ee61a4dbSMatt Arsenaultdefine half @v_minimumnum_f16_v_s(half %x, half inreg %y) {
827ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f16_v_s:
828ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
829ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8306548b635SShilei Tian; GFX8-NEXT:    v_max_f16_e64 v1, s16, s16
831ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f16_e32 v0, v0, v0
832ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f16_e32 v0, v0, v1
833ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
834ee61a4dbSMatt Arsenault;
835ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f16_v_s:
836ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
837ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8386548b635SShilei Tian; GFX9-NEXT:    v_max_f16_e64 v1, s16, s16
839ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f16_e32 v0, v0, v0
840ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f16_e32 v0, v0, v1
841ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
842ee61a4dbSMatt Arsenault;
843ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f16_v_s:
844ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
845ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8466548b635SShilei Tian; GFX10-NEXT:    v_max_f16_e64 v1, s16, s16
847ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f16_e32 v0, v0, v0
848ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f16_e32 v0, v0, v1
849ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
850ee61a4dbSMatt Arsenault;
851ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f16_v_s:
852ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
853ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
854ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f16_e64 v1, s0, s0
855ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f16_e32 v0, v0, v0
856ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
857ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f16_e32 v0, v0, v1
858ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
859ee61a4dbSMatt Arsenault;
860ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f16_v_s:
861ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
862ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
863ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
864ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
865ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
866ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
867ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f16_e64 v1, s0, s0
868ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f16_e32 v0, v0, v0
869ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
870ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f16_e32 v0, v0, v1
871ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
872ee61a4dbSMatt Arsenault %result = call half @llvm.minimumnum.f16(half %x, half %y)
873ee61a4dbSMatt Arsenault  ret half %result
874ee61a4dbSMatt Arsenault}
875ee61a4dbSMatt Arsenault
876ee61a4dbSMatt Arsenaultdefine half @v_minimumnum_f16_s_s(half inreg %x, half inreg %y) {
877ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f16_s_s:
878ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
879ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8806548b635SShilei Tian; GFX8-NEXT:    v_max_f16_e64 v0, s17, s17
8816548b635SShilei Tian; GFX8-NEXT:    v_max_f16_e64 v1, s16, s16
882ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f16_e32 v0, v1, v0
883ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
884ee61a4dbSMatt Arsenault;
885ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f16_s_s:
886ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
887ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8886548b635SShilei Tian; GFX9-NEXT:    v_max_f16_e64 v0, s17, s17
8896548b635SShilei Tian; GFX9-NEXT:    v_max_f16_e64 v1, s16, s16
890ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f16_e32 v0, v1, v0
891ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
892ee61a4dbSMatt Arsenault;
893ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f16_s_s:
894ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
895ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8966548b635SShilei Tian; GFX10-NEXT:    v_max_f16_e64 v0, s17, s17
8976548b635SShilei Tian; GFX10-NEXT:    v_max_f16_e64 v1, s16, s16
898ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f16_e32 v0, v1, v0
899ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
900ee61a4dbSMatt Arsenault;
901ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f16_s_s:
902ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
903ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
904ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f16_e64 v0, s1, s1
905ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f16_e64 v1, s0, s0
906ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
907ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f16_e32 v0, v1, v0
908ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
909ee61a4dbSMatt Arsenault;
910ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f16_s_s:
911ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
912ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
913ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
914ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
915ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
916ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
917ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f16_e64 v0, s1, s1
918ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f16_e64 v1, s0, s0
919ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
920ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f16_e32 v0, v1, v0
921ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
922ee61a4dbSMatt Arsenault %result = call half @llvm.minimumnum.f16(half %x, half %y)
923ee61a4dbSMatt Arsenault  ret half %result
924ee61a4dbSMatt Arsenault}
925ee61a4dbSMatt Arsenault
926ee61a4dbSMatt Arsenaultdefine float @v_minimumnum_f32_s_v(float inreg %x, float %y) {
927ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f32_s_v:
928ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
929ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
930ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v0
9316548b635SShilei Tian; GFX8-NEXT:    v_mul_f32_e64 v1, 1.0, s16
932ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, v1, v0
933ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
934ee61a4dbSMatt Arsenault;
935ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f32_s_v:
936ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
937ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
938ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v0, v0, v0
9396548b635SShilei Tian; GFX9-NEXT:    v_max_f32_e64 v1, s16, s16
940ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, v1, v0
941ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
942ee61a4dbSMatt Arsenault;
943ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f32_s_v:
944ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
945ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
946ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v0, v0, v0
9476548b635SShilei Tian; GFX10-NEXT:    v_max_f32_e64 v1, s16, s16
948ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, v1, v0
949ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
950ee61a4dbSMatt Arsenault;
951ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f32_s_v:
952ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
953ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
954ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f32_e32 v0, v0, v0
955ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f32_e64 v1, s0, s0
956ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
957ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f32_e32 v0, v1, v0
958ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
959ee61a4dbSMatt Arsenault;
960ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f32_s_v:
961ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
962ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
963ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
964ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
965ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
966ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
967ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f32_e32 v0, v0, v0
968ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f32_e64 v1, s0, s0
969ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
970ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f32_e32 v0, v1, v0
971ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
972ee61a4dbSMatt Arsenault %result = call float @llvm.minimumnum.f32(float %x, float %y)
973ee61a4dbSMatt Arsenault  ret float %result
974ee61a4dbSMatt Arsenault}
975ee61a4dbSMatt Arsenault
976ee61a4dbSMatt Arsenaultdefine float @v_minimumnum_f32_v_s(float %x, float inreg %y) {
977ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f32_v_s:
978ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
979ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9806548b635SShilei Tian; GFX8-NEXT:    v_mul_f32_e64 v1, 1.0, s16
981ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v0
982ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, v0, v1
983ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
984ee61a4dbSMatt Arsenault;
985ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f32_v_s:
986ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
987ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9886548b635SShilei Tian; GFX9-NEXT:    v_max_f32_e64 v1, s16, s16
989ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v0, v0, v0
990ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, v0, v1
991ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
992ee61a4dbSMatt Arsenault;
993ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f32_v_s:
994ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
995ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9966548b635SShilei Tian; GFX10-NEXT:    v_max_f32_e64 v1, s16, s16
997ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v0, v0, v0
998ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, v0, v1
999ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
1000ee61a4dbSMatt Arsenault;
1001ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f32_v_s:
1002ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
1003ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1004ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f32_e64 v1, s0, s0
1005ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f32_e32 v0, v0, v0
1006ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1007ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f32_e32 v0, v0, v1
1008ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
1009ee61a4dbSMatt Arsenault;
1010ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f32_v_s:
1011ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
1012ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1013ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
1014ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
1015ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
1016ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
1017ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f32_e64 v1, s0, s0
1018ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f32_e32 v0, v0, v0
1019ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1020ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f32_e32 v0, v0, v1
1021ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
1022ee61a4dbSMatt Arsenault %result = call float @llvm.minimumnum.f32(float %x, float %y)
1023ee61a4dbSMatt Arsenault  ret float %result
1024ee61a4dbSMatt Arsenault}
1025ee61a4dbSMatt Arsenault
1026ee61a4dbSMatt Arsenaultdefine float @v_minimumnum_f32_s_s(float inreg %x, float inreg %y) {
1027ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f32_s_s:
1028ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
1029ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10306548b635SShilei Tian; GFX8-NEXT:    v_mul_f32_e64 v0, 1.0, s17
10316548b635SShilei Tian; GFX8-NEXT:    v_mul_f32_e64 v1, 1.0, s16
1032ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, v1, v0
1033ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
1034ee61a4dbSMatt Arsenault;
1035ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f32_s_s:
1036ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
1037ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10386548b635SShilei Tian; GFX9-NEXT:    v_max_f32_e64 v0, s17, s17
10396548b635SShilei Tian; GFX9-NEXT:    v_max_f32_e64 v1, s16, s16
1040ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, v1, v0
1041ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1042ee61a4dbSMatt Arsenault;
1043ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f32_s_s:
1044ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
1045ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10466548b635SShilei Tian; GFX10-NEXT:    v_max_f32_e64 v0, s17, s17
10476548b635SShilei Tian; GFX10-NEXT:    v_max_f32_e64 v1, s16, s16
1048ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, v1, v0
1049ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
1050ee61a4dbSMatt Arsenault;
1051ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f32_s_s:
1052ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
1053ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1054ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f32_e64 v0, s1, s1
1055ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f32_e64 v1, s0, s0
1056ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1057ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f32_e32 v0, v1, v0
1058ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
1059ee61a4dbSMatt Arsenault;
1060ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f32_s_s:
1061ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
1062ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1063ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
1064ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
1065ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
1066ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
1067ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f32_e64 v0, s1, s1
1068ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f32_e64 v1, s0, s0
1069ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1070ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f32_e32 v0, v1, v0
1071ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
1072ee61a4dbSMatt Arsenault %result = call float @llvm.minimumnum.f32(float %x, float %y)
1073ee61a4dbSMatt Arsenault  ret float %result
1074ee61a4dbSMatt Arsenault}
1075ee61a4dbSMatt Arsenault
1076ee61a4dbSMatt Arsenaultdefine double @v_minimumnum_f64_s_v(double inreg %x, double %y) {
1077ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f64_s_v:
1078ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
1079ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1080ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
10816548b635SShilei Tian; GFX8-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17]
1082ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1]
1083ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
1084ee61a4dbSMatt Arsenault;
1085ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f64_s_v:
1086ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
1087ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1088ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
10896548b635SShilei Tian; GFX9-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17]
1090ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1]
1091ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1092ee61a4dbSMatt Arsenault;
1093ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f64_s_v:
1094ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
1095ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10966548b635SShilei Tian; GFX10-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17]
1097ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
1098ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1]
1099ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
1100ee61a4dbSMatt Arsenault;
1101ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f64_s_v:
1102ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
1103ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1104ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f64 v[2:3], s[0:1], s[0:1]
1105ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
1106ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1107ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1]
1108ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
1109ee61a4dbSMatt Arsenault;
1110ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f64_s_v:
1111ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
1112ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1113ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
1114ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
1115ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
1116ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
1117ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e64 v[2:3], s[0:1], s[0:1]
1118ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]
1119ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1120ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[2:3], v[0:1]
1121ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
1122ee61a4dbSMatt Arsenault %result = call double @llvm.minimumnum.f64(double %x, double %y)
1123ee61a4dbSMatt Arsenault  ret double %result
1124ee61a4dbSMatt Arsenault}
1125ee61a4dbSMatt Arsenault
1126ee61a4dbSMatt Arsenaultdefine double @v_minimumnum_f64_v_s(double %x, double inreg %y) {
1127ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f64_v_s:
1128ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
1129ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11306548b635SShilei Tian; GFX8-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17]
1131ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
1132ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
1133ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
1134ee61a4dbSMatt Arsenault;
1135ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f64_v_s:
1136ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
1137ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11386548b635SShilei Tian; GFX9-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17]
1139ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
1140ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
1141ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1142ee61a4dbSMatt Arsenault;
1143ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f64_v_s:
1144ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
1145ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11466548b635SShilei Tian; GFX10-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17]
1147ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
1148ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
1149ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
1150ee61a4dbSMatt Arsenault;
1151ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f64_v_s:
1152ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
1153ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1154ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f64 v[2:3], s[0:1], s[0:1]
1155ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
1156ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1157ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
1158ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
1159ee61a4dbSMatt Arsenault;
1160ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f64_v_s:
1161ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
1162ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1163ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
1164ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
1165ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
1166ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
1167ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e64 v[2:3], s[0:1], s[0:1]
1168ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]
1169ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1170ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]
1171ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
1172ee61a4dbSMatt Arsenault %result = call double @llvm.minimumnum.f64(double %x, double %y)
1173ee61a4dbSMatt Arsenault  ret double %result
1174ee61a4dbSMatt Arsenault}
1175ee61a4dbSMatt Arsenault
1176ee61a4dbSMatt Arsenaultdefine double @v_minimumnum_f64_s_s(double inreg %x, double inreg %y) {
1177ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f64_s_s:
1178ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
1179ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11806548b635SShilei Tian; GFX8-NEXT:    v_max_f64 v[0:1], s[18:19], s[18:19]
11816548b635SShilei Tian; GFX8-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17]
1182ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1]
1183ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
1184ee61a4dbSMatt Arsenault;
1185ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f64_s_s:
1186ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
1187ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11886548b635SShilei Tian; GFX9-NEXT:    v_max_f64 v[0:1], s[18:19], s[18:19]
11896548b635SShilei Tian; GFX9-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17]
1190ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1]
1191ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1192ee61a4dbSMatt Arsenault;
1193ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f64_s_s:
1194ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
1195ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11966548b635SShilei Tian; GFX10-NEXT:    v_max_f64 v[0:1], s[18:19], s[18:19]
11976548b635SShilei Tian; GFX10-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17]
1198ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1]
1199ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
1200ee61a4dbSMatt Arsenault;
1201ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f64_s_s:
1202ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
1203ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1204ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f64 v[0:1], s[2:3], s[2:3]
1205ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f64 v[2:3], s[0:1], s[0:1]
1206ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1207ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1]
1208ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
1209ee61a4dbSMatt Arsenault;
1210ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f64_s_s:
1211ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
1212ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1213ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
1214ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
1215ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
1216ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
1217ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e64 v[0:1], s[2:3], s[2:3]
1218ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e64 v[2:3], s[0:1], s[0:1]
1219ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1220ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[2:3], v[0:1]
1221ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
1222ee61a4dbSMatt Arsenault %result = call double @llvm.minimumnum.f64(double %x, double %y)
1223ee61a4dbSMatt Arsenault  ret double %result
1224ee61a4dbSMatt Arsenault}
1225ee61a4dbSMatt Arsenault
1226ee61a4dbSMatt Arsenaultdefine float @v_minimumnum_f32_fabs_rhs(float %x, float %y) {
1227ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f32_fabs_rhs:
1228ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
1229ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1230ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e64 v1, 1.0, |v1|
1231ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v0
1232ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, v0, v1
1233ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
1234ee61a4dbSMatt Arsenault;
1235ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f32_fabs_rhs:
1236ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
1237ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1238ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e64 v1, |v1|, |v1|
1239ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v0, v0, v0
1240ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, v0, v1
1241ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1242ee61a4dbSMatt Arsenault;
1243ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f32_fabs_rhs:
1244ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
1245ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1246ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e64 v1, |v1|, |v1|
1247ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v0, v0, v0
1248ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, v0, v1
1249ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
1250ee61a4dbSMatt Arsenault;
1251ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f32_fabs_rhs:
1252ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
1253ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1254ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f32_e64 v1, |v1|, |v1|
1255ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f32_e32 v0, v0, v0
1256ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1257ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f32_e32 v0, v0, v1
1258ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
1259ee61a4dbSMatt Arsenault;
1260ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f32_fabs_rhs:
1261ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
1262ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1263ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
1264ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
1265ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
1266ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
1267ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f32_e64 v1, |v1|, |v1|
1268ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f32_e32 v0, v0, v0
1269ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1270ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f32_e32 v0, v0, v1
1271ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
1272ee61a4dbSMatt Arsenault  %fabs.y = call float @llvm.fabs.f32(float %y)
1273ee61a4dbSMatt Arsenault  %result = call float @llvm.minimumnum.f32(float %x, float %fabs.y)
1274ee61a4dbSMatt Arsenault  ret float %result
1275ee61a4dbSMatt Arsenault}
1276ee61a4dbSMatt Arsenault
1277ee61a4dbSMatt Arsenaultdefine float @v_minimumnum_f32_fneg_fabs_rhs(float %x, float %y) {
1278ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f32_fneg_fabs_rhs:
1279ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
1280ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1281ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e64 v1, -1.0, |v1|
1282ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v0
1283ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, v0, v1
1284ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
1285ee61a4dbSMatt Arsenault;
1286ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f32_fneg_fabs_rhs:
1287ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
1288ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1289ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e64 v1, -|v1|, -|v1|
1290ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v0, v0, v0
1291ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, v0, v1
1292ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1293ee61a4dbSMatt Arsenault;
1294ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f32_fneg_fabs_rhs:
1295ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
1296ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1297ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e64 v1, -|v1|, -|v1|
1298ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v0, v0, v0
1299ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, v0, v1
1300ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
1301ee61a4dbSMatt Arsenault;
1302ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f32_fneg_fabs_rhs:
1303ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
1304ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1305ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f32_e64 v1, -|v1|, -|v1|
1306ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f32_e32 v0, v0, v0
1307ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1308ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f32_e32 v0, v0, v1
1309ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
1310ee61a4dbSMatt Arsenault;
1311ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f32_fneg_fabs_rhs:
1312ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
1313ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1314ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
1315ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
1316ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
1317ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
1318ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f32_e64 v1, -|v1|, -|v1|
1319ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f32_e32 v0, v0, v0
1320ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1321ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f32_e32 v0, v0, v1
1322ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
1323ee61a4dbSMatt Arsenault  %fabs.y = call float @llvm.fabs.f32(float %y)
1324ee61a4dbSMatt Arsenault  %fneg.fabs.y = fneg float %fabs.y
1325ee61a4dbSMatt Arsenault  %result = call float @llvm.minimumnum.f32(float %x, float %fneg.fabs.y)
1326ee61a4dbSMatt Arsenault  ret float %result
1327ee61a4dbSMatt Arsenault}
1328ee61a4dbSMatt Arsenault
1329ee61a4dbSMatt Arsenaultdefine float @v_minimumnum_f32_fabs(float %x, float %y) {
1330ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f32_fabs:
1331ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
1332ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1333ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e64 v1, 1.0, |v1|
1334ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e64 v0, 1.0, |v0|
1335ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, v0, v1
1336ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
1337ee61a4dbSMatt Arsenault;
1338ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f32_fabs:
1339ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
1340ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1341ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e64 v1, |v1|, |v1|
1342ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e64 v0, |v0|, |v0|
1343ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, v0, v1
1344ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1345ee61a4dbSMatt Arsenault;
1346ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f32_fabs:
1347ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
1348ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1349ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e64 v1, |v1|, |v1|
1350ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e64 v0, |v0|, |v0|
1351ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, v0, v1
1352ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
1353ee61a4dbSMatt Arsenault;
1354ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f32_fabs:
1355ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
1356ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1357ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f32_e64 v1, |v1|, |v1|
1358ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f32_e64 v0, |v0|, |v0|
1359ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1360ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f32_e32 v0, v0, v1
1361ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
1362ee61a4dbSMatt Arsenault;
1363ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f32_fabs:
1364ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
1365ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1366ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
1367ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
1368ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
1369ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
1370ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f32_e64 v1, |v1|, |v1|
1371ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f32_e64 v0, |v0|, |v0|
1372ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1373ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f32_e32 v0, v0, v1
1374ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
1375ee61a4dbSMatt Arsenault  %fabs.x = call float @llvm.fabs.f32(float %x)
1376ee61a4dbSMatt Arsenault  %fabs.y = call float @llvm.fabs.f32(float %y)
1377ee61a4dbSMatt Arsenault  %result = call float @llvm.minimumnum.f32(float %fabs.x, float %fabs.y)
1378ee61a4dbSMatt Arsenault  ret float %result
1379ee61a4dbSMatt Arsenault}
1380ee61a4dbSMatt Arsenault
1381ee61a4dbSMatt Arsenaultdefine float @v_minimumnum_f32_fneg(float %x, float %y) {
1382ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f32_fneg:
1383ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
1384ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1385ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v1, -1.0, v1
1386ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v0, -1.0, v0
1387ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, v0, v1
1388ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
1389ee61a4dbSMatt Arsenault;
1390ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f32_fneg:
1391ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
1392ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1393ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e64 v1, -v1, -v1
1394ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f32_e64 v0, -v0, -v0
1395ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, v0, v1
1396ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1397ee61a4dbSMatt Arsenault;
1398ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f32_fneg:
1399ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
1400ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1401ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e64 v1, -v1, -v1
1402ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f32_e64 v0, -v0, -v0
1403ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, v0, v1
1404ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
1405ee61a4dbSMatt Arsenault;
1406ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f32_fneg:
1407ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
1408ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1409ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f32_e64 v1, -v1, -v1
1410ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f32_e64 v0, -v0, -v0
1411ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1412ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f32_e32 v0, v0, v1
1413ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
1414ee61a4dbSMatt Arsenault;
1415ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f32_fneg:
1416ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
1417ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1418ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
1419ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
1420ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
1421ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
1422ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f32_e64 v1, -v1, -v1
1423ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f32_e64 v0, -v0, -v0
1424ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1425ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f32_e32 v0, v0, v1
1426ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
1427ee61a4dbSMatt Arsenault  %fneg.x = fneg float %x
1428ee61a4dbSMatt Arsenault  %fneg.y = fneg float %y
1429ee61a4dbSMatt Arsenault  %result = call float @llvm.minimumnum.f32(float %fneg.x, float %fneg.y)
1430ee61a4dbSMatt Arsenault  ret float %result
1431ee61a4dbSMatt Arsenault}
1432ee61a4dbSMatt Arsenault
1433ee61a4dbSMatt Arsenaultdefine half @v_minimumnum_f16_fabs_rhs(half %x, half %y) {
1434ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f16_fabs_rhs:
1435ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
1436ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1437ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f16_e64 v1, |v1|, |v1|
1438ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f16_e32 v0, v0, v0
1439ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f16_e32 v0, v0, v1
1440ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
1441ee61a4dbSMatt Arsenault;
1442ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f16_fabs_rhs:
1443ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
1444ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1445ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f16_e64 v1, |v1|, |v1|
1446ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f16_e32 v0, v0, v0
1447ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f16_e32 v0, v0, v1
1448ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1449ee61a4dbSMatt Arsenault;
1450ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f16_fabs_rhs:
1451ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
1452ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1453ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f16_e64 v1, |v1|, |v1|
1454ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f16_e32 v0, v0, v0
1455ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f16_e32 v0, v0, v1
1456ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
1457ee61a4dbSMatt Arsenault;
1458ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f16_fabs_rhs:
1459ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
1460ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1461ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f16_e64 v1, |v1|, |v1|
1462ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f16_e32 v0, v0, v0
1463ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1464ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f16_e32 v0, v0, v1
1465ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
1466ee61a4dbSMatt Arsenault;
1467ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f16_fabs_rhs:
1468ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
1469ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1470ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
1471ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
1472ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
1473ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
1474ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f16_e64 v1, |v1|, |v1|
1475ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f16_e32 v0, v0, v0
1476ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1477ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f16_e32 v0, v0, v1
1478ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
1479ee61a4dbSMatt Arsenault  %fabs.y = call half @llvm.fabs.f16(half %y)
1480ee61a4dbSMatt Arsenault  %result = call half @llvm.minimumnum.f16(half %x, half %fabs.y)
1481ee61a4dbSMatt Arsenault  ret half %result
1482ee61a4dbSMatt Arsenault}
1483ee61a4dbSMatt Arsenault
1484ee61a4dbSMatt Arsenaultdefine half @v_minimumnum_f16_fneg_fabs_rhs(half %x, half %y) {
1485ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f16_fneg_fabs_rhs:
1486ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
1487ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1488ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f16_e64 v1, -|v1|, -|v1|
1489ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f16_e32 v0, v0, v0
1490ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f16_e32 v0, v0, v1
1491ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
1492ee61a4dbSMatt Arsenault;
1493ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f16_fneg_fabs_rhs:
1494ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
1495ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1496ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f16_e64 v1, -|v1|, -|v1|
1497ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f16_e32 v0, v0, v0
1498ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f16_e32 v0, v0, v1
1499ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1500ee61a4dbSMatt Arsenault;
1501ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f16_fneg_fabs_rhs:
1502ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
1503ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1504ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f16_e64 v1, -|v1|, -|v1|
1505ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f16_e32 v0, v0, v0
1506ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f16_e32 v0, v0, v1
1507ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
1508ee61a4dbSMatt Arsenault;
1509ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f16_fneg_fabs_rhs:
1510ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
1511ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1512ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f16_e64 v1, -|v1|, -|v1|
1513ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f16_e32 v0, v0, v0
1514ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1515ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f16_e32 v0, v0, v1
1516ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
1517ee61a4dbSMatt Arsenault;
1518ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f16_fneg_fabs_rhs:
1519ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
1520ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1521ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
1522ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
1523ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
1524ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
1525ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f16_e64 v1, -|v1|, -|v1|
1526ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f16_e32 v0, v0, v0
1527ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1528ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f16_e32 v0, v0, v1
1529ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
1530ee61a4dbSMatt Arsenault  %fabs.y = call half @llvm.fabs.f16(half %y)
1531ee61a4dbSMatt Arsenault  %fneg.fabs.y = fneg half %fabs.y
1532ee61a4dbSMatt Arsenault  %result = call half @llvm.minimumnum.f16(half %x, half %fneg.fabs.y)
1533ee61a4dbSMatt Arsenault  ret half %result
1534ee61a4dbSMatt Arsenault}
1535ee61a4dbSMatt Arsenault
1536ee61a4dbSMatt Arsenaultdefine half @v_minimumnum_f16_fabs(half %x, half %y) {
1537ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f16_fabs:
1538ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
1539ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1540ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f16_e64 v1, |v1|, |v1|
1541ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f16_e64 v0, |v0|, |v0|
1542ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f16_e32 v0, v0, v1
1543ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
1544ee61a4dbSMatt Arsenault;
1545ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f16_fabs:
1546ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
1547ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1548ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f16_e64 v1, |v1|, |v1|
1549ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f16_e64 v0, |v0|, |v0|
1550ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f16_e32 v0, v0, v1
1551ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1552ee61a4dbSMatt Arsenault;
1553ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f16_fabs:
1554ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
1555ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1556ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f16_e64 v1, |v1|, |v1|
1557ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f16_e64 v0, |v0|, |v0|
1558ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f16_e32 v0, v0, v1
1559ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
1560ee61a4dbSMatt Arsenault;
1561ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f16_fabs:
1562ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
1563ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1564ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f16_e64 v1, |v1|, |v1|
1565ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f16_e64 v0, |v0|, |v0|
1566ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1567ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f16_e32 v0, v0, v1
1568ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
1569ee61a4dbSMatt Arsenault;
1570ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f16_fabs:
1571ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
1572ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1573ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
1574ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
1575ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
1576ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
1577ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f16_e64 v1, |v1|, |v1|
1578ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f16_e64 v0, |v0|, |v0|
1579ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1580ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f16_e32 v0, v0, v1
1581ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
1582ee61a4dbSMatt Arsenault  %fabs.x = call half @llvm.fabs.f16(half %x)
1583ee61a4dbSMatt Arsenault  %fabs.y = call half @llvm.fabs.f16(half %y)
1584ee61a4dbSMatt Arsenault  %result = call half @llvm.minimumnum.f16(half %fabs.x, half %fabs.y)
1585ee61a4dbSMatt Arsenault  ret half %result
1586ee61a4dbSMatt Arsenault}
1587ee61a4dbSMatt Arsenault
1588ee61a4dbSMatt Arsenaultdefine half @v_minimumnum_f16_fneg(half %x, half %y) {
1589ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f16_fneg:
1590ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
1591ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1592ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f16_e64 v1, -v1, -v1
1593ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f16_e64 v0, -v0, -v0
1594ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f16_e32 v0, v0, v1
1595ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
1596ee61a4dbSMatt Arsenault;
1597ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f16_fneg:
1598ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
1599ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1600ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f16_e64 v1, -v1, -v1
1601ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f16_e64 v0, -v0, -v0
1602ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f16_e32 v0, v0, v1
1603ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1604ee61a4dbSMatt Arsenault;
1605ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f16_fneg:
1606ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
1607ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1608ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f16_e64 v1, -v1, -v1
1609ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f16_e64 v0, -v0, -v0
1610ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f16_e32 v0, v0, v1
1611ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
1612ee61a4dbSMatt Arsenault;
1613ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f16_fneg:
1614ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
1615ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1616ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f16_e64 v1, -v1, -v1
1617ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f16_e64 v0, -v0, -v0
1618ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1619ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f16_e32 v0, v0, v1
1620ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
1621ee61a4dbSMatt Arsenault;
1622ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f16_fneg:
1623ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
1624ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1625ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
1626ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
1627ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
1628ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
1629ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f16_e64 v1, -v1, -v1
1630ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f16_e64 v0, -v0, -v0
1631ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1632ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f16_e32 v0, v0, v1
1633ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
1634ee61a4dbSMatt Arsenault  %fneg.x = fneg half %x
1635ee61a4dbSMatt Arsenault  %fneg.y = fneg half %y
1636ee61a4dbSMatt Arsenault  %result = call half @llvm.minimumnum.f16(half %fneg.x, half %fneg.y)
1637ee61a4dbSMatt Arsenault  ret half %result
1638ee61a4dbSMatt Arsenault}
1639ee61a4dbSMatt Arsenault
1640ee61a4dbSMatt Arsenaultdefine double @v_minimumnum_f64_fneg(double %x, double %y) {
1641ee61a4dbSMatt Arsenault; GFX8-LABEL: v_minimumnum_f64_fneg:
1642ee61a4dbSMatt Arsenault; GFX8:       ; %bb.0:
1643ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1644ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f64 v[2:3], -v[2:3], -v[2:3]
1645ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_max_f64 v[0:1], -v[0:1], -v[0:1]
1646ee61a4dbSMatt Arsenault; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
1647ee61a4dbSMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
1648ee61a4dbSMatt Arsenault;
1649ee61a4dbSMatt Arsenault; GFX9-LABEL: v_minimumnum_f64_fneg:
1650ee61a4dbSMatt Arsenault; GFX9:       ; %bb.0:
1651ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1652ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f64 v[2:3], -v[2:3], -v[2:3]
1653ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_max_f64 v[0:1], -v[0:1], -v[0:1]
1654ee61a4dbSMatt Arsenault; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
1655ee61a4dbSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1656ee61a4dbSMatt Arsenault;
1657ee61a4dbSMatt Arsenault; GFX10-LABEL: v_minimumnum_f64_fneg:
1658ee61a4dbSMatt Arsenault; GFX10:       ; %bb.0:
1659ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1660ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f64 v[2:3], -v[2:3], -v[2:3]
1661ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_max_f64 v[0:1], -v[0:1], -v[0:1]
1662ee61a4dbSMatt Arsenault; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
1663ee61a4dbSMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
1664ee61a4dbSMatt Arsenault;
1665ee61a4dbSMatt Arsenault; GFX11-LABEL: v_minimumnum_f64_fneg:
1666ee61a4dbSMatt Arsenault; GFX11:       ; %bb.0:
1667ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1668ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f64 v[2:3], -v[2:3], -v[2:3]
1669ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_max_f64 v[0:1], -v[0:1], -v[0:1]
1670ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1671ee61a4dbSMatt Arsenault; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
1672ee61a4dbSMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
1673ee61a4dbSMatt Arsenault;
1674ee61a4dbSMatt Arsenault; GFX12-LABEL: v_minimumnum_f64_fneg:
1675ee61a4dbSMatt Arsenault; GFX12:       ; %bb.0:
1676ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1677ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
1678ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
1679ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
1680ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
1681ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e64 v[2:3], -v[2:3], -v[2:3]
1682ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e64 v[0:1], -v[0:1], -v[0:1]
1683ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1684ee61a4dbSMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[2:3]
1685ee61a4dbSMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
1686ee61a4dbSMatt Arsenault  %fneg.x = fneg double %x
1687ee61a4dbSMatt Arsenault  %fneg.y = fneg double %y
1688ee61a4dbSMatt Arsenault  %result = call double @llvm.minimumnum.f64(double %fneg.x, double %fneg.y)
1689ee61a4dbSMatt Arsenault  ret double %result
1690ee61a4dbSMatt Arsenault}
16915883ad34SMatt Arsenault
16925883ad34SMatt Arsenaultdefine <2 x half> @v_minimumnum_v2f16(<2 x half> %x, <2 x half> %y) {
16935883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v2f16:
16945883ad34SMatt Arsenault; GFX8:       ; %bb.0:
16955883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16965883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f16_sdwa v2, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
16975883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f16_sdwa v3, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
16985883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f16_e32 v1, v1, v1
16995883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f16_e32 v0, v0, v0
17005883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f16_sdwa v2, v3, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
17015883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f16_e32 v0, v0, v1
17025883ad34SMatt Arsenault; GFX8-NEXT:    v_or_b32_e32 v0, v0, v2
17035883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
17045883ad34SMatt Arsenault;
17055883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v2f16:
17065883ad34SMatt Arsenault; GFX9:       ; %bb.0:
17075883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17085883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v1, v1, v1
17095883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v0, v0, v0
17105883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_min_f16 v0, v0, v1
17115883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
17125883ad34SMatt Arsenault;
17135883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v2f16:
17145883ad34SMatt Arsenault; GFX10:       ; %bb.0:
17155883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17165883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v1, v1, v1
17175883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v0, v0, v0
17185883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_min_f16 v0, v0, v1
17195883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
17205883ad34SMatt Arsenault;
17215883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v2f16:
17225883ad34SMatt Arsenault; GFX11:       ; %bb.0:
17235883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17245883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v1, v1, v1
17255883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v0, v0, v0
17265883ad34SMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
17275883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_min_f16 v0, v0, v1
17285883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
17295883ad34SMatt Arsenault;
17305883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v2f16:
17315883ad34SMatt Arsenault; GFX12:       ; %bb.0:
17325883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
17335883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
17345883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
17355883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
17365883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
17375883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v1, v1, v1
17385883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v0, v0, v0
17395883ad34SMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
17405883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_min_num_f16 v0, v0, v1
17415883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
17425883ad34SMatt Arsenault  %result = call <2 x half> @llvm.minimumnum.v2f16(<2 x half> %x, <2 x half> %y)
17435883ad34SMatt Arsenault  ret <2 x half> %result
17445883ad34SMatt Arsenault}
17455883ad34SMatt Arsenault
17465883ad34SMatt Arsenaultdefine <2 x half> @v_minimumnum_v2f16_nnan(<2 x half> %x, <2 x half> %y) {
17475883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v2f16_nnan:
17485883ad34SMatt Arsenault; GFX8:       ; %bb.0:
17495883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17505883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f16_sdwa v2, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
17515883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f16_e32 v0, v0, v1
17525883ad34SMatt Arsenault; GFX8-NEXT:    v_or_b32_e32 v0, v0, v2
17535883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
17545883ad34SMatt Arsenault;
17555883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v2f16_nnan:
17565883ad34SMatt Arsenault; GFX9:       ; %bb.0:
17575883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17585883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_min_f16 v0, v0, v1
17595883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
17605883ad34SMatt Arsenault;
17615883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v2f16_nnan:
17625883ad34SMatt Arsenault; GFX10:       ; %bb.0:
17635883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17645883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_min_f16 v0, v0, v1
17655883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
17665883ad34SMatt Arsenault;
17675883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v2f16_nnan:
17685883ad34SMatt Arsenault; GFX11:       ; %bb.0:
17695883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17705883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_min_f16 v0, v0, v1
17715883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
17725883ad34SMatt Arsenault;
17735883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v2f16_nnan:
17745883ad34SMatt Arsenault; GFX12:       ; %bb.0:
17755883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
17765883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
17775883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
17785883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
17795883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
17805883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_min_num_f16 v0, v0, v1
17815883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
17825883ad34SMatt Arsenault  %result = call nnan <2 x half> @llvm.minimumnum.v2f16(<2 x half> %x, <2 x half> %y)
17835883ad34SMatt Arsenault  ret <2 x half> %result
17845883ad34SMatt Arsenault}
17855883ad34SMatt Arsenault
17865883ad34SMatt Arsenaultdefine <3 x half> @v_minimumnum_v3f16(<3 x half> %x, <3 x half> %y) {
17875883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v3f16:
17885883ad34SMatt Arsenault; GFX8:       ; %bb.0:
17895883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17905883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f16_sdwa v4, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
17915883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f16_sdwa v5, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
17925883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f16_e32 v2, v2, v2
17935883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f16_e32 v0, v0, v0
17945883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f16_sdwa v4, v5, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
1795*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_e32 v3, v3, v3
17965883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f16_e32 v1, v1, v1
1797*15473820SPhoebe Wang; GFX8-NEXT:    v_min_f16_e32 v0, v0, v2
1798*15473820SPhoebe Wang; GFX8-NEXT:    v_min_f16_e32 v1, v1, v3
17995883ad34SMatt Arsenault; GFX8-NEXT:    v_or_b32_e32 v0, v0, v4
18005883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
18015883ad34SMatt Arsenault;
18025883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v3f16:
18035883ad34SMatt Arsenault; GFX9:       ; %bb.0:
18045883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18055883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v2, v2, v2
18065883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v0, v0, v0
18075883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_min_f16 v0, v0, v2
18085883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v2, v3, v3
18095883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v1, v1, v1
18105883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_min_f16 v1, v1, v2
18115883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
18125883ad34SMatt Arsenault;
18135883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v3f16:
18145883ad34SMatt Arsenault; GFX10:       ; %bb.0:
18155883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18165883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v2, v2, v2
18175883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v0, v0, v0
18185883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v3, v3, v3
18195883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v1, v1, v1
18205883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_min_f16 v0, v0, v2
18215883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_min_f16 v1, v1, v3
18225883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
18235883ad34SMatt Arsenault;
18245883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v3f16:
18255883ad34SMatt Arsenault; GFX11:       ; %bb.0:
18265883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18275883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v2, v2, v2
18285883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v0, v0, v0
18295883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v3, v3, v3
18305883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v1, v1, v1
18315883ad34SMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
18325883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_min_f16 v0, v0, v2
18335883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_min_f16 v1, v1, v3
18345883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
18355883ad34SMatt Arsenault;
18365883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v3f16:
18375883ad34SMatt Arsenault; GFX12:       ; %bb.0:
18385883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
18395883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
18405883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
18415883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
18425883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
18435883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v2
18445883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v0, v0, v0
18455883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v3, v3, v3
18465883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v1, v1, v1
18475883ad34SMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
18485883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_min_num_f16 v0, v0, v2
18495883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_min_num_f16 v1, v1, v3
18505883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
18515883ad34SMatt Arsenault  %result = call <3 x half> @llvm.minimumnum.v3f16(<3 x half> %x, <3 x half> %y)
18525883ad34SMatt Arsenault  ret <3 x half> %result
18535883ad34SMatt Arsenault}
18545883ad34SMatt Arsenault
18555883ad34SMatt Arsenaultdefine <3 x half> @v_minimumnum_v3f16_nnan(<3 x half> %x, <3 x half> %y) {
18565883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v3f16_nnan:
18575883ad34SMatt Arsenault; GFX8:       ; %bb.0:
18585883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18595883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f16_sdwa v4, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
18605883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f16_e32 v0, v0, v2
18615883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f16_e32 v1, v1, v3
1862*15473820SPhoebe Wang; GFX8-NEXT:    v_or_b32_e32 v0, v0, v4
18635883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
18645883ad34SMatt Arsenault;
18655883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v3f16_nnan:
18665883ad34SMatt Arsenault; GFX9:       ; %bb.0:
18675883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18685883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_min_f16 v0, v0, v2
18695883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_min_f16 v1, v1, v3
18705883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
18715883ad34SMatt Arsenault;
18725883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v3f16_nnan:
18735883ad34SMatt Arsenault; GFX10:       ; %bb.0:
18745883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18755883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_min_f16 v0, v0, v2
18765883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_min_f16 v1, v1, v3
18775883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
18785883ad34SMatt Arsenault;
18795883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v3f16_nnan:
18805883ad34SMatt Arsenault; GFX11:       ; %bb.0:
18815883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18825883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_min_f16 v0, v0, v2
18835883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_min_f16 v1, v1, v3
18845883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
18855883ad34SMatt Arsenault;
18865883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v3f16_nnan:
18875883ad34SMatt Arsenault; GFX12:       ; %bb.0:
18885883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
18895883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
18905883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
18915883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
18925883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
18935883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_min_num_f16 v0, v0, v2
18945883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_min_num_f16 v1, v1, v3
18955883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
18965883ad34SMatt Arsenault  %result = call nnan <3 x half> @llvm.minimumnum.v3f16(<3 x half> %x, <3 x half> %y)
18975883ad34SMatt Arsenault  ret <3 x half> %result
18985883ad34SMatt Arsenault}
18995883ad34SMatt Arsenault
19005883ad34SMatt Arsenaultdefine <4 x half> @v_minimumnum_v4f16(<4 x half> %x, <4 x half> %y) {
19015883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v4f16:
19025883ad34SMatt Arsenault; GFX8:       ; %bb.0:
19035883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1904*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_sdwa v4, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
1905*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_sdwa v5, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
19065883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f16_sdwa v4, v5, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
1907*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_sdwa v5, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
1908*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_sdwa v6, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
19095883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f16_e32 v3, v3, v3
19105883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f16_e32 v1, v1, v1
1911*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_e32 v2, v2, v2
1912*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_e32 v0, v0, v0
1913*15473820SPhoebe Wang; GFX8-NEXT:    v_min_f16_sdwa v5, v6, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
19145883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f16_e32 v1, v1, v3
1915*15473820SPhoebe Wang; GFX8-NEXT:    v_min_f16_e32 v0, v0, v2
1916*15473820SPhoebe Wang; GFX8-NEXT:    v_or_b32_e32 v0, v0, v5
1917*15473820SPhoebe Wang; GFX8-NEXT:    v_or_b32_e32 v1, v1, v4
19185883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
19195883ad34SMatt Arsenault;
19205883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v4f16:
19215883ad34SMatt Arsenault; GFX9:       ; %bb.0:
19225883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19235883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v2, v2, v2
19245883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v0, v0, v0
19255883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_min_f16 v0, v0, v2
19265883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v2, v3, v3
19275883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v1, v1, v1
19285883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_min_f16 v1, v1, v2
19295883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
19305883ad34SMatt Arsenault;
19315883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v4f16:
19325883ad34SMatt Arsenault; GFX10:       ; %bb.0:
19335883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19345883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v2, v2, v2
19355883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v0, v0, v0
19365883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v3, v3, v3
19375883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v1, v1, v1
19385883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_min_f16 v0, v0, v2
19395883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_min_f16 v1, v1, v3
19405883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
19415883ad34SMatt Arsenault;
19425883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v4f16:
19435883ad34SMatt Arsenault; GFX11:       ; %bb.0:
19445883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19455883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v2, v2, v2
19465883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v0, v0, v0
19475883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v3, v3, v3
19485883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v1, v1, v1
19495883ad34SMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
19505883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_min_f16 v0, v0, v2
19515883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_min_f16 v1, v1, v3
19525883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
19535883ad34SMatt Arsenault;
19545883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v4f16:
19555883ad34SMatt Arsenault; GFX12:       ; %bb.0:
19565883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
19575883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
19585883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
19595883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
19605883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
19615883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v2
19625883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v0, v0, v0
19635883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v3, v3, v3
19645883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v1, v1, v1
19655883ad34SMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
19665883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_min_num_f16 v0, v0, v2
19675883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_min_num_f16 v1, v1, v3
19685883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
19695883ad34SMatt Arsenault  %result = call <4 x half> @llvm.minimumnum.v4f16(<4 x half> %x, <4 x half> %y)
19705883ad34SMatt Arsenault  ret <4 x half> %result
19715883ad34SMatt Arsenault}
19725883ad34SMatt Arsenault
19735883ad34SMatt Arsenaultdefine <4 x half> @v_minimumnum_v4f16_nnan(<4 x half> %x, <4 x half> %y) {
19745883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v4f16_nnan:
19755883ad34SMatt Arsenault; GFX8:       ; %bb.0:
19765883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1977*15473820SPhoebe Wang; GFX8-NEXT:    v_min_f16_sdwa v4, v1, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
1978*15473820SPhoebe Wang; GFX8-NEXT:    v_min_f16_sdwa v5, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
19795883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f16_e32 v1, v1, v3
1980*15473820SPhoebe Wang; GFX8-NEXT:    v_min_f16_e32 v0, v0, v2
1981*15473820SPhoebe Wang; GFX8-NEXT:    v_or_b32_e32 v0, v0, v5
1982*15473820SPhoebe Wang; GFX8-NEXT:    v_or_b32_e32 v1, v1, v4
19835883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
19845883ad34SMatt Arsenault;
19855883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v4f16_nnan:
19865883ad34SMatt Arsenault; GFX9:       ; %bb.0:
19875883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19885883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_min_f16 v0, v0, v2
19895883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_min_f16 v1, v1, v3
19905883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
19915883ad34SMatt Arsenault;
19925883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v4f16_nnan:
19935883ad34SMatt Arsenault; GFX10:       ; %bb.0:
19945883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19955883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_min_f16 v0, v0, v2
19965883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_min_f16 v1, v1, v3
19975883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
19985883ad34SMatt Arsenault;
19995883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v4f16_nnan:
20005883ad34SMatt Arsenault; GFX11:       ; %bb.0:
20015883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20025883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_min_f16 v0, v0, v2
20035883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_min_f16 v1, v1, v3
20045883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
20055883ad34SMatt Arsenault;
20065883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v4f16_nnan:
20075883ad34SMatt Arsenault; GFX12:       ; %bb.0:
20085883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
20095883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
20105883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
20115883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
20125883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
20135883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_min_num_f16 v0, v0, v2
20145883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_min_num_f16 v1, v1, v3
20155883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
20165883ad34SMatt Arsenault  %result = call nnan <4 x half> @llvm.minimumnum.v4f16(<4 x half> %x, <4 x half> %y)
20175883ad34SMatt Arsenault  ret <4 x half> %result
20185883ad34SMatt Arsenault}
20195883ad34SMatt Arsenault
20205883ad34SMatt Arsenaultdefine <6 x half> @v_minimumnum_v6f16(<6 x half> %x, <6 x half> %y) {
20215883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v6f16:
20225883ad34SMatt Arsenault; GFX8:       ; %bb.0:
20235883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2024*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_sdwa v6, v5, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
2025*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_sdwa v7, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
20265883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f16_sdwa v6, v7, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
2027*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_sdwa v7, v4, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
2028*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_sdwa v8, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
2029*15473820SPhoebe Wang; GFX8-NEXT:    v_min_f16_sdwa v7, v8, v7 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
2030*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_sdwa v8, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
2031*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_sdwa v9, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
2032*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_e32 v5, v5, v5
2033*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_e32 v2, v2, v2
20345883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f16_e32 v4, v4, v4
20355883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f16_e32 v1, v1, v1
2036*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_e32 v3, v3, v3
2037*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_e32 v0, v0, v0
2038*15473820SPhoebe Wang; GFX8-NEXT:    v_min_f16_sdwa v8, v9, v8 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
2039*15473820SPhoebe Wang; GFX8-NEXT:    v_min_f16_e32 v2, v2, v5
20405883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f16_e32 v1, v1, v4
2041*15473820SPhoebe Wang; GFX8-NEXT:    v_min_f16_e32 v0, v0, v3
2042*15473820SPhoebe Wang; GFX8-NEXT:    v_or_b32_e32 v0, v0, v8
2043*15473820SPhoebe Wang; GFX8-NEXT:    v_or_b32_e32 v1, v1, v7
2044*15473820SPhoebe Wang; GFX8-NEXT:    v_or_b32_e32 v2, v2, v6
20455883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
20465883ad34SMatt Arsenault;
20475883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v6f16:
20485883ad34SMatt Arsenault; GFX9:       ; %bb.0:
20495883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20505883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v3, v3, v3
20515883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v0, v0, v0
20525883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_min_f16 v0, v0, v3
20535883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v3, v4, v4
20545883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v1, v1, v1
20555883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_min_f16 v1, v1, v3
20565883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v3, v5, v5
20575883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v2, v2, v2
20585883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_min_f16 v2, v2, v3
20595883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
20605883ad34SMatt Arsenault;
20615883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v6f16:
20625883ad34SMatt Arsenault; GFX10:       ; %bb.0:
20635883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20645883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v3, v3, v3
20655883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v0, v0, v0
20665883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v4, v4, v4
20675883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v1, v1, v1
20685883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v5, v5, v5
20695883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v2, v2, v2
20705883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_min_f16 v0, v0, v3
20715883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_min_f16 v1, v1, v4
20725883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_min_f16 v2, v2, v5
20735883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
20745883ad34SMatt Arsenault;
20755883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v6f16:
20765883ad34SMatt Arsenault; GFX11:       ; %bb.0:
20775883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20785883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v3, v3, v3
20795883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v0, v0, v0
20805883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v4, v4, v4
20815883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v1, v1, v1
20825883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v5, v5, v5
20835883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v2, v2, v2
20845883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_min_f16 v0, v0, v3
20855883ad34SMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)
20865883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_min_f16 v1, v1, v4
20875883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_min_f16 v2, v2, v5
20885883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
20895883ad34SMatt Arsenault;
20905883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v6f16:
20915883ad34SMatt Arsenault; GFX12:       ; %bb.0:
20925883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
20935883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
20945883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
20955883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
20965883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
20975883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v3, v3, v3
20985883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v0, v0, v0
20995883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v4, v4, v4
21005883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v1, v1, v1
21015883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v5, v5, v5
21025883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v2
21035883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_min_num_f16 v0, v0, v3
21045883ad34SMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)
21055883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_min_num_f16 v1, v1, v4
21065883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_min_num_f16 v2, v2, v5
21075883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
21085883ad34SMatt Arsenault  %result = call <6 x half> @llvm.minimumnum.v6f16(<6 x half> %x, <6 x half> %y)
21095883ad34SMatt Arsenault  ret <6 x half> %result
21105883ad34SMatt Arsenault}
21115883ad34SMatt Arsenault
21125883ad34SMatt Arsenaultdefine <8 x half> @v_minimumnum_v8f16(<8 x half> %x, <8 x half> %y) {
21135883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v8f16:
21145883ad34SMatt Arsenault; GFX8:       ; %bb.0:
21155883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2116*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_sdwa v8, v7, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
2117*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_sdwa v9, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
21185883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f16_sdwa v8, v9, v8 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
2119*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_sdwa v9, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
2120*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_sdwa v10, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
2121*15473820SPhoebe Wang; GFX8-NEXT:    v_min_f16_sdwa v9, v10, v9 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
2122*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_sdwa v10, v5, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
2123*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_sdwa v11, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
2124*15473820SPhoebe Wang; GFX8-NEXT:    v_min_f16_sdwa v10, v11, v10 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
2125*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_sdwa v11, v4, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
2126*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_sdwa v12, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1
2127*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_e32 v7, v7, v7
2128*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_e32 v3, v3, v3
2129*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_e32 v6, v6, v6
2130*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_e32 v2, v2, v2
21315883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f16_e32 v5, v5, v5
21325883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f16_e32 v1, v1, v1
2133*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_e32 v4, v4, v4
2134*15473820SPhoebe Wang; GFX8-NEXT:    v_max_f16_e32 v0, v0, v0
2135*15473820SPhoebe Wang; GFX8-NEXT:    v_min_f16_sdwa v11, v12, v11 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
2136*15473820SPhoebe Wang; GFX8-NEXT:    v_min_f16_e32 v3, v3, v7
2137*15473820SPhoebe Wang; GFX8-NEXT:    v_min_f16_e32 v2, v2, v6
21385883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f16_e32 v1, v1, v5
2139*15473820SPhoebe Wang; GFX8-NEXT:    v_min_f16_e32 v0, v0, v4
2140*15473820SPhoebe Wang; GFX8-NEXT:    v_or_b32_e32 v0, v0, v11
2141*15473820SPhoebe Wang; GFX8-NEXT:    v_or_b32_e32 v1, v1, v10
2142*15473820SPhoebe Wang; GFX8-NEXT:    v_or_b32_e32 v2, v2, v9
2143*15473820SPhoebe Wang; GFX8-NEXT:    v_or_b32_e32 v3, v3, v8
21445883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
21455883ad34SMatt Arsenault;
21465883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v8f16:
21475883ad34SMatt Arsenault; GFX9:       ; %bb.0:
21485883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21495883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v4, v4, v4
21505883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v0, v0, v0
21515883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_min_f16 v0, v0, v4
21525883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v4, v5, v5
21535883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v1, v1, v1
21545883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_min_f16 v1, v1, v4
21555883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v4, v6, v6
21565883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v2, v2, v2
21575883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_min_f16 v2, v2, v4
21585883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v4, v7, v7
21595883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_max_f16 v3, v3, v3
21605883ad34SMatt Arsenault; GFX9-NEXT:    v_pk_min_f16 v3, v3, v4
21615883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
21625883ad34SMatt Arsenault;
21635883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v8f16:
21645883ad34SMatt Arsenault; GFX10:       ; %bb.0:
21655883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21665883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v4, v4, v4
21675883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v0, v0, v0
21685883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v5, v5, v5
21695883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v1, v1, v1
21705883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v6, v6, v6
21715883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v2, v2, v2
21725883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v7, v7, v7
21735883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_max_f16 v3, v3, v3
21745883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_min_f16 v0, v0, v4
21755883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_min_f16 v1, v1, v5
21765883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_min_f16 v2, v2, v6
21775883ad34SMatt Arsenault; GFX10-NEXT:    v_pk_min_f16 v3, v3, v7
21785883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
21795883ad34SMatt Arsenault;
21805883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v8f16:
21815883ad34SMatt Arsenault; GFX11:       ; %bb.0:
21825883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21835883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v4, v4, v4
21845883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v0, v0, v0
21855883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v5, v5, v5
21865883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v1, v1, v1
21875883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v6, v6, v6
21885883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v2, v2, v2
21895883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v7, v7, v7
21905883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_max_f16 v3, v3, v3
21915883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_min_f16 v0, v0, v4
21925883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_min_f16 v1, v1, v5
21935883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_min_f16 v2, v2, v6
21945883ad34SMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4)
21955883ad34SMatt Arsenault; GFX11-NEXT:    v_pk_min_f16 v3, v3, v7
21965883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
21975883ad34SMatt Arsenault;
21985883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v8f16:
21995883ad34SMatt Arsenault; GFX12:       ; %bb.0:
22005883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
22015883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
22025883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
22035883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
22045883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
22055883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v4, v4, v4
22065883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v0, v0, v0
22075883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v5, v5, v5
22085883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v1, v1, v1
22095883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v6, v6, v6
22105883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v2
22115883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v7, v7, v7
22125883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_max_num_f16 v3, v3, v3
22135883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_min_num_f16 v0, v0, v4
22145883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_min_num_f16 v1, v1, v5
22155883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_min_num_f16 v2, v2, v6
22165883ad34SMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_4)
22175883ad34SMatt Arsenault; GFX12-NEXT:    v_pk_min_num_f16 v3, v3, v7
22185883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
22195883ad34SMatt Arsenault  %result = call <8 x half> @llvm.minimumnum.v8f16(<8 x half> %x, <8 x half> %y)
22205883ad34SMatt Arsenault  ret <8 x half> %result
22215883ad34SMatt Arsenault}
22225883ad34SMatt Arsenault
22235883ad34SMatt Arsenaultdefine <2 x float> @v_minimumnum_v2f32(<2 x float> %x, <2 x float> %y) {
22245883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v2f32:
22255883ad34SMatt Arsenault; GFX8:       ; %bb.0:
22265883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22275883ad34SMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v2
22285883ad34SMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v0
22295883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, v0, v2
22305883ad34SMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v3
22315883ad34SMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v1
22325883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v1, v1, v2
22335883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
22345883ad34SMatt Arsenault;
22355883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v2f32:
22365883ad34SMatt Arsenault; GFX9:       ; %bb.0:
22375883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22385883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v2, v2, v2
22395883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v0, v0, v0
22405883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, v0, v2
22415883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v2, v3, v3
22425883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v1, v1, v1
22435883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v1, v1, v2
22445883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
22455883ad34SMatt Arsenault;
22465883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v2f32:
22475883ad34SMatt Arsenault; GFX10:       ; %bb.0:
22485883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22495883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v2, v2, v2
22505883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v0, v0, v0
22515883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v3, v3, v3
22525883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v1, v1, v1
22535883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, v0, v2
22545883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v1, v1, v3
22555883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
22565883ad34SMatt Arsenault;
22575883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v2f32:
22585883ad34SMatt Arsenault; GFX11:       ; %bb.0:
22595883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22605883ad34SMatt Arsenault; GFX11-NEXT:    v_dual_max_f32 v2, v2, v2 :: v_dual_max_f32 v3, v3, v3
22615883ad34SMatt Arsenault; GFX11-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1
22625883ad34SMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
22635883ad34SMatt Arsenault; GFX11-NEXT:    v_dual_min_f32 v0, v0, v2 :: v_dual_min_f32 v1, v1, v3
22645883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
22655883ad34SMatt Arsenault;
22665883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v2f32:
22675883ad34SMatt Arsenault; GFX12:       ; %bb.0:
22685883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
22695883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
22705883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
22715883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
22725883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
22735883ad34SMatt Arsenault; GFX12-NEXT:    v_dual_max_num_f32 v2, v2, v2 :: v_dual_max_num_f32 v3, v3, v3
22745883ad34SMatt Arsenault; GFX12-NEXT:    v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v1
22755883ad34SMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
22765883ad34SMatt Arsenault; GFX12-NEXT:    v_dual_min_num_f32 v0, v0, v2 :: v_dual_min_num_f32 v1, v1, v3
22775883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
22785883ad34SMatt Arsenault  %result = call <2 x float> @llvm.minimumnum.v2f32(<2 x float> %x, <2 x float> %y)
22795883ad34SMatt Arsenault  ret <2 x float> %result
22805883ad34SMatt Arsenault}
22815883ad34SMatt Arsenault
22825883ad34SMatt Arsenaultdefine <2 x float> @v_minimumnum_v2f32_nnan(<2 x float> %x, <2 x float> %y) {
22835883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v2f32_nnan:
22845883ad34SMatt Arsenault; GFX8:       ; %bb.0:
22855883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22865883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, v0, v2
22875883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v1, v1, v3
22885883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
22895883ad34SMatt Arsenault;
22905883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v2f32_nnan:
22915883ad34SMatt Arsenault; GFX9:       ; %bb.0:
22925883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22935883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, v0, v2
22945883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v1, v1, v3
22955883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
22965883ad34SMatt Arsenault;
22975883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v2f32_nnan:
22985883ad34SMatt Arsenault; GFX10:       ; %bb.0:
22995883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23005883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, v0, v2
23015883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v1, v1, v3
23025883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
23035883ad34SMatt Arsenault;
23045883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v2f32_nnan:
23055883ad34SMatt Arsenault; GFX11:       ; %bb.0:
23065883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23075883ad34SMatt Arsenault; GFX11-NEXT:    v_dual_min_f32 v0, v0, v2 :: v_dual_min_f32 v1, v1, v3
23085883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
23095883ad34SMatt Arsenault;
23105883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v2f32_nnan:
23115883ad34SMatt Arsenault; GFX12:       ; %bb.0:
23125883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
23135883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
23145883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
23155883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
23165883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
23175883ad34SMatt Arsenault; GFX12-NEXT:    v_dual_min_num_f32 v0, v0, v2 :: v_dual_min_num_f32 v1, v1, v3
23185883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
23195883ad34SMatt Arsenault  %result = call nnan <2 x float> @llvm.minimumnum.v2f32(<2 x float> %x, <2 x float> %y)
23205883ad34SMatt Arsenault  ret <2 x float> %result
23215883ad34SMatt Arsenault}
23225883ad34SMatt Arsenault
23235883ad34SMatt Arsenaultdefine <3 x float> @v_minimumnum_v3f32(<3 x float> %x, <3 x float> %y) {
23245883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v3f32:
23255883ad34SMatt Arsenault; GFX8:       ; %bb.0:
23265883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23275883ad34SMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v3, 1.0, v3
23285883ad34SMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v0
23295883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, v0, v3
23305883ad34SMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v3, 1.0, v4
23315883ad34SMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v1
23325883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v1, v1, v3
23335883ad34SMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v3, 1.0, v5
23345883ad34SMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v2
23355883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v2, v2, v3
23365883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
23375883ad34SMatt Arsenault;
23385883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v3f32:
23395883ad34SMatt Arsenault; GFX9:       ; %bb.0:
23405883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23415883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v3, v3, v3
23425883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v0, v0, v0
23435883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, v0, v3
23445883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v3, v4, v4
23455883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v1, v1, v1
23465883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v1, v1, v3
23475883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v3, v5, v5
23485883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v2, v2, v2
23495883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v2, v2, v3
23505883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
23515883ad34SMatt Arsenault;
23525883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v3f32:
23535883ad34SMatt Arsenault; GFX10:       ; %bb.0:
23545883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23555883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v3, v3, v3
23565883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v0, v0, v0
23575883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v4, v4, v4
23585883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v1, v1, v1
23595883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v5, v5, v5
23605883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v2, v2, v2
23615883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, v0, v3
23625883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v1, v1, v4
23635883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v2, v2, v5
23645883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
23655883ad34SMatt Arsenault;
23665883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v3f32:
23675883ad34SMatt Arsenault; GFX11:       ; %bb.0:
23685883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23695883ad34SMatt Arsenault; GFX11-NEXT:    v_dual_max_f32 v3, v3, v3 :: v_dual_max_f32 v0, v0, v0
23705883ad34SMatt Arsenault; GFX11-NEXT:    v_dual_max_f32 v4, v4, v4 :: v_dual_max_f32 v1, v1, v1
23715883ad34SMatt Arsenault; GFX11-NEXT:    v_dual_max_f32 v5, v5, v5 :: v_dual_max_f32 v2, v2, v2
23725883ad34SMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
23735883ad34SMatt Arsenault; GFX11-NEXT:    v_dual_min_f32 v0, v0, v3 :: v_dual_min_f32 v1, v1, v4
23745883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f32_e32 v2, v2, v5
23755883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
23765883ad34SMatt Arsenault;
23775883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v3f32:
23785883ad34SMatt Arsenault; GFX12:       ; %bb.0:
23795883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
23805883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
23815883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
23825883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
23835883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
23845883ad34SMatt Arsenault; GFX12-NEXT:    v_dual_max_num_f32 v3, v3, v3 :: v_dual_max_num_f32 v0, v0, v0
23855883ad34SMatt Arsenault; GFX12-NEXT:    v_dual_max_num_f32 v4, v4, v4 :: v_dual_max_num_f32 v1, v1, v1
23865883ad34SMatt Arsenault; GFX12-NEXT:    v_dual_max_num_f32 v5, v5, v5 :: v_dual_max_num_f32 v2, v2, v2
23875883ad34SMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
23885883ad34SMatt Arsenault; GFX12-NEXT:    v_dual_min_num_f32 v0, v0, v3 :: v_dual_min_num_f32 v1, v1, v4
23895883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f32_e32 v2, v2, v5
23905883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
23915883ad34SMatt Arsenault  %result = call <3 x float> @llvm.minimumnum.v3f32(<3 x float> %x, <3 x float> %y)
23925883ad34SMatt Arsenault  ret <3 x float> %result
23935883ad34SMatt Arsenault}
23945883ad34SMatt Arsenault
23955883ad34SMatt Arsenaultdefine <3 x float> @v_minimumnum_v3f32_nnan(<3 x float> %x, <3 x float> %y) {
23965883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v3f32_nnan:
23975883ad34SMatt Arsenault; GFX8:       ; %bb.0:
23985883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23995883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, v0, v3
24005883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v1, v1, v4
24015883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v2, v2, v5
24025883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
24035883ad34SMatt Arsenault;
24045883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v3f32_nnan:
24055883ad34SMatt Arsenault; GFX9:       ; %bb.0:
24065883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24075883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, v0, v3
24085883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v1, v1, v4
24095883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v2, v2, v5
24105883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
24115883ad34SMatt Arsenault;
24125883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v3f32_nnan:
24135883ad34SMatt Arsenault; GFX10:       ; %bb.0:
24145883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24155883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, v0, v3
24165883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v1, v1, v4
24175883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v2, v2, v5
24185883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
24195883ad34SMatt Arsenault;
24205883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v3f32_nnan:
24215883ad34SMatt Arsenault; GFX11:       ; %bb.0:
24225883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24235883ad34SMatt Arsenault; GFX11-NEXT:    v_dual_min_f32 v0, v0, v3 :: v_dual_min_f32 v1, v1, v4
24245883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f32_e32 v2, v2, v5
24255883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
24265883ad34SMatt Arsenault;
24275883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v3f32_nnan:
24285883ad34SMatt Arsenault; GFX12:       ; %bb.0:
24295883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
24305883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
24315883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
24325883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
24335883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
24345883ad34SMatt Arsenault; GFX12-NEXT:    v_dual_min_num_f32 v0, v0, v3 :: v_dual_min_num_f32 v1, v1, v4
24355883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f32_e32 v2, v2, v5
24365883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
24375883ad34SMatt Arsenault  %result = call nnan <3 x float> @llvm.minimumnum.v3f32(<3 x float> %x, <3 x float> %y)
24385883ad34SMatt Arsenault  ret <3 x float> %result
24395883ad34SMatt Arsenault}
24405883ad34SMatt Arsenault
24415883ad34SMatt Arsenaultdefine <4 x float> @v_minimumnum_v4f32(<4 x float> %x, <4 x float> %y) {
24425883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v4f32:
24435883ad34SMatt Arsenault; GFX8:       ; %bb.0:
24445883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24455883ad34SMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v4
24465883ad34SMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v0
24475883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, v0, v4
24485883ad34SMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v5
24495883ad34SMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v1
24505883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v1, v1, v4
24515883ad34SMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v6
24525883ad34SMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v2
24535883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v2, v2, v4
24545883ad34SMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v7
24555883ad34SMatt Arsenault; GFX8-NEXT:    v_mul_f32_e32 v3, 1.0, v3
24565883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v3, v3, v4
24575883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
24585883ad34SMatt Arsenault;
24595883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v4f32:
24605883ad34SMatt Arsenault; GFX9:       ; %bb.0:
24615883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24625883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v4, v4, v4
24635883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v0, v0, v0
24645883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, v0, v4
24655883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v4, v5, v5
24665883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v1, v1, v1
24675883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v1, v1, v4
24685883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v4, v6, v6
24695883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v2, v2, v2
24705883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v2, v2, v4
24715883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v4, v7, v7
24725883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f32_e32 v3, v3, v3
24735883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v3, v3, v4
24745883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
24755883ad34SMatt Arsenault;
24765883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v4f32:
24775883ad34SMatt Arsenault; GFX10:       ; %bb.0:
24785883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24795883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v4, v4, v4
24805883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v0, v0, v0
24815883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v5, v5, v5
24825883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v1, v1, v1
24835883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v6, v6, v6
24845883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v2, v2, v2
24855883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v7, v7, v7
24865883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f32_e32 v3, v3, v3
24875883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, v0, v4
24885883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v1, v1, v5
24895883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v2, v2, v6
24905883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v3, v3, v7
24915883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
24925883ad34SMatt Arsenault;
24935883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v4f32:
24945883ad34SMatt Arsenault; GFX11:       ; %bb.0:
24955883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24965883ad34SMatt Arsenault; GFX11-NEXT:    v_dual_max_f32 v4, v4, v4 :: v_dual_max_f32 v5, v5, v5
24975883ad34SMatt Arsenault; GFX11-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1
24985883ad34SMatt Arsenault; GFX11-NEXT:    v_dual_max_f32 v6, v6, v6 :: v_dual_max_f32 v7, v7, v7
24995883ad34SMatt Arsenault; GFX11-NEXT:    v_dual_max_f32 v2, v2, v2 :: v_dual_max_f32 v3, v3, v3
25005883ad34SMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
25015883ad34SMatt Arsenault; GFX11-NEXT:    v_dual_min_f32 v0, v0, v4 :: v_dual_min_f32 v1, v1, v5
25025883ad34SMatt Arsenault; GFX11-NEXT:    v_dual_min_f32 v2, v2, v6 :: v_dual_min_f32 v3, v3, v7
25035883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
25045883ad34SMatt Arsenault;
25055883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v4f32:
25065883ad34SMatt Arsenault; GFX12:       ; %bb.0:
25075883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
25085883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
25095883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
25105883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
25115883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
25125883ad34SMatt Arsenault; GFX12-NEXT:    v_dual_max_num_f32 v4, v4, v4 :: v_dual_max_num_f32 v5, v5, v5
25135883ad34SMatt Arsenault; GFX12-NEXT:    v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v1
25145883ad34SMatt Arsenault; GFX12-NEXT:    v_dual_max_num_f32 v6, v6, v6 :: v_dual_max_num_f32 v7, v7, v7
25155883ad34SMatt Arsenault; GFX12-NEXT:    v_dual_max_num_f32 v2, v2, v2 :: v_dual_max_num_f32 v3, v3, v3
25165883ad34SMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
25175883ad34SMatt Arsenault; GFX12-NEXT:    v_dual_min_num_f32 v0, v0, v4 :: v_dual_min_num_f32 v1, v1, v5
25185883ad34SMatt Arsenault; GFX12-NEXT:    v_dual_min_num_f32 v2, v2, v6 :: v_dual_min_num_f32 v3, v3, v7
25195883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
25205883ad34SMatt Arsenault  %result = call <4 x float> @llvm.minimumnum.v4f32(<4 x float> %x, <4 x float> %y)
25215883ad34SMatt Arsenault  ret <4 x float> %result
25225883ad34SMatt Arsenault}
25235883ad34SMatt Arsenault
25245883ad34SMatt Arsenaultdefine <4 x float> @v_minimumnum_v4f32_nnan(<4 x float> %x, <4 x float> %y) {
25255883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v4f32_nnan:
25265883ad34SMatt Arsenault; GFX8:       ; %bb.0:
25275883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25285883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v0, v0, v4
25295883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v1, v1, v5
25305883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v2, v2, v6
25315883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f32_e32 v3, v3, v7
25325883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
25335883ad34SMatt Arsenault;
25345883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v4f32_nnan:
25355883ad34SMatt Arsenault; GFX9:       ; %bb.0:
25365883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25375883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v0, v0, v4
25385883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v1, v1, v5
25395883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v2, v2, v6
25405883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f32_e32 v3, v3, v7
25415883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
25425883ad34SMatt Arsenault;
25435883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v4f32_nnan:
25445883ad34SMatt Arsenault; GFX10:       ; %bb.0:
25455883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25465883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v0, v0, v4
25475883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v1, v1, v5
25485883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v2, v2, v6
25495883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f32_e32 v3, v3, v7
25505883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
25515883ad34SMatt Arsenault;
25525883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v4f32_nnan:
25535883ad34SMatt Arsenault; GFX11:       ; %bb.0:
25545883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25555883ad34SMatt Arsenault; GFX11-NEXT:    v_dual_min_f32 v0, v0, v4 :: v_dual_min_f32 v1, v1, v5
25565883ad34SMatt Arsenault; GFX11-NEXT:    v_dual_min_f32 v2, v2, v6 :: v_dual_min_f32 v3, v3, v7
25575883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
25585883ad34SMatt Arsenault;
25595883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v4f32_nnan:
25605883ad34SMatt Arsenault; GFX12:       ; %bb.0:
25615883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
25625883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
25635883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
25645883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
25655883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
25665883ad34SMatt Arsenault; GFX12-NEXT:    v_dual_min_num_f32 v0, v0, v4 :: v_dual_min_num_f32 v1, v1, v5
25675883ad34SMatt Arsenault; GFX12-NEXT:    v_dual_min_num_f32 v2, v2, v6 :: v_dual_min_num_f32 v3, v3, v7
25685883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
25695883ad34SMatt Arsenault  %result = call nnan <4 x float> @llvm.minimumnum.v4f32(<4 x float> %x, <4 x float> %y)
25705883ad34SMatt Arsenault  ret <4 x float> %result
25715883ad34SMatt Arsenault}
25725883ad34SMatt Arsenault
25735883ad34SMatt Arsenaultdefine <2 x double> @v_minimumnum_v2f64(<2 x double> %x, <2 x double> %y) {
25745883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v2f64:
25755883ad34SMatt Arsenault; GFX8:       ; %bb.0:
25765883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25775883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5]
25785883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
25795883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7]
25805883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]
25815883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5]
25825883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7]
25835883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
25845883ad34SMatt Arsenault;
25855883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v2f64:
25865883ad34SMatt Arsenault; GFX9:       ; %bb.0:
25875883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25885883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5]
25895883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
25905883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7]
25915883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]
25925883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5]
25935883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7]
25945883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
25955883ad34SMatt Arsenault;
25965883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v2f64:
25975883ad34SMatt Arsenault; GFX10:       ; %bb.0:
25985883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25995883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5]
26005883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
26015883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7]
26025883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]
26035883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5]
26045883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7]
26055883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
26065883ad34SMatt Arsenault;
26075883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v2f64:
26085883ad34SMatt Arsenault; GFX11:       ; %bb.0:
26095883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26105883ad34SMatt Arsenault; GFX11-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5]
26115883ad34SMatt Arsenault; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
26125883ad34SMatt Arsenault; GFX11-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7]
26135883ad34SMatt Arsenault; GFX11-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]
26145883ad34SMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
26155883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5]
26165883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7]
26175883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
26185883ad34SMatt Arsenault;
26195883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v2f64:
26205883ad34SMatt Arsenault; GFX12:       ; %bb.0:
26215883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
26225883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
26235883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
26245883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
26255883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
26265883ad34SMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[4:5], v[4:5]
26275883ad34SMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]
26285883ad34SMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[6:7], v[6:7], v[6:7]
26295883ad34SMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]
26305883ad34SMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
26315883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[4:5]
26325883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[2:3], v[2:3], v[6:7]
26335883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
26345883ad34SMatt Arsenault  %result = call <2 x double> @llvm.minimumnum.v2f64(<2 x double> %x, <2 x double> %y)
26355883ad34SMatt Arsenault  ret <2 x double> %result
26365883ad34SMatt Arsenault}
26375883ad34SMatt Arsenault
26385883ad34SMatt Arsenaultdefine <2 x double> @v_minimumnum_v2f64_nnan(<2 x double> %x, <2 x double> %y) {
26395883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v2f64_nnan:
26405883ad34SMatt Arsenault; GFX8:       ; %bb.0:
26415883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26425883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5]
26435883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7]
26445883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
26455883ad34SMatt Arsenault;
26465883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v2f64_nnan:
26475883ad34SMatt Arsenault; GFX9:       ; %bb.0:
26485883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26495883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5]
26505883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7]
26515883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
26525883ad34SMatt Arsenault;
26535883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v2f64_nnan:
26545883ad34SMatt Arsenault; GFX10:       ; %bb.0:
26555883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26565883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5]
26575883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7]
26585883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
26595883ad34SMatt Arsenault;
26605883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v2f64_nnan:
26615883ad34SMatt Arsenault; GFX11:       ; %bb.0:
26625883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26635883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5]
26645883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7]
26655883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
26665883ad34SMatt Arsenault;
26675883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v2f64_nnan:
26685883ad34SMatt Arsenault; GFX12:       ; %bb.0:
26695883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
26705883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
26715883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
26725883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
26735883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
26745883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[4:5]
26755883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[2:3], v[2:3], v[6:7]
26765883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
26775883ad34SMatt Arsenault  %result = call nnan <2 x double> @llvm.minimumnum.v2f64(<2 x double> %x, <2 x double> %y)
26785883ad34SMatt Arsenault  ret <2 x double> %result
26795883ad34SMatt Arsenault}
26805883ad34SMatt Arsenault
26815883ad34SMatt Arsenaultdefine <3 x double> @v_minimumnum_v3f64(<3 x double> %x, <3 x double> %y) {
26825883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v3f64:
26835883ad34SMatt Arsenault; GFX8:       ; %bb.0:
26845883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26855883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7]
26865883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
26875883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9]
26885883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]
26895883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11]
26905883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5]
26915883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7]
26925883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9]
26935883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11]
26945883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
26955883ad34SMatt Arsenault;
26965883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v3f64:
26975883ad34SMatt Arsenault; GFX9:       ; %bb.0:
26985883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26995883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7]
27005883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
27015883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9]
27025883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]
27035883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11]
27045883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5]
27055883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7]
27065883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9]
27075883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11]
27085883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
27095883ad34SMatt Arsenault;
27105883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v3f64:
27115883ad34SMatt Arsenault; GFX10:       ; %bb.0:
27125883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27135883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7]
27145883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
27155883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9]
27165883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]
27175883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11]
27185883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5]
27195883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7]
27205883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9]
27215883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11]
27225883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
27235883ad34SMatt Arsenault;
27245883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v3f64:
27255883ad34SMatt Arsenault; GFX11:       ; %bb.0:
27265883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27275883ad34SMatt Arsenault; GFX11-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7]
27285883ad34SMatt Arsenault; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
27295883ad34SMatt Arsenault; GFX11-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9]
27305883ad34SMatt Arsenault; GFX11-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]
27315883ad34SMatt Arsenault; GFX11-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11]
27325883ad34SMatt Arsenault; GFX11-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5]
27335883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7]
27345883ad34SMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)
27355883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9]
27365883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11]
27375883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
27385883ad34SMatt Arsenault;
27395883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v3f64:
27405883ad34SMatt Arsenault; GFX12:       ; %bb.0:
27415883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
27425883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
27435883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
27445883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
27455883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
27465883ad34SMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[6:7], v[6:7], v[6:7]
27475883ad34SMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]
27485883ad34SMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[8:9], v[8:9], v[8:9]
27495883ad34SMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]
27505883ad34SMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[10:11], v[10:11], v[10:11]
27515883ad34SMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[4:5], v[4:5]
27525883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[6:7]
27535883ad34SMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)
27545883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[2:3], v[2:3], v[8:9]
27555883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[4:5], v[4:5], v[10:11]
27565883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
27575883ad34SMatt Arsenault  %result = call <3 x double> @llvm.minimumnum.v3f64(<3 x double> %x, <3 x double> %y)
27585883ad34SMatt Arsenault  ret <3 x double> %result
27595883ad34SMatt Arsenault}
27605883ad34SMatt Arsenault
27615883ad34SMatt Arsenaultdefine <3 x double> @v_minimumnum_v3f64_nnan(<3 x double> %x, <3 x double> %y) {
27625883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v3f64_nnan:
27635883ad34SMatt Arsenault; GFX8:       ; %bb.0:
27645883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27655883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7]
27665883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9]
27675883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11]
27685883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
27695883ad34SMatt Arsenault;
27705883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v3f64_nnan:
27715883ad34SMatt Arsenault; GFX9:       ; %bb.0:
27725883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27735883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7]
27745883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9]
27755883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11]
27765883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
27775883ad34SMatt Arsenault;
27785883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v3f64_nnan:
27795883ad34SMatt Arsenault; GFX10:       ; %bb.0:
27805883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27815883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7]
27825883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9]
27835883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11]
27845883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
27855883ad34SMatt Arsenault;
27865883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v3f64_nnan:
27875883ad34SMatt Arsenault; GFX11:       ; %bb.0:
27885883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27895883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7]
27905883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9]
27915883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11]
27925883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
27935883ad34SMatt Arsenault;
27945883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v3f64_nnan:
27955883ad34SMatt Arsenault; GFX12:       ; %bb.0:
27965883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
27975883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
27985883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
27995883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
28005883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
28015883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[6:7]
28025883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[2:3], v[2:3], v[8:9]
28035883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[4:5], v[4:5], v[10:11]
28045883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
28055883ad34SMatt Arsenault  %result = call nnan <3 x double> @llvm.minimumnum.v3f64(<3 x double> %x, <3 x double> %y)
28065883ad34SMatt Arsenault  ret <3 x double> %result
28075883ad34SMatt Arsenault}
28085883ad34SMatt Arsenault
28095883ad34SMatt Arsenaultdefine <4 x double> @v_minimumnum_v4f64(<4 x double> %x, <4 x double> %y) {
28105883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v4f64:
28115883ad34SMatt Arsenault; GFX8:       ; %bb.0:
28125883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28135883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9]
28145883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
28155883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11]
28165883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]
28175883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f64 v[12:13], v[12:13], v[12:13]
28185883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5]
28195883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f64 v[14:15], v[14:15], v[14:15]
28205883ad34SMatt Arsenault; GFX8-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7]
28215883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9]
28225883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11]
28235883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13]
28245883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15]
28255883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
28265883ad34SMatt Arsenault;
28275883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v4f64:
28285883ad34SMatt Arsenault; GFX9:       ; %bb.0:
28295883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28305883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9]
28315883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
28325883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11]
28335883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]
28345883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f64 v[12:13], v[12:13], v[12:13]
28355883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5]
28365883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f64 v[14:15], v[14:15], v[14:15]
28375883ad34SMatt Arsenault; GFX9-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7]
28385883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9]
28395883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11]
28405883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13]
28415883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15]
28425883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
28435883ad34SMatt Arsenault;
28445883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v4f64:
28455883ad34SMatt Arsenault; GFX10:       ; %bb.0:
28465883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28475883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9]
28485883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
28495883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11]
28505883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]
28515883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f64 v[12:13], v[12:13], v[12:13]
28525883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5]
28535883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f64 v[14:15], v[14:15], v[14:15]
28545883ad34SMatt Arsenault; GFX10-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7]
28555883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9]
28565883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11]
28575883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13]
28585883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15]
28595883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
28605883ad34SMatt Arsenault;
28615883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v4f64:
28625883ad34SMatt Arsenault; GFX11:       ; %bb.0:
28635883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28645883ad34SMatt Arsenault; GFX11-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9]
28655883ad34SMatt Arsenault; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]
28665883ad34SMatt Arsenault; GFX11-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11]
28675883ad34SMatt Arsenault; GFX11-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]
28685883ad34SMatt Arsenault; GFX11-NEXT:    v_max_f64 v[12:13], v[12:13], v[12:13]
28695883ad34SMatt Arsenault; GFX11-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5]
28705883ad34SMatt Arsenault; GFX11-NEXT:    v_max_f64 v[14:15], v[14:15], v[14:15]
28715883ad34SMatt Arsenault; GFX11-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7]
28725883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9]
28735883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11]
28745883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13]
28755883ad34SMatt Arsenault; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4)
28765883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15]
28775883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
28785883ad34SMatt Arsenault;
28795883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v4f64:
28805883ad34SMatt Arsenault; GFX12:       ; %bb.0:
28815883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
28825883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
28835883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
28845883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
28855883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
28865883ad34SMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[8:9], v[8:9], v[8:9]
28875883ad34SMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]
28885883ad34SMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[10:11], v[10:11], v[10:11]
28895883ad34SMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]
28905883ad34SMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[12:13], v[12:13], v[12:13]
28915883ad34SMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[4:5], v[4:5]
28925883ad34SMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[14:15], v[14:15], v[14:15]
28935883ad34SMatt Arsenault; GFX12-NEXT:    v_max_num_f64_e32 v[6:7], v[6:7], v[6:7]
28945883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[8:9]
28955883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[2:3], v[2:3], v[10:11]
28965883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[4:5], v[4:5], v[12:13]
28975883ad34SMatt Arsenault; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_4)
28985883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[6:7], v[6:7], v[14:15]
28995883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
29005883ad34SMatt Arsenault  %result = call <4 x double> @llvm.minimumnum.v4f64(<4 x double> %x, <4 x double> %y)
29015883ad34SMatt Arsenault  ret <4 x double> %result
29025883ad34SMatt Arsenault}
29035883ad34SMatt Arsenault
29045883ad34SMatt Arsenaultdefine <4 x double> @v_minimumnum_v4f64_nnan(<4 x double> %x, <4 x double> %y) {
29055883ad34SMatt Arsenault; GFX8-LABEL: v_minimumnum_v4f64_nnan:
29065883ad34SMatt Arsenault; GFX8:       ; %bb.0:
29075883ad34SMatt Arsenault; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29085883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9]
29095883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11]
29105883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13]
29115883ad34SMatt Arsenault; GFX8-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15]
29125883ad34SMatt Arsenault; GFX8-NEXT:    s_setpc_b64 s[30:31]
29135883ad34SMatt Arsenault;
29145883ad34SMatt Arsenault; GFX9-LABEL: v_minimumnum_v4f64_nnan:
29155883ad34SMatt Arsenault; GFX9:       ; %bb.0:
29165883ad34SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29175883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9]
29185883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11]
29195883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13]
29205883ad34SMatt Arsenault; GFX9-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15]
29215883ad34SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
29225883ad34SMatt Arsenault;
29235883ad34SMatt Arsenault; GFX10-LABEL: v_minimumnum_v4f64_nnan:
29245883ad34SMatt Arsenault; GFX10:       ; %bb.0:
29255883ad34SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29265883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9]
29275883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11]
29285883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13]
29295883ad34SMatt Arsenault; GFX10-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15]
29305883ad34SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31]
29315883ad34SMatt Arsenault;
29325883ad34SMatt Arsenault; GFX11-LABEL: v_minimumnum_v4f64_nnan:
29335883ad34SMatt Arsenault; GFX11:       ; %bb.0:
29345883ad34SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29355883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9]
29365883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11]
29375883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13]
29385883ad34SMatt Arsenault; GFX11-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15]
29395883ad34SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31]
29405883ad34SMatt Arsenault;
29415883ad34SMatt Arsenault; GFX12-LABEL: v_minimumnum_v4f64_nnan:
29425883ad34SMatt Arsenault; GFX12:       ; %bb.0:
29435883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
29445883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_expcnt 0x0
29455883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_samplecnt 0x0
29465883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_bvhcnt 0x0
29475883ad34SMatt Arsenault; GFX12-NEXT:    s_wait_kmcnt 0x0
29485883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[8:9]
29495883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[2:3], v[2:3], v[10:11]
29505883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[4:5], v[4:5], v[12:13]
29515883ad34SMatt Arsenault; GFX12-NEXT:    v_min_num_f64_e32 v[6:7], v[6:7], v[14:15]
29525883ad34SMatt Arsenault; GFX12-NEXT:    s_setpc_b64 s[30:31]
29535883ad34SMatt Arsenault  %result = call nnan <4 x double> @llvm.minimumnum.v4f64(<4 x double> %x, <4 x double> %y)
29545883ad34SMatt Arsenault  ret <4 x double> %result
29555883ad34SMatt Arsenault}
2956