Displaying 4 results from an estimated 4 matches for "debug_expr".
2018 Nov 27
2
[RFC] Tablegen-erated GlobalISel Combine Rules
...(isScalarType type:$D),
(isLargerType type:$D, type:$S)),
(apply (G_ZEXT $D, $S, (debug_locations $MI0, $MI1)))>;
def : GICombineRule<(defs reg:$D, reg:$S, instr:$MI0, instr:$MI1, instr:$MI2, instr:$MI3, debug_expr:$DNewExpr),
(match (G_ZEXT $t0, $S):$MI0,
(G_TRUNC $D, $t0):$MI1,
(DBG_VALUE $t0):$MI2,
(DBG_VALUE $D):$MI3,
(isScalarType type:$D),...
2018 Nov 30
2
[RFC] Tablegen-erated GlobalISel Combine Rules
...$t0, $S):$MI0,
>> (G_TRUNC $D, $t0):$MI1),
>> (isScalarType type:$D),
>> (isLargerType type:$D, type:$S)),
>> (apply (G_ZEXT $D, $S, (debug_locations $MI0, $MI1)))>;
>> def : GICombineRule<(defs reg:$D, reg:$S, instr:$MI0, instr:$MI1, instr:$MI2, instr:$MI3, debug_expr:$DNewExpr),
>> (match (G_ZEXT $t0, $S):$MI0,
>> (G_TRUNC $D, $t0):$MI1,
>> (DBG_VALUE $t0):$MI2,
>> (DBG_VALUE $D):$MI3,
>>...
2018 Nov 27
3
[RFC] Tablegen-erated GlobalISel Combine Rules
...ons $DL0, $DL1)))>;
However, the former is more compact when DBG_VALUE is involved since naming the instruction gives access to three of the four pieces of data we need to pass on to the apply step:
def : GICombineRule<(defs reg:$D, reg:$S, instr:$MI0, instr:$MI1, instr:$MI2, instr:$MI3, debug_expr:$DNewExpr),
(match (G_ZEXT $t0, $S):$MI0,
(G_TRUNC $D, $t0):$MI1,
(DBG_VALUE $t0):$MI2,
(DBG_VALUE $D):$MI3,
(isScalarType type:$D),...
2018 Nov 12
3
[RFC] Tablegen-erated GlobalISel Combine Rules
> On Nov 10, 2018, at 03:28, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
>
> Thank you for the detailed reply! There's a lot to digest :) Let me try to address most of it.
>
>
> [snip]
>>> I also think you should have 'ins' and 'outs' separately; after all, a predicate may have to do a combined check on two matched registers / operands,