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:
11 ; CHECK-NEXT: xxland v2, v2, v3
14 ; NO-VSX-LABEL: test_and_v16i8:
16 ; NO-VSX-NEXT: vand v2, v2, v3
18 %res = and <16 x i8> %a, %b
22 define <16 x i8> @test_or_v16i8(<16 x i8> %a, <16 x i8> %b) {
23 ; CHECK-LABEL: test_or_v16i8:
25 ; CHECK-NEXT: xxlor v2, v2, v3
28 ; NO-VSX-LABEL: test_or_v16i8:
30 ; NO-VSX-NEXT: vor v2, v2, v3
32 %res = or <16 x i8> %a, %b
36 define <16 x i8> @test_xor_v16i8(<16 x i8> %a, <16 x i8> %b) {
37 ; CHECK-LABEL: test_xor_v16i8:
39 ; CHECK-NEXT: xxlxor v2, v2, v3
42 ; NO-VSX-LABEL: test_xor_v16i8:
44 ; NO-VSX-NEXT: vxor v2, v2, v3
46 %res = xor <16 x i8> %a, %b
50 define <8 x i16> @test_and_v8i16(<8 x i16> %a, <8 x i16> %b) {
51 ; CHECK-LABEL: test_and_v8i16:
53 ; CHECK-NEXT: xxland v2, v2, v3
56 ; NO-VSX-LABEL: test_and_v8i16:
58 ; NO-VSX-NEXT: vand v2, v2, v3
60 %res = and <8 x i16> %a, %b
64 define <8 x i16> @test_or_v8i16(<8 x i16> %a, <8 x i16> %b) {
65 ; CHECK-LABEL: test_or_v8i16:
67 ; CHECK-NEXT: xxlor v2, v2, v3
70 ; NO-VSX-LABEL: test_or_v8i16:
72 ; NO-VSX-NEXT: vor v2, v2, v3
74 %res = or <8 x i16> %a, %b
78 define <8 x i16> @test_xor_v8i16(<8 x i16> %a, <8 x i16> %b) {
79 ; CHECK-LABEL: test_xor_v8i16:
81 ; CHECK-NEXT: xxlxor v2, v2, v3
84 ; NO-VSX-LABEL: test_xor_v8i16:
86 ; NO-VSX-NEXT: vxor v2, v2, v3
88 %res = xor <8 x i16> %a, %b
92 define <4 x i32> @test_and_v4i32(<4 x i32> %a, <4 x i32> %b) {
93 ; CHECK-LABEL: test_and_v4i32:
95 ; CHECK-NEXT: xxland v2, v2, v3
98 ; NO-VSX-LABEL: test_and_v4i32:
100 ; NO-VSX-NEXT: vand v2, v2, v3
102 %res = and <4 x i32> %a, %b
106 define <4 x i32> @test_or_v4i32(<4 x i32> %a, <4 x i32> %b) {
107 ; CHECK-LABEL: test_or_v4i32:
109 ; CHECK-NEXT: xxlor v2, v2, v3
112 ; NO-VSX-LABEL: test_or_v4i32:
114 ; NO-VSX-NEXT: vor v2, v2, v3
116 %res = or <4 x i32> %a, %b
120 define <4 x i32> @test_xor_v4i32(<4 x i32> %a, <4 x i32> %b) {
121 ; CHECK-LABEL: test_xor_v4i32:
123 ; CHECK-NEXT: xxlxor v2, v2, v3
126 ; NO-VSX-LABEL: test_xor_v4i32:
128 ; NO-VSX-NEXT: vxor v2, v2, v3
130 %res = xor <4 x i32> %a, %b
134 define <2 x i64> @test_and_v2i64(<2 x i64> %a, <2 x i64> %b) {
135 ; CHECK-LABEL: test_and_v2i64:
137 ; CHECK-NEXT: xxland v2, v2, v3
140 ; NO-VSX-LABEL: test_and_v2i64:
142 ; NO-VSX-NEXT: vand v2, v2, v3
144 %res = and <2 x i64> %a, %b
148 define <2 x i64> @test_or_v2i64(<2 x i64> %a, <2 x i64> %b) {
149 ; CHECK-LABEL: test_or_v2i64:
151 ; CHECK-NEXT: xxlor v2, v2, v3
154 ; NO-VSX-LABEL: test_or_v2i64:
156 ; NO-VSX-NEXT: vor v2, v2, v3
158 %res = or <2 x i64> %a, %b
162 define <2 x i64> @test_xor_v2i64(<2 x i64> %a, <2 x i64> %b) {
163 ; CHECK-LABEL: test_xor_v2i64:
165 ; CHECK-NEXT: xxlxor v2, v2, v3
168 ; NO-VSX-LABEL: test_xor_v2i64:
170 ; NO-VSX-NEXT: vxor v2, v2, v3
172 %res = xor <2 x i64> %a, %b