[PowerPC] Eliminate compares - add i32 sext/zext handling for SETULT/SETUGT
[llvm-core.git] / test / Transforms / EarlyCSE / commute.ll
blob45906fed352336b3755e0197234f1751a14330dc
1 ; RUN: opt < %s -S -early-cse | FileCheck %s
2 ; RUN: opt < %s -S -basicaa -early-cse-memssa | FileCheck %s
4 ; CHECK-LABEL: @test1(
5 define void @test1(float %A, float %B, float* %PA, float* %PB) {
6   ; CHECK-NEXT: fadd
7   ; CHECK-NEXT: store
8   ; CHECK-NEXT: store
9   ; CHECK-NEXT: ret
10   %C = fadd float %A, %B
11   store float %C, float* %PA
12   %D = fadd float %B, %A
13   store float %D, float* %PB
14   ret void
17 ; CHECK-LABEL: @test2(
18 define void @test2(float %A, float %B, i1* %PA, i1* %PB) {
19   ; CHECK-NEXT: fcmp
20   ; CHECK-NEXT: store
21   ; CHECK-NEXT: store
22   ; CHECK-NEXT: ret
23   %C = fcmp oeq float %A, %B
24   store i1 %C, i1* %PA
25   %D = fcmp oeq float %B, %A
26   store i1 %D, i1* %PB
27   ret void
30 ; CHECK-LABEL: @test3(
31 define void @test3(float %A, float %B, i1* %PA, i1* %PB) {
32   ; CHECK-NEXT: fcmp
33   ; CHECK-NEXT: store
34   ; CHECK-NEXT: store
35   ; CHECK-NEXT: ret
36   %C = fcmp uge float %A, %B
37   store i1 %C, i1* %PA
38   %D = fcmp ule float %B, %A
39   store i1 %D, i1* %PB
40   ret void
43 ; CHECK-LABEL: @test4(
44 define void @test4(i32 %A, i32 %B, i1* %PA, i1* %PB) {
45   ; CHECK-NEXT: icmp
46   ; CHECK-NEXT: store
47   ; CHECK-NEXT: store
48   ; CHECK-NEXT: ret
49   %C = icmp eq i32 %A, %B
50   store i1 %C, i1* %PA
51   %D = icmp eq i32 %B, %A
52   store i1 %D, i1* %PB
53   ret void
56 ; CHECK-LABEL: @test5(
57 define void @test5(i32 %A, i32 %B, i1* %PA, i1* %PB) {
58   ; CHECK-NEXT: icmp
59   ; CHECK-NEXT: store
60   ; CHECK-NEXT: store
61   ; CHECK-NEXT: ret
62   %C = icmp sgt i32 %A, %B
63   store i1 %C, i1* %PA
64   %D = icmp slt i32 %B, %A
65   store i1 %D, i1* %PB
66   ret void