1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-01 08:23:21 +01:00
llvm-mirror/test/Transforms/InstCombine/apint-and2.ll
Dan Gohman 205b641954 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.

llvm-svn: 81537
2009-09-11 18:01:28 +00:00

83 lines
1.9 KiB
LLVM

; This test makes sure that and instructions are properly eliminated.
; This test is for Integer BitWidth > 64 && BitWidth <= 1024.
; RUN: opt < %s -instcombine -S | not grep {and }
; END.
define i999 @test0(i999 %A) {
%B = and i999 %A, 0 ; zero result
ret i999 %B
}
define i477 @test1(i477 %A, i477 %B) {
;; (~A & ~B) == (~(A | B)) - De Morgan's Law
%NotA = xor i477 %A, -1
%NotB = xor i477 %B, -1
%C1 = and i477 %NotA, %NotB
ret i477 %C1
}
define i129 @tst(i129 %A, i129 %B) {
;; (~A & ~B) == (~(A | B)) - De Morgan's Law
%NotA = xor i129 %A, -1
%NotB = xor i129 %B, -1
%C1 = and i129 %NotA, %NotB
ret i129 %C1
}
define i65 @test(i65 %A, i65 %B) {
;; (~A & ~B) == (~(A | B)) - De Morgan's Law
%NotA = xor i65 %A, -1
%NotB = xor i65 -1, %B
%C1 = and i65 %NotA, %NotB
ret i65 %C1
}
define i66 @tes(i66 %A, i66 %B) {
;; (~A & ~B) == (~(A | B)) - De Morgan's Law
%NotA = xor i66 %A, -1
%NotB = xor i66 %B, -1
%C1 = and i66 %NotA, %NotB
ret i66 %C1
}
define i1005 @test2(i1005 %x) {
%tmp.2 = and i1005 %x, -1 ; noop
ret i1005 %tmp.2
}
define i123 @test3(i123 %x) {
%tmp.0 = and i123 %x, 127
%tmp.2 = and i123 %tmp.0, 128
ret i123 %tmp.2
}
define i1 @test4(i737 %x) {
%A = and i737 %x, -2147483648
%B = icmp ne i737 %A, 0
ret i1 %B
}
define i117 @test5(i117 %A, i117* %P) {
%B = or i117 %A, 3
%C = xor i117 %B, 12
store i117 %C, i117* %P
%r = and i117 %C, 3
ret i117 %r
}
define i117 @test6(i117 %A, i117 %B) {
;; ~(~X & Y) --> (X | ~Y)
%t0 = xor i117 %A, -1
%t1 = and i117 %t0, %B
%r = xor i117 %t1, -1
ret i117 %r
}
define i1024 @test7(i1024 %A) {
%X = ashr i1024 %A, 1016 ;; sign extend
%C1 = and i1024 %X, 255
ret i1024 %C1
}