Skip to content

Commit f28430d

Browse files
committed
[X86][CodeGen] Add entries for TB_BCAST_W in getBroadcastOpcode and fix typo
1 parent cbe5985 commit f28430d

File tree

2 files changed

+25
-49
lines changed

2 files changed

+25
-49
lines changed

llvm/include/llvm/Support/X86FoldTablesUtils.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ enum {
5353
TB_BCAST_SH = 6 << TB_BCAST_TYPE_SHIFT,
5454
TB_BCAST_MASK = 0x7 << TB_BCAST_TYPE_SHIFT,
5555

56-
// Unused bits 15-16
56+
// Unused bits 14-16
5757
};
5858
} // namespace llvm
5959
#endif // LLVM_SUPPORT_X86FOLDTABLESUTILS_H

llvm/lib/Target/X86/X86InstrInfo.cpp

Lines changed: 24 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -8127,57 +8127,33 @@ static unsigned getBroadcastOpcode(const X86FoldTableEntry *I,
81278127
assert((SpillSize == 64 || STI.hasVLX()) &&
81288128
"Can't broadcast less than 64 bytes without AVX512VL!");
81298129

8130+
#define CASE_BCAST_TYPE_OPC(TYPE, OP16, OP32, OP64) \
8131+
case TYPE: \
8132+
switch (SpillSize) { \
8133+
default: \
8134+
llvm_unreachable("Unknown spill size"); \
8135+
case 16: \
8136+
return X86::OP16; \
8137+
case 32: \
8138+
return X86::OP32; \
8139+
case 64: \
8140+
return X86::OP64; \
8141+
} \
8142+
break;
8143+
81308144
switch (I->Flags & TB_BCAST_MASK) {
81318145
default:
81328146
llvm_unreachable("Unexpected broadcast type!");
8133-
case TB_BCAST_D:
8134-
switch (SpillSize) {
8135-
default:
8136-
llvm_unreachable("Unknown spill size");
8137-
case 16:
8138-
return X86::VPBROADCASTDZ128rm;
8139-
case 32:
8140-
return X86::VPBROADCASTDZ256rm;
8141-
case 64:
8142-
return X86::VPBROADCASTDZrm;
8143-
}
8144-
break;
8145-
case TB_BCAST_Q:
8146-
switch (SpillSize) {
8147-
default:
8148-
llvm_unreachable("Unknown spill size");
8149-
case 16:
8150-
return X86::VPBROADCASTQZ128rm;
8151-
case 32:
8152-
return X86::VPBROADCASTQZ256rm;
8153-
case 64:
8154-
return X86::VPBROADCASTQZrm;
8155-
}
8156-
break;
8157-
case TB_BCAST_SS:
8158-
switch (SpillSize) {
8159-
default:
8160-
llvm_unreachable("Unknown spill size");
8161-
case 16:
8162-
return X86::VBROADCASTSSZ128rm;
8163-
case 32:
8164-
return X86::VBROADCASTSSZ256rm;
8165-
case 64:
8166-
return X86::VBROADCASTSSZrm;
8167-
}
8168-
break;
8169-
case TB_BCAST_SD:
8170-
switch (SpillSize) {
8171-
default:
8172-
llvm_unreachable("Unknown spill size");
8173-
case 16:
8174-
return X86::VMOVDDUPZ128rm;
8175-
case 32:
8176-
return X86::VBROADCASTSDZ256rm;
8177-
case 64:
8178-
return X86::VBROADCASTSDZrm;
8179-
}
8180-
break;
8147+
CASE_BCAST_TYPE_OPC(TB_BCAST_W, VPBROADCASTWZ128rm, VPBROADCASTWZ256rm,
8148+
VPBROADCASTWZrm)
8149+
CASE_BCAST_TYPE_OPC(TB_BCAST_D, VPBROADCASTDZ128rm, VPBROADCASTDZ256rm,
8150+
VPBROADCASTDZrm)
8151+
CASE_BCAST_TYPE_OPC(TB_BCAST_Q, VPBROADCASTQZ128rm, VPBROADCASTQZ256rm,
8152+
VPBROADCASTQZrm)
8153+
CASE_BCAST_TYPE_OPC(TB_BCAST_SS, VBROADCASTSSZ128rm, VBROADCASTSSZ256rm,
8154+
VBROADCASTSSZrm)
8155+
CASE_BCAST_TYPE_OPC(TB_BCAST_SD, VMOVDDUPZ128rm, VBROADCASTSDZ256rm,
8156+
VBROADCASTSDZrm)
81818157
}
81828158
}
81838159

0 commit comments

Comments
 (0)