1+ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
12; RUN: llc -verify-machineinstrs -mcpu=pwr10 -mtriple=powerpc64le-unknown-unknown \
23; RUN: -ppc-asm-full-reg-names --ppc-vsr-nums-as-vr < %s | FileCheck %s
34
67; CHECK: xxlandc v2, v2, v3
78; CHECK-NEXT: blr
89define dso_local <4 x i32 > @and_not (<4 x i32 > %A , <4 x i32 > %B , <4 x i32 > %C ) local_unnamed_addr #0 {
10+ ; CHECK-LABEL: and_not:
11+ ; CHECK: # %bb.0: # %entry
12+ ; CHECK-NEXT: xxlandc v2, v2, v3
13+ ; CHECK-NEXT: blr
914entry:
1015 %neg = xor <4 x i32 > %B , <i32 -1 , i32 -1 , i32 -1 , i32 -1 >
1116 %and = and <4 x i32 > %neg , %A
@@ -17,6 +22,10 @@ entry:
1722; CHECK: xxeval v2, v3, v2, v4, 1
1823; CHECK-NEXT: blr
1924define dso_local <16 x i8 > @and_and8 (<16 x i8 > %A , <16 x i8 > %B , <16 x i8 > %C ) local_unnamed_addr #0 {
25+ ; CHECK-LABEL: and_and8:
26+ ; CHECK: # %bb.0: # %entry
27+ ; CHECK-NEXT: xxeval v2, v3, v2, v4, 1
28+ ; CHECK-NEXT: blr
2029entry:
2130 %and = and <16 x i8 > %B , %A
2231 %and1 = and <16 x i8 > %and , %C
@@ -28,6 +37,10 @@ entry:
2837; CHECK: xxeval v2, v3, v2, v4, 1
2938; CHECK-NEXT: blr
3039define dso_local <8 x i16 > @and_and16 (<8 x i16 > %A , <8 x i16 > %B , <8 x i16 > %C ) local_unnamed_addr #0 {
40+ ; CHECK-LABEL: and_and16:
41+ ; CHECK: # %bb.0: # %entry
42+ ; CHECK-NEXT: xxeval v2, v3, v2, v4, 1
43+ ; CHECK-NEXT: blr
3144entry:
3245 %and = and <8 x i16 > %B , %A
3346 %and1 = and <8 x i16 > %and , %C
@@ -39,6 +52,10 @@ entry:
3952; CHECK: xxeval v2, v3, v2, v4, 1
4053; CHECK-NEXT: blr
4154define dso_local <4 x i32 > @and_and32 (<4 x i32 > %A , <4 x i32 > %B , <4 x i32 > %C ) local_unnamed_addr #0 {
55+ ; CHECK-LABEL: and_and32:
56+ ; CHECK: # %bb.0: # %entry
57+ ; CHECK-NEXT: xxeval v2, v3, v2, v4, 1
58+ ; CHECK-NEXT: blr
4259entry:
4360 %and = and <4 x i32 > %B , %A
4461 %and1 = and <4 x i32 > %and , %C
@@ -50,6 +67,10 @@ entry:
5067; CHECK: xxeval v2, v3, v2, v4, 1
5168; CHECK-NEXT: blr
5269define dso_local <2 x i64 > @and_and64 (<2 x i64 > %A , <2 x i64 > %B , <2 x i64 > %C ) local_unnamed_addr #0 {
70+ ; CHECK-LABEL: and_and64:
71+ ; CHECK: # %bb.0: # %entry
72+ ; CHECK-NEXT: xxeval v2, v3, v2, v4, 1
73+ ; CHECK-NEXT: blr
5374entry:
5475 %and = and <2 x i64 > %B , %A
5576 %and1 = and <2 x i64 > %and , %C
@@ -61,6 +82,10 @@ entry:
6182; CHECK: xxeval v2, v2, v4, v3, 14
6283; CHECK-NEXT: blr
6384define dso_local <4 x i32 > @and_nand (<4 x i32 > %A , <4 x i32 > %B , <4 x i32 > %C ) local_unnamed_addr #0 {
85+ ; CHECK-LABEL: and_nand:
86+ ; CHECK: # %bb.0: # %entry
87+ ; CHECK-NEXT: xxeval v2, v2, v4, v3, 14
88+ ; CHECK-NEXT: blr
6489entry:
6590 %and = and <4 x i32 > %C , %B
6691 %neg = xor <4 x i32 > %and , <i32 -1 , i32 -1 , i32 -1 , i32 -1 >
@@ -73,6 +98,10 @@ entry:
7398; CHECK: xxeval v2, v2, v4, v3, 7
7499; CHECK-NEXT: blr
75100define dso_local <4 x i32 > @and_or (<4 x i32 > %A , <4 x i32 > %B , <4 x i32 > %C ) local_unnamed_addr #0 {
101+ ; CHECK-LABEL: and_or:
102+ ; CHECK: # %bb.0: # %entry
103+ ; CHECK-NEXT: xxeval v2, v2, v4, v3, 7
104+ ; CHECK-NEXT: blr
76105entry:
77106 %or = or <4 x i32 > %C , %B
78107 %and = and <4 x i32 > %or , %A
@@ -84,6 +113,10 @@ entry:
84113; CHECK: xxeval v2, v2, v4, v3, 8
85114; CHECK-NEXT: blr
86115define dso_local <4 x i32 > @and_nor (<4 x i32 > %A , <4 x i32 > %B , <4 x i32 > %C ) local_unnamed_addr #0 {
116+ ; CHECK-LABEL: and_nor:
117+ ; CHECK: # %bb.0: # %entry
118+ ; CHECK-NEXT: xxeval v2, v2, v4, v3, 8
119+ ; CHECK-NEXT: blr
87120entry:
88121 %or = or <4 x i32 > %C , %B
89122 %neg = xor <4 x i32 > %or , <i32 -1 , i32 -1 , i32 -1 , i32 -1 >
@@ -96,6 +129,10 @@ entry:
96129; CHECK: xxeval v2, v2, v4, v3, 6
97130; CHECK-NEXT: blr
98131define dso_local <4 x i32 > @and_xor (<4 x i32 > %A , <4 x i32 > %B , <4 x i32 > %C ) local_unnamed_addr #0 {
132+ ; CHECK-LABEL: and_xor:
133+ ; CHECK: # %bb.0: # %entry
134+ ; CHECK-NEXT: xxeval v2, v2, v4, v3, 6
135+ ; CHECK-NEXT: blr
99136entry:
100137 %xor = xor <4 x i32 > %C , %B
101138 %and = and <4 x i32 > %xor , %A
@@ -107,6 +144,10 @@ entry:
107144; CHECK: xxeval v2, v2, v3, v4, 9
108145; CHECK-NEXT: blr
109146define dso_local <4 x i32 > @and_eqv (<4 x i32 > %A , <4 x i32 > %B , <4 x i32 > %C ) local_unnamed_addr #0 {
147+ ; CHECK-LABEL: and_eqv:
148+ ; CHECK: # %bb.0: # %entry
149+ ; CHECK-NEXT: xxeval v2, v2, v3, v4, 9
150+ ; CHECK-NEXT: blr
110151entry:
111152 %xor = xor <4 x i32 > %B , <i32 -1 , i32 -1 , i32 -1 , i32 -1 >
112153 %neg = xor <4 x i32 > %xor , %C
@@ -119,6 +160,10 @@ entry:
119160; CHECK: xxeval v2, v2, v4, v3, 241
120161; CHECK-NEXT: blr
121162define dso_local <4 x i32 > @nand_nand (<4 x i32 > %A , <4 x i32 > %B , <4 x i32 > %C ) local_unnamed_addr #0 {
163+ ; CHECK-LABEL: nand_nand:
164+ ; CHECK: # %bb.0: # %entry
165+ ; CHECK-NEXT: xxeval v2, v2, v4, v3, 241
166+ ; CHECK-NEXT: blr
122167entry:
123168 %and = and <4 x i32 > %C , %B
124169 %A.not = xor <4 x i32 > %A , <i32 -1 , i32 -1 , i32 -1 , i32 -1 >
@@ -131,6 +176,10 @@ entry:
131176; CHECK: xxeval v2, v3, v2, v4, 254
132177; CHECK-NEXT: blr
133178define dso_local <4 x i32 > @nand_and (<4 x i32 > %A , <4 x i32 > %B , <4 x i32 > %C ) local_unnamed_addr #0 {
179+ ; CHECK-LABEL: nand_and:
180+ ; CHECK: # %bb.0: # %entry
181+ ; CHECK-NEXT: xxeval v2, v3, v2, v4, 254
182+ ; CHECK-NEXT: blr
134183entry:
135184 %and = and <4 x i32 > %B , %A
136185 %and1 = and <4 x i32 > %and , %C
@@ -143,6 +192,10 @@ entry:
143192; CHECK: xxeval v2, v2, v4, v3, 249
144193; CHECK-NEXT: blr
145194define dso_local <4 x i32 > @nand_xor (<4 x i32 > %A , <4 x i32 > %B , <4 x i32 > %C ) local_unnamed_addr #0 {
195+ ; CHECK-LABEL: nand_xor:
196+ ; CHECK: # %bb.0: # %entry
197+ ; CHECK-NEXT: xxeval v2, v2, v4, v3, 249
198+ ; CHECK-NEXT: blr
146199entry:
147200 %xor = xor <4 x i32 > %C , %B
148201 %and = and <4 x i32 > %xor , %A
@@ -155,6 +208,10 @@ entry:
155208; CHECK: xxeval v2, v2, v4, v3, 246
156209; CHECK-NEXT: blr
157210define dso_local <4 x i32 > @nand_eqv (<4 x i32 > %A , <4 x i32 > %B , <4 x i32 > %C ) local_unnamed_addr #0 {
211+ ; CHECK-LABEL: nand_eqv:
212+ ; CHECK: # %bb.0: # %entry
213+ ; CHECK-NEXT: xxeval v2, v2, v4, v3, 246
214+ ; CHECK-NEXT: blr
158215entry:
159216 %xor = xor <4 x i32 > %C , %B
160217 %A.not = xor <4 x i32 > %A , <i32 -1 , i32 -1 , i32 -1 , i32 -1 >
@@ -167,6 +224,10 @@ entry:
167224; CHECK: xxeval v2, v2, v4, v3, 248
168225; CHECK-NEXT: blr
169226define dso_local <4 x i32 > @nand_or (<4 x i32 > %A , <4 x i32 > %B , <4 x i32 > %C ) local_unnamed_addr #0 {
227+ ; CHECK-LABEL: nand_or:
228+ ; CHECK: # %bb.0: # %entry
229+ ; CHECK-NEXT: xxeval v2, v2, v4, v3, 248
230+ ; CHECK-NEXT: blr
170231entry:
171232 %or = or <4 x i32 > %C , %B
172233 %and = and <4 x i32 > %or , %A
@@ -179,6 +240,10 @@ entry:
179240; CHECK: xxeval v2, v2, v3, v4, 247
180241; CHECK-NEXT: blr
181242define dso_local <4 x i32 > @nand_nor (<4 x i32 > %A , <4 x i32 > %B , <4 x i32 > %C ) local_unnamed_addr #0 {
243+ ; CHECK-LABEL: nand_nor:
244+ ; CHECK: # %bb.0: # %entry
245+ ; CHECK-NEXT: xxeval v2, v2, v3, v4, 247
246+ ; CHECK-NEXT: blr
182247entry:
183248 %A.not = xor <4 x i32 > %A , <i32 -1 , i32 -1 , i32 -1 , i32 -1 >
184249 %or = or <4 x i32 > %A.not , %B
0 commit comments