; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve2-aes < %s | FileCheck %s ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve,+sve-aes < %s | FileCheck %s ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve,+ssve-aes < %s | FileCheck %s ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme,+ssve-aes -force-streaming < %s | FileCheck %s ; ; AESD ; define @aesd_i8( %a, %b) { ; CHECK-LABEL: aesd_i8: ; CHECK: // %bb.0: ; CHECK-NEXT: aesd z0.b, z0.b, z1.b ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.aesd( %a, %b) ret %out } define @aesd_i8_commuted( %a, ; CHECK-LABEL: aesd_i8_commuted: ; CHECK: // %bb.0: ; CHECK-NEXT: aesd z0.b, z0.b, z1.b ; CHECK-NEXT: ret %b) { %out = call @llvm.aarch64.sve.aesd( %b, %a) ret %out } ; ; AESIMC ; define @aesimc_i8( %a) { ; CHECK-LABEL: aesimc_i8: ; CHECK: // %bb.0: ; CHECK-NEXT: 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: // %bb.0: ; CHECK-NEXT: aese z0.b, z0.b, z1.b ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.aese( %a, %b) ret %out } define @aese_i8_commuted( %a, ; CHECK-LABEL: aese_i8_commuted: ; CHECK: // %bb.0: ; CHECK-NEXT: aese z0.b, z0.b, z1.b ; CHECK-NEXT: ret %b) { %out = call @llvm.aarch64.sve.aese( %b, %a) ret %out } ; ; AESMC ; define @aesmc_i8( %a) { ; CHECK-LABEL: aesmc_i8: ; CHECK: // %bb.0: ; CHECK-NEXT: aesmc z0.b, z0.b ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.aesmc( %a) ret %out } declare @llvm.aarch64.sve.aesd(, ) declare @llvm.aarch64.sve.aesimc() declare @llvm.aarch64.sve.aese(, ) declare @llvm.aarch64.sve.aesmc()