Test source: git
Source: <stdin> ---------------------------------------- define i32 @test12(i32 %A) { %0: %B = or i32 %A, 4 %C = and i32 %B, 8 ret i32 %C } => define i32 @test12(i32 %A) { %0: %C = and i32 %A, 8 ret i32 %C } Transformation seems to be correct! ---------------------------------------- define i32 @test13(i32 %A) { %0: %B = or i32 %A, 12 %C = and i32 %B, 8 ret i32 %C } => define i32 @test13(i32 %A) { %0: ret i32 8 } Transformation seems to be correct! ---------------------------------------- define i1 @test14(i32 %A, i32 %B) { %0: %C1 = icmp ult i32 %A, %B %C2 = icmp ugt i32 %A, %B %D = or i1 %C1, %C2 ret i1 %D } => define i1 @test14(i32 %A, i32 %B) { %0: %1 = icmp ne i32 %A, %B ret i1 %1 } Transformation seems to be correct! ---------------------------------------- define i1 @test14_logical(i32 %A, i32 %B) { %0: %C1 = icmp ult i32 %A, %B %C2 = icmp ugt i32 %A, %B %D = select i1 %C1, i1 1, i1 %C2 ret i1 %D } => define i1 @test14_logical(i32 %A, i32 %B) { %0: %1 = icmp ne i32 %A, %B ret i1 %1 } Transformation seems to be correct! ---------------------------------------- define i1 @test15(i32 %A, i32 %B) { %0: %C1 = icmp ult i32 %A, %B %C2 = icmp eq i32 %A, %B %D = or i1 %C1, %C2 ret i1 %D } => define i1 @test15(i32 %A, i32 %B) { %0: %1 = icmp ule i32 %A, %B ret i1 %1 } Transformation seems to be correct! ---------------------------------------- define i1 @test15_logical(i32 %A, i32 %B) { %0: %C1 = icmp ult i32 %A, %B %C2 = icmp eq i32 %A, %B %D = select i1 %C1, i1 1, i1 %C2 ret i1 %D } => define i1 @test15_logical(i32 %A, i32 %B) { %0: %1 = icmp ule i32 %A, %B ret i1 %1 } Transformation seems to be correct! ---------------------------------------- define i32 @test16(i32 %A) { %0: %B = and i32 %A, 1 %C = and i32 %A, 4294967294 %D = or i32 %B, %C ret i32 %D } => define i32 @test16(i32 %A) { %0: ret i32 %A } Transformation seems to be correct! ---------------------------------------- define i32 @test17(i32 %A) { %0: %B = and i32 %A, 1 %C = and i32 %A, 4 %D = or i32 %B, %C ret i32 %D } => define i32 @test17(i32 %A) { %0: %D = and i32 %A, 5 ret i32 %D } Transformation seems to be correct! ---------------------------------------- define i1 @test18(i32 %A) { %0: %B = icmp sge i32 %A, 100 %C = icmp slt i32 %A, 50 %D = or i1 %B, %C ret i1 %D } => define i1 @test18(i32 %A) { %0: %A.off = add i32 %A, 4294967246 %1 = icmp ugt i32 %A.off, 49 ret i1 %1 } Transformation seems to be correct! ---------------------------------------- define i1 @test18_logical(i32 %A) { %0: %B = icmp sge i32 %A, 100 %C = icmp slt i32 %A, 50 %D = select i1 %B, i1 1, i1 %C ret i1 %D } => define i1 @test18_logical(i32 %A) { %0: %A.off = add i32 %A, 4294967246 %1 = icmp ugt i32 %A.off, 49 ret i1 %1 } Transformation seems to be correct! ---------------------------------------- define <2 x i1> @test18vec(<2 x i32> %A) { %0: %B = icmp sge <2 x i32> %A, { 100, 100 } %C = icmp slt <2 x i32> %A, { 50, 50 } %D = or <2 x i1> %B, %C ret <2 x i1> %D } => define <2 x i1> @test18vec(<2 x i32> %A) { %0: %B = icmp sgt <2 x i32> %A, { 99, 99 } %C = icmp slt <2 x i32> %A, { 50, 50 } %D = or <2 x i1> %B, %C ret <2 x i1> %D } Transformation seems to be correct! ---------------------------------------- define i32 @test20(i32 %x) { %0: %y = and i32 %x, 123 %z = or i32 %y, %x ret i32 %z } => define i32 @test20(i32 %x) { %0: ret i32 %x } Transformation seems to be correct! ---------------------------------------- define i32 @test21(i32 %t1) { %0: %t1.mask1 = add i32 %t1, 2 %t3 = and i32 %t1.mask1, 4294967294 %t5 = and i32 %t1, 1 %t6 = or i32 %t5, %t3 ret i32 %t6 } => define i32 @test21(i32 %t1) { %0: %t1.mask1 = add i32 %t1, 2 ret i32 %t1.mask1 } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i32 @test22(i32 %B) { %0: %ELIM41 = and i32 %B, 1 %ELIM7 = and i32 %B, 4294967294 %ELIM5 = or i32 %ELIM41, %ELIM7 ret i32 %ELIM5 } => define i32 @test22(i32 %B) { %0: ret i32 %B } Transformation seems to be correct! ---------------------------------------- define i16 @test23(i16 %A) { %0: %B = lshr i16 %A, 1 %C = or i16 %B, 32768 %D = xor i16 %C, 8193 ret i16 %D } => define i16 @test23(i16 %A) { %0: %B = lshr i16 %A, 1 %D = xor i16 %B, 40961 ret i16 %D } Transformation seems to be correct! ---------------------------------------- define <2 x i16> @test23vec(<2 x i16> %A) { %0: %B = lshr <2 x i16> %A, { 1, 1 } %C = or <2 x i16> %B, { 32768, 32768 } %D = xor <2 x i16> %C, { 8193, 8193 } ret <2 x i16> %D } => define <2 x i16> @test23vec(<2 x i16> %A) { %0: %B = lshr <2 x i16> %A, { 1, 1 } %D = xor <2 x i16> %B, { 40961, 40961 } ret <2 x i16> %D } Transformation seems to be correct! ---------------------------------------- define i1 @test25(i32 %A, i32 %B) { %0: %C = icmp eq i32 %A, 0 %D = icmp eq i32 %B, 57 %E = or i1 %C, %D %F = xor i1 %E, 1 ret i1 %F } => define i1 @test25(i32 %A, i32 %B) { %0: %C = icmp ne i32 %A, 0 %D = icmp ne i32 %B, 57 %F = and i1 %C, %D ret i1 %F } Transformation seems to be correct! ---------------------------------------- define i1 @test25_logical(i32 %A, i32 %B) { %0: %C = icmp eq i32 %A, 0 %D = icmp eq i32 %B, 57 %E = select i1 %C, i1 1, i1 %D %F = xor i1 %E, 1 ret i1 %F } => define i1 @test25_logical(i32 %A, i32 %B) { %0: %C = icmp ne i32 %A, 0 %D = icmp ne i32 %B, 57 %F = and i1 %C, %D ret i1 %F } Transformation doesn't verify! ERROR: Target is more poisonous than source Example: i32 %A = #x00000000 (0) i32 %B = poison Source: i1 %C = #x1 (1) i1 %D = poison i1 %E = #x1 (1) i1 %F = #x0 (0) Target: i1 %C = #x0 (0) i1 %D = poison i1 %F = poison Source value: #x0 (0) Target value: poison ------------------- SMT STATS ------------------- Num queries: 54 Num invalid: 0 Num skips: 0 Num trivial: 68 (55.7%) Num timeout: 1 (1.9%) Num errors: 0 (0.0%) Num SAT: 19 (35.2%) Num UNSAT: 34 (63.0%)
+ : 'RUN: at line 2' + /home/nlopes/alive2/build/opt-alive.sh -instcombine -S + /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/InstCombine/or.ll Alive2: Transform doesn't verify; aborting! FileCheck error: '<stdin>' is empty. FileCheck command line: /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/InstCombine/or.ll