Skip to content

Commit 0328b87

Browse files
KanRoberttstellar
authored andcommitted
[X86][tablgen] Fix the broadcast tables (#79675)
(cherry picked from commit 7c3ee7c)
1 parent 6e9673f commit 0328b87

File tree

5 files changed

+223
-237
lines changed

5 files changed

+223
-237
lines changed

llvm/include/llvm/Support/X86FoldTablesUtils.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,12 @@ enum {
4646
// Broadcast type.
4747
// (stored in bits 12 - 14)
4848
TB_BCAST_TYPE_SHIFT = TB_ALIGN_SHIFT + 3,
49-
TB_BCAST_D = 0 << TB_BCAST_TYPE_SHIFT,
50-
TB_BCAST_Q = 1 << TB_BCAST_TYPE_SHIFT,
51-
TB_BCAST_SS = 2 << TB_BCAST_TYPE_SHIFT,
52-
TB_BCAST_SD = 3 << TB_BCAST_TYPE_SHIFT,
53-
TB_BCAST_SH = 4 << TB_BCAST_TYPE_SHIFT,
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,
5455
TB_BCAST_MASK = 0x7 << TB_BCAST_TYPE_SHIFT,
5556

5657
// Unused bits 15-16

llvm/lib/Target/X86/X86InstrAVX512.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12422,7 +12422,7 @@ multiclass GF2P8AFFINE_avx512_rmb_imm<bits<8> Op, string OpStr, SDNode OpNode,
1242212422
: avx512_3Op_rm_imm8<Op, OpStr, OpNode, sched, VTI, VTI> {
1242312423
let ExeDomain = VTI.ExeDomain in
1242412424
defm rmbi : AVX512_maskable<Op, MRMSrcMem, VTI, (outs VTI.RC:$dst),
12425-
(ins VTI.RC:$src1, VTI.ScalarMemOp:$src2, u8imm:$src3),
12425+
(ins VTI.RC:$src1, BcstVTI.ScalarMemOp:$src2, u8imm:$src3),
1242612426
OpStr, "$src3, ${src2}"#BcstVTI.BroadcastStr#", $src1",
1242712427
"$src1, ${src2}"#BcstVTI.BroadcastStr#", $src3",
1242812428
(OpNode (VTI.VT VTI.RC:$src1),

llvm/lib/Target/X86/X86InstrFoldTables.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -291,12 +291,15 @@ struct X86BroadcastFoldTable {
291291
static bool matchBroadcastSize(const X86FoldTableEntry &Entry,
292292
unsigned BroadcastBits) {
293293
switch (Entry.Flags & TB_BCAST_MASK) {
294-
case TB_BCAST_SD:
295-
case TB_BCAST_Q:
296-
return BroadcastBits == 64;
297-
case TB_BCAST_SS:
294+
case TB_BCAST_W:
295+
case TB_BCAST_SH:
296+
return BroadcastBits == 16;
298297
case TB_BCAST_D:
298+
case TB_BCAST_SS:
299299
return BroadcastBits == 32;
300+
case TB_BCAST_Q:
301+
case TB_BCAST_SD:
302+
return BroadcastBits == 64;
300303
}
301304
return false;
302305
}

0 commit comments

Comments
 (0)