-
Notifications
You must be signed in to change notification settings - Fork 269
Can unmasked stores update tail elements in memory? #846
Comments
It sounds like your concern is that
doesn't appear to address the unmasked case. I think the fundamental confusion is what it means to be "masked" or "unmasked": I think these terms are used in slightly different ways at different points in the spec. For example, the sentence before the one I quoted says
I interpret this as meaning that they have masked forms, where Another example of a potentially confusing usage concerns the instructions that use Anyway, my perspective is that the spec intends some kind of functional equivalence between "unmasked" and "masked with all mask bits asserted". I guess I'm basing this on common sense, on the choice
It seems inconsistent if unmasked stores can update "tail memory" but masked stores cannot. In summary, I also feel that some of the language is confusing, but I also feel that the intent is clear. I'm not addressing the question of whether there is or isn't an omission ("gray area") in the spec. |
Although I think this follows from the definition of "active" and the sentence Nick quoted is not necessary, I'm just going to delete the word "masked" from that sentence to avoid this question going forward. |
My concern was with the "masked" part, not the "active" part, but I think Nick's point about
meaning all vector loads and stores are masked is probably sufficient? For some reason I'd been reading that as "masked vector loads and stores do not raise exceptions on inactive elements", which is slightly different. |
Ack. I'd still like to clarify this in the spec, even though it's not a normative change, to short-circuit this kind of question in the future. I'll make a PR shortly. |
WFM. |
A recent GCC patch https://inbox.sourceware.org/gcc-patches/20221214113641.63320-1-juzhe.zhong@rivai.ai/ brought up a bit of a grey area in the spec: there's nothing explicitly defining the behavior of tail elements for unmasked vector stores. I'd always assumed the intent was to have tail elements defined to not manifest as stores (aside from the whole-register flavors), but I've never tried to look this close before.
Not sure if I'm just missing something in the spec here?
The text was updated successfully, but these errors were encountered: