From cf34559104d3531e98e16ea242b777f18d5f95cf Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Thu, 18 Feb 2021 18:50:58 -0800 Subject: [PATCH] [RISCV] Enable PrimaryKeyEarlyOut on RISCVVPseudosTable. This table is queried in RISCVMCInstLower without knowing whether the instruction is a vector pseudo. Due to the way the binary search works, we have to do log2(tablesize) checks just to determine a non-vector instruction isn't in the table. Conveniently, all the vector pseudos are pretty tightly packed within the internal instruction enum. By enabling the PrimaryKeyEarlyOut, tablegen will emit a check against the beginning and end of the table before doing the binary search. This gives a quick early out on the search for the majority of non-vector instructions. Differential Revision: https://reviews.llvm.org/D97016 --- llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td | 1 + 1 file changed, 1 insertion(+) diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td b/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td index 4e3a261ba299..20f37400bd7f 100644 --- a/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td @@ -402,6 +402,7 @@ def RISCVVPseudosTable : GenericTable { let Fields = [ "Pseudo", "BaseInstr" ]; let PrimaryKey = [ "Pseudo" ]; let PrimaryKeyName = "getPseudoInfo"; + let PrimaryKeyEarlyOut = true; } def RISCVVIntrinsicsTable : GenericTable {