mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
ae86f98e7c
This patch changes the AArch32 crypto instructions (sha2 and aes) to require the specific sha2 or aes features. These features have already been implemented and can be controlled through the command line, but do not have the expected result (i.e. `+noaes` will not disable aes instructions). The crypto feature retains its existing meaning of both sha2 and aes. Several small changes are included due to the knock-on effect this has: - The AArch32 driver has been modified to ensure sha2/aes is correctly set based on arch/cpu/fpu selection and feature ordering. - Crypto extensions are permitted for AArch32 v8-R profile, but not enabled by default. - ACLE feature macros have been updated with the fine grained crypto algorithms. These are also used by AArch64. - Various tests updated due to the change in feature lists and macros. Reviewed By: lenary Differential Revision: https://reviews.llvm.org/D99079
109 lines
3.7 KiB
ArmAsm
109 lines
3.7 KiB
ArmAsm
@ RUN: not llvm-mc -triple armv7-eabi -filetype asm -o /dev/null 2>&1 %s \
|
|
@ RUN: | FileCheck %s -check-prefix CHECK-V7
|
|
@ RUN: not llvm-mc -triple armv8-eabi -filetype asm -o /dev/null 2>&1 %s \
|
|
@ RUN: | FileCheck %s -check-prefix CHECK-V8
|
|
@ RUN: not llvm-mc -triple thumbv7-eabi -filetype asm -o /dev/null 2>&1 %s \
|
|
@ RUN: | FileCheck %s -check-prefix CHECK-V7
|
|
@ RUN: not llvm-mc -triple thumbv8-eabi -filetype asm -o /dev/null 2>&1 %s \
|
|
@ RUN: | FileCheck %s -check-prefix CHECK-V8
|
|
|
|
.syntax unified
|
|
|
|
.arch_extension crypto
|
|
@ CHECK-V7: error: architectural extension 'crypto' is not allowed for the current base architecture
|
|
@ CHECK-V7-NEXT: .arch_extension crypto
|
|
@ CHECK-V7-NEXT: ^
|
|
|
|
.type crypto,%function
|
|
crypto:
|
|
vmull.p64 q0, d0, d1
|
|
@ CHECK-V7: error: instruction requires: aes armv8
|
|
|
|
aesd.8 q0, q1
|
|
@ CHECK-V7: error: instruction requires: aes armv8
|
|
aese.8 q0, q1
|
|
@ CHECK-V7: error: instruction requires: aes armv8
|
|
aesimc.8 q0, q1
|
|
@ CHECK-V7: error: instruction requires: aes armv8
|
|
aesmc.8 q0, q1
|
|
@ CHECK-V7: error: instruction requires: aes armv8
|
|
|
|
sha1h.32 q0, q1
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
sha1su1.32 q0, q1
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
sha256su0.32 q0, q1
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
|
|
sha1c.32 q0, q1, q2
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
sha1m.32 q0, q1, q2
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
sha1p.32 q0, q1, q2
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
sha1su0.32 q0, q1, q2
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
sha256h.32 q0, q1, q2
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
sha256h2.32 q0, q1, q2
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
sha256su1.32 q0, q1, q2
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
|
|
.arch_extension nocrypto
|
|
@ CHECK-V7: error: architectural extension 'crypto' is not allowed for the current base architecture
|
|
@ CHECK-V7-NEXT: .arch_extension nocrypto
|
|
@ CHECK-V7-NEXT: ^
|
|
|
|
.type nocrypto,%function
|
|
nocrypto:
|
|
vmull.p64 q0, d0, d1
|
|
@ CHECK-V7: error: instruction requires: aes armv8
|
|
@ CHECK-V8: error: instruction requires: aes
|
|
|
|
aesd.8 q0, q1
|
|
@ CHECK-V7: error: instruction requires: aes armv8
|
|
@ CHECK-V8: error: instruction requires: aes
|
|
aese.8 q0, q1
|
|
@ CHECK-V7: error: instruction requires: aes armv8
|
|
@ CHECK-V8: error: instruction requires: aes
|
|
aesimc.8 q0, q1
|
|
@ CHECK-V7: error: instruction requires: aes armv8
|
|
@ CHECK-V8: error: instruction requires: aes
|
|
aesmc.8 q0, q1
|
|
@ CHECK-V7: error: instruction requires: aes armv8
|
|
@ CHECK-V8: error: instruction requires: aes
|
|
|
|
sha1h.32 q0, q1
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
@ CHECK-V8: error: instruction requires: sha2
|
|
sha1su1.32 q0, q1
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
@ CHECK-V8: error: instruction requires: sha2
|
|
sha256su0.32 q0, q1
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
@ CHECK-V8: error: instruction requires: sha2
|
|
|
|
sha1c.32 q0, q1, q2
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
@ CHECK-V8: error: instruction requires: sha2
|
|
sha1m.32 q0, q1, q2
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
@ CHECK-V8: error: instruction requires: sha2
|
|
sha1p.32 q0, q1, q2
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
@ CHECK-V8: error: instruction requires: sha2
|
|
sha1su0.32 q0, q1, q2
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
@ CHECK-V8: error: instruction requires: sha2
|
|
sha256h.32 q0, q1, q2
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
@ CHECK-V8: error: instruction requires: sha2
|
|
sha256h2.32 q0, q1, q2
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
@ CHECK-V8: error: instruction requires: sha2
|
|
sha256su1.32 q0, q1, q2
|
|
@ CHECK-V7: error: instruction requires: sha2 armv8
|
|
@ CHECK-V8: error: instruction requires: sha2
|
|
|