Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / PowerPC / GlobalISel / ppc-isel-logical-vec.ll
blob07cb57099dc49e26af9cfcaee31152ed1375dbb9
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -ppc-vsr-nums-as-vr \
3 ; RUN:   -ppc-asm-full-reg-names -global-isel -o - < %s | FileCheck %s
4 ; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -ppc-vsr-nums-as-vr \
5 ; RUN:   -ppc-asm-full-reg-names -mattr=-vsx -global-isel -o - < %s | \
6 ; RUN: FileCheck %s --check-prefix=NO-VSX
8 define <16 x i8> @test_and_v16i8(<16 x i8> %a, <16 x i8> %b) {
9 ; CHECK-LABEL: test_and_v16i8:
10 ; CHECK:       # %bb.0:
11 ; CHECK-NEXT:    xxland v2, v2, v3
12 ; CHECK-NEXT:    blr
14 ; NO-VSX-LABEL: test_and_v16i8:
15 ; NO-VSX:       # %bb.0:
16 ; NO-VSX-NEXT:    vand v2, v2, v3
17 ; NO-VSX-NEXT:    blr
18   %res = and <16 x i8> %a, %b
19   ret <16 x i8> %res
22 define <16 x i8> @test_or_v16i8(<16 x i8> %a, <16 x i8> %b) {
23 ; CHECK-LABEL: test_or_v16i8:
24 ; CHECK:       # %bb.0:
25 ; CHECK-NEXT:    xxlor v2, v2, v3
26 ; CHECK-NEXT:    blr
28 ; NO-VSX-LABEL: test_or_v16i8:
29 ; NO-VSX:       # %bb.0:
30 ; NO-VSX-NEXT:    vor v2, v2, v3
31 ; NO-VSX-NEXT:    blr
32   %res = or <16 x i8> %a, %b
33   ret <16 x i8> %res
36 define <16 x i8> @test_xor_v16i8(<16 x i8> %a, <16 x i8> %b) {
37 ; CHECK-LABEL: test_xor_v16i8:
38 ; CHECK:       # %bb.0:
39 ; CHECK-NEXT:    xxlxor v2, v2, v3
40 ; CHECK-NEXT:    blr
42 ; NO-VSX-LABEL: test_xor_v16i8:
43 ; NO-VSX:       # %bb.0:
44 ; NO-VSX-NEXT:    vxor v2, v2, v3
45 ; NO-VSX-NEXT:    blr
46   %res = xor <16 x i8> %a, %b
47   ret <16 x i8> %res
50 define <8 x i16> @test_and_v8i16(<8 x i16> %a, <8 x i16> %b) {
51 ; CHECK-LABEL: test_and_v8i16:
52 ; CHECK:       # %bb.0:
53 ; CHECK-NEXT:    xxland v2, v2, v3
54 ; CHECK-NEXT:    blr
56 ; NO-VSX-LABEL: test_and_v8i16:
57 ; NO-VSX:       # %bb.0:
58 ; NO-VSX-NEXT:    vand v2, v2, v3
59 ; NO-VSX-NEXT:    blr
60   %res = and <8 x i16> %a, %b
61   ret <8 x i16> %res
64 define <8 x i16> @test_or_v8i16(<8 x i16> %a, <8 x i16> %b) {
65 ; CHECK-LABEL: test_or_v8i16:
66 ; CHECK:       # %bb.0:
67 ; CHECK-NEXT:    xxlor v2, v2, v3
68 ; CHECK-NEXT:    blr
70 ; NO-VSX-LABEL: test_or_v8i16:
71 ; NO-VSX:       # %bb.0:
72 ; NO-VSX-NEXT:    vor v2, v2, v3
73 ; NO-VSX-NEXT:    blr
74   %res = or <8 x i16> %a, %b
75   ret <8 x i16> %res
78 define <8 x i16> @test_xor_v8i16(<8 x i16> %a, <8 x i16> %b) {
79 ; CHECK-LABEL: test_xor_v8i16:
80 ; CHECK:       # %bb.0:
81 ; CHECK-NEXT:    xxlxor v2, v2, v3
82 ; CHECK-NEXT:    blr
84 ; NO-VSX-LABEL: test_xor_v8i16:
85 ; NO-VSX:       # %bb.0:
86 ; NO-VSX-NEXT:    vxor v2, v2, v3
87 ; NO-VSX-NEXT:    blr
88   %res = xor <8 x i16> %a, %b
89   ret <8 x i16> %res
92 define <4 x i32> @test_and_v4i32(<4 x i32> %a, <4 x i32> %b) {
93 ; CHECK-LABEL: test_and_v4i32:
94 ; CHECK:       # %bb.0:
95 ; CHECK-NEXT:    xxland v2, v2, v3
96 ; CHECK-NEXT:    blr
98 ; NO-VSX-LABEL: test_and_v4i32:
99 ; NO-VSX:       # %bb.0:
100 ; NO-VSX-NEXT:    vand v2, v2, v3
101 ; NO-VSX-NEXT:    blr
102   %res = and <4 x i32> %a, %b
103   ret <4 x i32> %res
106 define <4 x i32> @test_or_v4i32(<4 x i32> %a, <4 x i32> %b) {
107 ; CHECK-LABEL: test_or_v4i32:
108 ; CHECK:       # %bb.0:
109 ; CHECK-NEXT:    xxlor v2, v2, v3
110 ; CHECK-NEXT:    blr
112 ; NO-VSX-LABEL: test_or_v4i32:
113 ; NO-VSX:       # %bb.0:
114 ; NO-VSX-NEXT:    vor v2, v2, v3
115 ; NO-VSX-NEXT:    blr
116   %res = or <4 x i32> %a, %b
117   ret <4 x i32> %res
120 define <4 x i32> @test_xor_v4i32(<4 x i32> %a, <4 x i32> %b) {
121 ; CHECK-LABEL: test_xor_v4i32:
122 ; CHECK:       # %bb.0:
123 ; CHECK-NEXT:    xxlxor v2, v2, v3
124 ; CHECK-NEXT:    blr
126 ; NO-VSX-LABEL: test_xor_v4i32:
127 ; NO-VSX:       # %bb.0:
128 ; NO-VSX-NEXT:    vxor v2, v2, v3
129 ; NO-VSX-NEXT:    blr
130   %res = xor <4 x i32> %a, %b
131   ret <4 x i32> %res
134 define <2 x i64> @test_and_v2i64(<2 x i64> %a, <2 x i64> %b) {
135 ; CHECK-LABEL: test_and_v2i64:
136 ; CHECK:       # %bb.0:
137 ; CHECK-NEXT:    xxland v2, v2, v3
138 ; CHECK-NEXT:    blr
140 ; NO-VSX-LABEL: test_and_v2i64:
141 ; NO-VSX:       # %bb.0:
142 ; NO-VSX-NEXT:    vand v2, v2, v3
143 ; NO-VSX-NEXT:    blr
144   %res = and <2 x i64> %a, %b
145   ret <2 x i64> %res
148 define <2 x i64> @test_or_v2i64(<2 x i64> %a, <2 x i64> %b) {
149 ; CHECK-LABEL: test_or_v2i64:
150 ; CHECK:       # %bb.0:
151 ; CHECK-NEXT:    xxlor v2, v2, v3
152 ; CHECK-NEXT:    blr
154 ; NO-VSX-LABEL: test_or_v2i64:
155 ; NO-VSX:       # %bb.0:
156 ; NO-VSX-NEXT:    vor v2, v2, v3
157 ; NO-VSX-NEXT:    blr
158   %res = or <2 x i64> %a, %b
159   ret <2 x i64> %res
162 define <2 x i64> @test_xor_v2i64(<2 x i64> %a, <2 x i64> %b) {
163 ; CHECK-LABEL: test_xor_v2i64:
164 ; CHECK:       # %bb.0:
165 ; CHECK-NEXT:    xxlxor v2, v2, v3
166 ; CHECK-NEXT:    blr
168 ; NO-VSX-LABEL: test_xor_v2i64:
169 ; NO-VSX:       # %bb.0:
170 ; NO-VSX-NEXT:    vxor v2, v2, v3
171 ; NO-VSX-NEXT:    blr
172   %res = xor <2 x i64> %a, %b
173   ret <2 x i64> %res