diff options
Diffstat (limited to 'llvm/test/Transforms/InstCombine/or.ll')
| -rw-r--r-- | llvm/test/Transforms/InstCombine/or.ll | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/or.ll b/llvm/test/Transforms/InstCombine/or.ll index 6ae52d45426..96907cf2bd5 100644 --- a/llvm/test/Transforms/InstCombine/or.ll +++ b/llvm/test/Transforms/InstCombine/or.ll @@ -828,3 +828,15 @@ define i1 @orn_and_cmp_4(i32 %a, i32 %b, i32 %c) { %or = or i1 %and, %x_inv ret i1 %or } + +; The constant vectors are inverses. Make sure we can turn this into a select without crashing trying to truncate the constant to 16xi1. +define <16 x i1> @test51(<16 x i1> %arg, <16 x i1> %arg1) { +; CHECK-LABEL: @test51( +; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <16 x i1> [[ARG:%.*]], <16 x i1> [[ARG1:%.*]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 20, i32 5, i32 6, i32 23, i32 24, i32 9, i32 10, i32 27, i32 28, i32 29, i32 30, i32 31> +; CHECK-NEXT: ret <16 x i1> [[TMP1]] +; + %tmp = and <16 x i1> %arg, <i1 true, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 false, i1 false, i1 true, i1 true, i1 false, i1 false, i1 false, i1 false, i1 false> + %tmp2 = and <16 x i1> %arg1, <i1 false, i1 false, i1 false, i1 false, i1 true, i1 false, i1 false, i1 true, i1 true, i1 false, i1 false, i1 true, i1 true, i1 true, i1 true, i1 true> + %tmp3 = or <16 x i1> %tmp, %tmp2 + ret <16 x i1> %tmp3 +} |

