jhuber6 wrote:

> In theory we can lower masked load/store on any target; it's just a question 
> of how terrible the resulting code is. And on a target that doesn't support 
> unaligned load/store, the answer is, pretty terrible. But basically 
> everything that supports vectors has unaligned access support these days.
> 
> I'm a little concerned the argument types aren't what we want; it isn't great 
> that `__builtin_masked_load(mask,ptr)` is well-defined, but `*ptr` is not.
> 
> We could use EmitPointerWithAlignment() here, and infer whatever alignment 
> that implies. Which allows users to access an unaligned load if they really 
> want. But unaligned vector types are weird: we allow using an "aligned" 
> attribute on typedefs, but we don't represent it as a qualifier internally, 
> so bad things happen with type canonicalization.
> 
> Maybe we could consider changing the interface so it takes a pointer to the 
> element type of the returned vector, instead of a pointer to the returned 
> vector type.

I don't know why these intrinsics take alignment in the first place, the 
compress / expand variants don't. I think it'd be reasonable to change the 
intrinsics to derive alignment from the pointer and not an extra argument.

https://github.com/llvm/llvm-project/pull/156063
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to