I have the following question about the proposed memory model: In the examples below: 1. r1 = atomic_load( &x ); r2 = y; 2. r1 = atomic_load( &x ); r2 = atomic_load( &y ); 3. if( r1 = atomic_load( &x ) ) r2 = y; (note that the atomic loads do not have an associated ordering constraint) is the compiler or the hardware allowed to reorder the two loads?