diff --git a/src/backend_x64/emit_x64.cpp b/src/backend_x64/emit_x64.cpp index d26ea9fd..06659820 100644 --- a/src/backend_x64/emit_x64.cpp +++ b/src/backend_x64/emit_x64.cpp @@ -1275,26 +1275,6 @@ void EmitX64::EmitCountLeadingZeros(IR::Block&, IR::Inst* inst) { } } -void EmitX64::EmitNegateLowWord(IR::Block&, IR::Inst* inst) { - IR::Value a = inst->GetArg(0); - - Xbyak::Reg32 result = reg_alloc.UseDefGpr(a, inst).cvt32(); - - code->ror(result, 16); - code->xor(result, 0xFFFF0000); - code->add(result, 0x00010000); - code->ror(result, 16); -} - -void EmitX64::EmitNegateHighWord(IR::Block&, IR::Inst* inst) { - IR::Value a = inst->GetArg(0); - - Xbyak::Reg32 result = reg_alloc.UseDefGpr(a, inst).cvt32(); - - code->xor(result, 0xFFFF0000); - code->add(result, 0x00010000); -} - void EmitX64::EmitSignedSaturatedAdd(IR::Block& block, IR::Inst* inst) { auto overflow_inst = inst->GetAssociatedPseudoOperation(IR::Opcode::GetOverflowFromOp); diff --git a/src/frontend/ir/ir_emitter.cpp b/src/frontend/ir/ir_emitter.cpp index 77010eeb..9d7795cb 100644 --- a/src/frontend/ir/ir_emitter.cpp +++ b/src/frontend/ir/ir_emitter.cpp @@ -328,14 +328,6 @@ Value IREmitter::CountLeadingZeros(const Value& a) { return Inst(Opcode::CountLeadingZeros, {a}); } -Value IREmitter::NegateLowWord(const Value& a) { - return Inst(Opcode::NegateLowWord, {a}); -} - -Value IREmitter::NegateHighWord(const Value& a) { - return Inst(Opcode::NegateHighWord, {a}); -} - IREmitter::ResultAndOverflow IREmitter::SignedSaturatedAdd(const Value& a, const Value& b) { auto result = Inst(Opcode::SignedSaturatedAdd, {a, b}); auto overflow = Inst(Opcode::GetOverflowFromOp, {result}); diff --git a/src/frontend/ir/ir_emitter.h b/src/frontend/ir/ir_emitter.h index f1928955..250137f6 100644 --- a/src/frontend/ir/ir_emitter.h +++ b/src/frontend/ir/ir_emitter.h @@ -133,8 +133,6 @@ public: Value ByteReverseHalf(const Value& a); Value ByteReverseDual(const Value& a); Value CountLeadingZeros(const Value& a); - Value NegateLowWord(const Value& a); - Value NegateHighWord(const Value& a); ResultAndOverflow SignedSaturatedAdd(const Value& a, const Value& b); ResultAndOverflow SignedSaturatedSub(const Value& a, const Value& b); diff --git a/src/frontend/ir/opcodes.inc b/src/frontend/ir/opcodes.inc index 5d8e8bc7..907e07d0 100644 --- a/src/frontend/ir/opcodes.inc +++ b/src/frontend/ir/opcodes.inc @@ -73,8 +73,6 @@ OPCODE(ByteReverseWord, T::U32, T::U32 OPCODE(ByteReverseHalf, T::U16, T::U16 ) OPCODE(ByteReverseDual, T::U64, T::U64 ) OPCODE(CountLeadingZeros, T::U32, T::U32 ) -OPCODE(NegateLowWord, T::U32, T::U32 ) -OPCODE(NegateHighWord, T::U32, T::U32 ) // Saturated instructions OPCODE(SignedSaturatedAdd, T::U32, T::U32, T::U32 )