mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-23 22:00:10 +00:00
[InstCombine] Add created extracts to worklist
Use InstCombine's insertion helper for the created extracts, so they become part of the worklist and will be revisited.
This commit is contained in:
parent
589c940eb3
commit
ab94c1bad3
@ -748,7 +748,7 @@ static bool replaceExtractElements(InsertElementInst *InsElt,
|
||||
if (!OldExt || OldExt->getParent() != WideVec->getParent())
|
||||
continue;
|
||||
auto *NewExt = ExtractElementInst::Create(WideVec, OldExt->getOperand(1));
|
||||
NewExt->insertAfter(OldExt);
|
||||
IC.InsertNewInstWith(NewExt, *OldExt);
|
||||
IC.replaceInstUsesWith(*OldExt, NewExt);
|
||||
// Add the old extracts to the worklist for DCE. We can't remove the
|
||||
// extracts directly, because they may still be used by the calling code.
|
||||
|
@ -316,7 +316,7 @@ define float @bitcasted_inselt_to_and_from_FP_uses2(double %x) {
|
||||
define <4 x double> @invalid_extractelement(<2 x double> %a, <4 x double> %b, ptr %p) {
|
||||
; ANY-LABEL: @invalid_extractelement(
|
||||
; ANY-NEXT: [[TMP1:%.*]] = shufflevector <2 x double> [[A:%.*]], <2 x double> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>
|
||||
; ANY-NEXT: [[T4:%.*]] = shufflevector <4 x double> [[B:%.*]], <4 x double> [[TMP1]], <4 x i32> <i32 poison, i32 1, i32 4, i32 3>
|
||||
; ANY-NEXT: [[T4:%.*]] = shufflevector <4 x double> [[B:%.*]], <4 x double> [[TMP1]], <4 x i32> <i32 0, i32 1, i32 4, i32 3>
|
||||
; ANY-NEXT: [[E:%.*]] = extractelement <4 x double> [[B]], i64 1
|
||||
; ANY-NEXT: store double [[E]], ptr [[P:%.*]], align 8
|
||||
; ANY-NEXT: ret <4 x double> [[T4]]
|
||||
|
@ -318,7 +318,7 @@ define float @bitcasted_inselt_to_and_from_FP_uses2(double %x) {
|
||||
define <4 x double> @invalid_extractelement(<2 x double> %a, <4 x double> %b, ptr %p) {
|
||||
; ANY-LABEL: @invalid_extractelement(
|
||||
; ANY-NEXT: [[TMP1:%.*]] = shufflevector <2 x double> [[A:%.*]], <2 x double> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>
|
||||
; ANY-NEXT: [[T4:%.*]] = shufflevector <4 x double> [[B:%.*]], <4 x double> [[TMP1]], <4 x i32> <i32 poison, i32 1, i32 4, i32 3>
|
||||
; ANY-NEXT: [[T4:%.*]] = shufflevector <4 x double> [[B:%.*]], <4 x double> [[TMP1]], <4 x i32> <i32 0, i32 1, i32 4, i32 3>
|
||||
; ANY-NEXT: [[E:%.*]] = extractelement <4 x double> [[B]], i64 1
|
||||
; ANY-NEXT: store double [[E]], ptr [[P:%.*]], align 8
|
||||
; ANY-NEXT: ret <4 x double> [[T4]]
|
||||
|
Loading…
Reference in New Issue
Block a user