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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits