@@ -351,124 +351,133 @@ var_types Compiler::getBaseTypeAndSizeOfSIMDType(CORINFO_CLASS_HANDLE typeHnd, u
351351#if FEATURE_HW_INTRINSICS
352352 else if (isIntrinsicType (typeHnd))
353353 {
354+ const size_t Vector128SizeBytes = 128 / 8 ;
355+ const size_t Vector256SizeBytes = 256 / 8 ;
356+
357+ #if defined(_TARGET_XARCH_)
358+ static_assert_no_msg (YMM_REGSIZE_BYTES == Vector256SizeBytes);
359+ static_assert_no_msg (XMM_REGSIZE_BYTES == Vector128SizeBytes);
360+
354361 if (typeHnd == Vector256FloatHandle)
355362 {
356363 simdBaseType = TYP_FLOAT;
357- size = YMM_REGSIZE_BYTES ;
364+ size = Vector256SizeBytes ;
358365 JITDUMP (" Known type Vector256<float>\n " );
359366 }
360367 else if (typeHnd == Vector256DoubleHandle)
361368 {
362369 simdBaseType = TYP_DOUBLE;
363- size = YMM_REGSIZE_BYTES ;
370+ size = Vector256SizeBytes ;
364371 JITDUMP (" Known type Vector256<double>\n " );
365372 }
366373 else if (typeHnd == Vector256IntHandle)
367374 {
368375 simdBaseType = TYP_INT;
369- size = YMM_REGSIZE_BYTES ;
376+ size = Vector256SizeBytes ;
370377 JITDUMP (" Known type Vector256<int>\n " );
371378 }
372379 else if (typeHnd == Vector256UIntHandle)
373380 {
374381 simdBaseType = TYP_UINT;
375- size = YMM_REGSIZE_BYTES ;
382+ size = Vector256SizeBytes ;
376383 JITDUMP (" Known type Vector256<uint>\n " );
377384 }
378385 else if (typeHnd == Vector256ShortHandle)
379386 {
380387 simdBaseType = TYP_SHORT;
381- size = YMM_REGSIZE_BYTES ;
388+ size = Vector256SizeBytes ;
382389 JITDUMP (" Known type Vector256<short>\n " );
383390 }
384391 else if (typeHnd == Vector256UShortHandle)
385392 {
386393 simdBaseType = TYP_USHORT;
387- size = YMM_REGSIZE_BYTES ;
394+ size = Vector256SizeBytes ;
388395 JITDUMP (" Known type Vector256<ushort>\n " );
389396 }
390397 else if (typeHnd == Vector256ByteHandle)
391398 {
392399 simdBaseType = TYP_BYTE;
393- size = YMM_REGSIZE_BYTES ;
400+ size = Vector256SizeBytes ;
394401 JITDUMP (" Known type Vector256<sbyte>\n " );
395402 }
396403 else if (typeHnd == Vector256UByteHandle)
397404 {
398405 simdBaseType = TYP_UBYTE;
399- size = YMM_REGSIZE_BYTES ;
406+ size = Vector256SizeBytes ;
400407 JITDUMP (" Known type Vector256<byte>\n " );
401408 }
402409 else if (typeHnd == Vector256LongHandle)
403410 {
404411 simdBaseType = TYP_LONG;
405- size = YMM_REGSIZE_BYTES ;
412+ size = Vector256SizeBytes ;
406413 JITDUMP (" Known type Vector256<long>\n " );
407414 }
408415 else if (typeHnd == Vector256ULongHandle)
409416 {
410417 simdBaseType = TYP_ULONG;
411- size = YMM_REGSIZE_BYTES ;
418+ size = Vector256SizeBytes ;
412419 JITDUMP (" Known type Vector256<ulong>\n " );
413420 }
414421 else if (typeHnd == Vector256FloatHandle)
415422 {
416423 simdBaseType = TYP_FLOAT;
417- size = YMM_REGSIZE_BYTES ;
418- JITDUMP (" Known type Vector128 <float>\n " );
424+ size = Vector256SizeBytes ;
425+ JITDUMP (" Known type Vector256 <float>\n " );
419426 }
420- else if (typeHnd == Vector128DoubleHandle)
427+ else
428+ #endif // defined(_TARGET_XARCH)
429+ if (typeHnd == Vector128DoubleHandle)
421430 {
422431 simdBaseType = TYP_DOUBLE;
423- size = XMM_REGSIZE_BYTES ;
432+ size = Vector128SizeBytes ;
424433 JITDUMP (" Known type Vector128<double>\n " );
425434 }
426435 else if (typeHnd == Vector128IntHandle)
427436 {
428437 simdBaseType = TYP_INT;
429- size = XMM_REGSIZE_BYTES ;
438+ size = Vector128SizeBytes ;
430439 JITDUMP (" Known type Vector128<int>\n " );
431440 }
432441 else if (typeHnd == Vector128UIntHandle)
433442 {
434443 simdBaseType = TYP_UINT;
435- size = XMM_REGSIZE_BYTES ;
444+ size = Vector128SizeBytes ;
436445 JITDUMP (" Known type Vector128<uint>\n " );
437446 }
438447 else if (typeHnd == Vector128ShortHandle)
439448 {
440449 simdBaseType = TYP_SHORT;
441- size = XMM_REGSIZE_BYTES ;
450+ size = Vector128SizeBytes ;
442451 JITDUMP (" Known type Vector128<short>\n " );
443452 }
444453 else if (typeHnd == Vector128UShortHandle)
445454 {
446455 simdBaseType = TYP_USHORT;
447- size = XMM_REGSIZE_BYTES ;
456+ size = Vector128SizeBytes ;
448457 JITDUMP (" Known type Vector128<ushort>\n " );
449458 }
450459 else if (typeHnd == Vector128ByteHandle)
451460 {
452461 simdBaseType = TYP_BYTE;
453- size = XMM_REGSIZE_BYTES ;
462+ size = Vector128SizeBytes ;
454463 JITDUMP (" Known type Vector128<sbyte>\n " );
455464 }
456465 else if (typeHnd == Vector128UByteHandle)
457466 {
458467 simdBaseType = TYP_UBYTE;
459- size = XMM_REGSIZE_BYTES ;
468+ size = Vector128SizeBytes ;
460469 JITDUMP (" Known type Vector128<byte>\n " );
461470 }
462471 else if (typeHnd == Vector128LongHandle)
463472 {
464473 simdBaseType = TYP_LONG;
465- size = XMM_REGSIZE_BYTES ;
474+ size = Vector128SizeBytes ;
466475 JITDUMP (" Known type Vector128<long>\n " );
467476 }
468477 else if (typeHnd == Vector128ULongHandle)
469478 {
470479 simdBaseType = TYP_ULONG;
471- size = XMM_REGSIZE_BYTES ;
480+ size = Vector128SizeBytes ;
472481 JITDUMP (" Known type Vector128<ulong>\n " );
473482 }
474483
@@ -486,9 +495,10 @@ var_types Compiler::getBaseTypeAndSizeOfSIMDType(CORINFO_CLASS_HANDLE typeHnd, u
486495 JITDUMP (" HW Intrinsic SIMD Candidate Type %s with Base Type %s\n " , className,
487496 getClassNameFromMetadata (baseTypeHnd, nullptr ));
488497
498+ #if defined(_TARGET_XARCH_)
489499 if (strcmp (className, " Vector256`1" ) == 0 )
490500 {
491- size = YMM_REGSIZE_BYTES ;
501+ size = Vector256SizeBytes ;
492502 switch (type)
493503 {
494504 case CORINFO_TYPE_FLOAT:
@@ -546,9 +556,11 @@ var_types Compiler::getBaseTypeAndSizeOfSIMDType(CORINFO_CLASS_HANDLE typeHnd, u
546556 JITDUMP (" Unknown Hardware Intrinsic SIMD Type Vector256<T>\n " );
547557 }
548558 }
549- else if (strcmp (className, " Vector128`1" ) == 0 )
559+ else
560+ #endif // defined(_TARGET_XARCH_)
561+ if (strcmp (className, " Vector128`1" ) == 0 )
550562 {
551- size = XMM_REGSIZE_BYTES ;
563+ size = Vector128SizeBytes ;
552564 switch (type)
553565 {
554566 case CORINFO_TYPE_FLOAT:
0 commit comments