| 1384 | } |
| 1385 | |
| 1386 | uint32_t OpDispatchBuilder::LoadConstantShift(X86Tables::DecodedOp Op, bool Is1Bit) { |
| 1387 | if (Is1Bit) { |
| 1388 | return 1; |
| 1389 | } else { |
| 1390 | // x86 masks the shift by 0x3F or 0x1F depending on size of op |
| 1391 | const auto Size = OpSizeFromSrc(Op); |
| 1392 | uint64_t Mask = Size == OpSize::i64Bit ? 0x3F : 0x1F; |
| 1393 | |
| 1394 | return Op->Src[1].Literal() & Mask; |
| 1395 | } |
| 1396 | } |
| 1397 | |
| 1398 | void OpDispatchBuilder::XGetBVOp(OpcodeArgs) { |
| 1399 | Ref Function = LoadGPRRegister(X86State::REG_RCX); |