Test source: git
Source: <stdin> ---------------------------------------- define i32 @abs_abs_x01(i32 %x) { %0: %cmp = icmp sgt i32 %x, 4294967295 %sub = sub nsw i32 0, %x %cond = select i1 %cmp, i32 %x, i32 %sub %cmp1 = icmp sgt i32 %cond, 4294967295 %sub16 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %cond, i32 %sub16 ret i32 %cond18 } => define i32 @abs_abs_x01(i32 %x) { %0: %1 = abs i32 %x, 1 ret i32 %1 } Transformation seems to be correct! ---------------------------------------- define <2 x i32> @abs_abs_x01_vec(<2 x i32> %x) { %0: %cmp = icmp sgt <2 x i32> %x, { 4294967295, 4294967295 } %sub = sub nsw <2 x i32> { 0, 0 }, %x %cond = select <2 x i1> %cmp, <2 x i32> %x, <2 x i32> %sub %cmp1 = icmp sgt <2 x i32> %cond, { 4294967295, 4294967295 } %sub16 = sub nsw <2 x i32> { 0, 0 }, %cond %cond18 = select <2 x i1> %cmp1, <2 x i32> %cond, <2 x i32> %sub16 ret <2 x i32> %cond18 } => define <2 x i32> @abs_abs_x01_vec(<2 x i32> %x) { %0: %1 = abs <2 x i32> %x, 1 ret <2 x i32> %1 } Transformation seems to be correct! ---------------------------------------- define i32 @abs_abs_x02(i32 %x) { %0: %cmp = icmp sgt i32 %x, 0 %sub = sub nsw i32 0, %x %cond = select i1 %cmp, i32 %x, i32 %sub %cmp1 = icmp sgt i32 %cond, 4294967295 %sub16 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %cond, i32 %sub16 ret i32 %cond18 } => define i32 @abs_abs_x02(i32 %x) { %0: %1 = abs i32 %x, 1 ret i32 %1 } Transformation seems to be correct! ---------------------------------------- define i32 @abs_abs_x03(i32 %x) { %0: %cmp = icmp slt i32 %x, 0 %sub = sub nsw i32 0, %x %cond = select i1 %cmp, i32 %sub, i32 %x %cmp1 = icmp sgt i32 %cond, 4294967295 %sub16 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %cond, i32 %sub16 ret i32 %cond18 } => define i32 @abs_abs_x03(i32 %x) { %0: %1 = abs i32 %x, 1 ret i32 %1 } Transformation seems to be correct! ---------------------------------------- define i32 @abs_abs_x04(i32 %x) { %0: %cmp = icmp slt i32 %x, 1 %sub = sub nsw i32 0, %x %cond = select i1 %cmp, i32 %sub, i32 %x %cmp1 = icmp sgt i32 %cond, 4294967295 %sub16 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %cond, i32 %sub16 ret i32 %cond18 } => define i32 @abs_abs_x04(i32 %x) { %0: %1 = abs i32 %x, 1 ret i32 %1 } Transformation seems to be correct! ---------------------------------------- define <2 x i32> @abs_abs_x04_vec(<2 x i32> %x) { %0: %cmp = icmp slt <2 x i32> %x, { 1, 1 } %sub = sub nsw <2 x i32> { 0, 0 }, %x %cond = select <2 x i1> %cmp, <2 x i32> %sub, <2 x i32> %x %cmp1 = icmp sgt <2 x i32> %cond, { 4294967295, 4294967295 } %sub16 = sub nsw <2 x i32> { 0, 0 }, %cond %cond18 = select <2 x i1> %cmp1, <2 x i32> %cond, <2 x i32> %sub16 ret <2 x i32> %cond18 } => define <2 x i32> @abs_abs_x04_vec(<2 x i32> %x) { %0: %1 = abs <2 x i32> %x, 1 ret <2 x i32> %1 } Transformation seems to be correct! ---------------------------------------- define i32 @abs_abs_x05(i32 %x) { %0: %cmp = icmp sgt i32 %x, 4294967295 %sub = sub nsw i32 0, %x %cond = select i1 %cmp, i32 %x, i32 %sub %cmp1 = icmp sgt i32 %cond, 0 %sub16 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %cond, i32 %sub16 ret i32 %cond18 } => define i32 @abs_abs_x05(i32 %x) { %0: %1 = abs i32 %x, 1 ret i32 %1 } Transformation seems to be correct! ---------------------------------------- define i32 @abs_abs_x06(i32 %x) { %0: %cmp = icmp sgt i32 %x, 0 %sub = sub nsw i32 0, %x %cond = select i1 %cmp, i32 %x, i32 %sub %cmp1 = icmp sgt i32 %cond, 0 %sub16 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %cond, i32 %sub16 ret i32 %cond18 } => define i32 @abs_abs_x06(i32 %x) { %0: %1 = abs i32 %x, 1 ret i32 %1 } Transformation seems to be correct! ---------------------------------------- define i32 @abs_abs_x07(i32 %x) { %0: %cmp = icmp slt i32 %x, 0 %sub = sub nsw i32 0, %x %cond = select i1 %cmp, i32 %sub, i32 %x %cmp1 = icmp sgt i32 %cond, 0 %sub16 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %cond, i32 %sub16 ret i32 %cond18 } => define i32 @abs_abs_x07(i32 %x) { %0: %1 = abs i32 %x, 1 ret i32 %1 } Transformation seems to be correct! ---------------------------------------- define i32 @abs_abs_x08(i32 %x) { %0: %cmp = icmp slt i32 %x, 1 %sub = sub nsw i32 0, %x %cond = select i1 %cmp, i32 %sub, i32 %x %cmp1 = icmp sgt i32 %cond, 0 %sub16 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %cond, i32 %sub16 ret i32 %cond18 } => define i32 @abs_abs_x08(i32 %x) { %0: %1 = abs i32 %x, 1 ret i32 %1 } Transformation seems to be correct! ---------------------------------------- define i32 @abs_abs_x09(i32 %x) { %0: %cmp = icmp sgt i32 %x, 4294967295 %sub = sub nsw i32 0, %x %cond = select i1 %cmp, i32 %x, i32 %sub %cmp1 = icmp slt i32 %cond, 0 %sub9 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %sub9, i32 %cond ret i32 %cond18 } => define i32 @abs_abs_x09(i32 %x) { %0: %1 = abs i32 %x, 1 ret i32 %1 } Transformation seems to be correct! ---------------------------------------- define i32 @abs_abs_x10(i32 %x) { %0: %cmp = icmp sgt i32 %x, 0 %sub = sub nsw i32 0, %x %cond = select i1 %cmp, i32 %x, i32 %sub %cmp1 = icmp slt i32 %cond, 0 %sub9 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %sub9, i32 %cond ret i32 %cond18 } => define i32 @abs_abs_x10(i32 %x) { %0: %1 = abs i32 %x, 1 ret i32 %1 } Transformation seems to be correct! ---------------------------------------- define i32 @abs_abs_x11(i32 %x) { %0: %cmp = icmp slt i32 %x, 0 %sub = sub nsw i32 0, %x %cond = select i1 %cmp, i32 %sub, i32 %x %cmp1 = icmp slt i32 %cond, 0 %sub9 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %sub9, i32 %cond ret i32 %cond18 } => define i32 @abs_abs_x11(i32 %x) { %0: %1 = abs i32 %x, 1 ret i32 %1 } Transformation seems to be correct! ---------------------------------------- define i32 @abs_abs_x12(i32 %x) { %0: %cmp = icmp slt i32 %x, 1 %sub = sub nsw i32 0, %x %cond = select i1 %cmp, i32 %sub, i32 %x %cmp1 = icmp slt i32 %cond, 0 %sub9 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %sub9, i32 %cond ret i32 %cond18 } => define i32 @abs_abs_x12(i32 %x) { %0: %1 = abs i32 %x, 1 ret i32 %1 } Transformation seems to be correct! ---------------------------------------- define i32 @abs_abs_x13(i32 %x) { %0: %cmp = icmp sgt i32 %x, 4294967295 %sub = sub nsw i32 0, %x %cond = select i1 %cmp, i32 %x, i32 %sub %cmp1 = icmp slt i32 %cond, 1 %sub9 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %sub9, i32 %cond ret i32 %cond18 } => define i32 @abs_abs_x13(i32 %x) { %0: %1 = abs i32 %x, 1 ret i32 %1 } Transformation seems to be correct! ---------------------------------------- define i32 @abs_abs_x14(i32 %x) { %0: %cmp = icmp sgt i32 %x, 0 %sub = sub nsw i32 0, %x %cond = select i1 %cmp, i32 %x, i32 %sub %cmp1 = icmp slt i32 %cond, 1 %sub9 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %sub9, i32 %cond ret i32 %cond18 } => define i32 @abs_abs_x14(i32 %x) { %0: %1 = abs i32 %x, 1 ret i32 %1 } Transformation seems to be correct! ---------------------------------------- define i32 @abs_abs_x15(i32 %x) { %0: %cmp = icmp slt i32 %x, 0 %sub = sub nsw i32 0, %x %cond = select i1 %cmp, i32 %sub, i32 %x %cmp1 = icmp slt i32 %cond, 1 %sub9 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %sub9, i32 %cond ret i32 %cond18 } => define i32 @abs_abs_x15(i32 %x) { %0: %1 = abs i32 %x, 1 ret i32 %1 } Transformation seems to be correct! ---------------------------------------- define i32 @abs_abs_x16(i32 %x) { %0: %cmp = icmp slt i32 %x, 1 %sub = sub nsw i32 0, %x %cond = select i1 %cmp, i32 %sub, i32 %x %cmp1 = icmp slt i32 %cond, 1 %sub9 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %sub9, i32 %cond ret i32 %cond18 } => define i32 @abs_abs_x16(i32 %x) { %0: %1 = abs i32 %x, 1 ret i32 %1 } Transformation seems to be correct! ---------------------------------------- define i32 @abs_abs_x17(i32 %x) { %0: %sub = sub nsw i32 0, %x %cmp = icmp sgt i32 %sub, 4294967295 %cond = select i1 %cmp, i32 %sub, i32 %x %cmp1 = icmp sgt i32 %cond, 4294967295 %sub16 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %cond, i32 %sub16 ret i32 %cond18 } => define i32 @abs_abs_x17(i32 %x) { %0: %1 = abs i32 %x, 1 ret i32 %1 } Transformation seems to be correct! ---------------------------------------- define i32 @abs_abs_x18(i32 %x, i32 %y) { %0: %a = sub nsw i32 %x, %y %b = sub nsw i32 %y, %x %cmp = icmp sgt i32 %a, 4294967295 %cond = select i1 %cmp, i32 %a, i32 %b %cmp1 = icmp sgt i32 %cond, 4294967295 %sub16 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %cond, i32 %sub16 ret i32 %cond18 } => define i32 @abs_abs_x18(i32 %x, i32 %y) { %0: %a = sub nsw i32 %x, %y %1 = abs i32 %a, 0 ret i32 %1 } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define <2 x i32> @abs_abs_x02_vec(<2 x i32> %x) { %0: %sub = sub nsw <2 x i32> { 0, 0 }, %x %cmp = icmp sgt <2 x i32> %sub, { 4294967295, 4294967295 } %cond = select <2 x i1> %cmp, <2 x i32> %sub, <2 x i32> %x %cmp1 = icmp sgt <2 x i32> %cond, { 4294967295, 4294967295 } %sub16 = sub nsw <2 x i32> { 0, 0 }, %cond %cond18 = select <2 x i1> %cmp1, <2 x i32> %cond, <2 x i32> %sub16 ret <2 x i32> %cond18 } => define <2 x i32> @abs_abs_x02_vec(<2 x i32> %x) { %0: %1 = abs <2 x i32> %x, 1 ret <2 x i32> %1 } Transformation seems to be correct! ---------------------------------------- define <2 x i32> @abs_abs_x03_vec(<2 x i32> %x, <2 x i32> %y) { %0: %a = sub nsw <2 x i32> %x, %y %b = sub nsw <2 x i32> %y, %x %cmp = icmp sgt <2 x i32> %a, { 4294967295, 4294967295 } %cond = select <2 x i1> %cmp, <2 x i32> %a, <2 x i32> %b %cmp1 = icmp sgt <2 x i32> %cond, { 4294967295, 4294967295 } %sub16 = sub nsw <2 x i32> { 0, 0 }, %cond %cond18 = select <2 x i1> %cmp1, <2 x i32> %cond, <2 x i32> %sub16 ret <2 x i32> %cond18 } => define <2 x i32> @abs_abs_x03_vec(<2 x i32> %x, <2 x i32> %y) { %0: %a = sub nsw <2 x i32> %x, %y %1 = abs <2 x i32> %a, 0 ret <2 x i32> %1 } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i32 @nabs_nabs_x01(i32 %x) { %0: %cmp = icmp sgt i32 %x, 4294967295 %sub = sub nsw i32 0, %x %cond = select i1 %cmp, i32 %sub, i32 %x %cmp1 = icmp sgt i32 %cond, 4294967295 %sub9 = sub nsw i32 0, %cond %cond18 = select i1 %cmp1, i32 %sub9, i32 %cond ret i32 %cond18 } => define i32 @nabs_nabs_x01(i32 %x) { %0: %1 = abs i32 %x, 1 %cond = sub nsw i32 0, %1 ret i32 %cond } Transformation doesn't verify! ERROR: Target is more poisonous than source Example: i32 %x = #x80000000 (2147483648, -2147483648) Source: i1 %cmp = #x0 (0) i32 %sub = poison i32 %cond = #x80000000 (2147483648, -2147483648) i1 %cmp1 = #x0 (0) i32 %sub9 = poison i32 %cond18 = #x80000000 (2147483648, -2147483648) Target: i32 %1 = poison i32 %cond = poison Source value: #x80000000 (2147483648, -2147483648) Target value: poison ------------------- SMT STATS ------------------- Num queries: 86 Num invalid: 0 Num skips: 0 Num trivial: 66 (43.4%) Num timeout: 2 (2.3%) Num errors: 0 (0.0%) Num SAT: 24 (27.9%) Num UNSAT: 60 (69.8%)
+ : 'RUN: at line 2' + /home/nlopes/alive2/build/opt-alive.sh -instcombine -S + /home/nlopes/llvm/build/bin/FileCheck --allow-unused-prefixes=false /home/nlopes/llvm/llvm/test/Transforms/InstCombine/abs_abs.ll Alive2: Transform doesn't verify; aborting! FileCheck error: '<stdin>' is empty. FileCheck command line: /home/nlopes/llvm/build/bin/FileCheck --allow-unused-prefixes=false /home/nlopes/llvm/llvm/test/Transforms/InstCombine/abs_abs.ll