Teach instcombine to fold compares of loads from constant
[oota-llvm.git] / test / Transforms / InstCombine / load-cmp.ll
1 ; RUN: opt < %s -instcombine -S | FileCheck %s
2
3 @G16 = internal constant [10 x i16] [i16 35, i16 82, i16 69, i16 81, i16 85, 
4                                      i16 73, i16 82, i16 69, i16 68, i16 0]
5
6 define i1 @test1(i32 %X) {
7   %P = getelementptr [10 x i16]* @G16, i32 0, i32 %X
8   %Q = load i16* %P
9   %R = icmp eq i16 %Q, 0
10   ret i1 %R
11 ; CHECK: @test1
12 ; CHECK-NEXT: %R = icmp eq i32 %X, 9
13 ; CHECK-NEXT: ret i1 %R
14 }
15
16 define i1 @test2(i32 %X) {
17   %P = getelementptr [10 x i16]* @G16, i32 0, i32 %X
18   %Q = load i16* %P
19   %R = icmp slt i16 %Q, 85
20   ret i1 %R
21 ; CHECK: @test2
22 ; CHECK-NEXT: %R = icmp ne i32 %X, 4
23 ; CHECK-NEXT: ret i1 %R
24 }
25