[X86] combineTargetShuffle - commute VPERMV3 shuffles so any load is on the RHS
[llvm-project.git] / llvm / test / CodeGen / PowerPC / vec_abs.ll
blobb900f0ea29c4a65d7a8c04e3f4d710f7fc1f832d
1 ; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64le-unknown-linux-gnu \
2 ; RUN:          -mattr=+altivec -mattr=+vsx |  FileCheck %s
3 ; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64le-unknown-linux-gnu \
4 ; RUN:          -mattr=+altivec -mattr=-vsx |  FileCheck %s \
5 ; RUN:          -check-prefix=CHECK-NOVSX
7 define <4 x float> @test_float(<4 x float> %aa) #0 {
9 ; CHECK-LABEL: test_float
10 ; CHECK-NOVSX-LABEL: test_float
11 ; CHECK-NOVSX-LABEL: test_float
13   entry:
14     %0 = tail call <4 x float> @llvm.fabs.v4f32(<4 x float> %aa) #2
15     ret <4 x float> %0
17 ; Function Attrs: nounwind readnone
18 declare <4 x float> @llvm.fabs.v4f32(<4 x float>) #1
20 ; CHECK: xvabssp
21 ; CHECK: blr
22 ; CHECK-NOVSX: vspltisb
23 ; CHECK-NOVSX: vslw
24 ; CHECK-NOVSX: vandc
25 ; CHECK-NOVSX: blr
27 define <4 x float> @test2_float(<4 x float> %aa) #0 {
29 ; CHECK-LABEL: test2_float
30 ; CHECK-NOVSX-LABEL: test2_float
32   entry:
33     %0 = tail call <4 x float> @llvm.fabs.v4f32(<4 x float> %aa) #2
34     %sub = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00,
35                              float -0.000000e+00, float -0.000000e+00>, %0
36     ret <4 x float> %sub
39 ; CHECK: xvnabssp
40 ; CHECK: blr
41 ; CHECK-NOVSX: vspltisb
42 ; CHECK-NOVSX: vslw
43 ; CHECK-NOVSX: vor
44 ; CHECK-NOVSX: blr
46 define <2 x double> @test_double(<2 x double> %aa) #0 {
48 ; CHECK-LABEL: test_double
49 ; CHECK-NOVSX-LABEL: test_double
51   entry:
52     %0 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %aa) #2
53     ret <2 x double> %0
56 ; Function Attrs: nounwind readnone
57 declare <2 x double> @llvm.fabs.v2f64(<2 x double>) #1
59 ; CHECK: xvabsdp
60 ; CHECK: blr
61 ; CHECK-NOVSX: fabs
62 ; CHECK-NOVSX: fabs
63 ; CHECK-NOVSX: blr
65 define <2 x double> @foo(<2 x double> %aa) #0 {
66   entry:
67     %0 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %aa) #2
68     %sub = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %0
69     ret <2 x double> %sub
72 ; CHECK: xvnabsdp
73 ; CHECK: blr
74 ; CHECK-NOVSX: fnabs
75 ; CHECK-NOVSX: fnabs
76 ; CHECK-NOVSX: blr