| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- ; 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
- }
|