OpcodeDispatcher: Don't mask 32-bit bzhi either

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
This commit is contained in:
Alyssa Rosenzweig committed 2023-11-12 17:36:46 -04:00
1 parent 9398b931fb
commit 238e52f74a
1 file changed
+7 -2
@@ -2226,8 +2226,13 @@ void OpDispatchBuilder::BZHI(OpcodeArgs) {
const auto Size = GetSrcSize(Op);
const auto OperandSize = Size * 8;
auto* Src = LoadSource(GPRClass, Op, Op->Src[0], Op->Flags);
auto* Index = LoadSource(GPRClass, Op, Op->Src[1], Op->Flags);
// In 32-bit mode we only look at bottom 32-bit, no 8 or 16-bit BZHI so no
// need to zero-extend sources
auto* Src = LoadSource(GPRClass, Op, Op->Src[0], Op->Flags,
{.AllowUpperGarbage = true});
auto* Index = LoadSource(GPRClass, Op, Op->Src[1], Op->Flags,
{.AllowUpperGarbage = true});
// Clear the high bits specified by the index. A64 only considers bottom bits
// of the shift, so we don't need to mask bottom 8-bits ourselves.