[llvm-dev] Question about ISD::SUBCARRY

Roger Ferrer Ibanez via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 27 01:53:46 PDT 2017

Dear all,

a couple of new generic DAG nodes ISD::ADCARRY and ISD::SUBCARRY were recently introduced in https://reviews.llvm.org/D29872 

These nodes have three inputs and two outputs, the second output being the "carry". I understand that carry is well defined for ADDCARRY but my question is about SUBCARRY.

Some architectures set the "carry" of a "x - y" subtraction is set when x < y (e.g x86, "borrow") and some others set it when x >= y (e.g. ARM). Does the ISD::SUBCARRY picks one interpretation (and uses it for combiners on top of this node) or leaves the interpretation to the target.

Maybe my whole question does not make sense and even if only one interpretation is chosen this does not impact the target?

Thank you very much,

More information about the llvm-dev mailing list