summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-01-17 23:16:01 +0000
committerChris Lattner <sabre@nondot.org>2005-01-17 23:16:01 +0000
commit81841af59474eda9d9afa988173aa76276888e01 (patch)
tree08626b2d3d9e39956faa2839af80bcd42027267d
parenta5d137f4713fd12910cd88d3c3154b906402abb4 (diff)
downloadbcm5719-llvm-81841af59474eda9d9afa988173aa76276888e01.tar.gz
bcm5719-llvm-81841af59474eda9d9afa988173aa76276888e01.zip
This is a carefully contrived testcase where the X86 ISel is emitting all loads
before other ops, causing it to spill like mad. This occurs in 164.gzip:flush_block. llvm-svn: 19648
-rw-r--r--llvm/test/Regression/CodeGen/X86/regpressure.ll45
1 files changed, 45 insertions, 0 deletions
diff --git a/llvm/test/Regression/CodeGen/X86/regpressure.ll b/llvm/test/Regression/CodeGen/X86/regpressure.ll
index 8cb6b0ee5a6..1ba381d30ee 100644
--- a/llvm/test/Regression/CodeGen/X86/regpressure.ll
+++ b/llvm/test/Regression/CodeGen/X86/regpressure.ll
@@ -70,3 +70,48 @@ int %regpressure2(int* %P) {
ret int %s9
}
+;; adds should be the same as muls.
+int %regpressure3(short* %P, bool %Cond, int* %Other) {
+ %A = load short* %P
+ %Bp = getelementptr short* %P, int 1
+ %B = load short* %Bp
+ %Cp = getelementptr short* %P, int 2
+ %C = load short* %Cp
+ %Dp = getelementptr short* %P, int 3
+ %D = load short* %Dp
+ %Ep = getelementptr short* %P, int 4
+ %E = load short* %Ep
+ %Fp = getelementptr short* %P, int 5
+ %F = load short* %Fp
+ %Gp = getelementptr short* %P, int 6
+ %G = load short* %Gp
+ %Hp = getelementptr short* %P, int 7
+ %H = load short* %Hp
+ %Ip = getelementptr short* %P, int 8
+ %I = load short* %Ip
+ %Jp = getelementptr short* %P, int 9
+ %J = load short* %Jp
+
+ ;; These casts prevent folding the loads into the adds.
+ %A = cast short %A to int
+ %B = cast short %B to int
+ %D = cast short %D to int
+ %C = cast short %C to int
+ %E = cast short %E to int
+ %F = cast short %F to int
+ %G = cast short %G to int
+ %H = cast short %H to int
+ %I = cast short %I to int
+ %J = cast short %J to int
+ %s1 = add int %A, %B
+ %s2 = add int %C, %s1
+ %s3 = add int %D, %s2
+ %s4 = add int %E, %s3
+ %s5 = add int %F, %s4
+ %s6 = add int %G, %s5
+ %s7 = add int %H, %s6
+ %s8 = add int %I, %s7
+ %s9 = add int %J, %s8
+ ret int %s9
+}
+
OpenPOWER on IntegriCloud