; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve2-aes,+sve2-sha3,+sve2-sm4 -asm-verbose=0 < %s 2>%t | FileCheck %s ; RUN: FileCheck --check-prefix=WARN --allow-empty %s <%t ; If this check fails please read test/CodeGen/AArch64/README for instructions on how to resolve it. ; WARN-NOT: warning ; ; AESD ; define @aesd_i8( %a, %b) { ; CHECK-LABEL: aesd_i8: ; CHECK: aesd z0.b, z0.b, z1.b ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.aesd( %a, %b) ret %out } ; ; AESIMC ; define @aesimc_i8( %a) { ; CHECK-LABEL: aesimc_i8: ; CHECK: aesimc z0.b, z0.b ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.aesimc( %a) ret %out } ; ; AESE ; define @aese_i8( %a, %b) { ; CHECK-LABEL: aese_i8: ; CHECK: aese z0.b, z0.b, z1.b ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.aese( %a, %b) ret %out } ; ; AESMC ; define @aesmc_i8( %a) { ; CHECK-LABEL: aesmc_i8: ; CHECK: aesmc z0.b, z0.b ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.aesmc( %a) ret %out } ; ; RAX1 ; define @rax1_i64( %a, %b) { ; CHECK-LABEL: rax1_i64: ; CHECK: rax1 z0.d, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.rax1( %a, %b) ret %out } ; ; SM4E ; define @sm4e_i32( %a, %b) { ; CHECK-LABEL: sm4e_i32: ; CHECK: sm4e z0.s, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.sm4e( %a, %b) ret %out } ; ; SM4EKEY ; define @sm4ekey_i32( %a, %b) { ; CHECK-LABEL: sm4ekey_i32: ; CHECK: sm4ekey z0.s, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.sm4ekey( %a, %b) ret %out } declare @llvm.aarch64.sve.aesd(, ) declare @llvm.aarch64.sve.aesimc() declare @llvm.aarch64.sve.aese(, ) declare @llvm.aarch64.sve.aesmc() declare @llvm.aarch64.sve.rax1(, ) declare @llvm.aarch64.sve.sm4e(, ) declare @llvm.aarch64.sve.sm4ekey(, )