Skip to content

Commit 41d470b

Browse files
committed
Clean up code gen for floating comparisons
1 parent d2cdcdd commit 41d470b

File tree

1 file changed

+7
-32
lines changed

1 file changed

+7
-32
lines changed

src/coreclr/jit/codegenriscv64.cpp

Lines changed: 7 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3226,7 +3226,6 @@ void CodeGen::genCodeForCompare(GenTreeOp* tree)
32263226

32273227
if (isUnordered)
32283228
{
3229-
BasicBlock* skipLabel = nullptr;
32303229
if (tree->OperIs(GT_LT))
32313230
{
32323231
emit->emitIns_R_R_R(cmpSize == EA_4BYTE ? INS_fle_s : INS_fle_d, cmpSize, targetReg, regOp2, regOp1);
@@ -3235,19 +3234,6 @@ void CodeGen::genCodeForCompare(GenTreeOp* tree)
32353234
{
32363235
emit->emitIns_R_R_R(cmpSize == EA_4BYTE ? INS_flt_s : INS_flt_d, cmpSize, targetReg, regOp2, regOp1);
32373236
}
3238-
else if (tree->OperIs(GT_EQ))
3239-
{
3240-
regNumber tempReg = internalRegisters.GetSingle(tree);
3241-
skipLabel = genCreateTempLabel();
3242-
emit->emitIns_R_R(cmpSize == EA_4BYTE ? INS_fclass_s : INS_fclass_d, cmpSize, targetReg, regOp1);
3243-
emit->emitIns_R_R(cmpSize == EA_4BYTE ? INS_fclass_s : INS_fclass_d, cmpSize, tempReg, regOp2);
3244-
emit->emitIns_R_R_R(INS_or, EA_8BYTE, tempReg, targetReg, tempReg);
3245-
emit->emitIns_R_R_I(INS_andi, EA_8BYTE, tempReg, tempReg, 0x300);
3246-
emit->emitIns_R_R_I(INS_addi, EA_8BYTE, targetReg, REG_R0, 1);
3247-
emit->emitIns_J(INS_bnez, skipLabel, tempReg);
3248-
emit->emitIns_R_R_R(cmpSize == EA_4BYTE ? INS_feq_s : INS_feq_d, cmpSize, targetReg, regOp1, regOp2);
3249-
genDefineTempLabel(skipLabel);
3250-
}
32513237
else if (tree->OperIs(GT_NE))
32523238
{
32533239
emit->emitIns_R_R_R(cmpSize == EA_4BYTE ? INS_feq_s : INS_feq_d, cmpSize, targetReg, regOp1, regOp2);
@@ -3260,11 +3246,11 @@ void CodeGen::genCodeForCompare(GenTreeOp* tree)
32603246
{
32613247
emit->emitIns_R_R_R(cmpSize == EA_4BYTE ? INS_flt_s : INS_flt_d, cmpSize, targetReg, regOp1, regOp2);
32623248
}
3263-
if (skipLabel == nullptr)
3249+
else
32643250
{
3265-
emit->emitIns_R_R_R(INS_sub, EA_8BYTE, targetReg, REG_R0, targetReg);
3266-
emit->emitIns_R_R_I(INS_addi, EA_8BYTE, targetReg, targetReg, 1);
3251+
assert(false);
32673252
}
3253+
emit->emitIns_R_R_I(INS_xori, EA_8BYTE, targetReg, targetReg, 1);
32683254
}
32693255
else
32703256
{
@@ -3280,21 +3266,6 @@ void CodeGen::genCodeForCompare(GenTreeOp* tree)
32803266
{
32813267
emit->emitIns_R_R_R(cmpSize == EA_4BYTE ? INS_feq_s : INS_feq_d, cmpSize, targetReg, regOp1, regOp2);
32823268
}
3283-
else if (tree->OperIs(GT_NE))
3284-
{
3285-
regNumber tempReg = internalRegisters.GetSingle(tree);
3286-
emit->emitIns_R_R(cmpSize == EA_4BYTE ? INS_fclass_s : INS_fclass_d, cmpSize, targetReg, regOp1);
3287-
emit->emitIns_R_R(cmpSize == EA_4BYTE ? INS_fclass_s : INS_fclass_d, cmpSize, tempReg, regOp2);
3288-
emit->emitIns_R_R_R(INS_or, EA_8BYTE, tempReg, targetReg, tempReg);
3289-
emit->emitIns_R_R_I(INS_andi, EA_8BYTE, tempReg, tempReg, 0x300);
3290-
emit->emitIns_R_R_I(INS_addi, EA_8BYTE, targetReg, REG_R0, 0);
3291-
BasicBlock* skipLabel = genCreateTempLabel();
3292-
emit->emitIns_J(INS_bnez, skipLabel, tempReg);
3293-
emit->emitIns_R_R_R(cmpSize == EA_4BYTE ? INS_feq_s : INS_feq_d, cmpSize, targetReg, regOp1, regOp2);
3294-
emit->emitIns_R_R_R(INS_sub, EA_8BYTE, targetReg, REG_R0, targetReg);
3295-
emit->emitIns_R_R_I(INS_addi, EA_8BYTE, targetReg, targetReg, 1);
3296-
genDefineTempLabel(skipLabel);
3297-
}
32983269
else if (tree->OperIs(GT_GT))
32993270
{
33003271
emit->emitIns_R_R_R(cmpSize == EA_4BYTE ? INS_flt_s : INS_flt_d, cmpSize, targetReg, regOp2, regOp1);
@@ -3303,6 +3274,10 @@ void CodeGen::genCodeForCompare(GenTreeOp* tree)
33033274
{
33043275
emit->emitIns_R_R_R(cmpSize == EA_4BYTE ? INS_fle_s : INS_fle_d, cmpSize, targetReg, regOp2, regOp1);
33053276
}
3277+
else
3278+
{
3279+
assert(false);
3280+
}
33063281
}
33073282
}
33083283
else

0 commit comments

Comments
 (0)