On 2012-07-31 04:33, Michael Zolotukhin wrote: > Here is a third part of patch, refactored by Kirill. This one adds > _addcarryx_u[32|64] intrinsics.
Frankly I don't understand the point of these instructions being added to the ISA at all. I would have understood an add-with-carry that did *not* modify the flags at all, but two separate ones that modify C and O separately is just downright strange. But to the point: I don't understand the point of having this as a builtin. Is the code generated by this builtin any better than plain C? And if you're going to have the builtin, why is this restricted to adx anyway? You obviously can produce the same results with the good old fashioned adc instruction as well. Which begs the question of why you've got a separate pattern for the adx anyway. If the insn is so much better, it ought to be used in the same pattern we use for adc now. r~