blob: 38a490d48e25d881ab08567944f86ebdca0a03ce [file] [log] [blame]
Chris Lattner6022ad02002-05-06 05:51:26 +00001; This test makes sure that these instructions are properly eliminated.
2;
3
Chris Lattnerf6f95d02002-08-02 19:27:58 +00004; RUN: if as < %s | opt -instcombine | dis | grep set
Chris Lattner6022ad02002-05-06 05:51:26 +00005; RUN: then exit 1
6; RUN: else exit 0
7; RUN: fi
8
Chris Lattnerce59a3d2002-05-09 19:52:36 +00009%X = uninitialized global int
Chris Lattner6022ad02002-05-06 05:51:26 +000010
11bool "test1"(int %A) {
12 %B = seteq int %A, %A
Chris Lattnerce59a3d2002-05-09 19:52:36 +000013 %C = seteq int* %X, null ; Never true
14 %D = and bool %B, %C
15 ret bool %D
Chris Lattner6022ad02002-05-06 05:51:26 +000016}
17
18bool "test2"(int %A) {
19 %B = setne int %A, %A
Chris Lattnerce59a3d2002-05-09 19:52:36 +000020 %C = setne int* %X, null ; Never false
21 %D = or bool %B, %C
22 ret bool %D
Chris Lattner6022ad02002-05-06 05:51:26 +000023}
24
25bool "test3"(int %A) {
26 %B = setlt int %A, %A
27 ret bool %B
28}
29
30bool "test4"(int %A) {
31 %B = setgt int %A, %A
32 ret bool %B
33}
34
35bool "test5"(int %A) {
36 %B = setle int %A, %A
37 ret bool %B
38}
39
40bool "test6"(int %A) {
41 %B = setge int %A, %A
42 ret bool %B
43}
Chris Lattnerff61e352002-08-03 20:24:58 +000044
45bool "test7"(uint %A) {
46 %B = setge uint %A, 0 ; true
47 ret bool %B
48}
49
50bool "test8"(uint %A) {
51 %B = setlt uint %A, 0 ; false
52 ret bool %B
53}
Chris Lattnerb86ab652002-08-09 23:34:18 +000054
55;; test operations on boolean values these should all be eliminated$a
56bool %test9(bool %A) {
57 %B = setlt bool %A, false ; false
58 ret bool %B
59}
60bool %test10(bool %A) {
61 %B = setgt bool %A, true ; false
62 ret bool %B
63}
64bool %test11(bool %A) {
65 %B = setle bool %A, true ; true
66 ret bool %B
67}
68bool %test12(bool %A) {
69 %B = setge bool %A, false ; true
70 ret bool %B
71}
72bool %test13(bool %A, bool %B) {
73 %C = setge bool %A, %B ; A | ~B
74 ret bool %C
75}
76bool %test14(bool %A, bool %B) {
77 %C = seteq bool %A, %B ; ~(A ^ B)
78 ret bool %C
79}
80