blob: 32e6eaa1a7a905664f9cb10c73b706e3ab0b54b5 [file] [log] [blame]
Tom Stellard49f8bfd2015-01-06 18:00:21 +00001; RUN: llc -march=amdgcn -mcpu=SI -verify-machineinstrs < %s | FileCheck -check-prefix=SI %s
Matt Arsenaulta0050b02014-06-19 01:19:19 +00002
Matt Arsenaulted8a3e02014-09-26 17:55:11 +00003declare i32 @llvm.r600.read.tidig.x() nounwind readnone
Matt Arsenaultf2b0aeb2014-06-23 18:28:28 +00004declare { float, i1 } @llvm.AMDGPU.div.scale.f32(float, float, i1) nounwind readnone
5declare { double, i1 } @llvm.AMDGPU.div.scale.f64(double, double, i1) nounwind readnone
Matt Arsenaulta0050b02014-06-19 01:19:19 +00006
Matt Arsenaultf2b0aeb2014-06-23 18:28:28 +00007; SI-LABEL @test_div_scale_f32_1:
Tom Stellard326d6ec2014-11-05 14:50:53 +00008; SI-DAG: buffer_load_dword [[A:v[0-9]+]], {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, 0 addr64
Matt Arsenaultfb13b222014-12-03 03:12:13 +00009; SI-DAG: buffer_load_dword [[B:v[0-9]+]], {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, 0 addr64 offset:4
Tom Stellard326d6ec2014-11-05 14:50:53 +000010; SI: v_div_scale_f32 [[RESULT0:v[0-9]+]], [[RESULT1:s\[[0-9]+:[0-9]+\]]], [[B]], [[B]], [[A]]
11; SI: buffer_store_dword [[RESULT0]]
12; SI: s_endpgm
Matt Arsenaulted8a3e02014-09-26 17:55:11 +000013define void @test_div_scale_f32_1(float addrspace(1)* %out, float addrspace(1)* %in) nounwind {
14 %tid = call i32 @llvm.r600.read.tidig.x() nounwind readnone
15 %gep.0 = getelementptr float addrspace(1)* %in, i32 %tid
16 %gep.1 = getelementptr float addrspace(1)* %gep.0, i32 1
17
18 %a = load float addrspace(1)* %gep.0, align 4
19 %b = load float addrspace(1)* %gep.1, align 4
20
Matt Arsenaultf2b0aeb2014-06-23 18:28:28 +000021 %result = call { float, i1 } @llvm.AMDGPU.div.scale.f32(float %a, float %b, i1 false) nounwind readnone
22 %result0 = extractvalue { float, i1 } %result, 0
23 store float %result0, float addrspace(1)* %out, align 4
Matt Arsenaulta0050b02014-06-19 01:19:19 +000024 ret void
25}
26
Matt Arsenaultf2b0aeb2014-06-23 18:28:28 +000027; SI-LABEL @test_div_scale_f32_2:
Tom Stellard326d6ec2014-11-05 14:50:53 +000028; SI-DAG: buffer_load_dword [[A:v[0-9]+]], {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, 0 addr64
Matt Arsenaultfb13b222014-12-03 03:12:13 +000029; SI-DAG: buffer_load_dword [[B:v[0-9]+]], {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, 0 addr64 offset:4
Tom Stellard326d6ec2014-11-05 14:50:53 +000030; SI: v_div_scale_f32 [[RESULT0:v[0-9]+]], [[RESULT1:s\[[0-9]+:[0-9]+\]]], [[A]], [[B]], [[A]]
31; SI: buffer_store_dword [[RESULT0]]
32; SI: s_endpgm
Matt Arsenaulted8a3e02014-09-26 17:55:11 +000033define void @test_div_scale_f32_2(float addrspace(1)* %out, float addrspace(1)* %in) nounwind {
34 %tid = call i32 @llvm.r600.read.tidig.x() nounwind readnone
35 %gep.0 = getelementptr float addrspace(1)* %in, i32 %tid
36 %gep.1 = getelementptr float addrspace(1)* %gep.0, i32 1
37
38 %a = load float addrspace(1)* %gep.0, align 4
39 %b = load float addrspace(1)* %gep.1, align 4
40
Matt Arsenaultf2b0aeb2014-06-23 18:28:28 +000041 %result = call { float, i1 } @llvm.AMDGPU.div.scale.f32(float %a, float %b, i1 true) nounwind readnone
42 %result0 = extractvalue { float, i1 } %result, 0
43 store float %result0, float addrspace(1)* %out, align 4
44 ret void
45}
46
47; SI-LABEL @test_div_scale_f64_1:
Tom Stellard326d6ec2014-11-05 14:50:53 +000048; SI-DAG: buffer_load_dwordx2 [[A:v\[[0-9]+:[0-9]+\]]], {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, 0 addr64
Matt Arsenaultfb13b222014-12-03 03:12:13 +000049; SI-DAG: buffer_load_dwordx2 [[B:v\[[0-9]+:[0-9]+\]]], {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, 0 addr64 offset:8
Tom Stellard326d6ec2014-11-05 14:50:53 +000050; SI: v_div_scale_f64 [[RESULT0:v\[[0-9]+:[0-9]+\]]], [[RESULT1:s\[[0-9]+:[0-9]+\]]], [[B]], [[B]], [[A]]
51; SI: buffer_store_dwordx2 [[RESULT0]]
52; SI: s_endpgm
Matt Arsenaulted8a3e02014-09-26 17:55:11 +000053define void @test_div_scale_f64_1(double addrspace(1)* %out, double addrspace(1)* %aptr, double addrspace(1)* %in) nounwind {
54 %tid = call i32 @llvm.r600.read.tidig.x() nounwind readnone
55 %gep.0 = getelementptr double addrspace(1)* %in, i32 %tid
56 %gep.1 = getelementptr double addrspace(1)* %gep.0, i32 1
57
58 %a = load double addrspace(1)* %gep.0, align 8
59 %b = load double addrspace(1)* %gep.1, align 8
60
Matt Arsenaultf2b0aeb2014-06-23 18:28:28 +000061 %result = call { double, i1 } @llvm.AMDGPU.div.scale.f64(double %a, double %b, i1 false) nounwind readnone
62 %result0 = extractvalue { double, i1 } %result, 0
63 store double %result0, double addrspace(1)* %out, align 8
64 ret void
65}
66
67; SI-LABEL @test_div_scale_f64_1:
Tom Stellard326d6ec2014-11-05 14:50:53 +000068; SI-DAG: buffer_load_dwordx2 [[A:v\[[0-9]+:[0-9]+\]]], {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, 0 addr64
Matt Arsenaultfb13b222014-12-03 03:12:13 +000069; SI-DAG: buffer_load_dwordx2 [[B:v\[[0-9]+:[0-9]+\]]], {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, 0 addr64 offset:8
Tom Stellard326d6ec2014-11-05 14:50:53 +000070; SI: v_div_scale_f64 [[RESULT0:v\[[0-9]+:[0-9]+\]]], [[RESULT1:s\[[0-9]+:[0-9]+\]]], [[A]], [[B]], [[A]]
71; SI: buffer_store_dwordx2 [[RESULT0]]
72; SI: s_endpgm
Matt Arsenaulted8a3e02014-09-26 17:55:11 +000073define void @test_div_scale_f64_2(double addrspace(1)* %out, double addrspace(1)* %aptr, double addrspace(1)* %in) nounwind {
74 %tid = call i32 @llvm.r600.read.tidig.x() nounwind readnone
75 %gep.0 = getelementptr double addrspace(1)* %in, i32 %tid
76 %gep.1 = getelementptr double addrspace(1)* %gep.0, i32 1
77
78 %a = load double addrspace(1)* %gep.0, align 8
79 %b = load double addrspace(1)* %gep.1, align 8
80
81 %result = call { double, i1 } @llvm.AMDGPU.div.scale.f64(double %a, double %b, i1 true) nounwind readnone
82 %result0 = extractvalue { double, i1 } %result, 0
83 store double %result0, double addrspace(1)* %out, align 8
84 ret void
85}
86
87; SI-LABEL @test_div_scale_f32_scalar_num_1:
Tom Stellard326d6ec2014-11-05 14:50:53 +000088; SI-DAG: buffer_load_dword [[B:v[0-9]+]]
89; SI-DAG: s_load_dword [[A:s[0-9]+]]
90; SI: v_div_scale_f32 [[RESULT0:v[0-9]+]], [[RESULT1:s\[[0-9]+:[0-9]+\]]], [[B]], [[B]], [[A]]
91; SI: buffer_store_dword [[RESULT0]]
92; SI: s_endpgm
Matt Arsenaulted8a3e02014-09-26 17:55:11 +000093define void @test_div_scale_f32_scalar_num_1(float addrspace(1)* %out, float addrspace(1)* %in, float %a) nounwind {
94 %tid = call i32 @llvm.r600.read.tidig.x() nounwind readnone
95 %gep = getelementptr float addrspace(1)* %in, i32 %tid
96
97 %b = load float addrspace(1)* %gep, align 4
98
99 %result = call { float, i1 } @llvm.AMDGPU.div.scale.f32(float %a, float %b, i1 false) nounwind readnone
100 %result0 = extractvalue { float, i1 } %result, 0
101 store float %result0, float addrspace(1)* %out, align 4
102 ret void
103}
104
105; SI-LABEL @test_div_scale_f32_scalar_num_2:
Tom Stellard326d6ec2014-11-05 14:50:53 +0000106; SI-DAG: buffer_load_dword [[B:v[0-9]+]]
107; SI-DAG: s_load_dword [[A:s[0-9]+]]
108; SI: v_div_scale_f32 [[RESULT0:v[0-9]+]], [[RESULT1:s\[[0-9]+:[0-9]+\]]], [[A]], [[B]], [[A]]
109; SI: buffer_store_dword [[RESULT0]]
110; SI: s_endpgm
Matt Arsenaulted8a3e02014-09-26 17:55:11 +0000111define void @test_div_scale_f32_scalar_num_2(float addrspace(1)* %out, float addrspace(1)* %in, float %a) nounwind {
112 %tid = call i32 @llvm.r600.read.tidig.x() nounwind readnone
113 %gep = getelementptr float addrspace(1)* %in, i32 %tid
114
115 %b = load float addrspace(1)* %gep, align 4
116
117 %result = call { float, i1 } @llvm.AMDGPU.div.scale.f32(float %a, float %b, i1 true) nounwind readnone
118 %result0 = extractvalue { float, i1 } %result, 0
119 store float %result0, float addrspace(1)* %out, align 4
120 ret void
121}
122
123; SI-LABEL @test_div_scale_f32_scalar_den_1:
Tom Stellard326d6ec2014-11-05 14:50:53 +0000124; SI-DAG: buffer_load_dword [[A:v[0-9]+]]
125; SI-DAG: s_load_dword [[B:s[0-9]+]]
126; SI: v_div_scale_f32 [[RESULT0:v[0-9]+]], [[RESULT1:s\[[0-9]+:[0-9]+\]]], [[B]], [[B]], [[A]]
127; SI: buffer_store_dword [[RESULT0]]
128; SI: s_endpgm
Matt Arsenaulted8a3e02014-09-26 17:55:11 +0000129define void @test_div_scale_f32_scalar_den_1(float addrspace(1)* %out, float addrspace(1)* %in, float %b) nounwind {
130 %tid = call i32 @llvm.r600.read.tidig.x() nounwind readnone
131 %gep = getelementptr float addrspace(1)* %in, i32 %tid
132
133 %a = load float addrspace(1)* %gep, align 4
134
135 %result = call { float, i1 } @llvm.AMDGPU.div.scale.f32(float %a, float %b, i1 false) nounwind readnone
136 %result0 = extractvalue { float, i1 } %result, 0
137 store float %result0, float addrspace(1)* %out, align 4
138 ret void
139}
140
141; SI-LABEL @test_div_scale_f32_scalar_den_2:
Tom Stellard326d6ec2014-11-05 14:50:53 +0000142; SI-DAG: buffer_load_dword [[A:v[0-9]+]]
143; SI-DAG: s_load_dword [[B:s[0-9]+]]
144; SI: v_div_scale_f32 [[RESULT0:v[0-9]+]], [[RESULT1:s\[[0-9]+:[0-9]+\]]], [[A]], [[B]], [[A]]
145; SI: buffer_store_dword [[RESULT0]]
146; SI: s_endpgm
Matt Arsenaulted8a3e02014-09-26 17:55:11 +0000147define void @test_div_scale_f32_scalar_den_2(float addrspace(1)* %out, float addrspace(1)* %in, float %b) nounwind {
148 %tid = call i32 @llvm.r600.read.tidig.x() nounwind readnone
149 %gep = getelementptr float addrspace(1)* %in, i32 %tid
150
151 %a = load float addrspace(1)* %gep, align 4
152
153 %result = call { float, i1 } @llvm.AMDGPU.div.scale.f32(float %a, float %b, i1 true) nounwind readnone
154 %result0 = extractvalue { float, i1 } %result, 0
155 store float %result0, float addrspace(1)* %out, align 4
156 ret void
157}
158
159; SI-LABEL @test_div_scale_f64_scalar_num_1:
Tom Stellard326d6ec2014-11-05 14:50:53 +0000160; SI-DAG: buffer_load_dwordx2 [[B:v\[[0-9]+:[0-9]+\]]]
161; SI-DAG: s_load_dwordx2 [[A:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xd
162; SI: v_div_scale_f64 [[RESULT0:v\[[0-9]+:[0-9]+\]]], [[RESULT1:s\[[0-9]+:[0-9]+\]]], [[B]], [[B]], [[A]]
163; SI: buffer_store_dwordx2 [[RESULT0]]
164; SI: s_endpgm
Matt Arsenaulted8a3e02014-09-26 17:55:11 +0000165define void @test_div_scale_f64_scalar_num_1(double addrspace(1)* %out, double addrspace(1)* %in, double %a) nounwind {
166 %tid = call i32 @llvm.r600.read.tidig.x() nounwind readnone
167 %gep = getelementptr double addrspace(1)* %in, i32 %tid
168
169 %b = load double addrspace(1)* %gep, align 8
170
171 %result = call { double, i1 } @llvm.AMDGPU.div.scale.f64(double %a, double %b, i1 false) nounwind readnone
172 %result0 = extractvalue { double, i1 } %result, 0
173 store double %result0, double addrspace(1)* %out, align 8
174 ret void
175}
176
177; SI-LABEL @test_div_scale_f64_scalar_num_2:
Tom Stellard326d6ec2014-11-05 14:50:53 +0000178; SI-DAG: s_load_dwordx2 [[A:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xd
179; SI-DAG: buffer_load_dwordx2 [[B:v\[[0-9]+:[0-9]+\]]]
180; SI: v_div_scale_f64 [[RESULT0:v\[[0-9]+:[0-9]+\]]], [[RESULT1:s\[[0-9]+:[0-9]+\]]], [[A]], [[B]], [[A]]
181; SI: buffer_store_dwordx2 [[RESULT0]]
182; SI: s_endpgm
Matt Arsenaulted8a3e02014-09-26 17:55:11 +0000183define void @test_div_scale_f64_scalar_num_2(double addrspace(1)* %out, double addrspace(1)* %in, double %a) nounwind {
184 %tid = call i32 @llvm.r600.read.tidig.x() nounwind readnone
185 %gep = getelementptr double addrspace(1)* %in, i32 %tid
186
187 %b = load double addrspace(1)* %gep, align 8
188
189 %result = call { double, i1 } @llvm.AMDGPU.div.scale.f64(double %a, double %b, i1 true) nounwind readnone
190 %result0 = extractvalue { double, i1 } %result, 0
191 store double %result0, double addrspace(1)* %out, align 8
192 ret void
193}
194
195; SI-LABEL @test_div_scale_f64_scalar_den_1:
Tom Stellard326d6ec2014-11-05 14:50:53 +0000196; SI-DAG: buffer_load_dwordx2 [[A:v\[[0-9]+:[0-9]+\]]]
197; SI-DAG: s_load_dwordx2 [[B:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xd
198; SI: v_div_scale_f64 [[RESULT0:v\[[0-9]+:[0-9]+\]]], [[RESULT1:s\[[0-9]+:[0-9]+\]]], [[B]], [[B]], [[A]]
199; SI: buffer_store_dwordx2 [[RESULT0]]
200; SI: s_endpgm
Matt Arsenaulted8a3e02014-09-26 17:55:11 +0000201define void @test_div_scale_f64_scalar_den_1(double addrspace(1)* %out, double addrspace(1)* %in, double %b) nounwind {
202 %tid = call i32 @llvm.r600.read.tidig.x() nounwind readnone
203 %gep = getelementptr double addrspace(1)* %in, i32 %tid
204
205 %a = load double addrspace(1)* %gep, align 8
206
207 %result = call { double, i1 } @llvm.AMDGPU.div.scale.f64(double %a, double %b, i1 false) nounwind readnone
208 %result0 = extractvalue { double, i1 } %result, 0
209 store double %result0, double addrspace(1)* %out, align 8
210 ret void
211}
212
213; SI-LABEL @test_div_scale_f64_scalar_den_2:
Tom Stellard326d6ec2014-11-05 14:50:53 +0000214; SI-DAG: buffer_load_dwordx2 [[A:v\[[0-9]+:[0-9]+\]]]
215; SI-DAG: s_load_dwordx2 [[B:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xd
216; SI: v_div_scale_f64 [[RESULT0:v\[[0-9]+:[0-9]+\]]], [[RESULT1:s\[[0-9]+:[0-9]+\]]], [[A]], [[B]], [[A]]
217; SI: buffer_store_dwordx2 [[RESULT0]]
218; SI: s_endpgm
Matt Arsenaulted8a3e02014-09-26 17:55:11 +0000219define void @test_div_scale_f64_scalar_den_2(double addrspace(1)* %out, double addrspace(1)* %in, double %b) nounwind {
220 %tid = call i32 @llvm.r600.read.tidig.x() nounwind readnone
221 %gep = getelementptr double addrspace(1)* %in, i32 %tid
222
223 %a = load double addrspace(1)* %gep, align 8
224
225 %result = call { double, i1 } @llvm.AMDGPU.div.scale.f64(double %a, double %b, i1 true) nounwind readnone
226 %result0 = extractvalue { double, i1 } %result, 0
227 store double %result0, double addrspace(1)* %out, align 8
228 ret void
229}
230
231; SI-LABEL @test_div_scale_f32_all_scalar_1:
Tom Stellard326d6ec2014-11-05 14:50:53 +0000232; SI-DAG: s_load_dword [[A:s[0-9]+]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
233; SI-DAG: s_load_dword [[B:s[0-9]+]], {{s\[[0-9]+:[0-9]+\]}}, 0xc
234; SI: v_mov_b32_e32 [[VA:v[0-9]+]], [[A]]
235; SI: v_div_scale_f32 [[RESULT0:v[0-9]+]], [[RESULT1:s\[[0-9]+:[0-9]+\]]], [[B]], [[B]], [[VA]]
236; SI: buffer_store_dword [[RESULT0]]
237; SI: s_endpgm
Matt Arsenaulted8a3e02014-09-26 17:55:11 +0000238define void @test_div_scale_f32_all_scalar_1(float addrspace(1)* %out, float %a, float %b) nounwind {
239 %result = call { float, i1 } @llvm.AMDGPU.div.scale.f32(float %a, float %b, i1 false) nounwind readnone
240 %result0 = extractvalue { float, i1 } %result, 0
241 store float %result0, float addrspace(1)* %out, align 4
242 ret void
243}
244
245; SI-LABEL @test_div_scale_f32_all_scalar_2:
Tom Stellard326d6ec2014-11-05 14:50:53 +0000246; SI-DAG: s_load_dword [[A:s[0-9]+]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
247; SI-DAG: s_load_dword [[B:s[0-9]+]], {{s\[[0-9]+:[0-9]+\]}}, 0xc
248; SI: v_mov_b32_e32 [[VB:v[0-9]+]], [[B]]
249; SI: v_div_scale_f32 [[RESULT0:v[0-9]+]], [[RESULT1:s\[[0-9]+:[0-9]+\]]], [[A]], [[VB]], [[A]]
250; SI: buffer_store_dword [[RESULT0]]
251; SI: s_endpgm
Matt Arsenaulted8a3e02014-09-26 17:55:11 +0000252define void @test_div_scale_f32_all_scalar_2(float addrspace(1)* %out, float %a, float %b) nounwind {
253 %result = call { float, i1 } @llvm.AMDGPU.div.scale.f32(float %a, float %b, i1 true) nounwind readnone
254 %result0 = extractvalue { float, i1 } %result, 0
255 store float %result0, float addrspace(1)* %out, align 4
256 ret void
257}
258
259; SI-LABEL @test_div_scale_f64_all_scalar_1:
Tom Stellard326d6ec2014-11-05 14:50:53 +0000260; SI-DAG: s_load_dwordx2 s{{\[}}[[A_LO:[0-9]+]]:[[A_HI:[0-9]+]]{{\]}}, {{s\[[0-9]+:[0-9]+\]}}, 0xb
261; SI-DAG: s_load_dwordx2 [[B:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xd
262; SI-DAG: v_mov_b32_e32 v[[VA_LO:[0-9]+]], s[[A_LO]]
263; SI-DAG: v_mov_b32_e32 v[[VA_HI:[0-9]+]], s[[A_HI]]
264; SI: v_div_scale_f64 [[RESULT0:v\[[0-9]+:[0-9]+\]]], [[RESULT1:s\[[0-9]+:[0-9]+\]]], [[B]], [[B]], v{{\[}}[[VA_LO]]:[[VA_HI]]{{\]}}
265; SI: buffer_store_dwordx2 [[RESULT0]]
266; SI: s_endpgm
Matt Arsenaulted8a3e02014-09-26 17:55:11 +0000267define void @test_div_scale_f64_all_scalar_1(double addrspace(1)* %out, double %a, double %b) nounwind {
268 %result = call { double, i1 } @llvm.AMDGPU.div.scale.f64(double %a, double %b, i1 false) nounwind readnone
269 %result0 = extractvalue { double, i1 } %result, 0
270 store double %result0, double addrspace(1)* %out, align 8
271 ret void
272}
273
274; SI-LABEL @test_div_scale_f64_all_scalar_2:
Tom Stellard326d6ec2014-11-05 14:50:53 +0000275; SI-DAG: s_load_dwordx2 [[A:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb
276; SI-DAG: s_load_dwordx2 s{{\[}}[[B_LO:[0-9]+]]:[[B_HI:[0-9]+]]{{\]}}, {{s\[[0-9]+:[0-9]+\]}}, 0xd
277; SI-DAG: v_mov_b32_e32 v[[VB_LO:[0-9]+]], s[[B_LO]]
278; SI-DAG: v_mov_b32_e32 v[[VB_HI:[0-9]+]], s[[B_HI]]
279; SI: v_div_scale_f64 [[RESULT0:v\[[0-9]+:[0-9]+\]]], [[RESULT1:s\[[0-9]+:[0-9]+\]]], [[A]], v{{\[}}[[VB_LO]]:[[VB_HI]]{{\]}}, [[A]]
280; SI: buffer_store_dwordx2 [[RESULT0]]
281; SI: s_endpgm
Matt Arsenaulted8a3e02014-09-26 17:55:11 +0000282define void @test_div_scale_f64_all_scalar_2(double addrspace(1)* %out, double %a, double %b) nounwind {
Matt Arsenaultf2b0aeb2014-06-23 18:28:28 +0000283 %result = call { double, i1 } @llvm.AMDGPU.div.scale.f64(double %a, double %b, i1 true) nounwind readnone
284 %result0 = extractvalue { double, i1 } %result, 0
285 store double %result0, double addrspace(1)* %out, align 8
Matt Arsenaulta0050b02014-06-19 01:19:19 +0000286 ret void
287}