[PATCH] D147500: [X86][NFC] Compress CD8_Scale from 7 bits to 3 bits
Kan Shengchen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 3 22:01:12 PDT 2023
skan created this revision.
Herald added subscribers: pengfei, hiraditya.
Herald added a project: All.
skan requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D147500
Files:
llvm/lib/Target/X86/MCTargetDesc/X86BaseInfo.h
llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
llvm/lib/Target/X86/X86InstrFormats.td
Index: llvm/lib/Target/X86/X86InstrFormats.td
===================================================================
--- llvm/lib/Target/X86/X86InstrFormats.td
+++ llvm/lib/Target/X86/X86InstrFormats.td
@@ -389,11 +389,10 @@
let TSFlags{42} = hasEVEX_Z;
let TSFlags{43} = hasEVEX_L2;
let TSFlags{44} = hasEVEX_B;
- // If we run out of TSFlags bits, it's possible to encode this in 3 bits.
- let TSFlags{51-45} = CD8_Scale;
- let TSFlags{52} = hasEVEX_RC;
- let TSFlags{53} = hasNoTrackPrefix;
- let TSFlags{54} = ExplicitVEXPrefix;
+ let TSFlags{47-45} = !if(!eq(CD8_Scale, 0), 0, !add(!logtwo(CD8_Scale), 1));
+ let TSFlags{48} = hasEVEX_RC;
+ let TSFlags{49} = hasNoTrackPrefix;
+ let TSFlags{50} = ExplicitVEXPrefix;
}
class PseudoI<dag oops, dag iops, list<dag> pattern>
Index: llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
===================================================================
--- llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
+++ llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
@@ -319,6 +319,8 @@
int CD8_Scale =
(TSFlags & X86II::CD8_Scale_Mask) >> X86II::CD8_Scale_Shift;
+ assert(CD8_Scale >=0 && "Invalid CD8_Scale!");
+ CD8_Scale = CD8_Scale ? static_cast<int>(1U << (CD8_Scale - 1)) : 0;
if (!HasEVEX || CD8_Scale == 0)
return isInt<8>(Value);
Index: llvm/lib/Target/X86/MCTargetDesc/X86BaseInfo.h
===================================================================
--- llvm/lib/Target/X86/MCTargetDesc/X86BaseInfo.h
+++ llvm/lib/Target/X86/MCTargetDesc/X86BaseInfo.h
@@ -955,10 +955,10 @@
// The scaling factor for the AVX512's 8-bit compressed displacement.
CD8_Scale_Shift = EVEX_BShift + 1,
- CD8_Scale_Mask = 127ULL << CD8_Scale_Shift,
+ CD8_Scale_Mask = 7ULL << CD8_Scale_Shift,
/// Explicitly specified rounding control
- EVEX_RCShift = CD8_Scale_Shift + 7,
+ EVEX_RCShift = CD8_Scale_Shift + 3,
EVEX_RC = 1ULL << EVEX_RCShift,
// NOTRACK prefix
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D147500.510688.patch
Type: text/x-patch
Size: 2015 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230404/ca407846/attachment.bin>
More information about the llvm-commits
mailing list