[CostModel][X86] i8/i16 sitofp/uitofp are sext/zext to i32 for sitofp
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 6 Jul 2021 12:58:38 +0000 (13:58 +0100)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 6 Jul 2021 12:58:52 +0000 (13:58 +0100)
commit6f3f9535fcafcde11d3b3ef72fdc0f357813e9da
treea4723e90e3cc56e4d0fed480080cdbf960e169fa
parentf814cd7406aa13e082fdf6fe8296178a77735a5a
[CostModel][X86] i8/i16 sitofp/uitofp are sext/zext to i32 for sitofp

Provide a generic fallback that extends sub-i32 scalars before using the existing sitofp instructions.

These numbers can be tweaked for specific sse levels, but we should get the default handling in place first.

We get the extension for free for non-vector loads.
llvm/lib/Target/X86/X86TargetTransformInfo.cpp
llvm/test/Analysis/CostModel/X86/sitofp.ll
llvm/test/Analysis/CostModel/X86/uitofp.ll
llvm/test/Transforms/SLPVectorizer/X86/alternate-cast-inseltpoison.ll
llvm/test/Transforms/SLPVectorizer/X86/alternate-cast.ll
llvm/test/Transforms/SLPVectorizer/X86/sitofp-inseltpoison.ll
llvm/test/Transforms/SLPVectorizer/X86/sitofp.ll
llvm/test/Transforms/SLPVectorizer/X86/uitofp.ll