[ARM] More MVE compare vector splat combines for ANDs
[llvm-complete.git] / test / CodeGen / PowerPC / scalar_vector_test_2.ll
blobaf695c58f1b113ad5863a9d33668bd87bbbfa6eb
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mcpu=pwr9 -verify-machineinstrs -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names \
3 ; RUN:    -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s --check-prefix=P9LE
4 ; RUN: llc -mcpu=pwr9 -verify-machineinstrs -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names \
5 ; RUN:    -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s --check-prefix=P9BE
6 ; RUN: llc -mcpu=pwr8 -verify-machineinstrs -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names \
7 ; RUN:    -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s --check-prefix=P8LE
8 ; RUN: llc -mcpu=pwr8 -verify-machineinstrs -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names \
9 ; RUN:    -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s --check-prefix=P8BE
11 define void @test_liwzx1(<1 x float>* %A, <1 x float>* %B, <1 x float>* %C) {
12 ; P9LE-LABEL: test_liwzx1:
13 ; P9LE:       # %bb.0:
14 ; P9LE-NEXT:    lfiwzx f0, 0, r3
15 ; P9LE-NEXT:    lfiwzx f1, 0, r4
16 ; P9LE-NEXT:    xxpermdi vs0, f0, f0, 2
17 ; P9LE-NEXT:    xxpermdi vs1, f1, f1, 2
18 ; P9LE-NEXT:    xvaddsp vs0, vs0, vs1
19 ; P9LE-NEXT:    xxsldwi vs0, vs0, vs0, 2
20 ; P9LE-NEXT:    stfiwx f0, 0, r5
21 ; P9LE-NEXT:    blr
23 ; P9BE-LABEL: test_liwzx1:
24 ; P9BE:       # %bb.0:
25 ; P9BE-NEXT:    lfiwzx f0, 0, r3
26 ; P9BE-NEXT:    lfiwzx f1, 0, r4
27 ; P9BE-NEXT:    xxsldwi vs0, f0, f0, 1
28 ; P9BE-NEXT:    xxsldwi vs1, f1, f1, 1
29 ; P9BE-NEXT:    xvaddsp vs0, vs0, vs1
30 ; P9BE-NEXT:    xxsldwi vs0, vs0, vs0, 3
31 ; P9BE-NEXT:    stfiwx f0, 0, r5
32 ; P9BE-NEXT:    blr
34 ; P8LE-LABEL: test_liwzx1:
35 ; P8LE:       # %bb.0:
36 ; P8LE-NEXT:    lfiwzx f0, 0, r3
37 ; P8LE-NEXT:    lfiwzx f1, 0, r4
38 ; P8LE-NEXT:    xxpermdi vs0, f0, f0, 2
39 ; P8LE-NEXT:    xxpermdi vs1, f1, f1, 2
40 ; P8LE-NEXT:    xvaddsp vs0, vs0, vs1
41 ; P8LE-NEXT:    xxsldwi vs0, vs0, vs0, 2
42 ; P8LE-NEXT:    stfiwx f0, 0, r5
43 ; P8LE-NEXT:    blr
45 ; P8BE-LABEL: test_liwzx1:
46 ; P8BE:       # %bb.0:
47 ; P8BE-NEXT:    lfiwzx f0, 0, r3
48 ; P8BE-NEXT:    lfiwzx f1, 0, r4
49 ; P8BE-NEXT:    xxsldwi vs0, f0, f0, 1
50 ; P8BE-NEXT:    xxsldwi vs1, f1, f1, 1
51 ; P8BE-NEXT:    xvaddsp vs0, vs0, vs1
52 ; P8BE-NEXT:    xxsldwi vs0, vs0, vs0, 3
53 ; P8BE-NEXT:    stfiwx f0, 0, r5
54 ; P8BE-NEXT:    blr
58   %a = load <1 x float>, <1 x float>* %A
59   %b = load <1 x float>, <1 x float>* %B
60   %X = fadd <1 x float> %a, %b
61   store <1 x float> %X, <1 x float>* %C
62   ret void
65 define <1 x float>* @test_liwzx2(<1 x float>* %A, <1 x float>* %B, <1 x float>* %C) {
66 ; P9LE-LABEL: test_liwzx2:
67 ; P9LE:       # %bb.0:
68 ; P9LE-NEXT:    lfiwzx f0, 0, r3
69 ; P9LE-NEXT:    lfiwzx f1, 0, r4
70 ; P9LE-NEXT:    xxpermdi vs0, f0, f0, 2
71 ; P9LE-NEXT:    xxpermdi vs1, f1, f1, 2
72 ; P9LE-NEXT:    xvsubsp vs0, vs0, vs1
73 ; P9LE-NEXT:    xxsldwi vs0, vs0, vs0, 2
74 ; P9LE-NEXT:    mr r3, r5
75 ; P9LE-NEXT:    stfiwx f0, 0, r5
76 ; P9LE-NEXT:    blr
78 ; P9BE-LABEL: test_liwzx2:
79 ; P9BE:       # %bb.0:
80 ; P9BE-NEXT:    lfiwzx f0, 0, r3
81 ; P9BE-NEXT:    lfiwzx f1, 0, r4
82 ; P9BE-NEXT:    xxsldwi vs0, f0, f0, 1
83 ; P9BE-NEXT:    xxsldwi vs1, f1, f1, 1
84 ; P9BE-NEXT:    xvsubsp vs0, vs0, vs1
85 ; P9BE-NEXT:    xxsldwi vs0, vs0, vs0, 3
86 ; P9BE-NEXT:    mr r3, r5
87 ; P9BE-NEXT:    stfiwx f0, 0, r5
88 ; P9BE-NEXT:    blr
90 ; P8LE-LABEL: test_liwzx2:
91 ; P8LE:       # %bb.0:
92 ; P8LE-NEXT:    lfiwzx f0, 0, r3
93 ; P8LE-NEXT:    lfiwzx f1, 0, r4
94 ; P8LE-NEXT:    mr r3, r5
95 ; P8LE-NEXT:    xxpermdi vs0, f0, f0, 2
96 ; P8LE-NEXT:    xxpermdi vs1, f1, f1, 2
97 ; P8LE-NEXT:    xvsubsp vs0, vs0, vs1
98 ; P8LE-NEXT:    xxsldwi vs0, vs0, vs0, 2
99 ; P8LE-NEXT:    stfiwx f0, 0, r5
100 ; P8LE-NEXT:    blr
102 ; P8BE-LABEL: test_liwzx2:
103 ; P8BE:       # %bb.0:
104 ; P8BE-NEXT:    lfiwzx f0, 0, r3
105 ; P8BE-NEXT:    lfiwzx f1, 0, r4
106 ; P8BE-NEXT:    mr r3, r5
107 ; P8BE-NEXT:    xxsldwi vs0, f0, f0, 1
108 ; P8BE-NEXT:    xxsldwi vs1, f1, f1, 1
109 ; P8BE-NEXT:    xvsubsp vs0, vs0, vs1
110 ; P8BE-NEXT:    xxsldwi vs0, vs0, vs0, 3
111 ; P8BE-NEXT:    stfiwx f0, 0, r5
112 ; P8BE-NEXT:    blr
118   %a = load <1 x float>, <1 x float>* %A
119   %b = load <1 x float>, <1 x float>* %B
120   %X = fsub <1 x float> %a, %b
121   store <1 x float> %X, <1 x float>* %C
122   ret <1 x float>* %C