brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.5 KiB · ec99cf0 Raw
247 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc %s -mtriple=aarch64 -mattr=+v8.3a,+sha3 -o - | FileCheck %s3 4define <2 x i64> @test_vsha512h(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c) {5; CHECK-LABEL: test_vsha512h:6; CHECK:       // %bb.0: // %entry7; CHECK-NEXT:    sha512h q0, q1, v2.2d8; CHECK-NEXT:    ret9entry:10  %vsha512h.i = tail call <2 x i64> @llvm.aarch64.crypto.sha512h(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c)11  ret <2 x i64> %vsha512h.i12}13 14define <2 x i64> @test_vsha512h2(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c) {15; CHECK-LABEL: test_vsha512h2:16; CHECK:       // %bb.0: // %entry17; CHECK-NEXT:    sha512h2 q0, q1, v2.2d18; CHECK-NEXT:    ret19entry:20  %vsha512h2.i = tail call <2 x i64> @llvm.aarch64.crypto.sha512h2(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c)21  ret <2 x i64> %vsha512h2.i22}23 24define <2 x i64> @test_vsha512su0(<2 x i64> %a, <2 x i64> %b) {25; CHECK-LABEL: test_vsha512su0:26; CHECK:       // %bb.0: // %entry27; CHECK-NEXT:    sha512su0 v0.2d, v1.2d28; CHECK-NEXT:    ret29entry:30  %vsha512su0.i = tail call <2 x i64> @llvm.aarch64.crypto.sha512su0(<2 x i64> %a, <2 x i64> %b)31  ret <2 x i64> %vsha512su0.i32}33 34define <2 x i64> @test_vsha512su1(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c) {35; CHECK-LABEL: test_vsha512su1:36; CHECK:       // %bb.0: // %entry37; CHECK-NEXT:    sha512su1 v0.2d, v1.2d, v2.2d38; CHECK-NEXT:    ret39entry:40  %vsha512su1.i = tail call <2 x i64> @llvm.aarch64.crypto.sha512su1(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c)41  ret <2 x i64> %vsha512su1.i42}43 44define <2 x i64> @test_vrax1(<2 x i64> %a, <2 x i64> %b) {45; CHECK-LABEL: test_vrax1:46; CHECK:       // %bb.0: // %entry47; CHECK-NEXT:    rax1 v0.2d, v0.2d, v1.2d48; CHECK-NEXT:    ret49entry:50  %vrax1.i = tail call <2 x i64> @llvm.aarch64.crypto.rax1(<2 x i64> %a, <2 x i64> %b)51  ret <2 x i64> %vrax1.i52}53 54define <2 x i64> @test_vxar(<2 x i64> %a,  <2 x i64> %b) {55; CHECK-LABEL: test_vxar:56; CHECK:       // %bb.0: // %entry57; CHECK-NEXT:    xar v0.2d, v0.2d, v1.2d, #158; CHECK-NEXT:    ret59entry:60  %vxar.i = tail call  <2 x i64> @llvm.aarch64.crypto.xar(<2 x i64> %a, <2 x i64> %b, i64 1)61  ret <2 x i64> %vxar.i62}63 64define <16 x i8> @test_bcax_8(<16 x i8> %a, <16 x i8> %b, <16 x i8> %c) {65; CHECK-LABEL: test_bcax_8:66; CHECK:       // %bb.0: // %entry67; CHECK-NEXT:    bcax v0.16b, v0.16b, v1.16b, v2.16b68; CHECK-NEXT:    ret69entry:70  %vbcax_8.i = tail call <16 x i8> @llvm.aarch64.crypto.bcaxu.v16i8(<16 x i8> %a, <16 x i8> %b, <16 x i8> %c)71  ret <16 x i8> %vbcax_8.i72}73 74define <16 x i8> @test_eor3_8(<16 x i8> %a, <16 x i8> %b, <16 x i8> %c) {75; CHECK-LABEL: test_eor3_8:76; CHECK:       // %bb.0: // %entry77; CHECK-NEXT:    eor3 v0.16b, v0.16b, v1.16b, v2.16b78; CHECK-NEXT:    ret79entry:80  %veor3_8.i = tail call <16 x i8> @llvm.aarch64.crypto.eor3u.v16i8(<16 x i8> %a, <16 x i8> %b, <16 x i8> %c)81  ret <16 x i8> %veor3_8.i82}83 84define <16 x i8> @test_bcax_s8(<16 x i8> %a, <16 x i8> %b, <16 x i8> %c) {85; CHECK-LABEL: test_bcax_s8:86; CHECK:       // %bb.0: // %entry87; CHECK-NEXT:    bcax v0.16b, v0.16b, v1.16b, v2.16b88; CHECK-NEXT:    ret89entry:90  %vbcax_8.i = tail call <16 x i8> @llvm.aarch64.crypto.bcaxs.v16i8(<16 x i8> %a, <16 x i8> %b, <16 x i8> %c)91  ret <16 x i8> %vbcax_8.i92}93 94define <16 x i8> @test_eor3_s8(<16 x i8> %a, <16 x i8> %b, <16 x i8> %c) {95; CHECK-LABEL: test_eor3_s8:96; CHECK:       // %bb.0: // %entry97; CHECK-NEXT:    eor3 v0.16b, v0.16b, v1.16b, v2.16b98; CHECK-NEXT:    ret99entry:100  %veor3_8.i = tail call <16 x i8> @llvm.aarch64.crypto.eor3s.v16i8(<16 x i8> %a, <16 x i8> %b, <16 x i8> %c)101  ret <16 x i8> %veor3_8.i102}103 104define <8 x i16> @test_bcax_16(<8 x i16> %a, <8 x i16> %b, <8 x i16> %c) {105; CHECK-LABEL: test_bcax_16:106; CHECK:       // %bb.0: // %entry107; CHECK-NEXT:    bcax v0.16b, v0.16b, v1.16b, v2.16b108; CHECK-NEXT:    ret109entry:110  %vbcax_16.i = tail call <8 x i16> @llvm.aarch64.crypto.bcaxu.v8i16(<8 x i16> %a, <8 x i16> %b, <8 x i16> %c)111  ret <8 x i16> %vbcax_16.i112}113 114define <8 x i16> @test_eor3_16(<8 x i16> %a, <8 x i16> %b, <8 x i16> %c) {115; CHECK-LABEL: test_eor3_16:116; CHECK:       // %bb.0: // %entry117; CHECK-NEXT:    eor3 v0.16b, v0.16b, v1.16b, v2.16b118; CHECK-NEXT:    ret119entry:120  %veor3_16.i = tail call <8 x i16> @llvm.aarch64.crypto.eor3u.v8i16(<8 x i16> %a, <8 x i16> %b, <8 x i16> %c)121  ret <8 x i16> %veor3_16.i122}123 124define <8 x i16> @test_bcax_s16(<8 x i16> %a, <8 x i16> %b, <8 x i16> %c) {125; CHECK-LABEL: test_bcax_s16:126; CHECK:       // %bb.0: // %entry127; CHECK-NEXT:    bcax v0.16b, v0.16b, v1.16b, v2.16b128; CHECK-NEXT:    ret129entry:130  %vbcax_16.i = tail call <8 x i16> @llvm.aarch64.crypto.bcaxs.v8i16(<8 x i16> %a, <8 x i16> %b, <8 x i16> %c)131  ret <8 x i16> %vbcax_16.i132}133 134define <8 x i16> @test_eor3_s16(<8 x i16> %a, <8 x i16> %b, <8 x i16> %c) {135; CHECK-LABEL: test_eor3_s16:136; CHECK:       // %bb.0: // %entry137; CHECK-NEXT:    eor3 v0.16b, v0.16b, v1.16b, v2.16b138; CHECK-NEXT:    ret139entry:140  %veor3_16.i = tail call <8 x i16> @llvm.aarch64.crypto.eor3s.v8i16(<8 x i16> %a, <8 x i16> %b, <8 x i16> %c)141  ret <8 x i16> %veor3_16.i142}143 144define <4 x i32> @test_bcax_32(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {145; CHECK-LABEL: test_bcax_32:146; CHECK:       // %bb.0: // %entry147; CHECK-NEXT:    bcax v0.16b, v0.16b, v1.16b, v2.16b148; CHECK-NEXT:    ret149entry:150  %vbcax_32.i = tail call <4 x i32> @llvm.aarch64.crypto.bcaxu.v4i32(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c)151  ret <4 x i32> %vbcax_32.i152}153 154define <4 x i32> @test_eor3_32(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {155; CHECK-LABEL: test_eor3_32:156; CHECK:       // %bb.0: // %entry157; CHECK-NEXT:    eor3 v0.16b, v0.16b, v1.16b, v2.16b158; CHECK-NEXT:    ret159entry:160  %veor3_32.i = tail call <4 x i32> @llvm.aarch64.crypto.eor3u.v4i32(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c)161  ret <4 x i32> %veor3_32.i162}163 164define <4 x i32> @test_bcax_s32(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {165; CHECK-LABEL: test_bcax_s32:166; CHECK:       // %bb.0: // %entry167; CHECK-NEXT:    bcax v0.16b, v0.16b, v1.16b, v2.16b168; CHECK-NEXT:    ret169entry:170  %vbcax_32.i = tail call <4 x i32> @llvm.aarch64.crypto.bcaxs.v4i32(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c)171  ret <4 x i32> %vbcax_32.i172}173 174define <4 x i32> @test_eor3_s32(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {175; CHECK-LABEL: test_eor3_s32:176; CHECK:       // %bb.0: // %entry177; CHECK-NEXT:    eor3 v0.16b, v0.16b, v1.16b, v2.16b178; CHECK-NEXT:    ret179entry:180  %veor3_32.i = tail call <4 x i32> @llvm.aarch64.crypto.eor3s.v4i32(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c)181  ret <4 x i32> %veor3_32.i182}183 184define <2 x i64> @test_bcax_64(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c) {185; CHECK-LABEL: test_bcax_64:186; CHECK:       // %bb.0: // %entry187; CHECK-NEXT:    bcax v0.16b, v0.16b, v1.16b, v2.16b188; CHECK-NEXT:    ret189entry:190  %vbcax_64.i = tail call <2 x i64> @llvm.aarch64.crypto.bcaxu.v2i64(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c)191  ret <2 x i64> %vbcax_64.i192}193 194define <2 x i64> @test_eor3_64(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c) {195; CHECK-LABEL: test_eor3_64:196; CHECK:       // %bb.0: // %entry197; CHECK-NEXT:    eor3 v0.16b, v0.16b, v1.16b, v2.16b198; CHECK-NEXT:    ret199entry:200  %veor3_64.i = tail call <2 x i64> @llvm.aarch64.crypto.eor3u.v2i64(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c)201  ret <2 x i64> %veor3_64.i202}203 204define <2 x i64> @test_bcax_s64(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c) {205; CHECK-LABEL: test_bcax_s64:206; CHECK:       // %bb.0: // %entry207; CHECK-NEXT:    bcax v0.16b, v0.16b, v1.16b, v2.16b208; CHECK-NEXT:    ret209entry:210  %vbcax_64.i = tail call <2 x i64> @llvm.aarch64.crypto.bcaxs.v2i64(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c)211  ret <2 x i64> %vbcax_64.i212}213 214define <2 x i64> @test_eor3_s64(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c) {215; CHECK-LABEL: test_eor3_s64:216; CHECK:       // %bb.0: // %entry217; CHECK-NEXT:    eor3 v0.16b, v0.16b, v1.16b, v2.16b218; CHECK-NEXT:    ret219entry:220  %veor3_64.i = tail call <2 x i64> @llvm.aarch64.crypto.eor3s.v2i64(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c)221  ret <2 x i64> %veor3_64.i222}223 224declare <2 x i64> @llvm.aarch64.crypto.sha512h(<2 x i64>, <2 x i64>, <2 x i64>)225declare <2 x i64> @llvm.aarch64.crypto.sha512h2(<2 x i64>, <2 x i64>, <2 x i64>)226declare <2 x i64> @llvm.aarch64.crypto.sha512su0(<2 x i64>, <2 x i64>)227declare <2 x i64> @llvm.aarch64.crypto.sha512su1(<2 x i64>, <2 x i64>, <2 x i64>)228declare <2 x i64> @llvm.aarch64.crypto.rax1(<2 x i64>, <2 x i64>)229declare <2 x i64> @llvm.aarch64.crypto.xar(<2 x i64>, <2 x i64>, i64 immarg)230declare <16 x i8> @llvm.aarch64.crypto.bcaxu.v16i8(<16 x i8>, <16 x i8>, <16 x i8>)231declare <8 x i16> @llvm.aarch64.crypto.bcaxu.v8i16(<8 x i16>, <8 x i16>, <8 x i16>)232declare <4 x i32> @llvm.aarch64.crypto.bcaxu.v4i32(<4 x i32>, <4 x i32>, <4 x i32>)233declare <2 x i64> @llvm.aarch64.crypto.bcaxu.v2i64(<2 x i64>, <2 x i64>, <2 x i64>)234declare <16 x i8> @llvm.aarch64.crypto.bcaxs.v16i8(<16 x i8>, <16 x i8>, <16 x i8>)235declare <8 x i16> @llvm.aarch64.crypto.bcaxs.v8i16(<8 x i16>, <8 x i16>, <8 x i16>)236declare <4 x i32> @llvm.aarch64.crypto.bcaxs.v4i32(<4 x i32>, <4 x i32>, <4 x i32>)237declare <2 x i64> @llvm.aarch64.crypto.bcaxs.v2i64(<2 x i64>, <2 x i64>, <2 x i64>)238declare <16 x i8> @llvm.aarch64.crypto.eor3u.v16i8(<16 x i8>, <16 x i8>, <16 x i8>)239declare <8 x i16> @llvm.aarch64.crypto.eor3u.v8i16(<8 x i16>, <8 x i16>, <8 x i16>)240declare <4 x i32> @llvm.aarch64.crypto.eor3u.v4i32(<4 x i32>, <4 x i32>, <4 x i32>)241declare <2 x i64> @llvm.aarch64.crypto.eor3u.v2i64(<2 x i64>, <2 x i64>, <2 x i64>)242declare <16 x i8> @llvm.aarch64.crypto.eor3s.v16i8(<16 x i8>, <16 x i8>, <16 x i8>)243declare <8 x i16> @llvm.aarch64.crypto.eor3s.v8i16(<8 x i16>, <8 x i16>, <8 x i16>)244declare <4 x i32> @llvm.aarch64.crypto.eor3s.v4i32(<4 x i32>, <4 x i32>, <4 x i32>)245declare <2 x i64> @llvm.aarch64.crypto.eor3s.v2i64(<2 x i64>, <2 x i64>, <2 x i64>)246 247