22; RUN: llc -mtriple=aarch64 -mattr=+sha3 < %s | FileCheck --check-prefix=SHA3 %s
33; RUN: llc -mtriple=aarch64 -mattr=-sha3 < %s | FileCheck --check-prefix=NOSHA3 %s
44; RUN: llc -mtriple=aarch64 -mattr=+sve2 < %s | FileCheck --check-prefix=SVE2 %s
5- ; RUN: llc -mtriple=aarch64 -mattr=+sha3,+sve2 < %s | FileCheck --check-prefix=SHA3 %s
5+ ; RUN: llc -mtriple=aarch64 -mattr=+sha3,+sve2 < %s | FileCheck --check-prefix=SHA3-SVE2 %s
66
77define <16 x i8 > @eor3_16x8_left (<16 x i8 > %0 , <16 x i8 > %1 , <16 x i8 > %2 ) {
88; SHA3-LABEL: eor3_16x8_left:
@@ -24,6 +24,11 @@ define <16 x i8> @eor3_16x8_left(<16 x i8> %0, <16 x i8> %1, <16 x i8> %2) {
2424; SVE2-NEXT: eor3 z2.d, z2.d, z0.d, z1.d
2525; SVE2-NEXT: mov v0.16b, v2.16b
2626; SVE2-NEXT: ret
27+ ;
28+ ; SHA3-SVE2-LABEL: eor3_16x8_left:
29+ ; SHA3-SVE2: // %bb.0:
30+ ; SHA3-SVE2-NEXT: eor3 v0.16b, v0.16b, v1.16b, v2.16b
31+ ; SHA3-SVE2-NEXT: ret
2732 %4 = xor <16 x i8 > %0 , %1
2833 %5 = xor <16 x i8 > %2 , %4
2934 ret <16 x i8 > %5
@@ -49,6 +54,11 @@ define <16 x i8> @eor3_16x8_right(<16 x i8> %0, <16 x i8> %1, <16 x i8> %2) {
4954; SVE2-NEXT: eor3 z1.d, z1.d, z2.d, z0.d
5055; SVE2-NEXT: mov v0.16b, v1.16b
5156; SVE2-NEXT: ret
57+ ;
58+ ; SHA3-SVE2-LABEL: eor3_16x8_right:
59+ ; SHA3-SVE2: // %bb.0:
60+ ; SHA3-SVE2-NEXT: eor3 v0.16b, v1.16b, v2.16b, v0.16b
61+ ; SHA3-SVE2-NEXT: ret
5262 %4 = xor <16 x i8 > %1 , %2
5363 %5 = xor <16 x i8 > %4 , %0
5464 ret <16 x i8 > %5
@@ -74,6 +84,11 @@ define <8 x i16> @eor3_8x16_left(<8 x i16> %0, <8 x i16> %1, <8 x i16> %2) {
7484; SVE2-NEXT: eor3 z2.d, z2.d, z0.d, z1.d
7585; SVE2-NEXT: mov v0.16b, v2.16b
7686; SVE2-NEXT: ret
87+ ;
88+ ; SHA3-SVE2-LABEL: eor3_8x16_left:
89+ ; SHA3-SVE2: // %bb.0:
90+ ; SHA3-SVE2-NEXT: eor3 v0.16b, v0.16b, v1.16b, v2.16b
91+ ; SHA3-SVE2-NEXT: ret
7792 %4 = xor <8 x i16 > %0 , %1
7893 %5 = xor <8 x i16 > %2 , %4
7994 ret <8 x i16 > %5
@@ -99,6 +114,11 @@ define <8 x i16> @eor3_8x16_right(<8 x i16> %0, <8 x i16> %1, <8 x i16> %2) {
99114; SVE2-NEXT: eor3 z1.d, z1.d, z2.d, z0.d
100115; SVE2-NEXT: mov v0.16b, v1.16b
101116; SVE2-NEXT: ret
117+ ;
118+ ; SHA3-SVE2-LABEL: eor3_8x16_right:
119+ ; SHA3-SVE2: // %bb.0:
120+ ; SHA3-SVE2-NEXT: eor3 v0.16b, v1.16b, v2.16b, v0.16b
121+ ; SHA3-SVE2-NEXT: ret
102122 %4 = xor <8 x i16 > %1 , %2
103123 %5 = xor <8 x i16 > %4 , %0
104124 ret <8 x i16 > %5
@@ -124,6 +144,11 @@ define <4 x i32> @eor3_4x32_left(<4 x i32> %0, <4 x i32> %1, <4 x i32> %2) {
124144; SVE2-NEXT: eor3 z2.d, z2.d, z0.d, z1.d
125145; SVE2-NEXT: mov v0.16b, v2.16b
126146; SVE2-NEXT: ret
147+ ;
148+ ; SHA3-SVE2-LABEL: eor3_4x32_left:
149+ ; SHA3-SVE2: // %bb.0:
150+ ; SHA3-SVE2-NEXT: eor3 v0.16b, v0.16b, v1.16b, v2.16b
151+ ; SHA3-SVE2-NEXT: ret
127152 %4 = xor <4 x i32 > %0 , %1
128153 %5 = xor <4 x i32 > %2 , %4
129154 ret <4 x i32 > %5
@@ -149,6 +174,11 @@ define <4 x i32> @eor3_4x32_right(<4 x i32> %0, <4 x i32> %1, <4 x i32> %2) {
149174; SVE2-NEXT: eor3 z1.d, z1.d, z2.d, z0.d
150175; SVE2-NEXT: mov v0.16b, v1.16b
151176; SVE2-NEXT: ret
177+ ;
178+ ; SHA3-SVE2-LABEL: eor3_4x32_right:
179+ ; SHA3-SVE2: // %bb.0:
180+ ; SHA3-SVE2-NEXT: eor3 v0.16b, v1.16b, v2.16b, v0.16b
181+ ; SHA3-SVE2-NEXT: ret
152182 %4 = xor <4 x i32 > %1 , %2
153183 %5 = xor <4 x i32 > %4 , %0
154184 ret <4 x i32 > %5
@@ -174,6 +204,11 @@ define <2 x i64> @eor3_2x64_left(<2 x i64> %0, <2 x i64> %1, <2 x i64> %2) {
174204; SVE2-NEXT: eor3 z2.d, z2.d, z0.d, z1.d
175205; SVE2-NEXT: mov v0.16b, v2.16b
176206; SVE2-NEXT: ret
207+ ;
208+ ; SHA3-SVE2-LABEL: eor3_2x64_left:
209+ ; SHA3-SVE2: // %bb.0:
210+ ; SHA3-SVE2-NEXT: eor3 v0.16b, v0.16b, v1.16b, v2.16b
211+ ; SHA3-SVE2-NEXT: ret
177212 %4 = xor <2 x i64 > %0 , %1
178213 %5 = xor <2 x i64 > %2 , %4
179214 ret <2 x i64 > %5
@@ -199,6 +234,11 @@ define <2 x i64> @eor3_2x64_right(<2 x i64> %0, <2 x i64> %1, <2 x i64> %2) {
199234; SVE2-NEXT: eor3 z1.d, z1.d, z2.d, z0.d
200235; SVE2-NEXT: mov v0.16b, v1.16b
201236; SVE2-NEXT: ret
237+ ;
238+ ; SHA3-SVE2-LABEL: eor3_2x64_right:
239+ ; SHA3-SVE2: // %bb.0:
240+ ; SHA3-SVE2-NEXT: eor3 v0.16b, v1.16b, v2.16b, v0.16b
241+ ; SHA3-SVE2-NEXT: ret
202242 %4 = xor <2 x i64 > %1 , %2
203243 %5 = xor <2 x i64 > %4 , %0
204244 ret <2 x i64 > %5
@@ -222,6 +262,12 @@ define <2 x i64> @eor3_vnot(<2 x i64> %0, <2 x i64> %1) {
222262; SVE2-NEXT: eor v0.16b, v0.16b, v1.16b
223263; SVE2-NEXT: mvn v0.16b, v0.16b
224264; SVE2-NEXT: ret
265+ ;
266+ ; SHA3-SVE2-LABEL: eor3_vnot:
267+ ; SHA3-SVE2: // %bb.0:
268+ ; SHA3-SVE2-NEXT: eor v0.16b, v0.16b, v1.16b
269+ ; SHA3-SVE2-NEXT: mvn v0.16b, v0.16b
270+ ; SHA3-SVE2-NEXT: ret
225271 %3 = xor <2 x i64 > %0 , <i64 -1 , i64 -1 >
226272 %4 = xor <2 x i64 > %3 , %1
227273 ret <2 x i64 > %4
0 commit comments