1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-28 06:22:51 +01:00
llvm-mirror/test/Regression/Transforms/InstCombine/not.ll
Chris Lattner 83c86fad17 Add test for demorgans law with constants
Add test for other form of demorgans

llvm-svn: 5737
2003-03-10 23:13:32 +00:00

49 lines
916 B
LLVM

; This test makes sure that these instructions are properly eliminated.
;
; RUN: if as < %s | opt -instcombine -die | dis | grep xor
; RUN: then exit 1
; RUN: else exit 0
; RUN: fi
implementation
int %test1(int %A) {
%B = xor int %A, -1
%C = xor int %B, -1
ret int %C
}
bool %test2(int %A, int %B) {
%cond = setle int %A, %B ; Can change into setge
%Ret = xor bool %cond, true
ret bool %Ret
}
; Test that demorgans law can be instcombined
int %test3(int %A, int %B) {
%a = xor int %A, -1
%b = xor int %B, -1
%c = and int %a, %b
%d = xor int %c, -1
ret int %d
}
; Test that demorgens law can work with constants
int %test4(int %A, int %B) {
%a = xor int %A, -1
%c = and int %a, 5 ; 5 = ~c2
%d = xor int %c, -1
ret int %d
}
; test the mirror of demorgans law...
int %test5(int %A, int %B) {
%a = xor int %A, -1
%b = xor int %B, -1
%c = or int %a, %b
%d = xor int %c, -1
ret int %d
}