search for: matchertable

Displaying 16 results from an estimated 16 matches for "matchertable".

2018 Mar 28
2
Instruction selection algorithm
...s the algorithm described in the article "Near-Optimal Instruction Selection on DAGs (https://llvm.org/pubs/2008-CGO-DagISel.html)" really used in llvm instruction selection? I've studied implementation (SelectionDAGISel.cpp) and I see that instructions are selected by target specific MatcherTable generated by llvm-tblgen. In the implementation the first matching pattern from MatcherTable is selected but in the paper all matching patterns (in paper named tiles) are selected for each DAG node and cost estimation is performed for every tile and node. Then the best tiles are selected by dynamic...
2012 Mar 31
1
[LLVMdev] LLVM Instruction selection matcher
I have a few questions about matching in the selector. 1. Why does the size of the MatcherTable greatly exceed the number of patterns defined in the target description? If it simply contains all the variants of the patterns then what is the encoding of these entries ? 2. Is there a simple way to extract the root opcode of a pattern from the MatcherTable entry ? 3. I believe the entries in the...
2016 Jun 28
2
Question about Instruction Selection
...tion algorithm for DAG instead of tree matching. My question is, according to the paper, each tile in DAG has a cost value which is used in dynamic programming process and CSE decisions. But in TableGen files, I didn't find any field recording cost values or similar properties. I know that the MatcherTables in generated TableGen include files act like a byte code interpreter which perform bottom-up selection, resembles to bottom-up dynamic programming. But if the generated MatcherTables are really used for performing bottom-up dynamic programming selection, it still needs a cost model to help it maki...
2016 Nov 30
4
[RFC] Parallelizing (Target-Independent) Instruction Selection
...ation unit each time.(correct me if I'm wrong) B.R. McClane > > I suspect you won’t gain much for too much added complexity with this approach. > > — > Mehdi > > > > > >> >> The instruction selector of LLVM is an interpreter that interpret the MatcherTable which consists of bytecodes generated by TableGen. I'm surprised to find that the structure of MatcherTable and the interpreter seems to be suitable for parallelization. So we propose a prototype that parallelizes the interpreting of OPC_Scope children that are possibly time-consuming. Here is...
2018 Apr 06
0
Instruction selection algorithm
...he article "Near-Optimal Instruction > Selection on DAGs > (https://llvm.org/pubs/2008-CGO-DagISel.html)" really used in llvm > instruction selection? > I've studied implementation (SelectionDAGISel.cpp) and I see that > instructions are selected > by target specific MatcherTable generated by llvm-tblgen. In the > implementation the first > matching pattern from MatcherTable is selected but in the paper all > matching patterns (in paper > named tiles) are selected for each DAG node and cost estimation is > performed for every tile and > node. Then the best...
2018 Apr 07
0
Instruction selection algorithm
...he article "Near-Optimal Instruction > Selection on DAGs > (https://llvm.org/pubs/2008-CGO-DagISel.html)" really used in llvm > instruction selection? > I've studied implementation (SelectionDAGISel.cpp) and I see that > instructions are selected > by target specific MatcherTable generated by llvm-tblgen. In the > implementation the first > matching pattern from MatcherTable is selected but in the paper all > matching patterns (in paper > named tiles) are selected for each DAG node and cost estimation is > performed for every tile and > node. Then the best...
2016 Jun 28
2
Question about Instruction Selection
...ng. >> >> My question is, according to the paper, each tile in DAG has a cost value >> which is used in dynamic programming process and CSE decisions. But in >> TableGen files, I didn't find any field recording cost values or similar >> properties. I know that the MatcherTables in generated TableGen include >> files act like a byte code interpreter which perform bottom-up selection, >> resembles to bottom-up dynamic programming. But if the generated >> MatcherTables are really used for performing bottom-up dynamic programming >> selection, it stil...
2016 Jun 28
0
Question about Instruction Selection
...d of tree > matching. > > My question is, according to the paper, each tile in DAG has a cost value > which is used in dynamic programming process and CSE decisions. But in > TableGen files, I didn't find any field recording cost values or similar > properties. I know that the MatcherTables in generated TableGen include > files act like a byte code interpreter which perform bottom-up selection, > resembles to bottom-up dynamic programming. But if the generated > MatcherTables are really used for performing bottom-up dynamic programming > selection, it still needs a cost m...
2016 Nov 29
5
[RFC] Parallelizing (Target-Independent) Instruction Selection
...task is actually instruction selection(40~50% of time) instead of optimization passes(10~0%). That's why we're trying to parallelize the (target-independent) instruction selection process in aid of JIT compilation speed. The instruction selector of LLVM is an interpreter that interpret the MatcherTable which consists of bytecodes generated by TableGen. I'm surprised to find that the structure of MatcherTable and the interpreter seems to be suitable for parallelization. So we propose a prototype that parallelizes the interpreting of OPC_Scope children that are possibly time-consuming. Here is...
2016 Jun 28
0
Question about Instruction Selection
...d of tree > matching. > > My question is, according to the paper, each tile in DAG has a cost value > which is used in dynamic programming process and CSE decisions. But in > TableGen files, I didn't find any field recording cost values or similar > properties. I know that the MatcherTables in generated TableGen include > files act like a byte code interpreter which perform bottom-up selection, > resembles to bottom-up dynamic programming. But if the generated > MatcherTables are really used for performing bottom-up dynamic programming > selection, it still needs a cost m...
2016 Nov 29
2
[RFC] Parallelizing (Target-Independent) Instruction Selection
...uch for too much added complexity with this approach. I forgot to add: did you try to enable fast-isel instead? In the context of a JIT this is a quite common approach. — Mehdi > > > > > >> >> The instruction selector of LLVM is an interpreter that interpret the MatcherTable which consists of bytecodes generated by TableGen. I'm surprised to find that the structure of MatcherTable and the interpreter seems to be suitable for parallelization. So we propose a prototype that parallelizes the interpreting of OPC_Scope children that are possibly time-consuming. Here is...
2016 Jun 02
2
BPF backend with vector operations - error "Could not infer all types in, pattern!"
Hello. I come back to this older thread. Again, because of i64immSExt32 I receive TableGen error "Could not infer all types in, pattern!" (exact details written below). So far I'm not able to generate selection code with TableGen for the ADD_r* instructions, etc: def i64immSExt32 : PatLeaf<(imm), [{return
2017 Aug 15
3
How to debug instruction selection
Hi there, I try to JIT compile some bitcode and seeing the following error: LLVM ERROR: Cannot select: 0x28ec830: ch,glue = X86ISD::CALL 0x28ec7c0, 0x28ef900, Register:i32 %EDI, Register:i8 %AL, RegisterMask:Untyped, 0x28ec7c0:1 0x28ef900: i32 = X86ISD::Wrapper TargetGlobalAddress:i32<void (i8*, ...)* @_ZN5FooBr7xprintfEPKcz> 0 0x28ec520: i32 = TargetGlobalAddress<void (i8*, ...)*
2016 Jun 22
2
LLVM Backend Issues
Thanks Anton and Krzysztof! Here is the dump using the -debug flag. At this point I am not making much sense of this, would it be too much to ask if one of you could walk me through one of these lines? One thing that I didn't point out is that I never defined any separate floating point registers, not sure if this will pose any issue? Thanks again for your time! Jeff jeff at
2016 Feb 19
3
Failure to match a DAG after a minor pattern change in a custom Target
In an attempt to add vector registers to my target, I ran into a problem. LLVM started to complain about not being able to infer types from the provided DAG patterns for several classes of instructions. After a discussion on the llvm-dev mailing list and IRC channel the recommendation was to make DAG patterns for these classes of instructions more specific. Which is what was done. However after
2018 Sep 06
2
How to add Loongson ISA for Mips target?
- my old email address. The ISA_* classes might not be the best choice for this. There's an overall hierarchy and ordering to the ISA_* classes since they represent the generations of the MIPS ISA. If these extensions are available in Loongson chips based on MIPS32r1 and MIPS32r2 for example, it becomes difficult to describe with ISA_* classes without duplicating instruction definitions or