On Tue, 9 Jan 2018, Richard Earnshaw (lists) wrote: > Read condition 1 i) again. > > > i) the conditional select instruction has a register data dependency on > a load R1, that has been executed speculatively, for one of its input > registers, and
Sorry - I don't know how I missed that. I understand the motivation for the behavior of the new built-in now; the CSDB specification is surprising, but that is off-topic I guess. Seems quite unfortunate that CSDB is constraining the generic built-in like this, though. Thank you for clearing this up. I suggest that the user documentation in extend.texi should explicitly call out that the load itself still may be speculatively executed - only its consumers can be expected to be fenced off. For example, after +but in addition target-specific code will be inserted to ensure that +speculation using @code{*ptr} cannot occur when @var{cmpptr} lies outside of +the specified bounds. it can go on to say e.g., However note that the load of @code{*ptr} itself and the conditional branch leading to it may still be subject to speculative execution (and the load may have observable effects on the cache as a result). Thanks. Alexander