Displaying 3 results from an estimated 3 matches for "t2bicrs".
2009 Jun 26
0
[LLVMdev] bitwise AND selector node not commutative?
...iles. I can take a look
> but I need a pointer to get started.
No, isel is trying to commute the AND. See ARMGenDAGISel.inc (auto-
generated by tablegen):
// Pattern: (and:i32 GPR:i32:$lhs, (xor:i32 t2_so_reg:i32:$rhs,
(imm:i32)<<P:Predicate_immAllOnes>>))
// Emits: (t2BICrs:i32 GPR:i32:$lhs, t2_so_reg:i32:$rhs)
// Pattern complexity = 19 cost = 1 size = 0
{
..
}
// Pattern: (and:i32 (xor:i32 t2_so_reg:i32:$rhs, (imm:i32)
<<P:Predicate_immAllOnes>>), GPR:i32:$lhs)
// Emits: (t2BICrs:i32 GPR:i32:$lhs, t2_so_reg:i32:$rhs)...
2009 Jun 26
1
[LLVMdev] bitwise AND selector node not commutative?
...but I need a pointer to get started.
>
> No, isel is trying to commute the AND. See ARMGenDAGISel.inc (auto-
> generated by tablegen):
>
> // Pattern: (and:i32 GPR:i32:$lhs, (xor:i32 t2_so_reg:i32:$rhs,
> (imm:i32)<<P:Predicate_immAllOnes>>))
> // Emits: (t2BICrs:i32 GPR:i32:$lhs, t2_so_reg:i32:$rhs)
> // Pattern complexity = 19 cost = 1 size = 0
> {
> ..
> }
>
>
> // Pattern: (and:i32 (xor:i32 t2_so_reg:i32:$rhs, (imm:i32)
> <<P:Predicate_immAllOnes>>), GPR:i32:$lhs)
> // Emits: (t2BICrs:i...
2009 Jun 25
2
[LLVMdev] bitwise AND selector node not commutative?
Using the Thumb-2 target we see that ORN ( a | ^b) and BIC (a & ^b)
have similar patterns, as we would expect:
defm t2BIC : T2I_bin_irs<"bic", BinOpFrag<(and node:$LHS, (not node:
$RHS))>>;
defm t2ORN : T2I_bin_irs<"orn", BinOpFrag<(or node:$LHS, (not node:
$RHS))>>;
Compiling the following three works as expected:
%tmp1 = xor i32