forked from OSchip/llvm-project
[WebAssembly][WIP] Expand operations not supported by SIMD
llvm-svn: 355247
This commit is contained in:
parent
ba4538708a
commit
f5a8c28e7e
|
@ -174,6 +174,23 @@ WebAssemblyTargetLowering::WebAssemblyTargetLowering(
|
|||
setOperationAction(Op, T, Expand);
|
||||
}
|
||||
|
||||
// Expand integer operations supported for scalars but not SIMD
|
||||
for (auto Op : {ISD::CTLZ, ISD::CTTZ, ISD::CTPOP, ISD::SDIV, ISD::UDIV,
|
||||
ISD::SREM, ISD::UREM, ISD::ROTL, ISD::ROTR}) {
|
||||
for (auto T : {MVT::v16i8, MVT::v8i16, MVT::v4i32})
|
||||
setOperationAction(Op, T, Expand);
|
||||
if (Subtarget->hasUnimplementedSIMD128())
|
||||
setOperationAction(Op, MVT::v2i64, Expand);
|
||||
}
|
||||
|
||||
// Expand float operations supported for scalars but not SIMD
|
||||
for (auto Op : {ISD::FCEIL, ISD::FFLOOR, ISD::FTRUNC, ISD::FNEARBYINT,
|
||||
ISD::FCOPYSIGN}) {
|
||||
setOperationAction(Op, MVT::v4f32, Expand);
|
||||
if (Subtarget->hasUnimplementedSIMD128())
|
||||
setOperationAction(Op, MVT::v2f32, Expand);
|
||||
}
|
||||
|
||||
// Expand additional SIMD ops that V8 hasn't implemented yet
|
||||
if (!Subtarget->hasUnimplementedSIMD128()) {
|
||||
setOperationAction(ISD::FSQRT, MVT::v4f32, Expand);
|
||||
|
|
Loading…
Reference in New Issue