Displaying 6 results from an estimated 6 matches for "ccop".
Did you mean:
cop
2008 Sep 12
2
[LLVMdev] Selection Condition Codes
...let Pattern = pattern;
let AsmString = asmstr;
}
def SDTGenTernaryOp : SDTypeProfile<1, 3, [ SDTCisSameAs<0,
1>,SDTCisSameAs<0, 2>, SDTCisSameAs<0, 3> ]>;
def cmov_logical : SDNode<"INSTISD::CMOVLOG", SDTGenTernaryOp>;
let PrintMethod = "printCCOperand" in
def CCOp : Operand<i32>;
def CMOVLOG : InstFormat<(outs GPR:$dst), (ins GPR:$LHS, GPR:$RHS,
GPR:$TVAL, GPR:$FVAL, CCOp:$cond),
"$cond $LHS, $LHS, $RHS\ncmov_logical
$dst, $LHS, $TVAL, $FVAL",...
2008 Sep 12
0
[LLVMdev] Selection Condition Codes
...ve.
"setOperationAction(ISD::SELECT_CC , MVT::Other, Expand);"
should do the trick; that will prevent SELECT_CC instructions from
being introduced. This one is easy to miss.
> def CMOVLOG : InstFormat<(outs GPR:$dst), (ins GPR:$LHS, GPR:$RHS,
> GPR:$TVAL, GPR:$FVAL, CCOp:$cond),
The condition isn't properly an input... this seems likely to confuse
ISel. I'm not sure, though; I'm not really an expert on patterns, and
they can mess up in non-obvious ways.
> Maybe I'm approaching this from the wrong way, but I don't think this
> transforma...
2008 Sep 12
2
[LLVMdev] Selection Condition Codes
...ve.
"setOperationAction(ISD::SELECT_CC , MVT::Other, Expand);"
should do the trick; that will prevent SELECT_CC instructions from
being introduced. This one is easy to miss.
> def CMOVLOG : InstFormat<(outs GPR:$dst), (ins GPR:$LHS, GPR:$RHS,
> GPR:$TVAL, GPR:$FVAL, CCOp:$cond),
The condition isn't properly an input... this seems likely to confuse
ISel. I'm not sure, though; I'm not really an expert on patterns, and
they can mess up in non-obvious ways.
> Maybe I'm approaching this from the wrong way, but I don't think this
> transforma...
2010 Dec 15
0
[LLVMdev] Optimization passes break machine instructions on new backend
Hello Per,
> The CMPrr instruction is moved down to after the PHI node. My guess is that
> the 'dead' in CFR<imp-def,dead> is to blame, but I can't see what I'm doing
> differently from MSP430/sparc that makes this not work. Any help GREATLY
> appreciated!
It seems like no use of CFR after CMP, indeed. How condbranches on
your platform look like (patterns, etc.)
2010 Dec 15
2
[LLVMdev] Optimization passes break machine instructions on new backend
...MPrr : InstCS<(outs IntRegs:$dst), (ins IntRegs:$b, IntRegs:$c),
"cmp $c, $dst",
[(set IntRegs:$dst, (cmpcc IntRegs:$b, IntRegs:$c)),
(implicit CFR)]>;
}
let Uses = [CFR], isBranch = 1, isTerminator = 1 in
def SKIPCOND : InstCS<(outs), (ins CCOp:$cc),
"s$cc",
[(skipcc imm:$cc)]>;
On Wed, Dec 15, 2010 at 10:02 AM, Anton Korobeynikov <
anton at korobeynikov.info> wrote:
> Hello Per,
>
> > The CMPrr instruction is moved down to after the PHI node. My guess is
&g...
2010 Dec 15
2
[LLVMdev] Optimization passes break machine instructions on new backend
Hello!
I'm working on a new back-end and have hit a bit of a snag. I'm working on
getting selectcc working and have followed the MSP430 model of emitting a
custom CMP and SELECT_CC node and matching that with a pseudo-instruction
that has useCustomEmitter=1. However, my output ends up very wrong, despite
the Machine code being initially correct:
# Machine code for function func:
Function