Skip to content

Commit 2ec23e6

Browse files
committed
Optimize -X and MathF.Abs(X) for floats
1 parent 4bc91cb commit 2ec23e6

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

src/coreclr/src/jit/codegenxarch.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6821,13 +6821,20 @@ void CodeGen::genSSE2BitwiseOp(GenTree* treeNode)
68216821
*bitMask = GetEmitter()->emitAnyConst(cnsAddr, cnsSize, cnsAlign);
68226822
}
68236823

6824+
GenTree* op1 = treeNode->AsOp()->gtOp1;
6825+
assert(op1->isUsedFromReg());
6826+
6827+
if (compiler->canUseVexEncoding())
6828+
{
6829+
GetEmitter()->emitIns_R_R_C(ins, emitTypeSize(targetType), targetReg, genConsumeReg(op1), *bitMask, 0);
6830+
return;
6831+
}
6832+
68246833
// We need an additional register for bitmask.
68256834
regNumber tmpReg = treeNode->GetSingleTempReg();
68266835

68276836
// Move operand into targetReg only if the reg reserved for
68286837
// internal purpose is not the same as targetReg.
6829-
GenTree* op1 = treeNode->AsOp()->gtOp1;
6830-
assert(op1->isUsedFromReg());
68316838
regNumber operandReg = genConsumeReg(op1);
68326839
if (tmpReg != targetReg)
68336840
{

0 commit comments

Comments
 (0)