diff options
author | Carol Eidt <carol.eidt@microsoft.com> | 2018-09-17 17:46:46 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-17 17:46:46 -0700 |
commit | 6517a3519ef721d50b6b52995ca89d09b46189a2 (patch) | |
tree | db8a6be5e35da93f6c653c1d36cbb732a6beb644 /src/jit/lower.cpp | |
parent | 1df22d9d8970215b99f96691336b9b49a223ec1b (diff) | |
parent | 28305b5d566c3898fc0aa39e48f367fd1dc01cfb (diff) | |
download | coreclr-6517a3519ef721d50b6b52995ca89d09b46189a2.tar.gz coreclr-6517a3519ef721d50b6b52995ca89d09b46189a2.tar.bz2 coreclr-6517a3519ef721d50b6b52995ca89d09b46189a2.zip |
Merge pull request #15657 from mikedn/fp-divmul-binary
Move FP DIV/MUL handling to genCodeForBinary
Diffstat (limited to 'src/jit/lower.cpp')
-rw-r--r-- | src/jit/lower.cpp | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/src/jit/lower.cpp b/src/jit/lower.cpp index 86005ad26f..ca894f86d9 100644 --- a/src/jit/lower.cpp +++ b/src/jit/lower.cpp @@ -5641,61 +5641,6 @@ void Lowering::ContainCheckNode(GenTree* node) } //------------------------------------------------------------------------ -// ContainCheckDivOrMod: determine which operands of a div/mod should be contained. -// -// Arguments: -// node - pointer to the GT_UDIV/GT_UMOD node -// -void Lowering::ContainCheckDivOrMod(GenTreeOp* node) -{ - assert(node->OperIs(GT_DIV, GT_MOD, GT_UDIV, GT_UMOD)); - -#ifdef _TARGET_XARCH_ - GenTree* dividend = node->gtGetOp1(); - GenTree* divisor = node->gtGetOp2(); - - if (varTypeIsFloating(node->TypeGet())) - { - // No implicit conversions at this stage as the expectation is that - // everything is made explicit by adding casts. - assert(dividend->TypeGet() == divisor->TypeGet()); - - if (IsContainableMemoryOp(divisor) || divisor->IsCnsNonZeroFltOrDbl()) - { - MakeSrcContained(node, divisor); - } - else - { - // If there are no containable operands, we can make an operand reg optional. - // SSE2 allows only divisor to be a memory-op. - divisor->SetRegOptional(); - } - return; - } - bool divisorCanBeRegOptional = true; -#ifdef _TARGET_X86_ - if (dividend->OperGet() == GT_LONG) - { - divisorCanBeRegOptional = false; - MakeSrcContained(node, dividend); - } -#endif - - // divisor can be an r/m, but the memory indirection must be of the same size as the divide - if (IsContainableMemoryOp(divisor) && (divisor->TypeGet() == node->TypeGet())) - { - MakeSrcContained(node, divisor); - } - else if (divisorCanBeRegOptional) - { - // If there are no containable operands, we can make an operand reg optional. - // Div instruction allows only divisor to be a memory op. - divisor->SetRegOptional(); - } -#endif // _TARGET_XARCH_ -} - -//------------------------------------------------------------------------ // ContainCheckReturnTrap: determine whether the source of a RETURNTRAP should be contained. // // Arguments: |