| 3638 | |
| 3639 | template<IR::OpSize ElementSize> |
| 3640 | void OpDispatchBuilder::AVXVectorRound(OpcodeArgs) { |
| 3641 | const auto Mode = Op->Src[1].Literal(); |
| 3642 | |
| 3643 | // No need to zero extend the vector in the event we have a |
| 3644 | // scalar source, especially since it's only inserted into another vector. |
| 3645 | const auto SrcSize = OpSizeFromSrc(Op); |
| 3646 | |
| 3647 | Ref Src = LoadSource_WithOpSize(FPRClass, Op, Op->Src[0], SrcSize, Op->Flags); |
| 3648 | Ref Result = VectorRoundImpl(OpSizeFromDst(Op), ElementSize, Src, Mode); |
| 3649 | |
| 3650 | StoreResult(FPRClass, Op, Result, OpSize::iInvalid); |
| 3651 | } |
| 3652 | |
| 3653 | template void OpDispatchBuilder::AVXVectorRound<OpSize::i32Bit>(OpcodeArgs); |
| 3654 | template void OpDispatchBuilder::AVXVectorRound<OpSize::i64Bit>(OpcodeArgs); |