| 2028 | } |
| 2029 | |
| 2030 | void OpDispatchBuilder::MOVDDUPOp(OpcodeArgs) { |
| 2031 | // If loading a vector, use the full size, so we don't |
| 2032 | // unnecessarily zero extend the vector. Otherwise, if |
| 2033 | // memory, then we want to load the element size exactly. |
| 2034 | const auto SrcSize = Op->Src[0].IsGPR() ? OpSize::i128Bit : OpSizeFromSrc(Op); |
| 2035 | Ref Src = LoadSource_WithOpSize(FPRClass, Op, Op->Src[0], SrcSize, Op->Flags); |
| 2036 | Ref Res = _VDupElement(OpSize::i128Bit, OpSizeFromSrc(Op), Src, 0); |
| 2037 | |
| 2038 | StoreResult(FPRClass, Op, Res, OpSize::iInvalid); |
| 2039 | } |
| 2040 | |
| 2041 | void OpDispatchBuilder::VMOVDDUPOp(OpcodeArgs) { |
| 2042 | const auto SrcSize = OpSizeFromSrc(Op); |