mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-14 02:00:43 +02:00
IR: Removes implicit sized LUDIV/LUREM
This commit is contained in:
1 parent
b801bacb36
commit
5013473ec0
2 files changed
+6
-12
No files matched your search
@@ -4371,8 +4371,8 @@ void OpDispatchBuilder::DIVOp(OpcodeArgs) {
|
||||
else if (Size == 2) {
|
||||
OrderedNode *Src1 = LoadGPRRegister(X86State::REG_RAX, Size);
|
||||
OrderedNode *Src2 = LoadGPRRegister(X86State::REG_RDX, Size);
|
||||
auto UDivOp = _LUDiv(Src1, Src2, Divisor);
|
||||
auto URemOp = _LURem(Src1, Src2, Divisor);
|
||||
auto UDivOp = _LUDiv(OpSize::i16Bit, Src1, Src2, Divisor);
|
||||
auto URemOp = _LURem(OpSize::i16Bit, Src1, Src2, Divisor);
|
||||
|
||||
StoreGPRRegister(X86State::REG_RAX, UDivOp, Size);
|
||||
StoreGPRRegister(X86State::REG_RDX, URemOp, Size);
|
||||
@@ -4381,8 +4381,8 @@ void OpDispatchBuilder::DIVOp(OpcodeArgs) {
|
||||
OrderedNode *Src1 = LoadGPRRegister(X86State::REG_RAX, Size);
|
||||
OrderedNode *Src2 = LoadGPRRegister(X86State::REG_RDX, Size);
|
||||
|
||||
OrderedNode *UDivOp = _Bfe(Size * 8, 0, _LUDiv(Src1, Src2, Divisor));
|
||||
OrderedNode *URemOp = _Bfe(Size * 8, 0, _LURem(Src1, Src2, Divisor));
|
||||
OrderedNode *UDivOp = _Bfe(Size * 8, 0, _LUDiv(OpSize::i32Bit, Src1, Src2, Divisor));
|
||||
OrderedNode *URemOp = _Bfe(Size * 8, 0, _LURem(OpSize::i32Bit, Src1, Src2, Divisor));
|
||||
|
||||
StoreGPRRegister(X86State::REG_RAX, UDivOp);
|
||||
StoreGPRRegister(X86State::REG_RDX, URemOp);
|
||||
@@ -4396,8 +4396,8 @@ void OpDispatchBuilder::DIVOp(OpcodeArgs) {
|
||||
OrderedNode *Src1 = LoadGPRRegister(X86State::REG_RAX);
|
||||
OrderedNode *Src2 = LoadGPRRegister(X86State::REG_RDX);
|
||||
|
||||
auto UDivOp = _LUDiv(Src1, Src2, Divisor);
|
||||
auto URemOp = _LURem(Src1, Src2, Divisor);
|
||||
auto UDivOp = _LUDiv(OpSize::i64Bit, Src1, Src2, Divisor);
|
||||
auto URemOp = _LURem(OpSize::i64Bit, Src1, Src2, Divisor);
|
||||
|
||||
StoreGPRRegister(X86State::REG_RAX, UDivOp);
|
||||
StoreGPRRegister(X86State::REG_RDX, URemOp);
|
||||
|
||||
@@ -272,15 +272,9 @@ friend class FEXCore::IR::PassManager;
|
||||
IRPair<IROp_LDiv> _LDiv(OrderedNode *_Lower, OrderedNode *_Upper, OrderedNode *_Divisor) {
|
||||
return _LDiv(static_cast<OpSize>(std::max(GetOpSize(_Divisor), std::max(GetOpSize(_Upper), GetOpSize(_Lower)))), _Lower, _Upper, _Divisor);
|
||||
}
|
||||
IRPair<IROp_LUDiv> _LUDiv(OrderedNode *_Lower, OrderedNode *_Upper, OrderedNode *_Divisor) {
|
||||
return _LUDiv(static_cast<OpSize>(std::max(GetOpSize(_Divisor), std::max(GetOpSize(_Upper), GetOpSize(_Lower)))), _Lower, _Upper, _Divisor);
|
||||
}
|
||||
IRPair<IROp_LRem> _LRem(OrderedNode *_Lower, OrderedNode *_Upper, OrderedNode *_Divisor) {
|
||||
return _LRem(static_cast<OpSize>(std::max(GetOpSize(_Divisor), std::max(GetOpSize(_Upper), GetOpSize(_Lower)))), _Lower, _Upper, _Divisor);
|
||||
}
|
||||
IRPair<IROp_LURem> _LURem(OrderedNode *_Lower, OrderedNode *_Upper, OrderedNode *_Divisor) {
|
||||
return _LURem(static_cast<OpSize>(std::max(GetOpSize(_Divisor), std::max(GetOpSize(_Upper), GetOpSize(_Lower)))), _Lower, _Upper, _Divisor);
|
||||
}
|
||||
// End of Temporary naughty implicit IR operation handlers
|
||||
|
||||
void AddPhiValue(IR::IROp_Phi *Phi, OrderedNode *Value) {
|
||||
|
||||
Reference in new issue
Block a user