1 ; This test makes sure that these instructions are properly eliminated.
4 ; RUN: if as < %s | opt -instcombine | dis | grep set
9 %X = uninitialized global int
13 %C = seteq int* %X, null ; Never true
20 %C = setne int* %X, null ; Never false
45 bool %test7(uint %A) {
46 %B = setge uint %A, 0 ; true
50 bool %test8(uint %A) {
51 %B = setlt uint %A, 0 ; false
55 ;; test operations on boolean values these should all be eliminated$a
56 bool %test9(bool %A) {
57 %B = setlt bool %A, false ; false
60 bool %test10(bool %A) {
61 %B = setgt bool %A, true ; false
64 bool %test11(bool %A) {
65 %B = setle bool %A, true ; true
68 bool %test12(bool %A) {
69 %B = setge bool %A, false ; true
72 bool %test13(bool %A, bool %B) {
73 %C = setge bool %A, %B ; A | ~B
76 bool %test14(bool %A, bool %B) {
77 %C = seteq bool %A, %B ; ~(A ^ B)
81 ; These instructions can be turned into cast-to-bool
82 bool %test15(sbyte %A, short %A, int %A, long %A) {
83 %B1 = setne sbyte %A, 0
84 %B2 = setne short %A, 0
86 %B4 = setne long %A, 0
87 %C1 = or bool %B1, %B2
88 %C2 = or bool %B3, %B4