@@ -222,6 +222,12 @@ void CodeGen::genSSEIntrinsic(GenTreeHWIntrinsic* node)
222222 break ;
223223 }
224224
225+ case NI_SSE_AddScalar:
226+ assert (baseType == TYP_FLOAT);
227+ op2Reg = op2->gtRegNum ;
228+ emit->emitIns_SIMD_R_R_R (INS_addss, targetReg, op1Reg, op2Reg, TYP_SIMD16);
229+ break ;
230+
225231 case NI_SSE_And:
226232 assert (baseType == TYP_FLOAT);
227233 op2Reg = op2->gtRegNum ;
@@ -292,18 +298,36 @@ void CodeGen::genSSEIntrinsic(GenTreeHWIntrinsic* node)
292298 emit->emitIns_SIMD_R_R_R (INS_divps, targetReg, op1Reg, op2Reg, TYP_SIMD16);
293299 break ;
294300
301+ case NI_SSE_DivideScalar:
302+ assert (baseType == TYP_FLOAT);
303+ op2Reg = op2->gtRegNum ;
304+ emit->emitIns_SIMD_R_R_R (INS_divss, targetReg, op1Reg, op2Reg, TYP_SIMD16);
305+ break ;
306+
295307 case NI_SSE_Max:
296308 assert (baseType == TYP_FLOAT);
297309 op2Reg = op2->gtRegNum ;
298310 emit->emitIns_SIMD_R_R_R (INS_maxps, targetReg, op1Reg, op2Reg, TYP_SIMD16);
299311 break ;
300312
313+ case NI_SSE_MaxScalar:
314+ assert (baseType == TYP_FLOAT);
315+ op2Reg = op2->gtRegNum ;
316+ emit->emitIns_SIMD_R_R_R (INS_maxss, targetReg, op1Reg, op2Reg, TYP_SIMD16);
317+ break ;
318+
301319 case NI_SSE_Min:
302320 assert (baseType == TYP_FLOAT);
303321 op2Reg = op2->gtRegNum ;
304322 emit->emitIns_SIMD_R_R_R (INS_minps, targetReg, op1Reg, op2Reg, TYP_SIMD16);
305323 break ;
306324
325+ case NI_SSE_MinScalar:
326+ assert (baseType == TYP_FLOAT);
327+ op2Reg = op2->gtRegNum ;
328+ emit->emitIns_SIMD_R_R_R (INS_minss, targetReg, op1Reg, op2Reg, TYP_SIMD16);
329+ break ;
330+
307331 case NI_SSE_MoveHighToLow:
308332 assert (baseType == TYP_FLOAT);
309333 op2Reg = op2->gtRegNum ;
@@ -316,12 +340,24 @@ void CodeGen::genSSEIntrinsic(GenTreeHWIntrinsic* node)
316340 emit->emitIns_SIMD_R_R_R (INS_movlhps, targetReg, op1Reg, op2Reg, TYP_SIMD16);
317341 break ;
318342
343+ case NI_SSE_MoveScalar:
344+ assert (baseType == TYP_FLOAT);
345+ op2Reg = op2->gtRegNum ;
346+ emit->emitIns_SIMD_R_R_R (INS_movss, targetReg, op1Reg, op2Reg, TYP_SIMD16);
347+ break ;
348+
319349 case NI_SSE_Multiply:
320350 assert (baseType == TYP_FLOAT);
321351 op2Reg = op2->gtRegNum ;
322352 emit->emitIns_SIMD_R_R_R (INS_mulps, targetReg, op1Reg, op2Reg, TYP_SIMD16);
323353 break ;
324354
355+ case NI_SSE_MultiplyScalar:
356+ assert (baseType == TYP_FLOAT);
357+ op2Reg = op2->gtRegNum ;
358+ emit->emitIns_SIMD_R_R_R (INS_mulss, targetReg, op1Reg, op2Reg, TYP_SIMD16);
359+ break ;
360+
325361 case NI_SSE_Or:
326362 assert (baseType == TYP_FLOAT);
327363 op2Reg = op2->gtRegNum ;
@@ -462,6 +498,12 @@ void CodeGen::genSSEIntrinsic(GenTreeHWIntrinsic* node)
462498 emit->emitIns_SIMD_R_R_R (INS_subps, targetReg, op1Reg, op2Reg, TYP_SIMD16);
463499 break ;
464500
501+ case NI_SSE_SubtractScalar:
502+ assert (baseType == TYP_FLOAT);
503+ op2Reg = op2->gtRegNum ;
504+ emit->emitIns_SIMD_R_R_R (INS_subss, targetReg, op1Reg, op2Reg, TYP_SIMD16);
505+ break ;
506+
465507 case NI_SSE_UnpackHigh:
466508 assert (baseType == TYP_FLOAT);
467509 op2Reg = op2->gtRegNum ;
0 commit comments