1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mtriple=riscv32 -mattr=+zknh -verify-machineinstrs < %s \ 3; RUN: | FileCheck %s -check-prefix=RV32ZKNH 4 5 6declare i32 @llvm.riscv.sha256sig0(i32); 7 8define i32 @sha256sig0_i32(i32 %a) nounwind { 9; RV32ZKNH-LABEL: sha256sig0_i32: 10; RV32ZKNH: # %bb.0: 11; RV32ZKNH-NEXT: sha256sig0 a0, a0 12; RV32ZKNH-NEXT: ret 13 %val = call i32 @llvm.riscv.sha256sig0(i32 %a) 14 ret i32 %val 15} 16 17declare i32 @llvm.riscv.sha256sig1(i32); 18 19define i32 @sha256sig1_i32(i32 %a) nounwind { 20; RV32ZKNH-LABEL: sha256sig1_i32: 21; RV32ZKNH: # %bb.0: 22; RV32ZKNH-NEXT: sha256sig1 a0, a0 23; RV32ZKNH-NEXT: ret 24 %val = call i32 @llvm.riscv.sha256sig1(i32 %a) 25 ret i32 %val 26} 27 28declare i32 @llvm.riscv.sha256sum0(i32); 29 30define i32 @sha256sum0_i32(i32 %a) nounwind { 31; RV32ZKNH-LABEL: sha256sum0_i32: 32; RV32ZKNH: # %bb.0: 33; RV32ZKNH-NEXT: sha256sum0 a0, a0 34; RV32ZKNH-NEXT: ret 35 %val = call i32 @llvm.riscv.sha256sum0(i32 %a) 36 ret i32 %val 37} 38 39declare i32 @llvm.riscv.sha256sum1(i32); 40 41define i32 @sha256sum1_i32(i32 %a) nounwind { 42; RV32ZKNH-LABEL: sha256sum1_i32: 43; RV32ZKNH: # %bb.0: 44; RV32ZKNH-NEXT: sha256sum1 a0, a0 45; RV32ZKNH-NEXT: ret 46 %val = call i32 @llvm.riscv.sha256sum1(i32 %a) 47 ret i32 %val 48} 49 50declare i32 @llvm.riscv.sha512sig0l(i32, i32); 51 52define i32 @sha512sig0l(i32 %a, i32 %b) nounwind { 53; RV32ZKNH-LABEL: sha512sig0l: 54; RV32ZKNH: # %bb.0: 55; RV32ZKNH-NEXT: sha512sig0l a0, a0, a1 56; RV32ZKNH-NEXT: ret 57 %val = call i32 @llvm.riscv.sha512sig0l(i32 %a, i32 %b) 58 ret i32 %val 59} 60 61declare i32 @llvm.riscv.sha512sig0h(i32, i32); 62 63define i32 @sha512sig0h(i32 %a, i32 %b) nounwind { 64; RV32ZKNH-LABEL: sha512sig0h: 65; RV32ZKNH: # %bb.0: 66; RV32ZKNH-NEXT: sha512sig0h a0, a0, a1 67; RV32ZKNH-NEXT: ret 68 %val = call i32 @llvm.riscv.sha512sig0h(i32 %a, i32 %b) 69 ret i32 %val 70} 71 72declare i32 @llvm.riscv.sha512sig1l(i32, i32); 73 74define i32 @sha512sig1l(i32 %a, i32 %b) nounwind { 75; RV32ZKNH-LABEL: sha512sig1l: 76; RV32ZKNH: # %bb.0: 77; RV32ZKNH-NEXT: sha512sig1l a0, a0, a1 78; RV32ZKNH-NEXT: ret 79 %val = call i32 @llvm.riscv.sha512sig1l(i32 %a, i32 %b) 80 ret i32 %val 81} 82 83declare i32 @llvm.riscv.sha512sig1h(i32, i32); 84 85define i32 @sha512sig1h(i32 %a, i32 %b) nounwind { 86; RV32ZKNH-LABEL: sha512sig1h: 87; RV32ZKNH: # %bb.0: 88; RV32ZKNH-NEXT: sha512sig1h a0, a0, a1 89; RV32ZKNH-NEXT: ret 90 %val = call i32 @llvm.riscv.sha512sig1h(i32 %a, i32 %b) 91 ret i32 %val 92} 93 94declare i32 @llvm.riscv.sha512sum0r(i32, i32); 95 96define i32 @sha512sum0r(i32 %a, i32 %b) nounwind { 97; RV32ZKNH-LABEL: sha512sum0r: 98; RV32ZKNH: # %bb.0: 99; RV32ZKNH-NEXT: sha512sum0r a0, a0, a1 100; RV32ZKNH-NEXT: ret 101 %val = call i32 @llvm.riscv.sha512sum0r(i32 %a, i32 %b) 102 ret i32 %val 103} 104 105declare i32 @llvm.riscv.sha512sum1r(i32, i32); 106 107define i32 @sha512sum1r(i32 %a, i32 %b) nounwind { 108; RV32ZKNH-LABEL: sha512sum1r: 109; RV32ZKNH: # %bb.0: 110; RV32ZKNH-NEXT: sha512sum1r a0, a0, a1 111; RV32ZKNH-NEXT: ret 112 %val = call i32 @llvm.riscv.sha512sum1r(i32 %a, i32 %b) 113 ret i32 %val 114} 115