xref: /aosp_15_r20/external/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.ldexp.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=SI %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=SI %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdeclare float @llvm.amdgcn.ldexp.f32(float, i32) nounwind readnone
5*9880d681SAndroid Build Coastguard Workerdeclare double @llvm.amdgcn.ldexp.f64(double, i32) nounwind readnone
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdeclare float @llvm.AMDGPU.ldexp.f32(float, i32) nounwind readnone
8*9880d681SAndroid Build Coastguard Workerdeclare double @llvm.AMDGPU.ldexp.f64(double, i32) nounwind readnone
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}test_ldexp_f32:
11*9880d681SAndroid Build Coastguard Worker; SI: v_ldexp_f32
12*9880d681SAndroid Build Coastguard Worker; SI: s_endpgm
13*9880d681SAndroid Build Coastguard Workerdefine void @test_ldexp_f32(float addrspace(1)* %out, float %a, i32 %b) nounwind {
14*9880d681SAndroid Build Coastguard Worker  %result = call float @llvm.amdgcn.ldexp.f32(float %a, i32 %b) nounwind readnone
15*9880d681SAndroid Build Coastguard Worker  store float %result, float addrspace(1)* %out, align 4
16*9880d681SAndroid Build Coastguard Worker  ret void
17*9880d681SAndroid Build Coastguard Worker}
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}test_ldexp_f64:
20*9880d681SAndroid Build Coastguard Worker; SI: v_ldexp_f64
21*9880d681SAndroid Build Coastguard Worker; SI: s_endpgm
22*9880d681SAndroid Build Coastguard Workerdefine void @test_ldexp_f64(double addrspace(1)* %out, double %a, i32 %b) nounwind {
23*9880d681SAndroid Build Coastguard Worker  %result = call double @llvm.amdgcn.ldexp.f64(double %a, i32 %b) nounwind readnone
24*9880d681SAndroid Build Coastguard Worker  store double %result, double addrspace(1)* %out, align 8
25*9880d681SAndroid Build Coastguard Worker  ret void
26*9880d681SAndroid Build Coastguard Worker}
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}test_legacy_ldexp_f32:
29*9880d681SAndroid Build Coastguard Worker; SI: v_ldexp_f32
30*9880d681SAndroid Build Coastguard Worker; SI: s_endpgm
31*9880d681SAndroid Build Coastguard Workerdefine void @test_legacy_ldexp_f32(float addrspace(1)* %out, float %a, i32 %b) nounwind {
32*9880d681SAndroid Build Coastguard Worker  %result = call float @llvm.AMDGPU.ldexp.f32(float %a, i32 %b) nounwind readnone
33*9880d681SAndroid Build Coastguard Worker  store float %result, float addrspace(1)* %out, align 4
34*9880d681SAndroid Build Coastguard Worker  ret void
35*9880d681SAndroid Build Coastguard Worker}
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}test_legacy_ldexp_f64:
38*9880d681SAndroid Build Coastguard Worker; SI: v_ldexp_f64
39*9880d681SAndroid Build Coastguard Worker; SI: s_endpgm
40*9880d681SAndroid Build Coastguard Workerdefine void @test_legacy_ldexp_f64(double addrspace(1)* %out, double %a, i32 %b) nounwind {
41*9880d681SAndroid Build Coastguard Worker  %result = call double @llvm.AMDGPU.ldexp.f64(double %a, i32 %b) nounwind readnone
42*9880d681SAndroid Build Coastguard Worker  store double %result, double addrspace(1)* %out, align 8
43*9880d681SAndroid Build Coastguard Worker  ret void
44*9880d681SAndroid Build Coastguard Worker}
45*9880d681SAndroid Build Coastguard Worker
46*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}test_ldexp_undef_f32:
47*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_ldexp_f32
48*9880d681SAndroid Build Coastguard Workerdefine void @test_ldexp_undef_f32(float addrspace(1)* %out, i32 %b) nounwind {
49*9880d681SAndroid Build Coastguard Worker  %result = call float @llvm.amdgcn.ldexp.f32(float undef, i32 %b) nounwind readnone
50*9880d681SAndroid Build Coastguard Worker  store float %result, float addrspace(1)* %out, align 4
51*9880d681SAndroid Build Coastguard Worker  ret void
52*9880d681SAndroid Build Coastguard Worker}
53