On 07/29/2013 10:59 AM, Andrew MacLeod wrote:
Blick. What were they smoking the night before... I guess we'll probably need to enhance the current atomic patterns in RTL... We should be able to figure out that its floating point and invoke the appropriate RTL pattern during expansion rather than an existing one. OR just frigging call libatomic and let it deal with it. :-) I guess there wouldnt be any other fallback available. Actually, thats a mess... no way for the librtary to know its floating point unless you tell it somehow with new entry points or somesuch.. very lame.

Actually, in hind sight, we will need new atomic builtins.... It lists other operators we need to support that we currently do not: They list
*, / , % + - << >> & ^ |
we currently  don't support *,/, modulus, right or left shift.

Maybe the simple thing is simply to emit the compare_exchange loop for all these, and not bother libatomic with them at all. We can eventually add rtl patterns for them if we want "better performance" for these new bits.

As for the floating point operations, emit the same loop, and if there is a target pattern emit it, otherwise issue a warning saying those footnote items are not properly protected or whatever.

Also, If I read this right, "arithmetic type" also includes complex type does it not? which means we need to support this for complex as well...

Does C++14(or onward) intend to support these additions as well?

Andrew

Reply via email to