Skip to content

Commit 7eeeeb0

Browse files
committed
Revert "[GlobalISel][AArch64] Combine unmerge(G_EXT v, undef) to unmerge(v)."
This reverts commit 6b37a65. Accindentally pushed before squashing.
1 parent bb1a03d commit 7eeeeb0

File tree

6 files changed

+64
-244
lines changed

6 files changed

+64
-244
lines changed

llvm/lib/Target/AArch64/AArch64Combine.td

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -206,14 +206,6 @@ def vector_sext_inreg_to_shift : GICombineRule<
206206
(apply [{ applyVectorSextInReg(*${d}, MRI, B, Observer); }])
207207
>;
208208

209-
def unmerge_ext_to_unmerge_matchdata : GIDefMatchData<"Register">;
210-
def unmerge_ext_to_unmerge : GICombineRule<
211-
(defs root:$d, unmerge_ext_to_unmerge_matchdata:$matchinfo),
212-
(match (wip_match_opcode G_UNMERGE_VALUES):$d,
213-
[{ return matchUnmergeExtToUnmerge(*${d}, MRI, ${matchinfo}); }]),
214-
(apply [{ applyUnmergeExtToUnmerge(*${d}, MRI, B, Observer, ${matchinfo}); }])
215-
>;
216-
217209
// Post-legalization combines which should happen at all optimization levels.
218210
// (E.g. ones that facilitate matching for the selector) For example, matching
219211
// pseudos.
@@ -222,8 +214,7 @@ def AArch64PostLegalizerLowering
222214
[shuffle_vector_lowering, vashr_vlshr_imm,
223215
icmp_lowering, build_vector_lowering,
224216
lower_vector_fcmp, form_truncstore,
225-
vector_sext_inreg_to_shift,
226-
unmerge_ext_to_unmerge]> {
217+
vector_sext_inreg_to_shift]> {
227218
}
228219

229220
// Post-legalization combines which are primarily optimizations.

llvm/lib/Target/AArch64/GISel/AArch64PostLegalizerLowering.cpp

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,50 +1066,6 @@ void applyVectorSextInReg(MachineInstr &MI, MachineRegisterInfo &MRI,
10661066
Helper.lower(MI, 0, /* Unused hint type */ LLT());
10671067
}
10681068

1069-
/// Combine <N x t>, unused = unmerge(G_EXT <2*N x t> v, undef, N)
1070-
/// => unused, <N x t> = unmerge v
1071-
bool matchUnmergeExtToUnmerge(MachineInstr &MI, MachineRegisterInfo &MRI,
1072-
Register &MatchInfo) {
1073-
auto &Unmerge = cast<GUnmerge>(MI);
1074-
if (Unmerge.getNumDefs() != 2)
1075-
return false;
1076-
if (!MRI.use_nodbg_empty(Unmerge.getReg(1)))
1077-
return false;
1078-
1079-
LLT DstTy = MRI.getType(Unmerge.getReg(0));
1080-
if (!DstTy.isVector())
1081-
return false;
1082-
1083-
MachineInstr *Ext = getOpcodeDef(AArch64::G_EXT, Unmerge.getSourceReg(), MRI);
1084-
if (!Ext)
1085-
return false;
1086-
1087-
Register ExtSrc1 = Ext->getOperand(1).getReg();
1088-
Register ExtSrc2 = Ext->getOperand(2).getReg();
1089-
auto LowestVal =
1090-
getIConstantVRegValWithLookThrough(Ext->getOperand(3).getReg(), MRI);
1091-
if (!LowestVal || LowestVal->Value.getZExtValue() != DstTy.getSizeInBytes())
1092-
return false;
1093-
1094-
if (!getOpcodeDef<GImplicitDef>(ExtSrc2, MRI))
1095-
return false;
1096-
1097-
MatchInfo = ExtSrc1;
1098-
return true;
1099-
}
1100-
1101-
void applyUnmergeExtToUnmerge(MachineInstr &MI, MachineRegisterInfo &MRI,
1102-
MachineIRBuilder &B,
1103-
GISelChangeObserver &Observer, Register &SrcReg) {
1104-
Observer.changingInstr(MI);
1105-
// Swap dst registers.
1106-
Register Dst1 = MI.getOperand(0).getReg();
1107-
MI.getOperand(0).setReg(MI.getOperand(1).getReg());
1108-
MI.getOperand(1).setReg(Dst1);
1109-
MI.getOperand(2).setReg(SrcReg);
1110-
Observer.changedInstr(MI);
1111-
}
1112-
11131069
class AArch64PostLegalizerLoweringImpl : public Combiner {
11141070
protected:
11151071
// TODO: Make CombinerHelper methods const.

llvm/test/CodeGen/AArch64/GlobalISel/postlegalizer-lowering-unmerge-ext.mir

Lines changed: 0 additions & 154 deletions
This file was deleted.

llvm/test/CodeGen/AArch64/arm64-neon-add-pairwise.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ define i32 @addp_v4i32(<4 x i32> %a, <4 x i32> %b) {
137137
; CHECK-GI-LABEL: addp_v4i32:
138138
; CHECK-GI: // %bb.0:
139139
; CHECK-GI-NEXT: add v0.4s, v0.4s, v1.4s
140-
; CHECK-GI-NEXT: mov d1, v0.d[1]
140+
; CHECK-GI-NEXT: ext v1.16b, v0.16b, v0.16b, #8
141141
; CHECK-GI-NEXT: addp v0.2s, v0.2s, v1.2s
142142
; CHECK-GI-NEXT: rev64 v1.2s, v0.2s
143143
; CHECK-GI-NEXT: add v0.2s, v0.2s, v1.2s
@@ -164,7 +164,7 @@ define <4 x i16> @addp_v8i16(<8 x i16> %a, <8 x i16> %b) {
164164
; CHECK-GI-LABEL: addp_v8i16:
165165
; CHECK-GI: // %bb.0:
166166
; CHECK-GI-NEXT: add v0.8h, v0.8h, v1.8h
167-
; CHECK-GI-NEXT: mov d1, v0.d[1]
167+
; CHECK-GI-NEXT: ext v1.16b, v0.16b, v0.16b, #8
168168
; CHECK-GI-NEXT: addp v0.4h, v0.4h, v1.4h
169169
; CHECK-GI-NEXT: ret
170170
%1 = add <8 x i16> %a, %b
@@ -185,7 +185,7 @@ define <8 x i8> @addp_v16i8(<16 x i8> %a, <16 x i8> %b) {
185185
; CHECK-GI-LABEL: addp_v16i8:
186186
; CHECK-GI: // %bb.0:
187187
; CHECK-GI-NEXT: add v0.16b, v0.16b, v1.16b
188-
; CHECK-GI-NEXT: mov d1, v0.d[1]
188+
; CHECK-GI-NEXT: ext v1.16b, v0.16b, v0.16b, #8
189189
; CHECK-GI-NEXT: addp v0.8b, v0.8b, v1.8b
190190
; CHECK-GI-NEXT: ret
191191
%1 = add <16 x i8> %a, %b

0 commit comments

Comments
 (0)