diff options
author | Tim Northover <tnorthover@apple.com> | 2013-10-09 07:53:57 +0000 |
---|---|---|
committer | Tim Northover <tnorthover@apple.com> | 2013-10-09 07:53:57 +0000 |
commit | d29bae8bc9b393a24c7f3a1812b88763505eda11 (patch) | |
tree | 4e93eb9cb787689b90f38bbe511d0fa51aedf890 /test/CodeGen/AArch64/func-argpassing.ll | |
parent | ccb06ae8f3ef0135d4bddf4f0f61f619c3ce3f1e (diff) | |
download | external_llvm-d29bae8bc9b393a24c7f3a1812b88763505eda11.zip external_llvm-d29bae8bc9b393a24c7f3a1812b88763505eda11.tar.gz external_llvm-d29bae8bc9b393a24c7f3a1812b88763505eda11.tar.bz2 |
AArch64: enable MISched by default.
Substantial SelectionDAG scheduling is going away soon, and is
interfering with Hao's attempts to implement LDn/STn instructions, so
I say we make the leap first.
There were a few reorderings (inevitably) which broke some tests. I
tried to replace them with CHECK-DAG variants mostly, but some too
complex for that to be useful and I just reordered them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192282 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/AArch64/func-argpassing.ll')
-rw-r--r-- | test/CodeGen/AArch64/func-argpassing.ll | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/test/CodeGen/AArch64/func-argpassing.ll b/test/CodeGen/AArch64/func-argpassing.ll index 15f8e76..83fc0a0 100644 --- a/test/CodeGen/AArch64/func-argpassing.ll +++ b/test/CodeGen/AArch64/func-argpassing.ll @@ -35,15 +35,15 @@ define void @take_struct(%myStruct* byval %structval) { %addr0 = getelementptr %myStruct* %structval, i64 0, i32 2 %addr1 = getelementptr %myStruct* %structval, i64 0, i32 0 - %val0 = load i32* %addr0 + %val0 = load volatile i32* %addr0 ; Some weird move means x0 is used for one access ; CHECK: ldr [[REG32:w[0-9]+]], [{{x[0-9]+|sp}}, #12] - store i32 %val0, i32* @var32 + store volatile i32 %val0, i32* @var32 ; CHECK: str [[REG32]], [{{x[0-9]+}}, #:lo12:var32] - %val1 = load i64* %addr1 + %val1 = load volatile i64* %addr1 ; CHECK: ldr [[REG64:x[0-9]+]], [{{x[0-9]+|sp}}] - store i64 %val1, i64* @var64 + store volatile i64 %val1, i64* @var64 ; CHECK: str [[REG64]], [{{x[0-9]+}}, #:lo12:var64] ret void @@ -56,14 +56,14 @@ define void @check_byval_align(i32* byval %ignore, %myStruct* byval align 16 %st %addr0 = getelementptr %myStruct* %structval, i64 0, i32 2 %addr1 = getelementptr %myStruct* %structval, i64 0, i32 0 - %val0 = load i32* %addr0 + %val0 = load volatile i32* %addr0 ; Some weird move means x0 is used for one access ; CHECK: add x[[STRUCTVAL_ADDR:[0-9]+]], sp, #16 ; CHECK: ldr [[REG32:w[0-9]+]], [x[[STRUCTVAL_ADDR]], #12] store i32 %val0, i32* @var32 ; CHECK: str [[REG32]], [{{x[0-9]+}}, #:lo12:var32] - %val1 = load i64* %addr1 + %val1 = load volatile i64* %addr1 ; CHECK: ldr [[REG64:x[0-9]+]], [sp, #16] store i64 %val1, i64* @var64 ; CHECK: str [[REG64]], [{{x[0-9]+}}, #:lo12:var64] @@ -130,17 +130,17 @@ define i32 @struct_on_stack(i8 %var0, i16 %var1, i32 %var2, i64 %var3, i128 %var double %notstacked) { ; CHECK-LABEL: struct_on_stack: %addr = getelementptr %myStruct* %struct, i64 0, i32 0 - %val64 = load i64* %addr - store i64 %val64, i64* @var64 + %val64 = load volatile i64* %addr + store volatile i64 %val64, i64* @var64 ; Currently nothing on local stack, so struct should be at sp ; CHECK: ldr [[VAL64:x[0-9]+]], [sp] ; CHECK: str [[VAL64]], [{{x[0-9]+}}, #:lo12:var64] - store double %notstacked, double* @vardouble + store volatile double %notstacked, double* @vardouble ; CHECK-NOT: ldr d0 ; CHECK: str d0, [{{x[0-9]+}}, #:lo12:vardouble - %retval = load i32* %stacked + %retval = load volatile i32* %stacked ret i32 %retval ; CHECK: ldr w0, [sp, #16] } @@ -176,10 +176,10 @@ define void @check_i128_stackalign(i32 %val0, i32 %val1, i32 %val2, i32 %val3, ; CHECK: check_i128_stackalign store i128 %stack2, i128* @var128 ; Nothing local on stack in current codegen, so first stack is 16 away -; CHECK: ldr {{x[0-9]+}}, [sp, #16] +; CHECK: add x[[REG:[0-9]+]], sp, #16 +; CHECK: ldr {{x[0-9]+}}, [x[[REG]], #8] ; Important point is that we address sp+24 for second dword -; CHECK: add [[REG:x[0-9]+]], sp, #16 -; CHECK: ldr {{x[0-9]+}}, {{\[}}[[REG]], #8] +; CHECK: ldr {{x[0-9]+}}, [sp, #16] ret void } |