xref: /aosp_15_r20/external/llvm/test/CodeGen/PowerPC/vec_abs.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=powerpc64le-unknown-linux-gnu -march=ppc64le \
2*9880d681SAndroid Build Coastguard Worker; RUN:          -mattr=+altivec -mattr=+vsx |  FileCheck %s
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=powerpc64le-unknown-linux-gnu -march=ppc64le \
4*9880d681SAndroid Build Coastguard Worker; RUN:          -mattr=+altivec -mattr=-vsx |  FileCheck %s \
5*9880d681SAndroid Build Coastguard Worker; RUN:          -check-prefix=CHECK-NOVSX
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_float(<4 x float> %aa) #0 {
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_float
10*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-LABEL: test_float
11*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-LABEL: test_float
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker  entry:
14*9880d681SAndroid Build Coastguard Worker    %0 = tail call <4 x float> @llvm.fabs.v4f32(<4 x float> %aa) #2
15*9880d681SAndroid Build Coastguard Worker    ret <4 x float> %0
16*9880d681SAndroid Build Coastguard Worker}
17*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
18*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.fabs.v4f32(<4 x float>) #1
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Worker; CHECK: xvabssp
21*9880d681SAndroid Build Coastguard Worker; CHECK: blr
22*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: fabs
23*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: fabs
24*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: fabs
25*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: fabs
26*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: blr
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test2_float(<4 x float> %aa) #0 {
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test2_float
31*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-LABEL: test2_float
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker  entry:
34*9880d681SAndroid Build Coastguard Worker    %0 = tail call <4 x float> @llvm.fabs.v4f32(<4 x float> %aa) #2
35*9880d681SAndroid Build Coastguard Worker    %sub = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00,
36*9880d681SAndroid Build Coastguard Worker                             float -0.000000e+00, float -0.000000e+00>, %0
37*9880d681SAndroid Build Coastguard Worker    ret <4 x float> %sub
38*9880d681SAndroid Build Coastguard Worker}
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Worker; CHECK: xvnabssp
41*9880d681SAndroid Build Coastguard Worker; CHECK: blr
42*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: vspltisb
43*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: fabs
44*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: fabs
45*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: fabs
46*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: fabs
47*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: vsubfp
48*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: blr
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_double(<2 x double> %aa) #0 {
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_double
53*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX-LABEL: test_double
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Worker  entry:
56*9880d681SAndroid Build Coastguard Worker    %0 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %aa) #2
57*9880d681SAndroid Build Coastguard Worker    ret <2 x double> %0
58*9880d681SAndroid Build Coastguard Worker}
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
61*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.fabs.v2f64(<2 x double>) #1
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Worker; CHECK: xvabsdp
64*9880d681SAndroid Build Coastguard Worker; CHECK: blr
65*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: fabs
66*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: fabs
67*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: blr
68*9880d681SAndroid Build Coastguard Worker
69*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @foo(<2 x double> %aa) #0 {
70*9880d681SAndroid Build Coastguard Worker  entry:
71*9880d681SAndroid Build Coastguard Worker    %0 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %aa) #2
72*9880d681SAndroid Build Coastguard Worker    %sub = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %0
73*9880d681SAndroid Build Coastguard Worker    ret <2 x double> %sub
74*9880d681SAndroid Build Coastguard Worker}
75*9880d681SAndroid Build Coastguard Worker
76*9880d681SAndroid Build Coastguard Worker; CHECK: xvnabsdp
77*9880d681SAndroid Build Coastguard Worker; CHECK: blr
78*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: fnabs
79*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: fnabs
80*9880d681SAndroid Build Coastguard Worker; CHECK-NOVSX: blr
81