[llvm] f28430d - [X86][CodeGen] Add entries for TB_BCAST_W in getBroadcastOpcode and fix typo
Shengchen Kan via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 29 09:04:07 PST 2024
Author: Shengchen Kan
Date: 2024-01-30T01:03:32+08:00
New Revision: f28430d577276bf58d96945a6919399baa6c2527
URL: https://github.com/llvm/llvm-project/commit/f28430d577276bf58d96945a6919399baa6c2527
DIFF: https://github.com/llvm/llvm-project/commit/f28430d577276bf58d96945a6919399baa6c2527.diff
LOG: [X86][CodeGen] Add entries for TB_BCAST_W in getBroadcastOpcode and fix typo
Added:
Modified:
llvm/include/llvm/Support/X86FoldTablesUtils.h
llvm/lib/Target/X86/X86InstrInfo.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/Support/X86FoldTablesUtils.h b/llvm/include/llvm/Support/X86FoldTablesUtils.h
index 790cdce9039f5bc..bd50a0d6dd4aa62 100644
--- a/llvm/include/llvm/Support/X86FoldTablesUtils.h
+++ b/llvm/include/llvm/Support/X86FoldTablesUtils.h
@@ -53,7 +53,7 @@ enum {
TB_BCAST_SH = 6 << TB_BCAST_TYPE_SHIFT,
TB_BCAST_MASK = 0x7 << TB_BCAST_TYPE_SHIFT,
- // Unused bits 15-16
+ // Unused bits 14-16
};
} // namespace llvm
#endif // LLVM_SUPPORT_X86FOLDTABLESUTILS_H
diff --git a/llvm/lib/Target/X86/X86InstrInfo.cpp b/llvm/lib/Target/X86/X86InstrInfo.cpp
index 13fe75fc9edd1b7..1adaf097bcbf734 100644
--- a/llvm/lib/Target/X86/X86InstrInfo.cpp
+++ b/llvm/lib/Target/X86/X86InstrInfo.cpp
@@ -8127,57 +8127,33 @@ static unsigned getBroadcastOpcode(const X86FoldTableEntry *I,
assert((SpillSize == 64 || STI.hasVLX()) &&
"Can't broadcast less than 64 bytes without AVX512VL!");
+#define CASE_BCAST_TYPE_OPC(TYPE, OP16, OP32, OP64) \
+ case TYPE: \
+ switch (SpillSize) { \
+ default: \
+ llvm_unreachable("Unknown spill size"); \
+ case 16: \
+ return X86::OP16; \
+ case 32: \
+ return X86::OP32; \
+ case 64: \
+ return X86::OP64; \
+ } \
+ break;
+
switch (I->Flags & TB_BCAST_MASK) {
default:
llvm_unreachable("Unexpected broadcast type!");
- case TB_BCAST_D:
- switch (SpillSize) {
- default:
- llvm_unreachable("Unknown spill size");
- case 16:
- return X86::VPBROADCASTDZ128rm;
- case 32:
- return X86::VPBROADCASTDZ256rm;
- case 64:
- return X86::VPBROADCASTDZrm;
- }
- break;
- case TB_BCAST_Q:
- switch (SpillSize) {
- default:
- llvm_unreachable("Unknown spill size");
- case 16:
- return X86::VPBROADCASTQZ128rm;
- case 32:
- return X86::VPBROADCASTQZ256rm;
- case 64:
- return X86::VPBROADCASTQZrm;
- }
- break;
- case TB_BCAST_SS:
- switch (SpillSize) {
- default:
- llvm_unreachable("Unknown spill size");
- case 16:
- return X86::VBROADCASTSSZ128rm;
- case 32:
- return X86::VBROADCASTSSZ256rm;
- case 64:
- return X86::VBROADCASTSSZrm;
- }
- break;
- case TB_BCAST_SD:
- switch (SpillSize) {
- default:
- llvm_unreachable("Unknown spill size");
- case 16:
- return X86::VMOVDDUPZ128rm;
- case 32:
- return X86::VBROADCASTSDZ256rm;
- case 64:
- return X86::VBROADCASTSDZrm;
- }
- break;
+ CASE_BCAST_TYPE_OPC(TB_BCAST_W, VPBROADCASTWZ128rm, VPBROADCASTWZ256rm,
+ VPBROADCASTWZrm)
+ CASE_BCAST_TYPE_OPC(TB_BCAST_D, VPBROADCASTDZ128rm, VPBROADCASTDZ256rm,
+ VPBROADCASTDZrm)
+ CASE_BCAST_TYPE_OPC(TB_BCAST_Q, VPBROADCASTQZ128rm, VPBROADCASTQZ256rm,
+ VPBROADCASTQZrm)
+ CASE_BCAST_TYPE_OPC(TB_BCAST_SS, VBROADCASTSSZ128rm, VBROADCASTSSZ256rm,
+ VBROADCASTSSZrm)
+ CASE_BCAST_TYPE_OPC(TB_BCAST_SD, VMOVDDUPZ128rm, VBROADCASTSDZ256rm,
+ VBROADCASTSDZrm)
}
}
More information about the llvm-commits
mailing list