[llvm] r208074 - [ARM64] Enable alignment control option in front-end for ARM64.
Kevin Qin
Kevin.Qin at arm.com
Tue May 6 02:48:53 PDT 2014
Author: kevinqin
Date: Tue May 6 04:48:52 2014
New Revision: 208074
URL: http://llvm.org/viewvc/llvm-project?rev=208074&view=rev
Log:
[ARM64] Enable alignment control option in front-end for ARM64.
This is the modification in llvm part.
Modified:
llvm/trunk/lib/Target/ARM64/ARM64ISelLowering.cpp
llvm/trunk/test/CodeGen/ARM64/strict-align.ll
Modified: llvm/trunk/lib/Target/ARM64/ARM64ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM64/ARM64ISelLowering.cpp?rev=208074&r1=208073&r2=208074&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM64/ARM64ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/ARM64/ARM64ISelLowering.cpp Tue May 6 04:48:52 2014
@@ -45,9 +45,20 @@ EnableARM64TailCalls("arm64-tail-calls",
cl::desc("Generate ARM64 tail calls (TEMPORARY OPTION)."),
cl::init(true));
-static cl::opt<bool>
-StrictAlign("arm64-strict-align", cl::Hidden,
- cl::desc("Disallow all unaligned memory accesses"));
+enum AlignMode {
+ StrictAlign,
+ NoStrictAlign
+};
+
+static cl::opt<AlignMode>
+Align(cl::desc("Load/store alignment support"),
+ cl::Hidden, cl::init(NoStrictAlign),
+ cl::values(
+ clEnumValN(StrictAlign, "arm64-strict-align",
+ "Disallow all unaligned memory accesses"),
+ clEnumValN(NoStrictAlign, "arm64-no-strict-align",
+ "Allow unaligned memory accesses"),
+ clEnumValEnd));
// Place holder until extr generation is tested fully.
static cl::opt<bool>
@@ -370,7 +381,7 @@ ARM64TargetLowering::ARM64TargetLowering
setMinFunctionAlignment(2);
- RequireStrictAlign = StrictAlign;
+ RequireStrictAlign = (Align == StrictAlign);
setHasExtractBitsInsn(true);
Modified: llvm/trunk/test/CodeGen/ARM64/strict-align.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM64/strict-align.ll?rev=208074&r1=208073&r2=208074&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/ARM64/strict-align.ll (original)
+++ llvm/trunk/test/CodeGen/ARM64/strict-align.ll Tue May 6 04:48:52 2014
@@ -1,4 +1,5 @@
; RUN: llc < %s -mtriple=arm64-apple-darwin | FileCheck %s
+; RUN: llc < %s -mtriple=arm64-apple-darwin -arm64-no-strict-align | FileCheck %s
; RUN: llc < %s -mtriple=arm64-apple-darwin -arm64-strict-align | FileCheck %s --check-prefix=CHECK-STRICT
define i32 @f0(i32* nocapture %p) nounwind {
More information about the llvm-commits
mailing list