diff options
| author | Nirav Dave <niravd@google.com> | 2016-11-23 16:48:35 +0000 |
|---|---|---|
| committer | Nirav Dave <niravd@google.com> | 2016-11-23 16:48:35 +0000 |
| commit | cf34556330f3bcf467b8c3981f09aac4d7f965e1 (patch) | |
| tree | 281686e3b8a42b91f1086844c33771e3aeae2c57 /llvm/test/CodeGen/Mips/o32_cc_byval.ll | |
| parent | 5ea1054dabb414e2e8cb89c90698300dae0bf7c4 (diff) | |
| download | bcm5719-llvm-cf34556330f3bcf467b8c3981f09aac4d7f965e1.tar.gz bcm5719-llvm-cf34556330f3bcf467b8c3981f09aac4d7f965e1.zip | |
[DAG] Improve loads-from-store forwarding to handle TokenFactor
Forward store values to matching loads down through token
factors. Factored from D14834.
Reviewers: jyknight, hfinkel
Subscribers: hfinkel, nemanjai, llvm-commits
Differential Revision: https://reviews.llvm.org/D26080
llvm-svn: 287773
Diffstat (limited to 'llvm/test/CodeGen/Mips/o32_cc_byval.ll')
| -rw-r--r-- | llvm/test/CodeGen/Mips/o32_cc_byval.ll | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/llvm/test/CodeGen/Mips/o32_cc_byval.ll b/llvm/test/CodeGen/Mips/o32_cc_byval.ll index 33431dba43c..205361ae56b 100644 --- a/llvm/test/CodeGen/Mips/o32_cc_byval.ll +++ b/llvm/test/CodeGen/Mips/o32_cc_byval.ll @@ -45,20 +45,21 @@ declare void @callee3(float, %struct.S3* byval, %struct.S1* byval) define void @f2(float %f, %struct.S1* nocapture byval %s1) nounwind { entry: ; CHECK: addiu $sp, $sp, -48 -; CHECK: sw $7, 60($sp) +; CHECK: sw $[[R7:[0-9]+]], 60($sp) ; CHECK: sw $6, 56($sp) ; CHECK: lw $4, 80($sp) ; CHECK: ldc1 $f[[F0:[0-9]+]], 72($sp) -; CHECK: lw $[[R3:[0-9]+]], 64($sp) -; CHECK: lw $[[R4:[0-9]+]], 68($sp) -; CHECK: lw $[[R2:[0-9]+]], 60($sp) -; CHECK: lh $[[R1:[0-9]+]], 58($sp) -; CHECK: lb $[[R0:[0-9]+]], 56($sp) -; CHECK: sw $[[R0]], 32($sp) -; CHECK: sw $[[R1]], 28($sp) -; CHECK: sw $[[R2]], 24($sp) -; CHECK: sw $[[R4]], 20($sp) -; CHECK: sw $[[R3]], 16($sp) + +; CHECK: lw $[[R1:[0-9]+]], 64($sp) +; CHECK: lw $[[R2:[0-9]+]], 68($sp) +; CHECK: lh $[[R3:[0-9]+]], 58($sp) +; CHECK: lb $[[R5:[0-9]+]], 56($sp) + +; CHECK-DAG: sw $[[R5]], 32($sp) +; CHECK-DAG: sw $[[R3]], 28($sp) +; CHECK-DAG: sw $[[R7]], 24($sp) +; CHECK-DAG: sw $[[R2]], 20($sp) +; CHECK-DAG: sw $[[R1]], 16($sp) ; CHECK: mfc1 $6, $f[[F0]] %i2 = getelementptr inbounds %struct.S1, %struct.S1* %s1, i32 0, i32 5 @@ -86,9 +87,7 @@ entry: ; CHECK: sw $6, 56($sp) ; CHECK: sw $5, 52($sp) ; CHECK: sw $4, 48($sp) -; CHECK: lw $4, 48($sp) -; CHECK: lw $[[R0:[0-9]+]], 60($sp) -; CHECK: sw $[[R0]], 24($sp) +; CHECK: sw $7, 24($sp) %arrayidx = getelementptr inbounds %struct.S2, %struct.S2* %s2, i32 0, i32 0, i32 0 %tmp = load i32, i32* %arrayidx, align 4 @@ -104,7 +103,6 @@ entry: ; CHECK: sw $7, 60($sp) ; CHECK: sw $6, 56($sp) ; CHECK: sw $5, 52($sp) -; CHECK: lw $4, 60($sp) ; CHECK: lw $[[R1:[0-9]+]], 80($sp) ; CHECK: lb $[[R0:[0-9]+]], 52($sp) ; CHECK: sw $[[R0]], 32($sp) |

