The not instruction is just a specialized form of XOR
[oota-llvm.git] / test / Transforms / InstCombine / cast-set.ll
1 ; I'm not really sure if instcombine should do things like these.  LevelRaise 
2 ; already sufficiently takes care of these cases, but level raise is really
3 ; slow.  Might it be better to make there be an instcombine prepass before
4 ; level raise that takes care of the obvious stuff?
5
6 ; RUN: if as < %s | opt -instcombine | dis | grep cast
7 ; RUN: then exit 1
8 ; RUN: else exit 0
9 ; RUN: fi
10
11 bool "test1"(int %X) {
12         %A = cast int %X to uint
13         %c = setne uint %A, 0        ; Convert to setne int %X, 0
14         ret bool %c
15 }
16
17 bool "test2"(int %X, int %Y) {
18         %A = cast int %X to uint
19         %B = cast int %Y to uint
20         %c = setne uint %A, %B       ; Convert to setne int %X, %Y
21         ret bool %c
22 }
23