[LLVMdev] Unsigned CCCondCode Legalization
johnnydval at gmail.com
Mon Dec 1 02:46:11 PST 2014
Currently, if a target cannot perform unsigned comparisons the
legalizer will hit a llvm_unreachable. This is easily achieved by
telling the legalizer to expand all unsigned condcodes.
setCondCodeAction(ISD::SETUxx, MVT::ixx, Expand);
This is because in SelectionDAGLegalize::LegalizeSetCCCondCode it will
only attempt to invert an operation and not any other expansions.
To convert from an unsigned integer operation to a singed one whilst
still keeping the same result, zero extending to iN + 1 and removing
the unsigned flag from the CCCode should be enough (as far as I can
I was wondering if this type of expansion purposefully was not
implemented (and if I'm missing something obvious), or if it is worth
writing a patch for this.
More information about the llvm-dev