nikic wrote:

> > 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?

Basically: We should only do it if there already is an existing vector 
operation. If we have a memset and then a later load of e.g. `<16 x i8>`, then 
lowering the memset to `store <16 x i8> zeroinitializer` makes sense. But if we 
only have scalar operations, we should not be introducing vectors in SROA.

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