Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / AArch64 / eor3.ll
blob06ae6b09d002e0a95f52fbe688f199ffd7acfaf0
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --extra_scrub
2 ; RUN: llc -mtriple=aarch64 -mattr=+sha3 < %s | FileCheck --check-prefix=SHA3 %s
3 ; RUN: llc -mtriple=aarch64 -mattr=-sha3 < %s | FileCheck --check-prefix=NOSHA3 %s
5 define <16 x i8> @eor3_16x8_left(<16 x i8> %0, <16 x i8> %1, <16 x i8> %2) {
6 ; SHA3-LABEL: eor3_16x8_left:
7 ; SHA3:       // %bb.0:
8 ; SHA3-NEXT:    eor3 v0.16b, v0.16b, v1.16b, v2.16b
9 ; SHA3-NEXT:    ret
11 ; NOSHA3-LABEL: eor3_16x8_left:
12 ; NOSHA3:       // %bb.0:
13 ; NOSHA3-NEXT:    eor v0.16b, v0.16b, v1.16b
14 ; NOSHA3-NEXT:    eor v0.16b, v2.16b, v0.16b
15 ; NOSHA3-NEXT:    ret
16   %4 = xor <16 x i8> %0, %1
17   %5 = xor <16 x i8> %2, %4
18   ret <16 x i8> %5
21 define <16 x i8> @eor3_16x8_right(<16 x i8> %0, <16 x i8> %1, <16 x i8> %2) {
22 ; SHA3-LABEL: eor3_16x8_right:
23 ; SHA3:       // %bb.0:
24 ; SHA3-NEXT:    eor3 v0.16b, v1.16b, v2.16b, v0.16b
25 ; SHA3-NEXT:    ret
27 ; NOSHA3-LABEL: eor3_16x8_right:
28 ; NOSHA3:       // %bb.0:
29 ; NOSHA3-NEXT:    eor v1.16b, v1.16b, v2.16b
30 ; NOSHA3-NEXT:    eor v0.16b, v1.16b, v0.16b
31 ; NOSHA3-NEXT:    ret
32   %4 = xor <16 x i8> %1, %2
33   %5 = xor <16 x i8> %4, %0
34   ret <16 x i8> %5
37 define <8 x i16> @eor3_8x16_left(<8 x i16> %0, <8 x i16> %1, <8 x i16> %2) {
38 ; SHA3-LABEL: eor3_8x16_left:
39 ; SHA3:       // %bb.0:
40 ; SHA3-NEXT:    eor3 v0.16b, v0.16b, v1.16b, v2.16b
41 ; SHA3-NEXT:    ret
43 ; NOSHA3-LABEL: eor3_8x16_left:
44 ; NOSHA3:       // %bb.0:
45 ; NOSHA3-NEXT:    eor v0.16b, v0.16b, v1.16b
46 ; NOSHA3-NEXT:    eor v0.16b, v2.16b, v0.16b
47 ; NOSHA3-NEXT:    ret
48   %4 = xor <8 x i16> %0, %1
49   %5 = xor <8 x i16> %2, %4
50   ret <8 x i16> %5
53 define <8 x i16> @eor3_8x16_right(<8 x i16> %0, <8 x i16> %1, <8 x i16> %2) {
54 ; SHA3-LABEL: eor3_8x16_right:
55 ; SHA3:       // %bb.0:
56 ; SHA3-NEXT:    eor3 v0.16b, v1.16b, v2.16b, v0.16b
57 ; SHA3-NEXT:    ret
59 ; NOSHA3-LABEL: eor3_8x16_right:
60 ; NOSHA3:       // %bb.0:
61 ; NOSHA3-NEXT:    eor v1.16b, v1.16b, v2.16b
62 ; NOSHA3-NEXT:    eor v0.16b, v1.16b, v0.16b
63 ; NOSHA3-NEXT:    ret
64   %4 = xor <8 x i16> %1, %2
65   %5 = xor <8 x i16> %4, %0
66   ret <8 x i16> %5
69 define <4 x i32> @eor3_4x32_left(<4 x i32> %0, <4 x i32> %1, <4 x i32> %2) {
70 ; SHA3-LABEL: eor3_4x32_left:
71 ; SHA3:       // %bb.0:
72 ; SHA3-NEXT:    eor3 v0.16b, v0.16b, v1.16b, v2.16b
73 ; SHA3-NEXT:    ret
75 ; NOSHA3-LABEL: eor3_4x32_left:
76 ; NOSHA3:       // %bb.0:
77 ; NOSHA3-NEXT:    eor v0.16b, v0.16b, v1.16b
78 ; NOSHA3-NEXT:    eor v0.16b, v2.16b, v0.16b
79 ; NOSHA3-NEXT:    ret
80   %4 = xor <4 x i32> %0, %1
81   %5 = xor <4 x i32> %2, %4
82   ret <4 x i32> %5
85 define <4 x i32> @eor3_4x32_right(<4 x i32> %0, <4 x i32> %1, <4 x i32> %2) {
86 ; SHA3-LABEL: eor3_4x32_right:
87 ; SHA3:       // %bb.0:
88 ; SHA3-NEXT:    eor3 v0.16b, v1.16b, v2.16b, v0.16b
89 ; SHA3-NEXT:    ret
91 ; NOSHA3-LABEL: eor3_4x32_right:
92 ; NOSHA3:       // %bb.0:
93 ; NOSHA3-NEXT:    eor v1.16b, v1.16b, v2.16b
94 ; NOSHA3-NEXT:    eor v0.16b, v1.16b, v0.16b
95 ; NOSHA3-NEXT:    ret
96   %4 = xor <4 x i32> %1, %2
97   %5 = xor <4 x i32> %4, %0
98   ret <4 x i32> %5
101 define <2 x i64> @eor3_2x64_left(<2 x i64> %0, <2 x i64> %1, <2 x i64> %2) {
102 ; SHA3-LABEL: eor3_2x64_left:
103 ; SHA3:       // %bb.0:
104 ; SHA3-NEXT:    eor3 v0.16b, v0.16b, v1.16b, v2.16b
105 ; SHA3-NEXT:    ret
107 ; NOSHA3-LABEL: eor3_2x64_left:
108 ; NOSHA3:       // %bb.0:
109 ; NOSHA3-NEXT:    eor v0.16b, v0.16b, v1.16b
110 ; NOSHA3-NEXT:    eor v0.16b, v2.16b, v0.16b
111 ; NOSHA3-NEXT:    ret
112   %4 = xor <2 x i64> %0, %1
113   %5 = xor <2 x i64> %2, %4
114   ret <2 x i64> %5
117 define <2 x i64> @eor3_2x64_right(<2 x i64> %0, <2 x i64> %1, <2 x i64> %2) {
118 ; SHA3-LABEL: eor3_2x64_right:
119 ; SHA3:       // %bb.0:
120 ; SHA3-NEXT:    eor3 v0.16b, v1.16b, v2.16b, v0.16b
121 ; SHA3-NEXT:    ret
123 ; NOSHA3-LABEL: eor3_2x64_right:
124 ; NOSHA3:       // %bb.0:
125 ; NOSHA3-NEXT:    eor v1.16b, v1.16b, v2.16b
126 ; NOSHA3-NEXT:    eor v0.16b, v1.16b, v0.16b
127 ; NOSHA3-NEXT:    ret
128   %4 = xor <2 x i64> %1, %2
129   %5 = xor <2 x i64> %4, %0
130   ret <2 x i64> %5
133 define <2 x i64> @eor3_vnot(<2 x i64> %0, <2 x i64> %1) {
134 ; SHA3-LABEL: eor3_vnot:
135 ; SHA3:       // %bb.0:
136 ; SHA3-NEXT:    eor v0.16b, v0.16b, v1.16b
137 ; SHA3-NEXT:    mvn v0.16b, v0.16b
138 ; SHA3-NEXT:    ret
140 ; NOSHA3-LABEL: eor3_vnot:
141 ; NOSHA3:       // %bb.0:
142 ; NOSHA3-NEXT:    eor v0.16b, v0.16b, v1.16b
143 ; NOSHA3-NEXT:    mvn v0.16b, v0.16b
144 ; NOSHA3-NEXT:    ret
145   %3 = xor <2 x i64> %0, <i64 -1, i64 -1>
146   %4 = xor <2 x i64> %3, %1
147   ret <2 x i64> %4