This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH 0/3] Add __builtin_load_no_speculate
On 01/05/2018 04:57 AM, Richard Earnshaw (lists) wrote:
> On 05/01/18 11:35, Jakub Jelinek wrote:
>> On Fri, Jan 05, 2018 at 10:59:21AM +0000, Richard Earnshaw (lists) wrote:
>>>> But the condition could be just 'true' in the instruction encoding? That is,
>>>> why do you do both the jump-around and the csel? Maybe I misunderstood
>>>> the RTL you appear to generate. I'd have expected an UNSPEC to avoid
>>>> the compiler messing up things.
>>>>
>>>
>>> That's why the intrinsic takes explicit bounds not a simple bool
>>> expressing the conditions. It prevents the optimizers from replacing
>>> the condition by value range propagation. That does restrict the
>>
>> Preventing optimizers from replacing the condition can be done in many ways,
>> IFN, UNSPEC, ...
>> The question is if you really need it at the assembly level, or if you can
>> just do an unconditional branch or branch conditional on say comparison of
>> two constants, without any dynamic bounds.
>>
>> Jakub
>>
>
> The bounds /have/ to reflect the real speculation condition. Otherwise
> the CSEL becomes ineffective.
I think this is probably the key that Jakub and Richard B. were missing.
It certainly hadn't clicked for me when we spoke earlier.
Jeff