Test source: git
Source: <stdin> ---------------------------------------- define i32 @fshl_i32_constant(i32 %x, i32 %y) { %0: %shl = shl i32 %x, 11 %shr = lshr i32 %y, 21 %r = or i32 %shr, %shl ret i32 %r } => define i32 @fshl_i32_constant(i32 %x, i32 %y) { %0: %r = fshl i32 %x, i32 %y, i32 11 ret i32 %r } Transformation seems to be correct! ---------------------------------------- define i42 @fshr_i42_constant(i42 %x, i42 %y) { %0: %shr = lshr i42 %x, 31 %shl = shl i42 %y, 11 %r = or i42 %shr, %shl ret i42 %r } => define i42 @fshr_i42_constant(i42 %x, i42 %y) { %0: %r = fshl i42 %y, i42 %x, i42 11 ret i42 %r } Transformation seems to be correct! ---------------------------------------- define <2 x i16> @fshl_v2i16_constant_splat(<2 x i16> %x, <2 x i16> %y) { %0: %shl = shl <2 x i16> %x, { 1, 1 } %shr = lshr <2 x i16> %y, { 15, 15 } %r = or <2 x i16> %shl, %shr ret <2 x i16> %r } => define <2 x i16> @fshl_v2i16_constant_splat(<2 x i16> %x, <2 x i16> %y) { %0: %r = fshl <2 x i16> %x, <2 x i16> %y, <2 x i16> { 1, 1 } ret <2 x i16> %r } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define <2 x i16> @fshl_v2i16_constant_splat_undef0(<2 x i16> %x, <2 x i16> %y) { %0: %shl = shl <2 x i16> %x, { undef, 1 } %shr = lshr <2 x i16> %y, { 15, 15 } %r = or <2 x i16> %shl, %shr ret <2 x i16> %r } => define <2 x i16> @fshl_v2i16_constant_splat_undef0(<2 x i16> %x, <2 x i16> %y) { %0: %r = fshl <2 x i16> %x, <2 x i16> %y, <2 x i16> { 1, 1 } ret <2 x i16> %r } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define <2 x i16> @fshl_v2i16_constant_splat_undef1(<2 x i16> %x, <2 x i16> %y) { %0: %shl = shl <2 x i16> %x, { 1, 1 } %shr = lshr <2 x i16> %y, { 15, undef } %r = or <2 x i16> %shl, %shr ret <2 x i16> %r } => define <2 x i16> @fshl_v2i16_constant_splat_undef1(<2 x i16> %x, <2 x i16> %y) { %0: %r = fshl <2 x i16> %x, <2 x i16> %y, <2 x i16> { 1, 1 } ret <2 x i16> %r } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define <2 x i17> @fshr_v2i17_constant_splat(<2 x i17> %x, <2 x i17> %y) { %0: %shr = lshr <2 x i17> %x, { 12, 12 } %shl = shl <2 x i17> %y, { 5, 5 } %r = or <2 x i17> %shr, %shl ret <2 x i17> %r } => define <2 x i17> @fshr_v2i17_constant_splat(<2 x i17> %x, <2 x i17> %y) { %0: %r = fshl <2 x i17> %y, <2 x i17> %x, <2 x i17> { 5, 5 } ret <2 x i17> %r } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define <2 x i17> @fshr_v2i17_constant_splat_undef0(<2 x i17> %x, <2 x i17> %y) { %0: %shr = lshr <2 x i17> %x, { 12, undef } %shl = shl <2 x i17> %y, { undef, 5 } %r = or <2 x i17> %shr, %shl ret <2 x i17> %r } => define <2 x i17> @fshr_v2i17_constant_splat_undef0(<2 x i17> %x, <2 x i17> %y) { %0: %r = fshl <2 x i17> %y, <2 x i17> %x, <2 x i17> { 5, 5 } ret <2 x i17> %r } Transformation seems to be correct! ---------------------------------------- define <2 x i17> @fshr_v2i17_constant_splat_undef1(<2 x i17> %x, <2 x i17> %y) { %0: %shr = lshr <2 x i17> %x, { 12, undef } %shl = shl <2 x i17> %y, { 5, undef } %r = or <2 x i17> %shr, %shl ret <2 x i17> %r } => define <2 x i17> @fshr_v2i17_constant_splat_undef1(<2 x i17> %x, <2 x i17> %y) { %0: %r = fshl <2 x i17> %y, <2 x i17> %x, <2 x i17> { 5, 5 } ret <2 x i17> %r } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define <2 x i32> @fshr_v2i32_constant_nonsplat(<2 x i32> %x, <2 x i32> %y) { %0: %shr = lshr <2 x i32> %x, { 17, 19 } %shl = shl <2 x i32> %y, { 15, 13 } %r = or <2 x i32> %shl, %shr ret <2 x i32> %r } => define <2 x i32> @fshr_v2i32_constant_nonsplat(<2 x i32> %x, <2 x i32> %y) { %0: %r = fshl <2 x i32> %y, <2 x i32> %x, <2 x i32> { 15, 13 } ret <2 x i32> %r } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define <2 x i32> @fshr_v2i32_constant_nonsplat_undef0(<2 x i32> %x, <2 x i32> %y) { %0: %shr = lshr <2 x i32> %x, { undef, 19 } %shl = shl <2 x i32> %y, { 15, 13 } %r = or <2 x i32> %shl, %shr ret <2 x i32> %r } => define <2 x i32> @fshr_v2i32_constant_nonsplat_undef0(<2 x i32> %x, <2 x i32> %y) { %0: %shr = lshr <2 x i32> %x, { undef, 19 } %shl = shl <2 x i32> %y, { 15, 13 } %r = or <2 x i32> %shl, %shr ret <2 x i32> %r } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define <2 x i32> @fshr_v2i32_constant_nonsplat_undef1(<2 x i32> %x, <2 x i32> %y) { %0: %shr = lshr <2 x i32> %x, { 17, 19 } %shl = shl <2 x i32> %y, { 15, undef } %r = or <2 x i32> %shl, %shr ret <2 x i32> %r } => define <2 x i32> @fshr_v2i32_constant_nonsplat_undef1(<2 x i32> %x, <2 x i32> %y) { %0: %shr = lshr <2 x i32> %x, { 17, 19 } %shl = shl <2 x i32> %y, { 15, undef } %r = or <2 x i32> %shl, %shr ret <2 x i32> %r } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define <2 x i36> @fshl_v2i36_constant_nonsplat(<2 x i36> %x, <2 x i36> %y) { %0: %shl = shl <2 x i36> %x, { 21, 11 } %shr = lshr <2 x i36> %y, { 15, 25 } %r = or <2 x i36> %shl, %shr ret <2 x i36> %r } => define <2 x i36> @fshl_v2i36_constant_nonsplat(<2 x i36> %x, <2 x i36> %y) { %0: %r = fshl <2 x i36> %x, <2 x i36> %y, <2 x i36> { 21, 11 } ret <2 x i36> %r } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define <3 x i36> @fshl_v3i36_constant_nonsplat_undef0(<3 x i36> %x, <3 x i36> %y) { %0: %shl = shl <3 x i36> %x, { 21, 11, undef } %shr = lshr <3 x i36> %y, { 15, 25, undef } %r = or <3 x i36> %shl, %shr ret <3 x i36> %r } => define <3 x i36> @fshl_v3i36_constant_nonsplat_undef0(<3 x i36> %x, <3 x i36> %y) { %0: %shl = shl <3 x i36> %x, { 21, 11, undef } %shr = lshr <3 x i36> %y, { 15, 25, undef } %r = or <3 x i36> %shl, %shr ret <3 x i36> %r } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i64 @fshl_sub_mask(i64 %x, i64 %y, i64 %a) { %0: %mask = and i64 %a, 63 %shl = shl i64 %x, %mask %sub = sub nsw nuw i64 64, %mask %shr = lshr i64 %y, %sub %r = or i64 %shl, %shr ret i64 %r } => define i64 @fshl_sub_mask(i64 %x, i64 %y, i64 %a) { %0: %r = fshl i64 %x, i64 %y, i64 %a ret i64 %r } Transformation seems to be correct! ---------------------------------------- define i64 @fshr_sub_mask(i64 %x, i64 %y, i64 %a) { %0: %mask = and i64 %a, 63 %shr = lshr i64 %x, %mask %sub = sub nsw nuw i64 64, %mask %shl = shl i64 %y, %sub %r = or i64 %shl, %shr ret i64 %r } => define i64 @fshr_sub_mask(i64 %x, i64 %y, i64 %a) { %0: %r = fshr i64 %x, i64 %y, i64 %a ret i64 %r } Transformation doesn't verify! ERROR: Value mismatch Example: i64 %x = #x0000100000000000 (17592186044416) i64 %y = #x0000000000000000 (0) i64 %a = #x0000000000000027 (39) Source: i64 %mask = #x0000000000000027 (39) i64 %shr = #x0000000000000020 (32) i64 %sub = #x0000000000000019 (25) i64 %shl = #x0000000000000000 (0) i64 %r = #x0000000000000020 (32) Target: i64 %r = #x0000000000000000 (0) Source value: #x0000000000000020 (32) Target value: #x0000000000000000 (0) ------------------- SMT STATS ------------------- Num queries: 57 Num invalid: 0 Num skips: 0 Num trivial: 37 (39.4%) Num timeout: 10 (17.5%) Num errors: 0 (0.0%) Num SAT: 16 (28.1%) Num UNSAT: 31 (54.4%)
+ : 'RUN: at line 2' + /home/nlopes/alive2/scripts/opt-alive.sh -instcombine -S + /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/InstCombine/funnel.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/funnel.ll