macurtis-amd wrote:

I should preface this by mentioning that I'm not all that familiar with SROA, 
so thank you for your patience.

> So if I understand correctly, you are marking memsets as unsplittable, 
> lowering them to vector zero and smaller accesses to inserts/extracts.
>

Yes. As a naive attempt to produce the desired result, I was merely trying to 
mimic the behavior of `store` (see https://godbolt.org/z/G9f4vPhs6).

> I don't think your general approach here is going to work. We need to be 
> careful about introducing vector operations out of thin air, because LLVM is 
> not going to second guess them. If you convert a memset to <32768 x i8> ops 
> here, LLVM is going to carry those all they down, even though this is almost 
> certainly not performant. Additionally, you are breaking the ability for SROA 
> to split the alloca and fully promote parts of it.

Is there an appropriate place in the code to decide if a splittable memset 
should be promoted to a vector operation?


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

Reply via email to