Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7f6c2ed

Browse files
committed
Bring back JIT support for core Vector64/128/256/512 APIs
1 parentb2a93cb commit7f6c2ed

File tree

9 files changed

+360
-1
lines changed

9 files changed

+360
-1
lines changed

‎src/coreclr/jit/fgbasic.cpp‎

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1626,6 +1626,84 @@ void Compiler::fgFindJumpTargets(const BYTE* codeAddr, IL_OFFSET codeSize, Fixed
16261626
break;
16271627
}
16281628

1629+
#if defined(FEATURE_HW_INTRINSICS)
1630+
#if defined(TARGET_ARM64)
1631+
case NI_Vector64_As:
1632+
case NI_Vector64_AsByte:
1633+
case NI_Vector64_AsDouble:
1634+
case NI_Vector64_AsInt16:
1635+
case NI_Vector64_AsInt32:
1636+
case NI_Vector64_AsInt64:
1637+
case NI_Vector64_AsNInt:
1638+
case NI_Vector64_AsNUInt:
1639+
case NI_Vector64_AsSByte:
1640+
case NI_Vector64_AsSingle:
1641+
case NI_Vector64_AsUInt16:
1642+
case NI_Vector64_AsUInt32:
1643+
case NI_Vector64_AsUInt64:
1644+
case NI_Vector64_op_UnaryPlus:
1645+
#endif// TARGET_XARCH
1646+
case NI_Vector128_As:
1647+
case NI_Vector128_AsByte:
1648+
case NI_Vector128_AsDouble:
1649+
case NI_Vector128_AsInt16:
1650+
case NI_Vector128_AsInt32:
1651+
case NI_Vector128_AsInt64:
1652+
case NI_Vector128_AsNInt:
1653+
case NI_Vector128_AsNUInt:
1654+
case NI_Vector128_AsSByte:
1655+
case NI_Vector128_AsSingle:
1656+
case NI_Vector128_AsUInt16:
1657+
case NI_Vector128_AsUInt32:
1658+
case NI_Vector128_AsUInt64:
1659+
case NI_Vector128_AsVector4:
1660+
case NI_Vector128_op_UnaryPlus:
1661+
case NI_VectorT_As:
1662+
case NI_VectorT_AsVectorByte:
1663+
case NI_VectorT_AsVectorDouble:
1664+
case NI_VectorT_AsVectorInt16:
1665+
case NI_VectorT_AsVectorInt32:
1666+
case NI_VectorT_AsVectorInt64:
1667+
case NI_VectorT_AsVectorNInt:
1668+
case NI_VectorT_AsVectorNUInt:
1669+
case NI_VectorT_AsVectorSByte:
1670+
case NI_VectorT_AsVectorSingle:
1671+
case NI_VectorT_AsVectorUInt16:
1672+
case NI_VectorT_AsVectorUInt32:
1673+
case NI_VectorT_AsVectorUInt64:
1674+
case NI_VectorT_op_Explicit:
1675+
case NI_VectorT_op_UnaryPlus:
1676+
#if defined(TARGET_XARCH)
1677+
case NI_Vector256_As:
1678+
case NI_Vector256_AsByte:
1679+
case NI_Vector256_AsDouble:
1680+
case NI_Vector256_AsInt16:
1681+
case NI_Vector256_AsInt32:
1682+
case NI_Vector256_AsInt64:
1683+
case NI_Vector256_AsNInt:
1684+
case NI_Vector256_AsNUInt:
1685+
case NI_Vector256_AsSByte:
1686+
case NI_Vector256_AsSingle:
1687+
case NI_Vector256_AsUInt16:
1688+
case NI_Vector256_AsUInt32:
1689+
case NI_Vector256_AsUInt64:
1690+
case NI_Vector256_op_UnaryPlus:
1691+
case NI_Vector512_As:
1692+
case NI_Vector512_AsByte:
1693+
case NI_Vector512_AsDouble:
1694+
case NI_Vector512_AsInt16:
1695+
case NI_Vector512_AsInt32:
1696+
case NI_Vector512_AsInt64:
1697+
case NI_Vector512_AsNInt:
1698+
case NI_Vector512_AsNUInt:
1699+
case NI_Vector512_AsSByte:
1700+
case NI_Vector512_AsSingle:
1701+
case NI_Vector512_AsUInt16:
1702+
case NI_Vector512_AsUInt32:
1703+
case NI_Vector512_AsUInt64:
1704+
case NI_Vector512_op_UnaryPlus:
1705+
#endif// TARGET_XARCH
1706+
#endif// FEATURE_HW_INTRINSICS
16291707
case NI_SRCS_UNSAFE_As:
16301708
case NI_SRCS_UNSAFE_AsRef:
16311709
case NI_SRCS_UNSAFE_BitCast:
@@ -1644,16 +1722,21 @@ void Compiler::fgFindJumpTargets(const BYTE* codeAddr, IL_OFFSET codeSize, Fixed
16441722
#if defined(TARGET_ARM64)
16451723
case NI_Vector64_get_AllBitsSet:
16461724
case NI_Vector64_get_One:
1725+
case NI_Vector64_get_Zero:
16471726
#endif// TARGET_ARM64
16481727
case NI_Vector128_get_AllBitsSet:
16491728
case NI_Vector128_get_One:
1729+
case NI_Vector128_get_Zero:
16501730
case NI_VectorT_get_AllBitsSet:
16511731
case NI_VectorT_get_One:
1732+
case NI_VectorT_get_Zero:
16521733
#if defined(TARGET_XARCH)
16531734
case NI_Vector256_get_AllBitsSet:
16541735
case NI_Vector256_get_One:
1736+
case NI_Vector256_get_Zero:
16551737
case NI_Vector512_get_AllBitsSet:
16561738
case NI_Vector512_get_One:
1739+
case NI_Vector512_get_Zero:
16571740
#endif// TARGET_XARCH
16581741
#endif// FEATURE_HW_INTRINSICS
16591742
{

‎src/coreclr/jit/hwintrinsicarm64.cpp‎

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -567,7 +567,34 @@ GenTree* Compiler::impSpecialIntrinsic(NamedIntrinsic intrinsic,
567567
break;
568568
}
569569

570+
case NI_Vector64_As:
571+
case NI_Vector64_AsByte:
572+
case NI_Vector64_AsDouble:
573+
case NI_Vector64_AsInt16:
574+
case NI_Vector64_AsInt32:
575+
case NI_Vector64_AsInt64:
576+
case NI_Vector64_AsNInt:
577+
case NI_Vector64_AsNUInt:
578+
case NI_Vector64_AsSByte:
579+
case NI_Vector64_AsSingle:
580+
case NI_Vector64_AsUInt16:
581+
case NI_Vector64_AsUInt32:
582+
case NI_Vector64_AsUInt64:
583+
case NI_Vector128_As:
584+
case NI_Vector128_AsByte:
585+
case NI_Vector128_AsDouble:
586+
case NI_Vector128_AsInt16:
587+
case NI_Vector128_AsInt32:
588+
case NI_Vector128_AsInt64:
589+
case NI_Vector128_AsNInt:
590+
case NI_Vector128_AsNUInt:
591+
case NI_Vector128_AsSByte:
592+
case NI_Vector128_AsSingle:
593+
case NI_Vector128_AsUInt16:
594+
case NI_Vector128_AsUInt32:
595+
case NI_Vector128_AsUInt64:
570596
case NI_Vector128_AsVector:
597+
case NI_Vector128_AsVector4:
571598
{
572599
assert(!sig->hasThis());
573600
assert(numArgs ==1);
@@ -1363,6 +1390,14 @@ GenTree* Compiler::impSpecialIntrinsic(NamedIntrinsic intrinsic,
13631390
break;
13641391
}
13651392

1393+
case NI_Vector64_get_Zero:
1394+
case NI_Vector128_get_Zero:
1395+
{
1396+
assert(sig->numArgs ==0);
1397+
retNode =gtNewZeroConNode(retType);
1398+
break;
1399+
}
1400+
13661401
case NI_Vector64_GetElement:
13671402
case NI_Vector128_GetElement:
13681403
{
@@ -1747,6 +1782,14 @@ GenTree* Compiler::impSpecialIntrinsic(NamedIntrinsic intrinsic,
17471782
break;
17481783
}
17491784

1785+
case NI_Vector64_op_UnaryPlus:
1786+
case NI_Vector128_op_UnaryPlus:
1787+
{
1788+
assert(sig->numArgs ==1);
1789+
retNode =impSIMDPopStack();
1790+
break;
1791+
}
1792+
17501793
case NI_Vector64_op_Subtraction:
17511794
case NI_Vector128_op_Subtraction:
17521795
{

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp