> AArch64 first faulting reads are safe to execute speculatively because the > hardware is able to return less than a full vector read. > > The loads (both "first faulting" (FF) and "non-faulting" (NF)) set a predicate > register (first fault register) with a mask of loaded elements.
Just interrupting here right away without having read the rest :) Is this (the content of the predicate register) actually a length? (i.e. AND-masked with your regular loop/predicate mask?) I would hope it is, at least conceptually. For riscv there is no dedicated FoF state, a FoF load just sets the vector length to a value potentially lower than before. It can be read by a control register if needed. I'm just wondering if there is any benefit (for comprehension and otherwise) of treating it as a length as well for aarch64? -- Regards Robin
