llvm/test/Transforms/InstCombine/apint-not.ll
Dan Gohman f2f6ce65b7 Change tests from "opt %s" to "opt < %s" so that opt doesn't see the
input filename so that opt doesn't print the input filename in the
output so that grep lines in the tests don't unintentionally match
strings in the input filename.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81537 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-11 18:01:28 +00:00

43 lines
914 B
LLVM

; This test makes sure that the xor instructions are properly eliminated
; when arbitrary precision integers are used.
; RUN: opt < %s -instcombine -S | not grep xor
define i33 @test1(i33 %A) {
%B = xor i33 %A, -1
%C = xor i33 %B, -1
ret i33 %C
}
define i1 @test2(i52 %A, i52 %B) {
%cond = icmp ule i52 %A, %B ; Can change into uge
%Ret = xor i1 %cond, true
ret i1 %Ret
}
; Test that demorgans law can be instcombined
define i47 @test3(i47 %A, i47 %B) {
%a = xor i47 %A, -1
%b = xor i47 %B, -1
%c = and i47 %a, %b
%d = xor i47 %c, -1
ret i47 %d
}
; Test that demorgens law can work with constants
define i61 @test4(i61 %A, i61 %B) {
%a = xor i61 %A, -1
%c = and i61 %a, 5 ; 5 = ~c2
%d = xor i61 %c, -1
ret i61 %d
}
; test the mirror of demorgans law...
define i71 @test5(i71 %A, i71 %B) {
%a = xor i71 %A, -1
%b = xor i71 %B, -1
%c = or i71 %a, %b
%d = xor i71 %c, -1
ret i71 %d
}