xref: /aosp_15_r20/external/llvm/test/CodeGen/AMDGPU/fmaxnum.f64.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=SI < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=tonga < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdeclare double @llvm.maxnum.f64(double, double) #0
5*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.maxnum.v2f64(<2 x double>, <2 x double>) #0
6*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.maxnum.v4f64(<4 x double>, <4 x double>) #0
7*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.maxnum.v8f64(<8 x double>, <8 x double>) #0
8*9880d681SAndroid Build Coastguard Workerdeclare <16 x double> @llvm.maxnum.v16f64(<16 x double>, <16 x double>) #0
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: @test_fmax_f64
11*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
12*9880d681SAndroid Build Coastguard Workerdefine void @test_fmax_f64(double addrspace(1)* %out, double %a, double %b) nounwind {
13*9880d681SAndroid Build Coastguard Worker  %val = call double @llvm.maxnum.f64(double %a, double %b) #0
14*9880d681SAndroid Build Coastguard Worker  store double %val, double addrspace(1)* %out, align 8
15*9880d681SAndroid Build Coastguard Worker  ret void
16*9880d681SAndroid Build Coastguard Worker}
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: @test_fmax_v2f64
19*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
20*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
21*9880d681SAndroid Build Coastguard Workerdefine void @test_fmax_v2f64(<2 x double> addrspace(1)* %out, <2 x double> %a, <2 x double> %b) nounwind {
22*9880d681SAndroid Build Coastguard Worker  %val = call <2 x double> @llvm.maxnum.v2f64(<2 x double> %a, <2 x double> %b) #0
23*9880d681SAndroid Build Coastguard Worker  store <2 x double> %val, <2 x double> addrspace(1)* %out, align 16
24*9880d681SAndroid Build Coastguard Worker  ret void
25*9880d681SAndroid Build Coastguard Worker}
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: @test_fmax_v4f64
28*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
29*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
30*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
31*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
32*9880d681SAndroid Build Coastguard Workerdefine void @test_fmax_v4f64(<4 x double> addrspace(1)* %out, <4 x double> %a, <4 x double> %b) nounwind {
33*9880d681SAndroid Build Coastguard Worker  %val = call <4 x double> @llvm.maxnum.v4f64(<4 x double> %a, <4 x double> %b) #0
34*9880d681SAndroid Build Coastguard Worker  store <4 x double> %val, <4 x double> addrspace(1)* %out, align 32
35*9880d681SAndroid Build Coastguard Worker  ret void
36*9880d681SAndroid Build Coastguard Worker}
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: @test_fmax_v8f64
39*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
40*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
41*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
42*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
43*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
44*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
45*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
46*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
47*9880d681SAndroid Build Coastguard Workerdefine void @test_fmax_v8f64(<8 x double> addrspace(1)* %out, <8 x double> %a, <8 x double> %b) nounwind {
48*9880d681SAndroid Build Coastguard Worker  %val = call <8 x double> @llvm.maxnum.v8f64(<8 x double> %a, <8 x double> %b) #0
49*9880d681SAndroid Build Coastguard Worker  store <8 x double> %val, <8 x double> addrspace(1)* %out, align 64
50*9880d681SAndroid Build Coastguard Worker  ret void
51*9880d681SAndroid Build Coastguard Worker}
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: @test_fmax_v16f64
54*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
55*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
56*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
57*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
58*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
59*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
60*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
61*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
62*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
63*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
64*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
65*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
66*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
67*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
68*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
69*9880d681SAndroid Build Coastguard Worker; SI: v_max_f64
70*9880d681SAndroid Build Coastguard Workerdefine void @test_fmax_v16f64(<16 x double> addrspace(1)* %out, <16 x double> %a, <16 x double> %b) nounwind {
71*9880d681SAndroid Build Coastguard Worker  %val = call <16 x double> @llvm.maxnum.v16f64(<16 x double> %a, <16 x double> %b) #0
72*9880d681SAndroid Build Coastguard Worker  store <16 x double> %val, <16 x double> addrspace(1)* %out, align 128
73*9880d681SAndroid Build Coastguard Worker  ret void
74*9880d681SAndroid Build Coastguard Worker}
75*9880d681SAndroid Build Coastguard Worker
76*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind readnone }
77