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 4 5define <2 x i64> @bcax_64x2(<2 x i64> %0, <2 x i64> %1, <2 x i64> %2) { 6; SHA3-LABEL: bcax_64x2: 7; SHA3: // %bb.0: 8; SHA3-NEXT: bcax v0.16b, v2.16b, v0.16b, v1.16b 9; SHA3-NEXT: ret 10; 11; NOSHA3-LABEL: bcax_64x2: 12; NOSHA3: // %bb.0: 13; NOSHA3-NEXT: bic v0.16b, v0.16b, v1.16b 14; NOSHA3-NEXT: eor v0.16b, v0.16b, v2.16b 15; NOSHA3-NEXT: ret 16 %4 = xor <2 x i64> %1, <i64 -1, i64 -1> 17 %5 = and <2 x i64> %4, %0 18 %6 = xor <2 x i64> %5, %2 19 ret <2 x i64> %6 20} 21 22define <4 x i32> @bcax_32x4(<4 x i32> %0, <4 x i32> %1, <4 x i32> %2) { 23; SHA3-LABEL: bcax_32x4: 24; SHA3: // %bb.0: 25; SHA3-NEXT: bcax v0.16b, v2.16b, v0.16b, v1.16b 26; SHA3-NEXT: ret 27; 28; NOSHA3-LABEL: bcax_32x4: 29; NOSHA3: // %bb.0: 30; NOSHA3-NEXT: bic v0.16b, v0.16b, v1.16b 31; NOSHA3-NEXT: eor v0.16b, v0.16b, v2.16b 32; NOSHA3-NEXT: ret 33 %4 = xor <4 x i32> %1, <i32 -1, i32 -1, i32 -1, i32 -1> 34 %5 = and <4 x i32> %4, %0 35 %6 = xor <4 x i32> %5, %2 36 ret <4 x i32> %6 37} 38 39define <8 x i16> @bcax_16x8(<8 x i16> %0, <8 x i16> %1, <8 x i16> %2) { 40; SHA3-LABEL: bcax_16x8: 41; SHA3: // %bb.0: 42; SHA3-NEXT: bcax v0.16b, v2.16b, v0.16b, v1.16b 43; SHA3-NEXT: ret 44; 45; NOSHA3-LABEL: bcax_16x8: 46; NOSHA3: // %bb.0: 47; NOSHA3-NEXT: bic v0.16b, v0.16b, v1.16b 48; NOSHA3-NEXT: eor v0.16b, v0.16b, v2.16b 49; NOSHA3-NEXT: ret 50 %4 = xor <8 x i16> %1, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1> 51 %5 = and <8 x i16> %4, %0 52 %6 = xor <8 x i16> %5, %2 53 ret <8 x i16> %6 54} 55 56define <16 x i8> @bcax_8x16(<16 x i8> %0, <16 x i8> %1, <16 x i8> %2) { 57; SHA3-LABEL: bcax_8x16: 58; SHA3: // %bb.0: 59; SHA3-NEXT: bcax v0.16b, v2.16b, v0.16b, v1.16b 60; SHA3-NEXT: ret 61; 62; NOSHA3-LABEL: bcax_8x16: 63; NOSHA3: // %bb.0: 64; NOSHA3-NEXT: bic v0.16b, v0.16b, v1.16b 65; NOSHA3-NEXT: eor v0.16b, v0.16b, v2.16b 66; NOSHA3-NEXT: ret 67 %4 = xor <16 x i8> %1, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1> 68 %5 = and <16 x i8> %4, %0 69 %6 = xor <16 x i8> %5, %2 70 ret <16 x i8> %6 71} 72