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