diff --git a/llvm/test/Transforms/InstCombine/vscale_extractelement-inseltpoison.ll b/llvm/test/Transforms/InstCombine/vscale_extractelement-inseltpoison.ll index 07ca96d44de213..ac4efe956beed6 100644 --- a/llvm/test/Transforms/InstCombine/vscale_extractelement-inseltpoison.ll +++ b/llvm/test/Transforms/InstCombine/vscale_extractelement-inseltpoison.ll @@ -55,16 +55,6 @@ define i8 @extractelement_bitcast_wrong_insert( %a, i32 %x) { ret i8 %r } -define i32 @extractelement_shuffle_in_range(i32 %v) { -; CHECK-LABEL: @extractelement_shuffle_in_range( -; CHECK-NEXT: ret i32 %v -; - %in = insertelement poison, i32 %v, i32 0 - %splat = shufflevector %in, poison, zeroinitializer - %r = extractelement %splat, i32 1 - ret i32 %r -} - define i32 @extractelement_shuffle_maybe_out_of_range(i32 %v) { ; CHECK-LABEL: @extractelement_shuffle_maybe_out_of_range( ; CHECK-NEXT: [[IN:%.*]] = insertelement poison, i32 [[V:%.*]], i32 0 @@ -91,20 +81,6 @@ define i32 @extractelement_shuffle_invalid_index(i32 %v) { ret i32 %r } - -define i32 @extractelement_shuffle_symbolic_index(i32 %v, i32 %idx) { -; CHECK-LABEL: @extractelement_shuffle_symbolic_index( -; CHECK-NEXT: [[IN:%.*]] = insertelement poison, i32 [[V:%.*]], i32 0 -; CHECK-NEXT: [[SPLAT:%.*]] = shufflevector [[IN]], poison, zeroinitializer -; CHECK-NEXT: [[R:%.*]] = extractelement [[SPLAT]], i32 [[IDX:%.*]] -; CHECK-NEXT: ret i32 [[R]] -; - %in = insertelement poison, i32 %v, i32 0 - %splat = shufflevector %in, poison, zeroinitializer - %r = extractelement %splat, i32 %idx - ret i32 %r -} - define @extractelement_insertelement_same_positions( %vec) { ; CHECK-LABEL: @extractelement_insertelement_same_positions( ; CHECK-NEXT: ret [[VEC:%.*]] diff --git a/llvm/test/Transforms/InstCombine/vscale_extractelement.ll b/llvm/test/Transforms/InstCombine/vscale_extractelement.ll index 0d7eb90b2d3a60..302f845c94748d 100644 --- a/llvm/test/Transforms/InstCombine/vscale_extractelement.ll +++ b/llvm/test/Transforms/InstCombine/vscale_extractelement.ll @@ -55,16 +55,6 @@ define i8 @extractelement_bitcast_wrong_insert( %a, i32 %x) { ret i8 %r } -define i32 @extractelement_shuffle_in_range(i32 %v) { -; CHECK-LABEL: @extractelement_shuffle_in_range( -; CHECK-NEXT: ret i32 %v -; - %in = insertelement undef, i32 %v, i32 0 - %splat = shufflevector %in, undef, zeroinitializer - %r = extractelement %splat, i32 1 - ret i32 %r -} - define i32 @extractelement_shuffle_maybe_out_of_range(i32 %v) { ; CHECK-LABEL: @extractelement_shuffle_maybe_out_of_range( ; CHECK-NEXT: [[IN:%.*]] = insertelement undef, i32 [[V:%.*]], i32 0 @@ -91,20 +81,6 @@ define i32 @extractelement_shuffle_invalid_index(i32 %v) { ret i32 %r } - -define i32 @extractelement_shuffle_symbolic_index(i32 %v, i32 %idx) { -; CHECK-LABEL: @extractelement_shuffle_symbolic_index( -; CHECK-NEXT: [[IN:%.*]] = insertelement undef, i32 [[V:%.*]], i32 0 -; CHECK-NEXT: [[SPLAT:%.*]] = shufflevector [[IN]], undef, zeroinitializer -; CHECK-NEXT: [[R:%.*]] = extractelement [[SPLAT]], i32 [[IDX:%.*]] -; CHECK-NEXT: ret i32 [[R]] -; - %in = insertelement undef, i32 %v, i32 0 - %splat = shufflevector %in, undef, zeroinitializer - %r = extractelement %splat, i32 %idx - ret i32 %r -} - define @extractelement_insertelement_same_positions( %vec) { ; CHECK-LABEL: @extractelement_insertelement_same_positions( ; CHECK-NEXT: ret [[VEC:%.*]] diff --git a/llvm/test/Transforms/InstSimplify/vscale-inseltpoison.ll b/llvm/test/Transforms/InstSimplify/vscale-inseltpoison.ll index 6ad1a2dca33e9b..a7739490ce7afa 100644 --- a/llvm/test/Transforms/InstSimplify/vscale-inseltpoison.ll +++ b/llvm/test/Transforms/InstSimplify/vscale-inseltpoison.ll @@ -197,3 +197,26 @@ define i1 @getelementptr_check_non_null(* %ptr) { %cmp = icmp eq * %x, null ret i1 %cmp } + +define i32 @extractelement_splat_constant_index(i32 %v) { +; CHECK-LABEL: @extractelement_splat_constant_index( +; CHECK-NEXT: ret i32 [[V:%.*]] +; + %in = insertelement poison, i32 %v, i32 0 + %splat = shufflevector %in, poison, zeroinitializer + %r = extractelement %splat, i32 1 + ret i32 %r +} + +define i32 @extractelement_splat_variable_index(i32 %v, i32 %idx) { +; CHECK-LABEL: @extractelement_splat_variable_index( +; CHECK-NEXT: [[IN:%.*]] = insertelement poison, i32 [[V:%.*]], i32 0 +; CHECK-NEXT: [[SPLAT:%.*]] = shufflevector [[IN]], undef, zeroinitializer +; CHECK-NEXT: [[R:%.*]] = extractelement [[SPLAT]], i32 [[IDX:%.*]] +; CHECK-NEXT: ret i32 [[R]] +; + %in = insertelement poison, i32 %v, i32 0 + %splat = shufflevector %in, undef, zeroinitializer + %r = extractelement %splat, i32 %idx + ret i32 %r +} diff --git a/llvm/test/Transforms/InstSimplify/vscale.ll b/llvm/test/Transforms/InstSimplify/vscale.ll index 4cf6f5dc582898..108a9bb7726a27 100644 --- a/llvm/test/Transforms/InstSimplify/vscale.ll +++ b/llvm/test/Transforms/InstSimplify/vscale.ll @@ -197,3 +197,26 @@ define i1 @getelementptr_check_non_null(* %ptr) { %cmp = icmp eq * %x, null ret i1 %cmp } + +define i32 @extractelement_splat_constant_index(i32 %v) { +; CHECK-LABEL: @extractelement_splat_constant_index( +; CHECK-NEXT: ret i32 [[V:%.*]] +; + %in = insertelement undef, i32 %v, i32 0 + %splat = shufflevector %in, poison, zeroinitializer + %r = extractelement %splat, i32 1 + ret i32 %r +} + +define i32 @extractelement_splat_variable_index(i32 %v, i32 %idx) { +; CHECK-LABEL: @extractelement_splat_variable_index( +; CHECK-NEXT: [[IN:%.*]] = insertelement undef, i32 [[V:%.*]], i32 0 +; CHECK-NEXT: [[SPLAT:%.*]] = shufflevector [[IN]], undef, zeroinitializer +; CHECK-NEXT: [[R:%.*]] = extractelement [[SPLAT]], i32 [[IDX:%.*]] +; CHECK-NEXT: ret i32 [[R]] +; + %in = insertelement undef, i32 %v, i32 0 + %splat = shufflevector %in, undef, zeroinitializer + %r = extractelement %splat, i32 %idx + ret i32 %r +}