My personal opinion? More than likely we won't require a fence between two loads if the second is address-dependent on the first. Practically speaking, a lot of software (notably Linux) basically assumes that hardware always guarantees this to work, because no major architecture since Alpha has relaxed such orderings.
However, we don't yet have 100% consensus on how exactly to formalize this in the task group, and whether address, control, and data dependencies are all equivalent in strength, whether they apply equally well to read-read vs. read-write orderings, or even whether all of the above should even be enforced. So I don't think we're quite ready to commit to anything absolute yet.
So for now, I'd say the same thing I did for the other aspects of the addendum. Hardware should probably err on the side of caution and enforce all of the above dependency orderings. Software should probably err on the side of caution and emit fences anyway for now. More than likely, however, this advice will turn out to be overly conservative in one way or the other (or both), and can be relaxed later once things are more settled.
If anyone wants to weigh in on how terrible it would be for their software if dependency orderings weren't enforced, or how terrible it would be for their hardware if the above dependency orderings were all required, I'd be interested to hear the feedback.
Dan
-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information. Any unauthorized review, use, disclosure or distribution
is prohibited. If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------