-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
I think we're missing support for compressed cmv
in the RISC-V backend:
llvm-project/llvm/lib/Target/RISCV/RISCVInstrInfoZCheriPurecap.td
Lines 332 to 348 in 2f07835
//===----------------------------------------------------------------------===// | |
// Compress Instruction tablegen backend. | |
//===----------------------------------------------------------------------===// | |
// Quadrant 0 | |
let Predicates = [HasZCheriPurecap, HasCheriRVC, HasStdExtC, IsCapMode] in { | |
def : CompressPat<(CADDI GPCRC:$rd, CSP:$rs1, uimm10_lsb00nonzero:$imm), | |
(C_CIncOffsetImm4CSPN GPCRC:$rd, CSP:$rs1, uimm10_lsb00nonzero:$imm)>; | |
} // Predicates = [HasZCheriPurecap, HasCheriRVC, HasStdExtC, IsCapMode] | |
// Quadrant 1 | |
let Predicates = [HasZCheriPurecap, HasCheriRVC, HasStdExtC, IsCapMode] in { | |
def : CompressPat<(CADDI C2, C2, simm10_lsb0000nonzero:$imm), | |
(C_CIncOffsetImm16CSP C2, simm10_lsb0000nonzero:$imm)>; | |
} // Predicates = [HasCheri, HasCheriRVC, HasStdExtC, IsCapMode] | |
//===----------------------------------------------------------------------===// |
I'm seeing a lot of uncompressed cmv
s in the generated code from compiling FreeBSD, which is probably hurting code size a good amount. Some unscientific sampling of random blocks in objdumps looks like it's mostly about 3%, but can be up to 10% code size growth because of it in some cases.
Metadata
Metadata
Assignees
Labels
No labels