Skip to content

Commit 6155fa6

Browse files
committed
[X86] X86FixupVectorConstantsPass - pull out the hasAVX2() test and use single ConvertToBroadcast call. NFC.
Matches AVX512 ConvertToBroadcast calls and makes it easier to add extension support in the future.
1 parent a0989a7 commit 6155fa6

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

llvm/lib/Target/X86/X86FixupVectorConstants.cpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// This file examines all full size vector constant pool loads and attempts to
1010
// replace them with smaller constant pool entries, including:
1111
// * Converting AVX512 memory-fold instructions to their broadcast-fold form
12-
// * TODO: Broadcasting of full width loads.
12+
// * Broadcasting of full width loads.
1313
// * TODO: Sign/Zero extension of full width loads.
1414
//
1515
//===----------------------------------------------------------------------===//
@@ -230,6 +230,7 @@ bool X86FixupVectorConstantsPass::processInstruction(MachineFunction &MF,
230230
MachineInstr &MI) {
231231
unsigned Opc = MI.getOpcode();
232232
MachineConstantPool *CP = MI.getParent()->getParent()->getConstantPool();
233+
bool HasAVX2 = ST->hasAVX2();
233234
bool HasDQI = ST->hasDQI();
234235
bool HasBWI = ST->hasBWI();
235236

@@ -309,19 +310,19 @@ bool X86FixupVectorConstantsPass::processInstruction(MachineFunction &MF,
309310
/* Integer Loads */
310311
case X86::VMOVDQArm:
311312
case X86::VMOVDQUrm:
312-
if (ST->hasAVX2())
313-
return ConvertToBroadcast(0, 0, X86::VPBROADCASTQrm, X86::VPBROADCASTDrm,
314-
X86::VPBROADCASTWrm, X86::VPBROADCASTBrm, 1);
315-
return ConvertToBroadcast(0, 0, X86::VMOVDDUPrm, X86::VBROADCASTSSrm, 0, 0,
316-
1);
313+
return ConvertToBroadcast(
314+
0, 0, HasAVX2 ? X86::VPBROADCASTQrm : X86::VMOVDDUPrm,
315+
HasAVX2 ? X86::VPBROADCASTDrm : X86::VBROADCASTSSrm,
316+
HasAVX2 ? X86::VPBROADCASTWrm : 0, HasAVX2 ? X86::VPBROADCASTBrm : 0,
317+
1);
317318
case X86::VMOVDQAYrm:
318319
case X86::VMOVDQUYrm:
319-
if (ST->hasAVX2())
320-
return ConvertToBroadcast(0, X86::VBROADCASTI128, X86::VPBROADCASTQYrm,
321-
X86::VPBROADCASTDYrm, X86::VPBROADCASTWYrm,
322-
X86::VPBROADCASTBYrm, 1);
323-
return ConvertToBroadcast(0, X86::VBROADCASTF128, X86::VBROADCASTSDYrm,
324-
X86::VBROADCASTSSYrm, 0, 0, 1);
320+
return ConvertToBroadcast(
321+
0, HasAVX2 ? X86::VBROADCASTI128 : X86::VBROADCASTF128,
322+
HasAVX2 ? X86::VPBROADCASTQYrm : X86::VBROADCASTSDYrm,
323+
HasAVX2 ? X86::VPBROADCASTDYrm : X86::VBROADCASTSSYrm,
324+
HasAVX2 ? X86::VPBROADCASTWYrm : 0, HasAVX2 ? X86::VPBROADCASTBYrm : 0,
325+
1);
325326
case X86::VMOVDQA32Z128rm:
326327
case X86::VMOVDQA64Z128rm:
327328
case X86::VMOVDQU32Z128rm:

0 commit comments

Comments
 (0)