mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-27 12:26:08 +00:00
Emit unaligned access build attribute for ARM
Patch by Charlie Turner. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219301 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -706,6 +706,13 @@ void ARMAsmPrinter::emitAttributes() {
|
|||||||
ATS.emitAttribute(ARMBuildAttrs::ABI_FP_number_model,
|
ATS.emitAttribute(ARMBuildAttrs::ABI_FP_number_model,
|
||||||
ARMBuildAttrs::AllowIEE754);
|
ARMBuildAttrs::AllowIEE754);
|
||||||
|
|
||||||
|
if (Subtarget->allowsUnalignedMem())
|
||||||
|
ATS.emitAttribute(ARMBuildAttrs::CPU_unaligned_access,
|
||||||
|
ARMBuildAttrs::Allowed);
|
||||||
|
else
|
||||||
|
ATS.emitAttribute(ARMBuildAttrs::CPU_unaligned_access,
|
||||||
|
ARMBuildAttrs::Not_Allowed);
|
||||||
|
|
||||||
// FIXME: add more flags to ARMBuildAttributes.h
|
// FIXME: add more flags to ARMBuildAttributes.h
|
||||||
// 8-bytes alignment stuff.
|
// 8-bytes alignment stuff.
|
||||||
ATS.emitAttribute(ARMBuildAttrs::ABI_align_needed, 1);
|
ATS.emitAttribute(ARMBuildAttrs::ABI_align_needed, 1);
|
||||||
|
@@ -44,6 +44,30 @@
|
|||||||
; RUN: llc < %s -mtriple=arm-none-linux-gnueabi | FileCheck %s --check-prefix=PCS-R9-USE
|
; RUN: llc < %s -mtriple=arm-none-linux-gnueabi | FileCheck %s --check-prefix=PCS-R9-USE
|
||||||
; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -arm-reserve-r9 | FileCheck %s --check-prefix=PCS-R9-RESERVE
|
; RUN: llc < %s -mtriple=arm-none-linux-gnueabi -arm-reserve-r9 | FileCheck %s --check-prefix=PCS-R9-RESERVE
|
||||||
|
|
||||||
|
; ARMv8a (AArch32)
|
||||||
|
; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a57 -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN
|
||||||
|
; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a57 -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
|
||||||
|
; ARMv7a
|
||||||
|
; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN
|
||||||
|
; RUN: llc < %s -mtriple=armv7-none-linux-gnueabi -mcpu=cortex-a7 -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
|
||||||
|
; ARMv7r
|
||||||
|
; RUN: llc < %s -mtriple=armv7r-none-linux-gnueabi -mcpu=cortex-r5 -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN
|
||||||
|
; RUN: llc < %s -mtriple=armv7r-none-linux-gnueabi -mcpu=cortex-r5 -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
|
||||||
|
; ARMv7m
|
||||||
|
; RUN: llc < %s -mtriple=thumbv7m-none-linux-gnueabi -mcpu=cortex-m3 -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN
|
||||||
|
; RUN: llc < %s -mtriple=thumbv7m-none-linux-gnueabi -mcpu=cortex-m3 -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
|
||||||
|
; ARMv6
|
||||||
|
; RUN: llc < %s -mtriple=armv6-none-netbsd-gnueabi -mcpu=arm1136j-s | FileCheck %s --check-prefix=NO-STRICT-ALIGN
|
||||||
|
; RUN: llc < %s -mtriple=armv6-none-linux-gnueabi -mcpu=arm1136j-s | FileCheck %s --check-prefix=STRICT-ALIGN
|
||||||
|
; ARMv6m
|
||||||
|
; RUN: llc < %s -mtriple=thumb-none-linux-gnueabi -arm-no-strict-align -mcpu=cortex-m0 | FileCheck %s --check-prefix=STRICT-ALIGN
|
||||||
|
; RUN: llc < %s -mtriple=thumb-none-linux-gnueabi -arm-strict-align -mcpu=cortex-m0 | FileCheck %s --check-prefix=STRICT-ALIGN
|
||||||
|
; RUN: llc < %s -mtriple=thumbv6m-none-linux-gnueabi -arm-no-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
|
||||||
|
; RUN: llc < %s -mtriple=thumbv6m-none-linux-gnueabi -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
|
||||||
|
; ARMv5
|
||||||
|
; RUN: llc < %s -mtriple=armv5-none-linux-gnueabi -mcpu=arm1022e -arm-no-strict-align | FileCheck %s --check-prefix=NO-STRICT-ALIGN
|
||||||
|
; RUN: llc < %s -mtriple=armv5-none-linux-gnueabi -mcpu=arm1022e -arm-strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
|
||||||
|
|
||||||
; XSCALE: .eabi_attribute 6, 5
|
; XSCALE: .eabi_attribute 6, 5
|
||||||
; XSCALE: .eabi_attribute 8, 1
|
; XSCALE: .eabi_attribute 8, 1
|
||||||
; XSCALE: .eabi_attribute 9, 1
|
; XSCALE: .eabi_attribute 9, 1
|
||||||
@@ -137,6 +161,10 @@
|
|||||||
; V8-FPARMv8-NEON-CRYPTO: .fpu crypto-neon-fp-armv8
|
; V8-FPARMv8-NEON-CRYPTO: .fpu crypto-neon-fp-armv8
|
||||||
; V8-FPARMv8-NEON-CRYPTO: .eabi_attribute 12, 3
|
; V8-FPARMv8-NEON-CRYPTO: .eabi_attribute 12, 3
|
||||||
|
|
||||||
|
; Tag_CPU_unaligned_access
|
||||||
|
; NO-STRICT-ALIGN: .eabi_attribute 34, 1
|
||||||
|
; STRICT-ALIGN: .eabi_attribute 34, 0
|
||||||
|
|
||||||
; Tag_CPU_arch 'ARMv7'
|
; Tag_CPU_arch 'ARMv7'
|
||||||
; CORTEX-A7-CHECK: .eabi_attribute 6, 10
|
; CORTEX-A7-CHECK: .eabi_attribute 6, 10
|
||||||
; CORTEX-A7-NOFPU: .eabi_attribute 6, 10
|
; CORTEX-A7-NOFPU: .eabi_attribute 6, 10
|
||||||
|
Reference in New Issue
Block a user