xref: /aosp_15_r20/external/llvm/test/CodeGen/AMDGPU/imm.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=verde -verify-machineinstrs < %s | FileCheck -check-prefix=SI -check-prefix=CHECK %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=VI -check-prefix=CHECK %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker; Use a 64-bit value with lo bits that can be represented as an inline constant
5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}i64_imm_inline_lo:
6*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 v[[LO_VGPR:[0-9]+]], 5
7*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VGPR]]:
8*9880d681SAndroid Build Coastguard Workerdefine void @i64_imm_inline_lo(i64 addrspace(1) *%out) {
9*9880d681SAndroid Build Coastguard Workerentry:
10*9880d681SAndroid Build Coastguard Worker  store i64 1311768464867721221, i64 addrspace(1) *%out ; 0x1234567800000005
11*9880d681SAndroid Build Coastguard Worker  ret void
12*9880d681SAndroid Build Coastguard Worker}
13*9880d681SAndroid Build Coastguard Worker
14*9880d681SAndroid Build Coastguard Worker; Use a 64-bit value with hi bits that can be represented as an inline constant
15*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}i64_imm_inline_hi:
16*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 v[[HI_VGPR:[0-9]+]], 5
17*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[[0-9]+:}}[[HI_VGPR]]
18*9880d681SAndroid Build Coastguard Workerdefine void @i64_imm_inline_hi(i64 addrspace(1) *%out) {
19*9880d681SAndroid Build Coastguard Workerentry:
20*9880d681SAndroid Build Coastguard Worker  store i64 21780256376, i64 addrspace(1) *%out ; 0x0000000512345678
21*9880d681SAndroid Build Coastguard Worker  ret void
22*9880d681SAndroid Build Coastguard Worker}
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_imm_neg_0.0_i64:
25*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}}
26*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_bfrev_b32_e32 v[[HI_VREG:[0-9]+]], 1{{$}}
27*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}}
28*9880d681SAndroid Build Coastguard Workerdefine void @store_imm_neg_0.0_i64(i64 addrspace(1) *%out) {
29*9880d681SAndroid Build Coastguard Worker  store i64 -9223372036854775808, i64 addrspace(1) *%out
30*9880d681SAndroid Build Coastguard Worker  ret void
31*9880d681SAndroid Build Coastguard Worker}
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_neg_0.0_i32:
34*9880d681SAndroid Build Coastguard Worker; CHECK: v_bfrev_b32_e32 [[REG:v[0-9]+]], 1{{$}}
35*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
36*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_neg_0.0_i32(i32 addrspace(1)* %out) {
37*9880d681SAndroid Build Coastguard Worker  store i32 -2147483648, i32 addrspace(1)* %out
38*9880d681SAndroid Build Coastguard Worker  ret void
39*9880d681SAndroid Build Coastguard Worker}
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_0.0_f32:
42*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], 0{{$}}
43*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
44*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_0.0_f32(float addrspace(1)* %out) {
45*9880d681SAndroid Build Coastguard Worker  store float 0.0, float addrspace(1)* %out
46*9880d681SAndroid Build Coastguard Worker  ret void
47*9880d681SAndroid Build Coastguard Worker}
48*9880d681SAndroid Build Coastguard Worker
49*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_imm_neg_0.0_f32:
50*9880d681SAndroid Build Coastguard Worker; CHECK: v_bfrev_b32_e32 [[REG:v[0-9]+]], 1{{$}}
51*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
52*9880d681SAndroid Build Coastguard Workerdefine void @store_imm_neg_0.0_f32(float addrspace(1)* %out) {
53*9880d681SAndroid Build Coastguard Worker  store float -0.0, float addrspace(1)* %out
54*9880d681SAndroid Build Coastguard Worker  ret void
55*9880d681SAndroid Build Coastguard Worker}
56*9880d681SAndroid Build Coastguard Worker
57*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_0.5_f32:
58*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], 0.5{{$}}
59*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
60*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_0.5_f32(float addrspace(1)* %out) {
61*9880d681SAndroid Build Coastguard Worker  store float 0.5, float addrspace(1)* %out
62*9880d681SAndroid Build Coastguard Worker  ret void
63*9880d681SAndroid Build Coastguard Worker}
64*9880d681SAndroid Build Coastguard Worker
65*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_m_0.5_f32:
66*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], -0.5{{$}}
67*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
68*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_m_0.5_f32(float addrspace(1)* %out) {
69*9880d681SAndroid Build Coastguard Worker  store float -0.5, float addrspace(1)* %out
70*9880d681SAndroid Build Coastguard Worker  ret void
71*9880d681SAndroid Build Coastguard Worker}
72*9880d681SAndroid Build Coastguard Worker
73*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_1.0_f32:
74*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], 1.0{{$}}
75*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
76*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_1.0_f32(float addrspace(1)* %out) {
77*9880d681SAndroid Build Coastguard Worker  store float 1.0, float addrspace(1)* %out
78*9880d681SAndroid Build Coastguard Worker  ret void
79*9880d681SAndroid Build Coastguard Worker}
80*9880d681SAndroid Build Coastguard Worker
81*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_m_1.0_f32:
82*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], -1.0{{$}}
83*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
84*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_m_1.0_f32(float addrspace(1)* %out) {
85*9880d681SAndroid Build Coastguard Worker  store float -1.0, float addrspace(1)* %out
86*9880d681SAndroid Build Coastguard Worker  ret void
87*9880d681SAndroid Build Coastguard Worker}
88*9880d681SAndroid Build Coastguard Worker
89*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_2.0_f32:
90*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], 2.0{{$}}
91*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
92*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_2.0_f32(float addrspace(1)* %out) {
93*9880d681SAndroid Build Coastguard Worker  store float 2.0, float addrspace(1)* %out
94*9880d681SAndroid Build Coastguard Worker  ret void
95*9880d681SAndroid Build Coastguard Worker}
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_m_2.0_f32:
98*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], -2.0{{$}}
99*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
100*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_m_2.0_f32(float addrspace(1)* %out) {
101*9880d681SAndroid Build Coastguard Worker  store float -2.0, float addrspace(1)* %out
102*9880d681SAndroid Build Coastguard Worker  ret void
103*9880d681SAndroid Build Coastguard Worker}
104*9880d681SAndroid Build Coastguard Worker
105*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_4.0_f32:
106*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], 4.0{{$}}
107*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
108*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_4.0_f32(float addrspace(1)* %out) {
109*9880d681SAndroid Build Coastguard Worker  store float 4.0, float addrspace(1)* %out
110*9880d681SAndroid Build Coastguard Worker  ret void
111*9880d681SAndroid Build Coastguard Worker}
112*9880d681SAndroid Build Coastguard Worker
113*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_m_4.0_f32:
114*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], -4.0{{$}}
115*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
116*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_m_4.0_f32(float addrspace(1)* %out) {
117*9880d681SAndroid Build Coastguard Worker  store float -4.0, float addrspace(1)* %out
118*9880d681SAndroid Build Coastguard Worker  ret void
119*9880d681SAndroid Build Coastguard Worker}
120*9880d681SAndroid Build Coastguard Worker
121*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_literal_imm_f32:
122*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], 0x45800000
123*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
124*9880d681SAndroid Build Coastguard Workerdefine void @store_literal_imm_f32(float addrspace(1)* %out) {
125*9880d681SAndroid Build Coastguard Worker  store float 4096.0, float addrspace(1)* %out
126*9880d681SAndroid Build Coastguard Worker  ret void
127*9880d681SAndroid Build Coastguard Worker}
128*9880d681SAndroid Build Coastguard Worker
129*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_0.0_f32:
130*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]]
131*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 0, [[VAL]]{{$}}
132*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
133*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_0.0_f32(float addrspace(1)* %out, float %x) {
134*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, 0.0
135*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
136*9880d681SAndroid Build Coastguard Worker  ret void
137*9880d681SAndroid Build Coastguard Worker}
138*9880d681SAndroid Build Coastguard Worker
139*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_0.5_f32:
140*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]]
141*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 0.5, [[VAL]]{{$}}
142*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
143*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_0.5_f32(float addrspace(1)* %out, float %x) {
144*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, 0.5
145*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
146*9880d681SAndroid Build Coastguard Worker  ret void
147*9880d681SAndroid Build Coastguard Worker}
148*9880d681SAndroid Build Coastguard Worker
149*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_0.5_f32:
150*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]]
151*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], -0.5, [[VAL]]{{$}}
152*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
153*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_0.5_f32(float addrspace(1)* %out, float %x) {
154*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, -0.5
155*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
156*9880d681SAndroid Build Coastguard Worker  ret void
157*9880d681SAndroid Build Coastguard Worker}
158*9880d681SAndroid Build Coastguard Worker
159*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_1.0_f32:
160*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]]
161*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 1.0, [[VAL]]{{$}}
162*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
163*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_1.0_f32(float addrspace(1)* %out, float %x) {
164*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, 1.0
165*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
166*9880d681SAndroid Build Coastguard Worker  ret void
167*9880d681SAndroid Build Coastguard Worker}
168*9880d681SAndroid Build Coastguard Worker
169*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_1.0_f32:
170*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]]
171*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], -1.0, [[VAL]]{{$}}
172*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
173*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_1.0_f32(float addrspace(1)* %out, float %x) {
174*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, -1.0
175*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
176*9880d681SAndroid Build Coastguard Worker  ret void
177*9880d681SAndroid Build Coastguard Worker}
178*9880d681SAndroid Build Coastguard Worker
179*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_2.0_f32:
180*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]]
181*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 2.0, [[VAL]]{{$}}
182*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
183*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_2.0_f32(float addrspace(1)* %out, float %x) {
184*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, 2.0
185*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
186*9880d681SAndroid Build Coastguard Worker  ret void
187*9880d681SAndroid Build Coastguard Worker}
188*9880d681SAndroid Build Coastguard Worker
189*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_2.0_f32:
190*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]]
191*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], -2.0, [[VAL]]{{$}}
192*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
193*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_2.0_f32(float addrspace(1)* %out, float %x) {
194*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, -2.0
195*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
196*9880d681SAndroid Build Coastguard Worker  ret void
197*9880d681SAndroid Build Coastguard Worker}
198*9880d681SAndroid Build Coastguard Worker
199*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_4.0_f32:
200*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]]
201*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 4.0, [[VAL]]{{$}}
202*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
203*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_4.0_f32(float addrspace(1)* %out, float %x) {
204*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, 4.0
205*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
206*9880d681SAndroid Build Coastguard Worker  ret void
207*9880d681SAndroid Build Coastguard Worker}
208*9880d681SAndroid Build Coastguard Worker
209*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_4.0_f32:
210*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]]
211*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], -4.0, [[VAL]]{{$}}
212*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
213*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_4.0_f32(float addrspace(1)* %out, float %x) {
214*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, -4.0
215*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
216*9880d681SAndroid Build Coastguard Worker  ret void
217*9880d681SAndroid Build Coastguard Worker}
218*9880d681SAndroid Build Coastguard Worker
219*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}commute_add_inline_imm_0.5_f32:
220*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_load_dword [[VAL:v[0-9]+]]
221*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e32 [[REG:v[0-9]+]], 0.5, [[VAL]]
222*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
223*9880d681SAndroid Build Coastguard Workerdefine void @commute_add_inline_imm_0.5_f32(float addrspace(1)* %out, float addrspace(1)* %in) {
224*9880d681SAndroid Build Coastguard Worker  %x = load float, float addrspace(1)* %in
225*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, 0.5
226*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
227*9880d681SAndroid Build Coastguard Worker  ret void
228*9880d681SAndroid Build Coastguard Worker}
229*9880d681SAndroid Build Coastguard Worker
230*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}commute_add_literal_f32:
231*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_load_dword [[VAL:v[0-9]+]]
232*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e32 [[REG:v[0-9]+]], 0x44800000, [[VAL]]
233*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
234*9880d681SAndroid Build Coastguard Workerdefine void @commute_add_literal_f32(float addrspace(1)* %out, float addrspace(1)* %in) {
235*9880d681SAndroid Build Coastguard Worker  %x = load float, float addrspace(1)* %in
236*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, 1024.0
237*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
238*9880d681SAndroid Build Coastguard Worker  ret void
239*9880d681SAndroid Build Coastguard Worker}
240*9880d681SAndroid Build Coastguard Worker
241*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_1_f32:
242*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]]
243*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 1, [[VAL]]{{$}}
244*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
245*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_1_f32(float addrspace(1)* %out, float %x) {
246*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, 0x36a0000000000000
247*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
248*9880d681SAndroid Build Coastguard Worker  ret void
249*9880d681SAndroid Build Coastguard Worker}
250*9880d681SAndroid Build Coastguard Worker
251*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_2_f32:
252*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]]
253*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 2, [[VAL]]{{$}}
254*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
255*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_2_f32(float addrspace(1)* %out, float %x) {
256*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, 0x36b0000000000000
257*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
258*9880d681SAndroid Build Coastguard Worker  ret void
259*9880d681SAndroid Build Coastguard Worker}
260*9880d681SAndroid Build Coastguard Worker
261*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_16_f32:
262*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]]
263*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 16, [[VAL]]
264*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
265*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_16_f32(float addrspace(1)* %out, float %x) {
266*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, 0x36e0000000000000
267*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
268*9880d681SAndroid Build Coastguard Worker  ret void
269*9880d681SAndroid Build Coastguard Worker}
270*9880d681SAndroid Build Coastguard Worker
271*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_1_f32:
272*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]]
273*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], -1, [[VAL]]
274*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
275*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_1_f32(float addrspace(1)* %out, float %x) {
276*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, 0xffffffffe0000000
277*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
278*9880d681SAndroid Build Coastguard Worker  ret void
279*9880d681SAndroid Build Coastguard Worker}
280*9880d681SAndroid Build Coastguard Worker
281*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_2_f32:
282*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]]
283*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], -2, [[VAL]]
284*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
285*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_2_f32(float addrspace(1)* %out, float %x) {
286*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, 0xffffffffc0000000
287*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
288*9880d681SAndroid Build Coastguard Worker  ret void
289*9880d681SAndroid Build Coastguard Worker}
290*9880d681SAndroid Build Coastguard Worker
291*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_16_f32:
292*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]]
293*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], -16, [[VAL]]
294*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
295*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_16_f32(float addrspace(1)* %out, float %x) {
296*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, 0xfffffffe00000000
297*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
298*9880d681SAndroid Build Coastguard Worker  ret void
299*9880d681SAndroid Build Coastguard Worker}
300*9880d681SAndroid Build Coastguard Worker
301*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_63_f32:
302*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]]
303*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 63, [[VAL]]
304*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
305*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_63_f32(float addrspace(1)* %out, float %x) {
306*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, 0x36ff800000000000
307*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
308*9880d681SAndroid Build Coastguard Worker  ret void
309*9880d681SAndroid Build Coastguard Worker}
310*9880d681SAndroid Build Coastguard Worker
311*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_64_f32:
312*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]]
313*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 64, [[VAL]]
314*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]]
315*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_64_f32(float addrspace(1)* %out, float %x) {
316*9880d681SAndroid Build Coastguard Worker  %y = fadd float %x, 0x3700000000000000
317*9880d681SAndroid Build Coastguard Worker  store float %y, float addrspace(1)* %out
318*9880d681SAndroid Build Coastguard Worker  ret void
319*9880d681SAndroid Build Coastguard Worker}
320*9880d681SAndroid Build Coastguard Worker
321*9880d681SAndroid Build Coastguard Worker
322*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_0.0_f64:
323*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
324*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c
325*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 0{{$}}
326*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]]
327*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_0.0_f64(double addrspace(1)* %out, double %x) {
328*9880d681SAndroid Build Coastguard Worker  %y = fadd double %x, 0.0
329*9880d681SAndroid Build Coastguard Worker  store double %y, double addrspace(1)* %out
330*9880d681SAndroid Build Coastguard Worker  ret void
331*9880d681SAndroid Build Coastguard Worker}
332*9880d681SAndroid Build Coastguard Worker
333*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_0.5_f64:
334*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
335*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c
336*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 0.5
337*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]]
338*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_0.5_f64(double addrspace(1)* %out, double %x) {
339*9880d681SAndroid Build Coastguard Worker  %y = fadd double %x, 0.5
340*9880d681SAndroid Build Coastguard Worker  store double %y, double addrspace(1)* %out
341*9880d681SAndroid Build Coastguard Worker  ret void
342*9880d681SAndroid Build Coastguard Worker}
343*9880d681SAndroid Build Coastguard Worker
344*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_0.5_f64:
345*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
346*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c
347*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], -0.5
348*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]]
349*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_0.5_f64(double addrspace(1)* %out, double %x) {
350*9880d681SAndroid Build Coastguard Worker  %y = fadd double %x, -0.5
351*9880d681SAndroid Build Coastguard Worker  store double %y, double addrspace(1)* %out
352*9880d681SAndroid Build Coastguard Worker  ret void
353*9880d681SAndroid Build Coastguard Worker}
354*9880d681SAndroid Build Coastguard Worker
355*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_1.0_f64:
356*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
357*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c
358*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 1.0
359*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]]
360*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_1.0_f64(double addrspace(1)* %out, double %x) {
361*9880d681SAndroid Build Coastguard Worker  %y = fadd double %x, 1.0
362*9880d681SAndroid Build Coastguard Worker  store double %y, double addrspace(1)* %out
363*9880d681SAndroid Build Coastguard Worker  ret void
364*9880d681SAndroid Build Coastguard Worker}
365*9880d681SAndroid Build Coastguard Worker
366*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_1.0_f64:
367*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
368*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c
369*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], -1.0
370*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]]
371*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_1.0_f64(double addrspace(1)* %out, double %x) {
372*9880d681SAndroid Build Coastguard Worker  %y = fadd double %x, -1.0
373*9880d681SAndroid Build Coastguard Worker  store double %y, double addrspace(1)* %out
374*9880d681SAndroid Build Coastguard Worker  ret void
375*9880d681SAndroid Build Coastguard Worker}
376*9880d681SAndroid Build Coastguard Worker
377*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_2.0_f64:
378*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
379*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c
380*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 2.0
381*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]]
382*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_2.0_f64(double addrspace(1)* %out, double %x) {
383*9880d681SAndroid Build Coastguard Worker  %y = fadd double %x, 2.0
384*9880d681SAndroid Build Coastguard Worker  store double %y, double addrspace(1)* %out
385*9880d681SAndroid Build Coastguard Worker  ret void
386*9880d681SAndroid Build Coastguard Worker}
387*9880d681SAndroid Build Coastguard Worker
388*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_2.0_f64:
389*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
390*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c
391*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], -2.0
392*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]]
393*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_2.0_f64(double addrspace(1)* %out, double %x) {
394*9880d681SAndroid Build Coastguard Worker  %y = fadd double %x, -2.0
395*9880d681SAndroid Build Coastguard Worker  store double %y, double addrspace(1)* %out
396*9880d681SAndroid Build Coastguard Worker  ret void
397*9880d681SAndroid Build Coastguard Worker}
398*9880d681SAndroid Build Coastguard Worker
399*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_4.0_f64:
400*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
401*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c
402*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 4.0
403*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]]
404*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_4.0_f64(double addrspace(1)* %out, double %x) {
405*9880d681SAndroid Build Coastguard Worker  %y = fadd double %x, 4.0
406*9880d681SAndroid Build Coastguard Worker  store double %y, double addrspace(1)* %out
407*9880d681SAndroid Build Coastguard Worker  ret void
408*9880d681SAndroid Build Coastguard Worker}
409*9880d681SAndroid Build Coastguard Worker
410*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_4.0_f64:
411*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
412*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c
413*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], -4.0
414*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]]
415*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_4.0_f64(double addrspace(1)* %out, double %x) {
416*9880d681SAndroid Build Coastguard Worker  %y = fadd double %x, -4.0
417*9880d681SAndroid Build Coastguard Worker  store double %y, double addrspace(1)* %out
418*9880d681SAndroid Build Coastguard Worker  ret void
419*9880d681SAndroid Build Coastguard Worker}
420*9880d681SAndroid Build Coastguard Worker
421*9880d681SAndroid Build Coastguard Worker
422*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_1_f64:
423*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
424*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c
425*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 1{{$}}
426*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]]
427*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_1_f64(double addrspace(1)* %out, double %x) {
428*9880d681SAndroid Build Coastguard Worker  %y = fadd double %x, 0x0000000000000001
429*9880d681SAndroid Build Coastguard Worker  store double %y, double addrspace(1)* %out
430*9880d681SAndroid Build Coastguard Worker  ret void
431*9880d681SAndroid Build Coastguard Worker}
432*9880d681SAndroid Build Coastguard Worker
433*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_2_f64:
434*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
435*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c
436*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 2{{$}}
437*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]]
438*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_2_f64(double addrspace(1)* %out, double %x) {
439*9880d681SAndroid Build Coastguard Worker  %y = fadd double %x, 0x0000000000000002
440*9880d681SAndroid Build Coastguard Worker  store double %y, double addrspace(1)* %out
441*9880d681SAndroid Build Coastguard Worker  ret void
442*9880d681SAndroid Build Coastguard Worker}
443*9880d681SAndroid Build Coastguard Worker
444*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_16_f64:
445*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
446*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c
447*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 16
448*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]]
449*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_16_f64(double addrspace(1)* %out, double %x) {
450*9880d681SAndroid Build Coastguard Worker  %y = fadd double %x, 0x0000000000000010
451*9880d681SAndroid Build Coastguard Worker  store double %y, double addrspace(1)* %out
452*9880d681SAndroid Build Coastguard Worker  ret void
453*9880d681SAndroid Build Coastguard Worker}
454*9880d681SAndroid Build Coastguard Worker
455*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_1_f64:
456*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
457*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c
458*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], -1
459*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]]
460*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_1_f64(double addrspace(1)* %out, double %x) {
461*9880d681SAndroid Build Coastguard Worker  %y = fadd double %x, 0xffffffffffffffff
462*9880d681SAndroid Build Coastguard Worker  store double %y, double addrspace(1)* %out
463*9880d681SAndroid Build Coastguard Worker  ret void
464*9880d681SAndroid Build Coastguard Worker}
465*9880d681SAndroid Build Coastguard Worker
466*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_2_f64:
467*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
468*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c
469*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], -2
470*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]]
471*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_2_f64(double addrspace(1)* %out, double %x) {
472*9880d681SAndroid Build Coastguard Worker  %y = fadd double %x, 0xfffffffffffffffe
473*9880d681SAndroid Build Coastguard Worker  store double %y, double addrspace(1)* %out
474*9880d681SAndroid Build Coastguard Worker  ret void
475*9880d681SAndroid Build Coastguard Worker}
476*9880d681SAndroid Build Coastguard Worker
477*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_16_f64:
478*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
479*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c
480*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], -16
481*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]]
482*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_16_f64(double addrspace(1)* %out, double %x) {
483*9880d681SAndroid Build Coastguard Worker  %y = fadd double %x, 0xfffffffffffffff0
484*9880d681SAndroid Build Coastguard Worker  store double %y, double addrspace(1)* %out
485*9880d681SAndroid Build Coastguard Worker  ret void
486*9880d681SAndroid Build Coastguard Worker}
487*9880d681SAndroid Build Coastguard Worker
488*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_63_f64:
489*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
490*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c
491*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 63
492*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]]
493*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_63_f64(double addrspace(1)* %out, double %x) {
494*9880d681SAndroid Build Coastguard Worker  %y = fadd double %x, 0x000000000000003F
495*9880d681SAndroid Build Coastguard Worker  store double %y, double addrspace(1)* %out
496*9880d681SAndroid Build Coastguard Worker  ret void
497*9880d681SAndroid Build Coastguard Worker}
498*9880d681SAndroid Build Coastguard Worker
499*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_64_f64:
500*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
501*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c
502*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 64
503*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]]
504*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_64_f64(double addrspace(1)* %out, double %x) {
505*9880d681SAndroid Build Coastguard Worker  %y = fadd double %x, 0x0000000000000040
506*9880d681SAndroid Build Coastguard Worker  store double %y, double addrspace(1)* %out
507*9880d681SAndroid Build Coastguard Worker  ret void
508*9880d681SAndroid Build Coastguard Worker}
509*9880d681SAndroid Build Coastguard Worker
510*9880d681SAndroid Build Coastguard Worker
511*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_0.0_f64:
512*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0
513*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], v[[LO_VREG]]{{$}}
514*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}}
515*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_0.0_f64(double addrspace(1)* %out) {
516*9880d681SAndroid Build Coastguard Worker  store double 0.0, double addrspace(1)* %out
517*9880d681SAndroid Build Coastguard Worker  ret void
518*9880d681SAndroid Build Coastguard Worker}
519*9880d681SAndroid Build Coastguard Worker
520*9880d681SAndroid Build Coastguard Worker
521*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_literal_imm_neg_0.0_f64:
522*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}}
523*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_bfrev_b32_e32 v[[HI_VREG:[0-9]+]], 1{{$}}
524*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}}
525*9880d681SAndroid Build Coastguard Workerdefine void @store_literal_imm_neg_0.0_f64(double addrspace(1)* %out) {
526*9880d681SAndroid Build Coastguard Worker  store double -0.0, double addrspace(1)* %out
527*9880d681SAndroid Build Coastguard Worker  ret void
528*9880d681SAndroid Build Coastguard Worker}
529*9880d681SAndroid Build Coastguard Worker
530*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_0.5_f64:
531*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}}
532*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], 0x3fe00000
533*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}}
534*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_0.5_f64(double addrspace(1)* %out) {
535*9880d681SAndroid Build Coastguard Worker  store double 0.5, double addrspace(1)* %out
536*9880d681SAndroid Build Coastguard Worker  ret void
537*9880d681SAndroid Build Coastguard Worker}
538*9880d681SAndroid Build Coastguard Worker
539*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_m_0.5_f64:
540*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}}
541*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], 0xbfe00000
542*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}}
543*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_m_0.5_f64(double addrspace(1)* %out) {
544*9880d681SAndroid Build Coastguard Worker  store double -0.5, double addrspace(1)* %out
545*9880d681SAndroid Build Coastguard Worker  ret void
546*9880d681SAndroid Build Coastguard Worker}
547*9880d681SAndroid Build Coastguard Worker
548*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_1.0_f64:
549*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}}
550*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], 0x3ff00000
551*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}}
552*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_1.0_f64(double addrspace(1)* %out) {
553*9880d681SAndroid Build Coastguard Worker  store double 1.0, double addrspace(1)* %out
554*9880d681SAndroid Build Coastguard Worker  ret void
555*9880d681SAndroid Build Coastguard Worker}
556*9880d681SAndroid Build Coastguard Worker
557*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_m_1.0_f64:
558*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}}
559*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], 0xbff00000
560*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}}
561*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_m_1.0_f64(double addrspace(1)* %out) {
562*9880d681SAndroid Build Coastguard Worker  store double -1.0, double addrspace(1)* %out
563*9880d681SAndroid Build Coastguard Worker  ret void
564*9880d681SAndroid Build Coastguard Worker}
565*9880d681SAndroid Build Coastguard Worker
566*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_2.0_f64:
567*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}}
568*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], 2.0
569*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}}
570*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_2.0_f64(double addrspace(1)* %out) {
571*9880d681SAndroid Build Coastguard Worker  store double 2.0, double addrspace(1)* %out
572*9880d681SAndroid Build Coastguard Worker  ret void
573*9880d681SAndroid Build Coastguard Worker}
574*9880d681SAndroid Build Coastguard Worker
575*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_m_2.0_f64:
576*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}}
577*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], -2.0
578*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}}
579*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_m_2.0_f64(double addrspace(1)* %out) {
580*9880d681SAndroid Build Coastguard Worker  store double -2.0, double addrspace(1)* %out
581*9880d681SAndroid Build Coastguard Worker  ret void
582*9880d681SAndroid Build Coastguard Worker}
583*9880d681SAndroid Build Coastguard Worker
584*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_4.0_f64:
585*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}}
586*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], 0x40100000
587*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}}
588*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_4.0_f64(double addrspace(1)* %out) {
589*9880d681SAndroid Build Coastguard Worker  store double 4.0, double addrspace(1)* %out
590*9880d681SAndroid Build Coastguard Worker  ret void
591*9880d681SAndroid Build Coastguard Worker}
592*9880d681SAndroid Build Coastguard Worker
593*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_m_4.0_f64:
594*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}}
595*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], 0xc0100000
596*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}}
597*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_m_4.0_f64(double addrspace(1)* %out) {
598*9880d681SAndroid Build Coastguard Worker  store double -4.0, double addrspace(1)* %out
599*9880d681SAndroid Build Coastguard Worker  ret void
600*9880d681SAndroid Build Coastguard Worker}
601*9880d681SAndroid Build Coastguard Worker
602*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_literal_imm_f64:
603*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}}
604*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], 0x40b00000
605*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}}
606*9880d681SAndroid Build Coastguard Workerdefine void @store_literal_imm_f64(double addrspace(1)* %out) {
607*9880d681SAndroid Build Coastguard Worker  store double 4096.0, double addrspace(1)* %out
608*9880d681SAndroid Build Coastguard Worker  ret void
609*9880d681SAndroid Build Coastguard Worker}
610