summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/InstCombine/load-cmp.ll
diff options
context:
space:
mode:
authorArnaud A. de Grandmaison <arnaud.adegm@gmail.com>2013-03-22 08:25:01 +0000
committerArnaud A. de Grandmaison <arnaud.adegm@gmail.com>2013-03-22 08:25:01 +0000
commitf364bc63e71355a94ca1ef442e7e5af64973239d (patch)
tree4edb459905de7e6370ae14926a0437201e04e252 /llvm/test/Transforms/InstCombine/load-cmp.ll
parentf1311dfce1d434c724cd6ec5c1cf13e268b23511 (diff)
downloadbcm5719-llvm-f364bc63e71355a94ca1ef442e7e5af64973239d.tar.gz
bcm5719-llvm-f364bc63e71355a94ca1ef442e7e5af64973239d.zip
InstCombine: Improve the result bitvect type when folding (cmp pred (load (gep GV, i)) C) to a bit test.
The original code used i32, and i64 if legal. This introduced unneeded casts when they aren't legal, or when the index variable i has another type. In order of preference: try to use i's type; use the smallest fitting legal type (using an added DataLayout method); default to i32. A testcase checks that this works when the index gep operand is i16. Patch by : Ahmed Bougacha <ahmed.bougacha@gmail.com> Reviewed by : Duncan llvm-svn: 177712
Diffstat (limited to 'llvm/test/Transforms/InstCombine/load-cmp.ll')
-rw-r--r--llvm/test/Transforms/InstCombine/load-cmp.ll12
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/load-cmp.ll b/llvm/test/Transforms/InstCombine/load-cmp.ll
index 5cafb7787e3..d88188e4109 100644
--- a/llvm/test/Transforms/InstCombine/load-cmp.ll
+++ b/llvm/test/Transforms/InstCombine/load-cmp.ll
@@ -47,6 +47,18 @@ define i1 @test4(i32 %X) {
; CHECK-NEXT: ret i1 %R
}
+define i1 @test4_i16(i16 %X) {
+ %P = getelementptr inbounds [10 x i16]* @G16, i32 0, i16 %X
+ %Q = load i16* %P
+ %R = icmp sle i16 %Q, 73
+ ret i1 %R
+; CHECK: @test4_i16
+; CHECK-NEXT: lshr i16 933, %X
+; CHECK-NEXT: and i16 {{.*}}, 1
+; CHECK-NEXT: %R = icmp ne i16 {{.*}}, 0
+; CHECK-NEXT: ret i1 %R
+}
+
define i1 @test5(i32 %X) {
%P = getelementptr inbounds [10 x i16]* @G16, i32 0, i32 %X
%Q = load i16* %P
OpenPOWER on IntegriCloud