Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit d70e11b

Browse files
committed
[Arm64] getBaseTypeAndSizeOfSIMDType
Remove XARCH platform dependencies Disable Vector256 support on Arm64 until needed
1 parent 0950d37 commit d70e11b

File tree

3 files changed

+42
-26
lines changed

3 files changed

+42
-26
lines changed

src/jit/compiler.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2126,6 +2126,7 @@ void Compiler::compInit(ArenaAllocator* pAlloc, InlineInfo* inlineInfo)
21262126
Vector128ByteHandle = nullptr;
21272127
Vector128LongHandle = nullptr;
21282128
Vector128UIntHandle = nullptr;
2129+
#if defined(_TARGET_XARCH_)
21292130
Vector256FloatHandle = nullptr;
21302131
Vector256DoubleHandle = nullptr;
21312132
Vector256IntHandle = nullptr;
@@ -2135,6 +2136,7 @@ void Compiler::compInit(ArenaAllocator* pAlloc, InlineInfo* inlineInfo)
21352136
Vector256ByteHandle = nullptr;
21362137
Vector256LongHandle = nullptr;
21372138
Vector256UIntHandle = nullptr;
2139+
#endif // defined(_TARGET_XARCH_)
21382140
#endif // FEATURE_HW_INTRINSICS
21392141
#endif // FEATURE_SIMD
21402142

src/jit/compiler.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7411,6 +7411,7 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
74117411
CORINFO_CLASS_HANDLE Vector128LongHandle;
74127412
CORINFO_CLASS_HANDLE Vector128UIntHandle;
74137413
CORINFO_CLASS_HANDLE Vector128ULongHandle;
7414+
#if defined(_TARGET_XARCH_)
74147415
CORINFO_CLASS_HANDLE Vector256FloatHandle;
74157416
CORINFO_CLASS_HANDLE Vector256DoubleHandle;
74167417
CORINFO_CLASS_HANDLE Vector256IntHandle;
@@ -7421,7 +7422,8 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
74217422
CORINFO_CLASS_HANDLE Vector256LongHandle;
74227423
CORINFO_CLASS_HANDLE Vector256UIntHandle;
74237424
CORINFO_CLASS_HANDLE Vector256ULongHandle;
7424-
#endif
7425+
#endif // defined(_TARGET_XARCH_)
7426+
#endif // FEATURE_HW_INTRINSICS
74257427

74267428
// Get the handle for a SIMD type.
74277429
CORINFO_CLASS_HANDLE gtGetStructHandleForSIMD(var_types simdType, var_types simdBaseType)

src/jit/simd.cpp

Lines changed: 37 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)