[MachineScheduler] Fix physreg dependencies of ExitSU (#123541)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / llvm.amdgcn.cvt.scalef32.sr.pk.ll
blob18b20e101a93836526e698041fce037306fbdd41
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2 ; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx950 -verify-machineinstrs < %s | FileCheck -check-prefix=GFX950-SDAG %s
3 ; RUN: llc -global-isel=1 -global-isel-abort=2 -mtriple=amdgcn -mcpu=gfx950 -verify-machineinstrs < %s | FileCheck -check-prefix=GFX950-GISEL %s
5 declare <6 x i32> @llvm.amdgcn.cvt.scalef32.sr.pk32.bf6.bf16(<32 x bfloat> %src, i32 %sr, float %scale)
6 declare <6 x i32> @llvm.amdgcn.cvt.scalef32.sr.pk32.bf6.f16(<32 x half> %src, i32 %sr, float %scale)
7 declare <6 x i32> @llvm.amdgcn.cvt.scalef32.sr.pk32.bf6.f32(<32 x float> %src, i32 %sr, float %scale)
8 declare <6 x i32> @llvm.amdgcn.cvt.scalef32.sr.pk32.fp6.bf16(<32 x bfloat> %src, i32 %sr, float %scale)
9 declare <6 x i32> @llvm.amdgcn.cvt.scalef32.sr.pk32.fp6.f16(<32 x half> %src, i32 %sr, float %scale)
10 declare <6 x i32> @llvm.amdgcn.cvt.scalef32.sr.pk32.fp6.f32(<32 x float> %src, i32 %sr, float %scale)
12 define amdgpu_ps void @test_scalef32_sr_pk32_bf6_bf16_vv(<32 x bfloat> %src, i32 %sr, float %scale, ptr addrspace(1) %out) {
13 ; GFX950-SDAG-LABEL: test_scalef32_sr_pk32_bf6_bf16_vv:
14 ; GFX950-SDAG:       ; %bb.0:
15 ; GFX950-SDAG-NEXT:    v_cvt_scalef32_sr_pk32_bf6_bf16 v[20:25], v[0:15], v16, v17
16 ; GFX950-SDAG-NEXT:    global_store_dwordx2 v[18:19], v[24:25], off offset:16
17 ; GFX950-SDAG-NEXT:    global_store_dwordx4 v[18:19], v[20:23], off
18 ; GFX950-SDAG-NEXT:    s_endpgm
20 ; GFX950-GISEL-LABEL: test_scalef32_sr_pk32_bf6_bf16_vv:
21 ; GFX950-GISEL:       ; %bb.0:
22 ; GFX950-GISEL-NEXT:    v_cvt_scalef32_sr_pk32_bf6_bf16 v[20:25], v[0:15], v16, v17
23 ; GFX950-GISEL-NEXT:    global_store_dwordx2 v[18:19], v[24:25], off offset:16
24 ; GFX950-GISEL-NEXT:    global_store_dwordx4 v[18:19], v[20:23], off
25 ; GFX950-GISEL-NEXT:    s_endpgm
26   %cvt = tail call <6 x i32> @llvm.amdgcn.cvt.scalef32.sr.pk32.bf6.bf16(<32 x bfloat> %src, i32 %sr, float %scale)
27   store <6 x i32> %cvt, ptr addrspace(1) %out, align 8
28   ret void
31 define amdgpu_ps void @test_scalef32_sr_pk32_bf6_bf16_sl(<32 x bfloat> inreg %src, i32 inreg %sr, ptr addrspace(1) %out) {
32 ; GFX950-SDAG-LABEL: test_scalef32_sr_pk32_bf6_bf16_sl:
33 ; GFX950-SDAG:       ; %bb.0:
34 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v2, s0
35 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, s1
36 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v4, s2
37 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v5, s3
38 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v6, s4
39 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v7, s5
40 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v8, s6
41 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v9, s7
42 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v10, s8
43 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v11, s9
44 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v12, s10
45 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v13, s11
46 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v14, s12
47 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v15, s13
48 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v16, s14
49 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v17, s15
50 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v24, 0x42c80000
51 ; GFX950-SDAG-NEXT:    v_cvt_scalef32_sr_pk32_bf6_bf16 v[18:23], v[2:17], s16, v24
52 ; GFX950-SDAG-NEXT:    global_store_dwordx2 v[0:1], v[22:23], off offset:16
53 ; GFX950-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[18:21], off
54 ; GFX950-SDAG-NEXT:    s_endpgm
56 ; GFX950-GISEL-LABEL: test_scalef32_sr_pk32_bf6_bf16_sl:
57 ; GFX950-GISEL:       ; %bb.0:
58 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v2, s0
59 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v3, s1
60 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v4, s2
61 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v5, s3
62 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v6, s4
63 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v7, s5
64 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v8, s6
65 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v9, s7
66 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v10, s8
67 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v11, s9
68 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v12, s10
69 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v13, s11
70 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v14, s12
71 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v15, s13
72 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v16, s14
73 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v17, s15
74 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v24, 0x42c80000
75 ; GFX950-GISEL-NEXT:    v_cvt_scalef32_sr_pk32_bf6_bf16 v[18:23], v[2:17], s16, v24
76 ; GFX950-GISEL-NEXT:    global_store_dwordx2 v[0:1], v[22:23], off offset:16
77 ; GFX950-GISEL-NEXT:    global_store_dwordx4 v[0:1], v[18:21], off
78 ; GFX950-GISEL-NEXT:    s_endpgm
79   %cvt = tail call <6 x i32> @llvm.amdgcn.cvt.scalef32.sr.pk32.bf6.bf16(<32 x bfloat> %src, i32 %sr, float 100.0)
80   store <6 x i32> %cvt, ptr addrspace(1) %out, align 8
81   ret void
84 define amdgpu_ps void @test_scalef32_sr_pk32_bf6_f16_vv(<32 x half> %src, i32 %sr, float %scale, ptr addrspace(1) %out) {
85 ; GFX950-SDAG-LABEL: test_scalef32_sr_pk32_bf6_f16_vv:
86 ; GFX950-SDAG:       ; %bb.0:
87 ; GFX950-SDAG-NEXT:    v_cvt_scalef32_sr_pk32_bf6_f16 v[20:25], v[0:15], v16, v17
88 ; GFX950-SDAG-NEXT:    global_store_dwordx2 v[18:19], v[24:25], off offset:16
89 ; GFX950-SDAG-NEXT:    global_store_dwordx4 v[18:19], v[20:23], off
90 ; GFX950-SDAG-NEXT:    s_endpgm
92 ; GFX950-GISEL-LABEL: test_scalef32_sr_pk32_bf6_f16_vv:
93 ; GFX950-GISEL:       ; %bb.0:
94 ; GFX950-GISEL-NEXT:    v_cvt_scalef32_sr_pk32_bf6_f16 v[20:25], v[0:15], v16, v17
95 ; GFX950-GISEL-NEXT:    global_store_dwordx4 v[18:19], v[20:23], off
96 ; GFX950-GISEL-NEXT:    global_store_dwordx2 v[18:19], v[24:25], off offset:16
97 ; GFX950-GISEL-NEXT:    s_endpgm
98   %cvt = tail call <6 x i32> @llvm.amdgcn.cvt.scalef32.sr.pk32.bf6.f16(<32 x half> %src, i32 %sr, float %scale)
99   store <6 x i32> %cvt, ptr addrspace(1) %out, align 8
100   ret void
103 define amdgpu_ps void @test_scalef32_sr_pk32_bf6_f16_sl(<32 x half> inreg %src, i32 inreg %sr, ptr addrspace(1) %out) {
104 ; GFX950-SDAG-LABEL: test_scalef32_sr_pk32_bf6_f16_sl:
105 ; GFX950-SDAG:       ; %bb.0:
106 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v2, s0
107 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, s1
108 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v4, s2
109 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v5, s3
110 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v6, s4
111 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v7, s5
112 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v8, s6
113 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v9, s7
114 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v10, s8
115 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v11, s9
116 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v12, s10
117 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v13, s11
118 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v14, s12
119 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v15, s13
120 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v16, s14
121 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v17, s15
122 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v24, 0x42c80000
123 ; GFX950-SDAG-NEXT:    v_cvt_scalef32_sr_pk32_bf6_f16 v[18:23], v[2:17], s16, v24
124 ; GFX950-SDAG-NEXT:    global_store_dwordx2 v[0:1], v[22:23], off offset:16
125 ; GFX950-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[18:21], off
126 ; GFX950-SDAG-NEXT:    s_endpgm
128 ; GFX950-GISEL-LABEL: test_scalef32_sr_pk32_bf6_f16_sl:
129 ; GFX950-GISEL:       ; %bb.0:
130 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[16:17], s[14:15]
131 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[14:15], s[12:13]
132 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[12:13], s[10:11]
133 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[10:11], s[8:9]
134 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[8:9], s[6:7]
135 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[6:7], s[4:5]
136 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[4:5], s[2:3]
137 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
138 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v24, 0x42c80000
139 ; GFX950-GISEL-NEXT:    v_cvt_scalef32_sr_pk32_bf6_f16 v[18:23], v[2:17], s16, v24
140 ; GFX950-GISEL-NEXT:    global_store_dwordx4 v[0:1], v[18:21], off
141 ; GFX950-GISEL-NEXT:    global_store_dwordx2 v[0:1], v[22:23], off offset:16
142 ; GFX950-GISEL-NEXT:    s_endpgm
143   %cvt = tail call <6 x i32> @llvm.amdgcn.cvt.scalef32.sr.pk32.bf6.f16(<32 x half> %src, i32 %sr, float 100.0)
144   store <6 x i32> %cvt, ptr addrspace(1) %out, align 8
145   ret void
148 define amdgpu_ps void @test_scalef32_sr_pk32_fp6_bf16_vv(<32 x bfloat> %src, i32 %sr, float %scale, ptr addrspace(1) %out) {
149 ; GFX950-SDAG-LABEL: test_scalef32_sr_pk32_fp6_bf16_vv:
150 ; GFX950-SDAG:       ; %bb.0:
151 ; GFX950-SDAG-NEXT:    v_cvt_scalef32_sr_pk32_fp6_bf16 v[20:25], v[0:15], v16, v17
152 ; GFX950-SDAG-NEXT:    global_store_dwordx2 v[18:19], v[24:25], off offset:16
153 ; GFX950-SDAG-NEXT:    global_store_dwordx4 v[18:19], v[20:23], off
154 ; GFX950-SDAG-NEXT:    s_endpgm
156 ; GFX950-GISEL-LABEL: test_scalef32_sr_pk32_fp6_bf16_vv:
157 ; GFX950-GISEL:       ; %bb.0:
158 ; GFX950-GISEL-NEXT:    v_cvt_scalef32_sr_pk32_fp6_bf16 v[20:25], v[0:15], v16, v17
159 ; GFX950-GISEL-NEXT:    global_store_dwordx2 v[18:19], v[24:25], off offset:16
160 ; GFX950-GISEL-NEXT:    global_store_dwordx4 v[18:19], v[20:23], off
161 ; GFX950-GISEL-NEXT:    s_endpgm
162   %cvt = tail call <6 x i32> @llvm.amdgcn.cvt.scalef32.sr.pk32.fp6.bf16(<32 x bfloat> %src, i32 %sr, float %scale)
163   store <6 x i32> %cvt, ptr addrspace(1) %out, align 8
164   ret void
167 define amdgpu_ps void @test_scalef32_sr_pk32_fp6_bf16_sl(<32 x bfloat> inreg %src, i32 inreg %sr, ptr addrspace(1) %out) {
168 ; GFX950-SDAG-LABEL: test_scalef32_sr_pk32_fp6_bf16_sl:
169 ; GFX950-SDAG:       ; %bb.0:
170 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v2, s0
171 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, s1
172 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v4, s2
173 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v5, s3
174 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v6, s4
175 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v7, s5
176 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v8, s6
177 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v9, s7
178 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v10, s8
179 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v11, s9
180 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v12, s10
181 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v13, s11
182 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v14, s12
183 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v15, s13
184 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v16, s14
185 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v17, s15
186 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v24, 0x42c80000
187 ; GFX950-SDAG-NEXT:    v_cvt_scalef32_sr_pk32_fp6_bf16 v[18:23], v[2:17], s16, v24
188 ; GFX950-SDAG-NEXT:    global_store_dwordx2 v[0:1], v[22:23], off offset:16
189 ; GFX950-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[18:21], off
190 ; GFX950-SDAG-NEXT:    s_endpgm
192 ; GFX950-GISEL-LABEL: test_scalef32_sr_pk32_fp6_bf16_sl:
193 ; GFX950-GISEL:       ; %bb.0:
194 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v2, s0
195 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v3, s1
196 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v4, s2
197 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v5, s3
198 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v6, s4
199 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v7, s5
200 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v8, s6
201 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v9, s7
202 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v10, s8
203 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v11, s9
204 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v12, s10
205 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v13, s11
206 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v14, s12
207 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v15, s13
208 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v16, s14
209 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v17, s15
210 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v24, 0x42c80000
211 ; GFX950-GISEL-NEXT:    v_cvt_scalef32_sr_pk32_fp6_bf16 v[18:23], v[2:17], s16, v24
212 ; GFX950-GISEL-NEXT:    global_store_dwordx2 v[0:1], v[22:23], off offset:16
213 ; GFX950-GISEL-NEXT:    global_store_dwordx4 v[0:1], v[18:21], off
214 ; GFX950-GISEL-NEXT:    s_endpgm
215   %cvt = tail call <6 x i32> @llvm.amdgcn.cvt.scalef32.sr.pk32.fp6.bf16(<32 x bfloat> %src, i32 %sr, float 100.0)
216   store <6 x i32> %cvt, ptr addrspace(1) %out, align 8
217   ret void
220 define amdgpu_ps void @test_scalef32_sr_pk32_fp6_f16_vv(<32 x half> %src, i32 %sr, float %scale, ptr addrspace(1) %out) {
221 ; GFX950-SDAG-LABEL: test_scalef32_sr_pk32_fp6_f16_vv:
222 ; GFX950-SDAG:       ; %bb.0:
223 ; GFX950-SDAG-NEXT:    v_cvt_scalef32_sr_pk32_fp6_f16 v[20:25], v[0:15], v16, v17
224 ; GFX950-SDAG-NEXT:    global_store_dwordx2 v[18:19], v[24:25], off offset:16
225 ; GFX950-SDAG-NEXT:    global_store_dwordx4 v[18:19], v[20:23], off
226 ; GFX950-SDAG-NEXT:    s_endpgm
228 ; GFX950-GISEL-LABEL: test_scalef32_sr_pk32_fp6_f16_vv:
229 ; GFX950-GISEL:       ; %bb.0:
230 ; GFX950-GISEL-NEXT:    v_cvt_scalef32_sr_pk32_fp6_f16 v[20:25], v[0:15], v16, v17
231 ; GFX950-GISEL-NEXT:    global_store_dwordx4 v[18:19], v[20:23], off
232 ; GFX950-GISEL-NEXT:    global_store_dwordx2 v[18:19], v[24:25], off offset:16
233 ; GFX950-GISEL-NEXT:    s_endpgm
234   %cvt = tail call <6 x i32> @llvm.amdgcn.cvt.scalef32.sr.pk32.fp6.f16(<32 x half> %src, i32 %sr, float %scale)
235   store <6 x i32> %cvt, ptr addrspace(1) %out, align 8
236   ret void
239 define amdgpu_ps void @test_scalef32_sr_pk32_fp6_f16_sl(<32 x half> inreg %src, i32 inreg %sr, ptr addrspace(1) %out) {
240 ; GFX950-SDAG-LABEL: test_scalef32_sr_pk32_fp6_f16_sl:
241 ; GFX950-SDAG:       ; %bb.0:
242 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v2, s0
243 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, s1
244 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v4, s2
245 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v5, s3
246 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v6, s4
247 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v7, s5
248 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v8, s6
249 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v9, s7
250 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v10, s8
251 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v11, s9
252 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v12, s10
253 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v13, s11
254 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v14, s12
255 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v15, s13
256 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v16, s14
257 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v17, s15
258 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v24, 0x42c80000
259 ; GFX950-SDAG-NEXT:    v_cvt_scalef32_sr_pk32_fp6_f16 v[18:23], v[2:17], s16, v24
260 ; GFX950-SDAG-NEXT:    global_store_dwordx2 v[0:1], v[22:23], off offset:16
261 ; GFX950-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[18:21], off
262 ; GFX950-SDAG-NEXT:    s_endpgm
264 ; GFX950-GISEL-LABEL: test_scalef32_sr_pk32_fp6_f16_sl:
265 ; GFX950-GISEL:       ; %bb.0:
266 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[16:17], s[14:15]
267 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[14:15], s[12:13]
268 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[12:13], s[10:11]
269 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[10:11], s[8:9]
270 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[8:9], s[6:7]
271 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[6:7], s[4:5]
272 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[4:5], s[2:3]
273 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
274 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v24, 0x42c80000
275 ; GFX950-GISEL-NEXT:    v_cvt_scalef32_sr_pk32_fp6_f16 v[18:23], v[2:17], s16, v24
276 ; GFX950-GISEL-NEXT:    global_store_dwordx4 v[0:1], v[18:21], off
277 ; GFX950-GISEL-NEXT:    global_store_dwordx2 v[0:1], v[22:23], off offset:16
278 ; GFX950-GISEL-NEXT:    s_endpgm
279   %cvt = tail call <6 x i32> @llvm.amdgcn.cvt.scalef32.sr.pk32.fp6.f16(<32 x half> %src, i32 %sr, float 100.0)
280   store <6 x i32> %cvt, ptr addrspace(1) %out, align 8
281   ret void
284 define amdgpu_ps void @test_scalef32_sr_pk32_bf6_f32_vv(<32 x float> %src, i32 %sr, float %scale, ptr addrspace(1) %out) {
285 ; GFX950-SDAG-LABEL: test_scalef32_sr_pk32_bf6_f32_vv:
286 ; GFX950-SDAG:       ; %bb.0:
287 ; GFX950-SDAG-NEXT:    v_cvt_scalef32_sr_pk32_bf6_f32 v[36:41], v[0:31], v32, v33
288 ; GFX950-SDAG-NEXT:    global_store_dwordx2 v[34:35], v[40:41], off offset:16
289 ; GFX950-SDAG-NEXT:    global_store_dwordx4 v[34:35], v[36:39], off
290 ; GFX950-SDAG-NEXT:    s_endpgm
292 ; GFX950-GISEL-LABEL: test_scalef32_sr_pk32_bf6_f32_vv:
293 ; GFX950-GISEL:       ; %bb.0:
294 ; GFX950-GISEL-NEXT:    v_cvt_scalef32_sr_pk32_bf6_f32 v[36:41], v[0:31], v32, v33
295 ; GFX950-GISEL-NEXT:    global_store_dwordx4 v[34:35], v[36:39], off
296 ; GFX950-GISEL-NEXT:    global_store_dwordx2 v[34:35], v[40:41], off offset:16
297 ; GFX950-GISEL-NEXT:    s_endpgm
298   %cvt = tail call <6 x i32> @llvm.amdgcn.cvt.scalef32.sr.pk32.bf6.f32(<32 x float> %src, i32 %sr, float %scale)
299   store <6 x i32> %cvt, ptr addrspace(1) %out, align 8
300   ret void
303 define amdgpu_ps void @test_scalef32_sr_pk32_bf6_f32_sl(<32 x float> inreg %src, i32 inreg %sr, ptr addrspace(1) %out) {
304 ; GFX950-SDAG-LABEL: test_scalef32_sr_pk32_bf6_f32_sl:
305 ; GFX950-SDAG:       ; %bb.0:
306 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v2, s0
307 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, s1
308 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v4, s2
309 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v5, s3
310 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v6, s4
311 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v7, s5
312 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v8, s6
313 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v9, s7
314 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v10, s8
315 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v11, s9
316 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v12, s10
317 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v13, s11
318 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v14, s12
319 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v15, s13
320 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v16, s14
321 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v17, s15
322 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v18, s16
323 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v19, s17
324 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v20, s18
325 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v21, s19
326 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v22, s20
327 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v23, s21
328 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v24, s22
329 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v25, s23
330 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v26, s24
331 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v27, s25
332 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v28, s26
333 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v29, s27
334 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v30, s28
335 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v31, s29
336 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v32, s30
337 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v33, s31
338 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v40, 0x42c80000
339 ; GFX950-SDAG-NEXT:    v_cvt_scalef32_sr_pk32_bf6_f32 v[34:39], v[2:33], s32, v40
340 ; GFX950-SDAG-NEXT:    global_store_dwordx2 v[0:1], v[38:39], off offset:16
341 ; GFX950-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[34:37], off
342 ; GFX950-SDAG-NEXT:    s_endpgm
344 ; GFX950-GISEL-LABEL: test_scalef32_sr_pk32_bf6_f32_sl:
345 ; GFX950-GISEL:       ; %bb.0:
346 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[32:33], s[30:31]
347 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[30:31], s[28:29]
348 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[28:29], s[26:27]
349 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[26:27], s[24:25]
350 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[24:25], s[22:23]
351 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[22:23], s[20:21]
352 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[20:21], s[18:19]
353 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[18:19], s[16:17]
354 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[16:17], s[14:15]
355 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[14:15], s[12:13]
356 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[12:13], s[10:11]
357 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[10:11], s[8:9]
358 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[8:9], s[6:7]
359 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[6:7], s[4:5]
360 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[4:5], s[2:3]
361 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
362 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v40, 0x42c80000
363 ; GFX950-GISEL-NEXT:    v_cvt_scalef32_sr_pk32_bf6_f32 v[34:39], v[2:33], s32, v40
364 ; GFX950-GISEL-NEXT:    global_store_dwordx4 v[0:1], v[34:37], off
365 ; GFX950-GISEL-NEXT:    global_store_dwordx2 v[0:1], v[38:39], off offset:16
366 ; GFX950-GISEL-NEXT:    s_endpgm
367   %cvt = tail call <6 x i32> @llvm.amdgcn.cvt.scalef32.sr.pk32.bf6.f32(<32 x float> %src, i32 %sr, float 100.0)
368   store <6 x i32> %cvt, ptr addrspace(1) %out, align 8
369   ret void
372 define amdgpu_ps void @test_scalef32_sr_pk32_fp6_f32_vv(<32 x float> %src, i32 %sr, float %scale, ptr addrspace(1) %out) {
373 ; GFX950-SDAG-LABEL: test_scalef32_sr_pk32_fp6_f32_vv:
374 ; GFX950-SDAG:       ; %bb.0:
375 ; GFX950-SDAG-NEXT:    v_cvt_scalef32_sr_pk32_fp6_f32 v[36:41], v[0:31], v32, v33
376 ; GFX950-SDAG-NEXT:    global_store_dwordx2 v[34:35], v[40:41], off offset:16
377 ; GFX950-SDAG-NEXT:    global_store_dwordx4 v[34:35], v[36:39], off
378 ; GFX950-SDAG-NEXT:    s_endpgm
380 ; GFX950-GISEL-LABEL: test_scalef32_sr_pk32_fp6_f32_vv:
381 ; GFX950-GISEL:       ; %bb.0:
382 ; GFX950-GISEL-NEXT:    v_cvt_scalef32_sr_pk32_fp6_f32 v[36:41], v[0:31], v32, v33
383 ; GFX950-GISEL-NEXT:    global_store_dwordx4 v[34:35], v[36:39], off
384 ; GFX950-GISEL-NEXT:    global_store_dwordx2 v[34:35], v[40:41], off offset:16
385 ; GFX950-GISEL-NEXT:    s_endpgm
386   %cvt = tail call <6 x i32> @llvm.amdgcn.cvt.scalef32.sr.pk32.fp6.f32(<32 x float> %src, i32 %sr, float %scale)
387   store <6 x i32> %cvt, ptr addrspace(1) %out, align 8
388   ret void
391 define amdgpu_ps void @test_scalef32_sr_pk32_fp6_f32_sl(<32 x float> inreg %src, i32 inreg %sr, ptr addrspace(1) %out) {
392 ; GFX950-SDAG-LABEL: test_scalef32_sr_pk32_fp6_f32_sl:
393 ; GFX950-SDAG:       ; %bb.0:
394 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v2, s0
395 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, s1
396 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v4, s2
397 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v5, s3
398 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v6, s4
399 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v7, s5
400 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v8, s6
401 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v9, s7
402 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v10, s8
403 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v11, s9
404 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v12, s10
405 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v13, s11
406 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v14, s12
407 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v15, s13
408 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v16, s14
409 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v17, s15
410 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v18, s16
411 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v19, s17
412 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v20, s18
413 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v21, s19
414 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v22, s20
415 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v23, s21
416 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v24, s22
417 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v25, s23
418 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v26, s24
419 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v27, s25
420 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v28, s26
421 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v29, s27
422 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v30, s28
423 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v31, s29
424 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v32, s30
425 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v33, s31
426 ; GFX950-SDAG-NEXT:    v_mov_b32_e32 v40, 0x42c80000
427 ; GFX950-SDAG-NEXT:    v_cvt_scalef32_sr_pk32_fp6_f32 v[34:39], v[2:33], s32, v40
428 ; GFX950-SDAG-NEXT:    global_store_dwordx2 v[0:1], v[38:39], off offset:16
429 ; GFX950-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[34:37], off
430 ; GFX950-SDAG-NEXT:    s_endpgm
432 ; GFX950-GISEL-LABEL: test_scalef32_sr_pk32_fp6_f32_sl:
433 ; GFX950-GISEL:       ; %bb.0:
434 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[32:33], s[30:31]
435 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[30:31], s[28:29]
436 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[28:29], s[26:27]
437 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[26:27], s[24:25]
438 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[24:25], s[22:23]
439 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[22:23], s[20:21]
440 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[20:21], s[18:19]
441 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[18:19], s[16:17]
442 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[16:17], s[14:15]
443 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[14:15], s[12:13]
444 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[12:13], s[10:11]
445 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[10:11], s[8:9]
446 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[8:9], s[6:7]
447 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[6:7], s[4:5]
448 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[4:5], s[2:3]
449 ; GFX950-GISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
450 ; GFX950-GISEL-NEXT:    v_mov_b32_e32 v40, 0x42c80000
451 ; GFX950-GISEL-NEXT:    v_cvt_scalef32_sr_pk32_fp6_f32 v[34:39], v[2:33], s32, v40
452 ; GFX950-GISEL-NEXT:    global_store_dwordx4 v[0:1], v[34:37], off
453 ; GFX950-GISEL-NEXT:    global_store_dwordx2 v[0:1], v[38:39], off offset:16
454 ; GFX950-GISEL-NEXT:    s_endpgm
455   %cvt = tail call <6 x i32> @llvm.amdgcn.cvt.scalef32.sr.pk32.fp6.f32(<32 x float> %src, i32 %sr, float 100.0)
456   store <6 x i32> %cvt, ptr addrspace(1) %out, align 8
457   ret void