Displaying 3 results from an estimated 3 matches for "cmovlog".
Did you mean:
cloglog
2008 Sep 12
2
[LLVMdev] Selection Condition Codes
...;
dag OutOperandList = outs;
dag InOperandList = ins;
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...
2008 Sep 12
0
[LLVMdev] Selection Condition Codes
...want the select_cc
> instruction to be lowered into a comparison followed by a conditional move.
"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.
>...
2008 Sep 12
2
[LLVMdev] Selection Condition Codes
...lag = MI->getOperand(3);
CC = (INSTCC::CondCodes)MI->getOperand(3).getImm();
// Here I want to get the destination register
of SET_CC instruction and place it as the first addReg
TODO(Get setcc destination register);
BuildMI(BB,
TII.get(INST::CMOVLOG_32),Dst.getReg()).addReg(CCFlag.getImm()).addReg(T
rueVal.getReg()).addReg(FalseVal.getReg());
}
break;
case INST::SET_CC:
{
MachineOperand Dst = MI->getOperand(0);
MachineOperand LHS = MI->getOperand(1);...