@@ -3240,7 +3240,6 @@ void CodeGen::genCodeForCompare(GenTreeOp* tree)
3240
3240
3241
3241
if (isUnordered)
3242
3242
{
3243
- BasicBlock* skipLabel = nullptr ;
3244
3243
if (tree->OperIs (GT_LT))
3245
3244
{
3246
3245
emit->emitIns_R_R_R (cmpSize == EA_4BYTE ? INS_fle_s : INS_fle_d, cmpSize, targetReg, regOp2, regOp1);
@@ -3249,19 +3248,6 @@ void CodeGen::genCodeForCompare(GenTreeOp* tree)
3249
3248
{
3250
3249
emit->emitIns_R_R_R (cmpSize == EA_4BYTE ? INS_flt_s : INS_flt_d, cmpSize, targetReg, regOp2, regOp1);
3251
3250
}
3252
- else if (tree->OperIs (GT_EQ))
3253
- {
3254
- regNumber tempReg = internalRegisters.GetSingle (tree);
3255
- skipLabel = genCreateTempLabel ();
3256
- emit->emitIns_R_R (cmpSize == EA_4BYTE ? INS_fclass_s : INS_fclass_d, cmpSize, targetReg, regOp1);
3257
- emit->emitIns_R_R (cmpSize == EA_4BYTE ? INS_fclass_s : INS_fclass_d, cmpSize, tempReg, regOp2);
3258
- emit->emitIns_R_R_R (INS_or, EA_8BYTE, tempReg, targetReg, tempReg);
3259
- emit->emitIns_R_R_I (INS_andi, EA_8BYTE, tempReg, tempReg, 0x300 );
3260
- emit->emitIns_R_R_I (INS_addi, EA_8BYTE, targetReg, REG_R0, 1 );
3261
- emit->emitIns_J (INS_bnez, skipLabel, tempReg);
3262
- emit->emitIns_R_R_R (cmpSize == EA_4BYTE ? INS_feq_s : INS_feq_d, cmpSize, targetReg, regOp1, regOp2);
3263
- genDefineTempLabel (skipLabel);
3264
- }
3265
3251
else if (tree->OperIs (GT_NE))
3266
3252
{
3267
3253
emit->emitIns_R_R_R (cmpSize == EA_4BYTE ? INS_feq_s : INS_feq_d, cmpSize, targetReg, regOp1, regOp2);
@@ -3274,11 +3260,11 @@ void CodeGen::genCodeForCompare(GenTreeOp* tree)
3274
3260
{
3275
3261
emit->emitIns_R_R_R (cmpSize == EA_4BYTE ? INS_flt_s : INS_flt_d, cmpSize, targetReg, regOp1, regOp2);
3276
3262
}
3277
- if (skipLabel == nullptr )
3263
+ else
3278
3264
{
3279
- emit->emitIns_R_R_R (INS_sub, EA_8BYTE, targetReg, REG_R0, targetReg);
3280
- emit->emitIns_R_R_I (INS_addi, EA_8BYTE, targetReg, targetReg, 1 );
3265
+ unreached ();
3281
3266
}
3267
+ emit->emitIns_R_R_I (INS_xori, EA_8BYTE, targetReg, targetReg, 1 );
3282
3268
}
3283
3269
else
3284
3270
{
@@ -3294,21 +3280,6 @@ void CodeGen::genCodeForCompare(GenTreeOp* tree)
3294
3280
{
3295
3281
emit->emitIns_R_R_R (cmpSize == EA_4BYTE ? INS_feq_s : INS_feq_d, cmpSize, targetReg, regOp1, regOp2);
3296
3282
}
3297
- else if (tree->OperIs (GT_NE))
3298
- {
3299
- regNumber tempReg = internalRegisters.GetSingle (tree);
3300
- emit->emitIns_R_R (cmpSize == EA_4BYTE ? INS_fclass_s : INS_fclass_d, cmpSize, targetReg, regOp1);
3301
- emit->emitIns_R_R (cmpSize == EA_4BYTE ? INS_fclass_s : INS_fclass_d, cmpSize, tempReg, regOp2);
3302
- emit->emitIns_R_R_R (INS_or, EA_8BYTE, tempReg, targetReg, tempReg);
3303
- emit->emitIns_R_R_I (INS_andi, EA_8BYTE, tempReg, tempReg, 0x300 );
3304
- emit->emitIns_R_R_I (INS_addi, EA_8BYTE, targetReg, REG_R0, 0 );
3305
- BasicBlock* skipLabel = genCreateTempLabel ();
3306
- emit->emitIns_J (INS_bnez, skipLabel, tempReg);
3307
- emit->emitIns_R_R_R (cmpSize == EA_4BYTE ? INS_feq_s : INS_feq_d, cmpSize, targetReg, regOp1, regOp2);
3308
- emit->emitIns_R_R_R (INS_sub, EA_8BYTE, targetReg, REG_R0, targetReg);
3309
- emit->emitIns_R_R_I (INS_addi, EA_8BYTE, targetReg, targetReg, 1 );
3310
- genDefineTempLabel (skipLabel);
3311
- }
3312
3283
else if (tree->OperIs (GT_GT))
3313
3284
{
3314
3285
emit->emitIns_R_R_R (cmpSize == EA_4BYTE ? INS_flt_s : INS_flt_d, cmpSize, targetReg, regOp2, regOp1);
@@ -3317,6 +3288,10 @@ void CodeGen::genCodeForCompare(GenTreeOp* tree)
3317
3288
{
3318
3289
emit->emitIns_R_R_R (cmpSize == EA_4BYTE ? INS_fle_s : INS_fle_d, cmpSize, targetReg, regOp2, regOp1);
3319
3290
}
3291
+ else
3292
+ {
3293
+ unreached ();
3294
+ }
3320
3295
}
3321
3296
}
3322
3297
else
0 commit comments