krzysz00 wrote:

1. For the swizzled case, that's `struct.ptr.buffer.*`, and yeah, those will 
always need builtins because LLVM can't deal in 2D addressing schemes
2. What I mean is that "types that work" isn't the right framing: any type can 
be legalized to one or more types that work. That is, down in the isel 
legalizer, if I call for, for example
    ````llvm
    %0 = call {i64, i64, i8} @llvm.amdgcn.raw.buffer.ptr.load(ptr addrspace(8) 
%rsrc, i32 %off, ...)
     ````
that should become two `BUFFER_LOAD` instructions, one that loads a `<4 x i32>` 
and one that loads an `i8` from `%off + 16`

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

Reply via email to