Lines Matching refs:is

4 A major difficulty with control dependencies is that current compilers
5 do not support them. One purpose of this document is therefore to
11 One such challenge is that control dependencies order only later stores.
13 unless a read memory barrier is provided. Consider the following code:
19 This is not guaranteed to provide any ordering because some types of CPUs
22 from "a". This means that an explicit read barrier is required, for example
31 However, stores are not speculated. This means that ordering is
48 Furthermore, if the compiler is able to prove that the value of variable
49 "a" is always non-zero, it would be well within its rights to optimize
59 It is tempting to try use control dependencies to enforce ordering on
87 Now there is no conditional between the load from "a" and the store to
88 "b", which means that the CPU is within its rights to reorder them: The
89 conditional is absolutely required, and must be present in the final
103 Without explicit memory ordering, control-dependency-based ordering is
115 The initial READ_ONCE() is still required to prevent the compiler from
120 and again remove the conditional branch that is absolutely required to
132 If MAX is compile-time defined to be 1, then the compiler knows that
134 The compiler is therefore within its rights to transform the above code
141 Given this transformation, the CPU is not required to respect the ordering
142 between the load from variable "a" and the store to variable "b". It is
144 is gone, and the barrier won't bring it back. Therefore, if you need
146 make sure that MAX is greater than one, perhaps as follows:
170 Because the first condition cannot fault and the second condition is
177 This is yet another example showing the importance of preventing the
179 does force the compiler to emit code for a given load, the compiler is
194 It is tempting to argue that there in fact is ordering because the
229 smp_store_release(). Please note that it is *not* sufficient to use
237 conditional must involve the prior load. If the compiler is able
257 (*) Compilers do not understand control dependencies. It is therefore