![]() ![]() I’m hoping it doesn’t get slower if we start having entries spread across cache lines?īuild AMDGPUInstructionSelector.cpp: 6.67s I’m also wondering how this affects the speed of the match table’s execution. I’m fearing some longer LLVM build times because the match table got more complex due to the use of macros to encode values. Can anyone help me measure the impact this has on build times of LLVM itself, and on the build times of programs using GlobalISel? ![]() ![]() Performanceīefore I submit a review, I would like to first do performance testing. The need to manually update that many tests is annoying, but I can get it done, but first I’d like to investigate performance a bit more. GIMatchTableExecutorImpl.h also becomes a tiny bit more complicated due to the need to call functions to extract values.Īll of this is pretty minor. There is a lot of test churn (42 files), and tests are becoming harder to read to the use of macros to encode multi-byte values. Immediates are 8 bytes (could be ULEB if we really wanted to optimize but they’re not used often so I don’t think it’s worth it)Ī quick test shows LLC (MinSizeRel) going from 116Mb to 108Mb so we gain about 7% binary size.No enum in any target needs >2 bytes I believe.Predicate enums, target opcodes/RCs/RBs/registers are 2 bytes.Positive values are references to the LLT enum generated by the backend, negative is for temporary LLTs derived from a register operand.We have some outliers like PPC that have really, really, really long patterns where we need 255+ IDs. The vast majority of patterns only need a handful of those, so they only use 1 byte.MachineInstr IDs and Operand IDs are ULEB128.Data is encoded over multiple bytes when needed: ![]()
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |