diff options
Diffstat (limited to 'test/CodeGen/ARM64/strict-align.ll')
-rw-r--r-- | test/CodeGen/ARM64/strict-align.ll | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/test/CodeGen/ARM64/strict-align.ll b/test/CodeGen/ARM64/strict-align.ll new file mode 100644 index 0000000..e392172 --- /dev/null +++ b/test/CodeGen/ARM64/strict-align.ll @@ -0,0 +1,25 @@ +; RUN: llc < %s -mtriple=arm64-apple-darwin | 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 { +; CHECK-STRICT: ldrh [[HIGH:w[0-9]+]], [x0, #2] +; CHECK-STRICT: ldrh [[LOW:w[0-9]+]], [x0] +; CHECK-STRICT: orr w0, [[LOW]], [[HIGH]], lsl #16 +; CHECK-STRICT: ret + +; CHECK: ldr w0, [x0] +; CHECK: ret + %tmp = load i32* %p, align 2 + ret i32 %tmp +} + +define i64 @f1(i64* nocapture %p) nounwind { +; CHECK-STRICT: ldp w[[LOW:[0-9]+]], w[[HIGH:[0-9]+]], [x0] +; CHECK-STRICT: orr x0, x[[LOW]], x[[HIGH]], lsl #32 +; CHECK-STRICT: ret + +; CHECK: ldr x0, [x0] +; CHECK: ret + %tmp = load i64* %p, align 4 + ret i64 %tmp +} |