Skip to content

Commit 1695536

Browse files
committed
[X86][NFC] Remove TB_FOLDED_BCAST and format code in X86InstrFoldTables.cpp
1 parent 70f5b22 commit 1695536

File tree

3 files changed

+31
-38
lines changed

3 files changed

+31
-38
lines changed

llvm/include/llvm/Support/X86FoldTablesUtils.h

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,27 +31,26 @@ enum {
3131

3232
TB_FOLDED_LOAD = 1 << 5,
3333
TB_FOLDED_STORE = 1 << 6,
34-
TB_FOLDED_BCAST = 1 << 7,
3534

3635
// Minimum alignment required for load/store.
3736
// Used for RegOp->MemOp conversion. Encoded as Log2(Align)
38-
// (stored in bits 9 - 11)
39-
TB_ALIGN_SHIFT = 8,
37+
// (stored in bits 8 - 10)
38+
TB_ALIGN_SHIFT = 7,
4039
TB_ALIGN_1 = 0 << TB_ALIGN_SHIFT,
4140
TB_ALIGN_16 = 4 << TB_ALIGN_SHIFT,
4241
TB_ALIGN_32 = 5 << TB_ALIGN_SHIFT,
4342
TB_ALIGN_64 = 6 << TB_ALIGN_SHIFT,
4443
TB_ALIGN_MASK = 0x7 << TB_ALIGN_SHIFT,
4544

4645
// Broadcast type.
47-
// (stored in bits 12 - 14)
46+
// (stored in bits 11 - 13)
4847
TB_BCAST_TYPE_SHIFT = TB_ALIGN_SHIFT + 3,
49-
TB_BCAST_W = 0 << TB_BCAST_TYPE_SHIFT,
50-
TB_BCAST_D = 1 << TB_BCAST_TYPE_SHIFT,
51-
TB_BCAST_Q = 2 << TB_BCAST_TYPE_SHIFT,
52-
TB_BCAST_SS = 3 << TB_BCAST_TYPE_SHIFT,
53-
TB_BCAST_SD = 4 << TB_BCAST_TYPE_SHIFT,
54-
TB_BCAST_SH = 5 << TB_BCAST_TYPE_SHIFT,
48+
TB_BCAST_W = 1 << TB_BCAST_TYPE_SHIFT,
49+
TB_BCAST_D = 2 << TB_BCAST_TYPE_SHIFT,
50+
TB_BCAST_Q = 3 << TB_BCAST_TYPE_SHIFT,
51+
TB_BCAST_SS = 4 << TB_BCAST_TYPE_SHIFT,
52+
TB_BCAST_SD = 5 << TB_BCAST_TYPE_SHIFT,
53+
TB_BCAST_SH = 6 << TB_BCAST_TYPE_SHIFT,
5554
TB_BCAST_MASK = 0x7 << TB_BCAST_TYPE_SHIFT,
5655

5756
// Unused bits 15-16

llvm/lib/Target/X86/X86InstrFoldTables.cpp

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -121,13 +121,11 @@ lookupFoldTableImpl(ArrayRef<X86FoldTableEntry> Table, unsigned RegOp) {
121121
return nullptr;
122122
}
123123

124-
const X86FoldTableEntry *
125-
llvm::lookupTwoAddrFoldTable(unsigned RegOp) {
124+
const X86FoldTableEntry *llvm::lookupTwoAddrFoldTable(unsigned RegOp) {
126125
return lookupFoldTableImpl(Table2Addr, RegOp);
127126
}
128127

129-
const X86FoldTableEntry *
130-
llvm::lookupFoldTable(unsigned RegOp, unsigned OpNum) {
128+
const X86FoldTableEntry *llvm::lookupFoldTable(unsigned RegOp, unsigned OpNum) {
131129
ArrayRef<X86FoldTableEntry> FoldTable;
132130
if (OpNum == 0)
133131
FoldTable = ArrayRef(Table0);
@@ -181,19 +179,19 @@ struct X86MemUnfoldTable {
181179
// Broadcast tables.
182180
for (const X86FoldTableEntry &Entry : BroadcastTable1)
183181
// Index 1, folded broadcast
184-
addTableEntry(Entry, TB_INDEX_1 | TB_FOLDED_LOAD | TB_FOLDED_BCAST);
182+
addTableEntry(Entry, TB_INDEX_1 | TB_FOLDED_LOAD);
185183

186184
for (const X86FoldTableEntry &Entry : BroadcastTable2)
187185
// Index 2, folded broadcast
188-
addTableEntry(Entry, TB_INDEX_2 | TB_FOLDED_LOAD | TB_FOLDED_BCAST);
186+
addTableEntry(Entry, TB_INDEX_2 | TB_FOLDED_LOAD);
189187

190188
for (const X86FoldTableEntry &Entry : BroadcastTable3)
191189
// Index 3, folded broadcast
192-
addTableEntry(Entry, TB_INDEX_3 | TB_FOLDED_LOAD | TB_FOLDED_BCAST);
190+
addTableEntry(Entry, TB_INDEX_3 | TB_FOLDED_LOAD);
193191

194192
for (const X86FoldTableEntry &Entry : BroadcastTable4)
195193
// Index 4, folded broadcast
196-
addTableEntry(Entry, TB_INDEX_4 | TB_FOLDED_LOAD | TB_FOLDED_BCAST);
194+
addTableEntry(Entry, TB_INDEX_4 | TB_FOLDED_LOAD);
197195

198196
// Sort the memory->reg unfold table.
199197
array_pod_sort(Table.begin(), Table.end());
@@ -203,18 +201,16 @@ struct X86MemUnfoldTable {
203201
"Memory unfolding table is not unique!");
204202
}
205203

206-
void addTableEntry(const X86FoldTableEntry &Entry,
207-
uint16_t ExtraFlags) {
204+
void addTableEntry(const X86FoldTableEntry &Entry, uint16_t ExtraFlags) {
208205
// NOTE: This swaps the KeyOp and DstOp in the table so we can sort it.
209206
if ((Entry.Flags & TB_NO_REVERSE) == 0)
210207
Table.push_back({Entry.DstOp, Entry.KeyOp,
211-
static_cast<uint16_t>(Entry.Flags | ExtraFlags) });
208+
static_cast<uint16_t>(Entry.Flags | ExtraFlags)});
212209
}
213210
};
214-
}
211+
} // namespace
215212

216-
const X86FoldTableEntry *
217-
llvm::lookupUnfoldTable(unsigned MemOp) {
213+
const X86FoldTableEntry *llvm::lookupUnfoldTable(unsigned MemOp) {
218214
static X86MemUnfoldTable MemUnfoldTable;
219215
auto &Table = MemUnfoldTable.Table;
220216
auto I = llvm::lower_bound(Table, MemOp);
@@ -238,8 +234,8 @@ struct X86BroadcastFoldTable {
238234
unsigned BcstOp = Reg2Bcst.DstOp;
239235
if (const X86FoldTableEntry *Reg2Mem = lookupFoldTable(RegOp, 2)) {
240236
unsigned MemOp = Reg2Mem->DstOp;
241-
uint16_t Flags = Reg2Mem->Flags | Reg2Bcst.Flags | TB_INDEX_2 |
242-
TB_FOLDED_LOAD | TB_FOLDED_BCAST;
237+
uint16_t Flags =
238+
Reg2Mem->Flags | Reg2Bcst.Flags | TB_INDEX_2 | TB_FOLDED_LOAD;
243239
Table.push_back({MemOp, BcstOp, Flags});
244240
}
245241
}
@@ -248,8 +244,8 @@ struct X86BroadcastFoldTable {
248244
unsigned BcstOp = Reg2Bcst.DstOp;
249245
if (const X86FoldTableEntry *Reg2Mem = lookupFoldTable(RegOp, 2)) {
250246
unsigned MemOp = Reg2Mem->DstOp;
251-
uint16_t Flags = Reg2Mem->Flags | Reg2Bcst.Flags | TB_INDEX_2 |
252-
TB_FOLDED_LOAD | TB_FOLDED_BCAST;
247+
uint16_t Flags =
248+
Reg2Mem->Flags | Reg2Bcst.Flags | TB_INDEX_2 | TB_FOLDED_LOAD;
253249
Table.push_back({MemOp, BcstOp, Flags});
254250
}
255251
}
@@ -259,8 +255,8 @@ struct X86BroadcastFoldTable {
259255
unsigned BcstOp = Reg2Bcst.DstOp;
260256
if (const X86FoldTableEntry *Reg2Mem = lookupFoldTable(RegOp, 3)) {
261257
unsigned MemOp = Reg2Mem->DstOp;
262-
uint16_t Flags = Reg2Mem->Flags | Reg2Bcst.Flags | TB_INDEX_3 |
263-
TB_FOLDED_LOAD | TB_FOLDED_BCAST;
258+
uint16_t Flags =
259+
Reg2Mem->Flags | Reg2Bcst.Flags | TB_INDEX_3 | TB_FOLDED_LOAD;
264260
Table.push_back({MemOp, BcstOp, Flags});
265261
}
266262
}
@@ -269,8 +265,8 @@ struct X86BroadcastFoldTable {
269265
unsigned BcstOp = Reg2Bcst.DstOp;
270266
if (const X86FoldTableEntry *Reg2Mem = lookupFoldTable(RegOp, 3)) {
271267
unsigned MemOp = Reg2Mem->DstOp;
272-
uint16_t Flags = Reg2Mem->Flags | Reg2Bcst.Flags | TB_INDEX_3 |
273-
TB_FOLDED_LOAD | TB_FOLDED_BCAST;
268+
uint16_t Flags =
269+
Reg2Mem->Flags | Reg2Bcst.Flags | TB_INDEX_3 | TB_FOLDED_LOAD;
274270
Table.push_back({MemOp, BcstOp, Flags});
275271
}
276272
}
@@ -280,8 +276,8 @@ struct X86BroadcastFoldTable {
280276
unsigned BcstOp = Reg2Bcst.DstOp;
281277
if (const X86FoldTableEntry *Reg2Mem = lookupFoldTable(RegOp, 4)) {
282278
unsigned MemOp = Reg2Mem->DstOp;
283-
uint16_t Flags = Reg2Mem->Flags | Reg2Bcst.Flags | TB_INDEX_4 |
284-
TB_FOLDED_LOAD | TB_FOLDED_BCAST;
279+
uint16_t Flags =
280+
Reg2Mem->Flags | Reg2Bcst.Flags | TB_INDEX_4 | TB_FOLDED_LOAD;
285281
Table.push_back({MemOp, BcstOp, Flags});
286282
}
287283
}

llvm/lib/Target/X86/X86InstrInfo.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8191,7 +8191,6 @@ bool X86InstrInfo::unfoldMemoryOperand(
81918191
unsigned Index = I->Flags & TB_INDEX_MASK;
81928192
bool FoldedLoad = I->Flags & TB_FOLDED_LOAD;
81938193
bool FoldedStore = I->Flags & TB_FOLDED_STORE;
8194-
bool FoldedBCast = I->Flags & TB_FOLDED_BCAST;
81958194
if (UnfoldLoad && !FoldedLoad)
81968195
return false;
81978196
UnfoldLoad &= FoldedLoad;
@@ -8231,7 +8230,7 @@ bool X86InstrInfo::unfoldMemoryOperand(
82318230
auto MMOs = extractLoadMMOs(MI.memoperands(), MF);
82328231

82338232
unsigned Opc;
8234-
if (FoldedBCast) {
8233+
if (I->Flags & TB_BCAST_MASK) {
82358234
Opc = getBroadcastOpcode(I, RC, Subtarget);
82368235
} else {
82378236
unsigned Alignment = std::max<uint32_t>(TRI.getSpillSize(*RC), 16);
@@ -8341,7 +8340,6 @@ bool X86InstrInfo::unfoldMemoryOperand(
83418340
unsigned Index = I->Flags & TB_INDEX_MASK;
83428341
bool FoldedLoad = I->Flags & TB_FOLDED_LOAD;
83438342
bool FoldedStore = I->Flags & TB_FOLDED_STORE;
8344-
bool FoldedBCast = I->Flags & TB_FOLDED_BCAST;
83458343
const MCInstrDesc &MCID = get(Opc);
83468344
MachineFunction &MF = DAG.getMachineFunction();
83478345
const TargetRegisterInfo &TRI = *MF.getSubtarget().getRegisterInfo();
@@ -8377,7 +8375,7 @@ bool X86InstrInfo::unfoldMemoryOperand(
83778375
// memory access is slow above.
83788376

83798377
unsigned Opc;
8380-
if (FoldedBCast) {
8378+
if (I->Flags & TB_BCAST_MASK) {
83818379
Opc = getBroadcastOpcode(I, RC, Subtarget);
83828380
} else {
83838381
unsigned Alignment = std::max<uint32_t>(TRI.getSpillSize(*RC), 16);

0 commit comments

Comments
 (0)