@@ -3226,7 +3226,6 @@ void CodeGen::genCodeForCompare(GenTreeOp* tree)
3226
3226
3227
3227
if (isUnordered)
3228
3228
{
3229
- BasicBlock* skipLabel = nullptr ;
3230
3229
if (tree->OperIs (GT_LT))
3231
3230
{
3232
3231
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)
3235
3234
{
3236
3235
emit->emitIns_R_R_R (cmpSize == EA_4BYTE ? INS_flt_s : INS_flt_d, cmpSize, targetReg, regOp2, regOp1);
3237
3236
}
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
- }
3251
3237
else if (tree->OperIs (GT_NE))
3252
3238
{
3253
3239
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)
3260
3246
{
3261
3247
emit->emitIns_R_R_R (cmpSize == EA_4BYTE ? INS_flt_s : INS_flt_d, cmpSize, targetReg, regOp1, regOp2);
3262
3248
}
3263
- if (skipLabel == nullptr )
3249
+ else
3264
3250
{
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 );
3267
3252
}
3253
+ emit->emitIns_R_R_I (INS_xori, EA_8BYTE, targetReg, targetReg, 1 );
3268
3254
}
3269
3255
else
3270
3256
{
@@ -3280,21 +3266,6 @@ void CodeGen::genCodeForCompare(GenTreeOp* tree)
3280
3266
{
3281
3267
emit->emitIns_R_R_R (cmpSize == EA_4BYTE ? INS_feq_s : INS_feq_d, cmpSize, targetReg, regOp1, regOp2);
3282
3268
}
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
- }
3298
3269
else if (tree->OperIs (GT_GT))
3299
3270
{
3300
3271
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)
3303
3274
{
3304
3275
emit->emitIns_R_R_R (cmpSize == EA_4BYTE ? INS_fle_s : INS_fle_d, cmpSize, targetReg, regOp2, regOp1);
3305
3276
}
3277
+ else
3278
+ {
3279
+ assert (false );
3280
+ }
3306
3281
}
3307
3282
}
3308
3283
else
0 commit comments