diff --git a/llvm/test/Transforms/InstCombine/insertelement.ll b/llvm/test/Transforms/InstCombine/insertelement.ll new file mode 100644 index 00000000000000..976c495465ce47 --- /dev/null +++ b/llvm/test/Transforms/InstCombine/insertelement.ll @@ -0,0 +1,27 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py +; RUN: opt < %s -passes=instcombine -S | FileCheck %s + +define <4 x i32> @insert_known_idx(<4 x i32> %x) { +; CHECK-LABEL: @insert_known_idx( +; CHECK-NEXT: [[V1:%.*]] = and <4 x i32> [[X:%.*]], +; CHECK-NEXT: [[V2:%.*]] = insertelement <4 x i32> [[V1]], i32 6, i64 0 +; CHECK-NEXT: ret <4 x i32> [[V2]] +; + %v1 = and <4 x i32> %x, + %v2 = insertelement <4 x i32> %v1, i32 6, i32 0 + %v3 = and <4 x i32> %v2, + ret <4 x i32> %v3 +} + +define <4 x i32> @insert_unknown_idx(<4 x i32> %x, i32 %idx) { +; CHECK-LABEL: @insert_unknown_idx( +; CHECK-NEXT: [[V1:%.*]] = and <4 x i32> [[X:%.*]], +; CHECK-NEXT: [[V2:%.*]] = insertelement <4 x i32> [[V1]], i32 6, i32 [[IDX:%.*]] +; CHECK-NEXT: [[V3:%.*]] = and <4 x i32> [[V2]], +; CHECK-NEXT: ret <4 x i32> [[V3]] +; + %v1 = and <4 x i32> %x, + %v2 = insertelement <4 x i32> %v1, i32 6, i32 %idx + %v3 = and <4 x i32> %v2, + ret <4 x i32> %v3 +}