blob: 527c8da10a3c9fda5e6a627cc33a881d6d0ad9d9 [file] [log] [blame]
Matt Arsenaulta0050b02014-06-19 01:19:19 +00001; RUN: llc -march=r600 -mcpu=SI -verify-machineinstrs < %s | FileCheck -check-prefix=SI %s
2
Matt Arsenaultf2b0aeb2014-06-23 18:28:28 +00003declare { float, i1 } @llvm.AMDGPU.div.scale.f32(float, float, i1) nounwind readnone
4declare { double, i1 } @llvm.AMDGPU.div.scale.f64(double, double, i1) nounwind readnone
Matt Arsenaulta0050b02014-06-19 01:19:19 +00005
Matt Arsenaultf2b0aeb2014-06-23 18:28:28 +00006; SI-LABEL @test_div_scale_f32_1:
7; SI: V_DIV_SCALE_F32
8define void @test_div_scale_f32_1(float addrspace(1)* %out, float addrspace(1)* %aptr, float addrspace(1)* %bptr) nounwind {
Matt Arsenaulta0050b02014-06-19 01:19:19 +00009 %a = load float addrspace(1)* %aptr, align 4
10 %b = load float addrspace(1)* %bptr, align 4
Matt Arsenaultf2b0aeb2014-06-23 18:28:28 +000011 %result = call { float, i1 } @llvm.AMDGPU.div.scale.f32(float %a, float %b, i1 false) nounwind readnone
12 %result0 = extractvalue { float, i1 } %result, 0
13 store float %result0, float addrspace(1)* %out, align 4
Matt Arsenaulta0050b02014-06-19 01:19:19 +000014 ret void
15}
16
Matt Arsenaultf2b0aeb2014-06-23 18:28:28 +000017; SI-LABEL @test_div_scale_f32_2:
18; SI: V_DIV_SCALE_F32
19define void @test_div_scale_f32_2(float addrspace(1)* %out, float addrspace(1)* %aptr, float addrspace(1)* %bptr) nounwind {
20 %a = load float addrspace(1)* %aptr, align 4
21 %b = load float addrspace(1)* %bptr, align 4
22 %result = call { float, i1 } @llvm.AMDGPU.div.scale.f32(float %a, float %b, i1 true) nounwind readnone
23 %result0 = extractvalue { float, i1 } %result, 0
24 store float %result0, float addrspace(1)* %out, align 4
25 ret void
26}
27
28; SI-LABEL @test_div_scale_f64_1:
29; SI: V_DIV_SCALE_F64
30define void @test_div_scale_f64_1(double addrspace(1)* %out, double addrspace(1)* %aptr, double addrspace(1)* %bptr, double addrspace(1)* %cptr) nounwind {
Matt Arsenaulta0050b02014-06-19 01:19:19 +000031 %a = load double addrspace(1)* %aptr, align 8
32 %b = load double addrspace(1)* %bptr, align 8
Matt Arsenaultf2b0aeb2014-06-23 18:28:28 +000033 %result = call { double, i1 } @llvm.AMDGPU.div.scale.f64(double %a, double %b, i1 false) nounwind readnone
34 %result0 = extractvalue { double, i1 } %result, 0
35 store double %result0, double addrspace(1)* %out, align 8
36 ret void
37}
38
39; SI-LABEL @test_div_scale_f64_1:
40; SI: V_DIV_SCALE_F64
41define void @test_div_scale_f64_2(double addrspace(1)* %out, double addrspace(1)* %aptr, double addrspace(1)* %bptr, double addrspace(1)* %cptr) nounwind {
42 %a = load double addrspace(1)* %aptr, align 8
43 %b = load double addrspace(1)* %bptr, align 8
44 %result = call { double, i1 } @llvm.AMDGPU.div.scale.f64(double %a, double %b, i1 true) nounwind readnone
45 %result0 = extractvalue { double, i1 } %result, 0
46 store double %result0, double addrspace(1)* %out, align 8
Matt Arsenaulta0050b02014-06-19 01:19:19 +000047 ret void
48}