[llvm-dev] Musings on the TableGen -emit-dag-isel backend
Paul C. Anagnostopoulos via llvm-dev
llvm-dev at lists.llvm.org
Fri Nov 13 11:42:55 PST 2020
I took a look at all the OPC_SwitchOpcode operators in the matching tables. Almost every target starts with a large one, which is now cached by the interpreter. Instead, TableGen could build the opcode -> offset table.
But there are also many other opcode switches with between 10 and 70 cases. To speed these up, we could embed a sorted opcode -> offset table right in the matcher code. Or, if that seems like overkill, we could quite easily sort the opcodes and embed the opcode and offset of the middle one. A quick comparison would start the search in the correct half of the opcode sequence, halving the search time.
More information about the llvm-dev
mailing list