You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Today mono has some SIMD support but it doesn't have any way to special case the introduction of "simd constants" and it always introduces "new values" by creating a "zero value" and then a separate insert node for each element.
This works and even gets optimized in most cases by LLVM. However, it also can represent a non-trivial amount of IR being introduced (Vector256<byte> is 32 inserts) and can hinder some opportunistic optimizations lighting up earlier.
I propose that mono introduce a MONO_EMIT_NEW_VCONST or similar. On LLVM this would defer down to llvm::ConstantDataVector (for the LLVM-C API this is LLVMConstVector).
Likewise it should take advantage of the other LLVM APIs such as LLVMConstExtractElement, LLVMConstInsertElement, and LLVMConstShuffleVector as this should lead to an increase in throughput and some better codegen.
The text was updated successfully, but these errors were encountered:
ghost
added
the
untriaged
New issue has not been triaged by the area owner
label
Feb 1, 2023
Today mono has some SIMD support but it doesn't have any way to special case the introduction of "simd constants" and it always introduces "new values" by creating a "zero value" and then a separate
insert
node for each element.This works and even gets optimized in most cases by LLVM. However, it also can represent a non-trivial amount of IR being introduced (
Vector256<byte>
is 32 inserts) and can hinder some opportunistic optimizations lighting up earlier.I propose that mono introduce a
MONO_EMIT_NEW_VCONST
or similar. On LLVM this would defer down tollvm::ConstantDataVector
(for the LLVM-C API this isLLVMConstVector
).Likewise it should take advantage of the other LLVM APIs such as
LLVMConstExtractElement
,LLVMConstInsertElement
, andLLVMConstShuffleVector
as this should lead to an increase in throughput and some better codegen.The text was updated successfully, but these errors were encountered: