From 1a3f3ac4355a454cedf0a640729f575f64a14e31 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Thu, 18 Aug 2016 18:17:17 +0100 Subject: [PATCH] emit_x64: Correct behaviour of PackedOperation for immediate argument x64 MOVD_xmm does not support an immediate oparg --- src/backend_x64/emit_x64.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend_x64/emit_x64.cpp b/src/backend_x64/emit_x64.cpp index baa67a27..4eaef5b0 100644 --- a/src/backend_x64/emit_x64.cpp +++ b/src/backend_x64/emit_x64.cpp @@ -1106,13 +1106,13 @@ static void EmitPackedOperation(BlockOfCode* code, RegAlloc& reg_alloc, IR::Inst IR::Value b = inst->GetArg(1); X64Reg result = reg_alloc.UseDefRegister(a, inst, any_gpr); - OpArg op_arg = reg_alloc.UseOpArg(b, any_gpr); + X64Reg arg = reg_alloc.UseRegister(b, any_gpr); X64Reg xmm_scratch_a = reg_alloc.ScratchRegister(any_xmm); X64Reg xmm_scratch_b = reg_alloc.ScratchRegister(any_xmm); code->MOVD_xmm(xmm_scratch_a, R(result)); - code->MOVD_xmm(xmm_scratch_b, op_arg); + code->MOVD_xmm(xmm_scratch_b, R(arg)); (code->*fn)(xmm_scratch_a, R(xmm_scratch_b));