Skip to content

Commit 8e2dcfa

Browse files
authored
[mono] Intrinsify multiple LoadVector API's (#98077)
* Intrinsify LoadVector* * Fix the support for v128 * Add logic to handle tuple3 and tuple4 * Correct intrinsics in the comment * Use ld1 * Enable tests for mono * Intrinsify LoadVector*x*AndUnzip * Uncomment for LoadVector128x*AndUnzip * Uncomment for LoadVector128x*AndUnzip 2 * Intrinsify LoadAndReplicateToVector*x* * Update code after merge with main branch
1 parent 2b3b182 commit 8e2dcfa

File tree

13 files changed

+236
-209
lines changed

13 files changed

+236
-209
lines changed

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.PlatformNotSupported.cs

-16
Original file line numberDiff line numberDiff line change
@@ -1722,9 +1722,6 @@ internal Arm64() { }
17221722
/// </summary>
17231723
public static unsafe Vector128<ulong> LoadAndReplicateToVector128(ulong* address) { throw new PlatformNotSupportedException(); }
17241724

1725-
#if false
1726-
// Should be disabled until Mono implements these APIs. See https://github.com/dotnet/runtime/issues/93081
1727-
17281725
/// <summary>
17291726
/// A64: LD2R { Vn.16B, Vn+1.16B }, [Xn]
17301727
/// </summary>
@@ -1874,7 +1871,6 @@ internal Arm64() { }
18741871
/// A64: LD4R { Vn.2D, Vn+1.2D, Vn+2.2D, Vn+3.2D }, [Xn]
18751872
/// </summary>
18761873
public static unsafe (Vector128<double> Value1, Vector128<double> Value2, Vector128<double> Value3, Vector128<double> Value4) LoadAndReplicateToVector128x4(double* address) { throw new PlatformNotSupportedException(); }
1877-
#endif
18781874

18791875
/// <summary>
18801876
/// A64: LDP Dt1, Dt2, [Xn]
@@ -2106,9 +2102,6 @@ internal Arm64() { }
21062102
/// </summary>
21072103
public static unsafe (Vector128<ulong> Value1, Vector128<ulong> Value2) LoadPairVector128NonTemporal(ulong* address) { throw new PlatformNotSupportedException(); }
21082104

2109-
#if false
2110-
// Should be disabled until Mono implements these APIs. See https://github.com/dotnet/runtime/issues/93081
2111-
21122105
/// <summary>
21132106
/// A64: LD2 { Vn.16B, Vn+1.16B }, [Xn]
21142107
/// </summary>
@@ -2408,7 +2401,6 @@ internal Arm64() { }
24082401
/// A64: LD1 { Vn.2D, Vn+1.2D, Vn+2.2D, Vn+3.2D }, [Xn]
24092402
/// </summary>
24102403
public static unsafe (Vector128<double> Value1, Vector128<double> Value2, Vector128<double> Value3, Vector128<double> Value4) LoadVector128x4(double* address) { throw new PlatformNotSupportedException(); }
2411-
#endif
24122404

24132405
/// <summary>
24142406
/// float64x2_t vmaxq_f64 (float64x2_t a, float64x2_t b)
@@ -9383,9 +9375,6 @@ internal Arm64() { }
93839375
/// </summary>
93849376
public static unsafe Vector128<uint> LoadAndReplicateToVector128(uint* address) { throw new PlatformNotSupportedException(); }
93859377

9386-
#if false
9387-
// Should be disabled until Mono implements these APIs. See https://github.com/dotnet/runtime/issues/93081
9388-
93899378
/// <summary>
93909379
/// A64: LD2R { Vn.8B, Vn+1.8B }, [Xn]
93919380
/// </summary>
@@ -9490,7 +9479,6 @@ internal Arm64() { }
94909479
/// A64: LD4R { Vn.2S, Vn+1.2S, Vn+2.2S, Vn+3.2S }, [Xn]
94919480
/// </summary>
94929481
public static unsafe (Vector64<float> Value1, Vector64<float> Value2, Vector64<float> Value3, Vector64<float> Value4) LoadAndReplicateToVector64x4(float* address) { throw new PlatformNotSupportedException(); }
9493-
#endif
94949482

94959483
/// <summary>
94969484
/// uint8x8_t vld1_u8 (uint8_t const * ptr)
@@ -9632,9 +9620,6 @@ internal Arm64() { }
96329620
/// </summary>
96339621
public static unsafe Vector128<ulong> LoadVector128(ulong* address) { throw new PlatformNotSupportedException(); }
96349622

9635-
#if false
9636-
// Should be disabled until Mono implements these APIs. See https://github.com/dotnet/runtime/issues/93081
9637-
96389623
/// <summary>
96399624
/// A64: LD2 { Vn.8B, Vn+1.8B }, [Xn]
96409625
/// </summary>
@@ -9844,7 +9829,6 @@ internal Arm64() { }
98449829
/// A64: LD1 { Vn.2S, Vn+1.2S, Vn+2.2S, Vn+3.2S }, [Xn]
98459830
/// </summary>
98469831
public static unsafe (Vector64<float> Value1, Vector64<float> Value2, Vector64<float> Value3, Vector64<float> Value4) LoadVector64x4(float* address) { throw new PlatformNotSupportedException(); }
9847-
#endif
98489832

98499833
/// <summary>
98509834
/// uint8x8_t vmax_u8 (uint8x8_t a, uint8x8_t b)

src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.cs

-16
Original file line numberDiff line numberDiff line change
@@ -1719,9 +1719,6 @@ internal Arm64() { }
17191719
/// </summary>
17201720
public static unsafe Vector128<ulong> LoadAndReplicateToVector128(ulong* address) => LoadAndReplicateToVector128(address);
17211721

1722-
#if false
1723-
// Should be disabled until Mono implements these APIs. See https://github.com/dotnet/runtime/issues/93081
1724-
17251722
/// <summary>
17261723
/// A64: LD2R { Vn.16B, Vn+1.16B }, [Xn]
17271724
/// </summary>
@@ -1871,7 +1868,6 @@ internal Arm64() { }
18711868
/// A64: LD4R { Vn.2D, Vn+1.2D, Vn+2.2D, Vn+3.2D }, [Xn]
18721869
/// </summary>
18731870
public static unsafe (Vector128<double> Value1, Vector128<double> Value2, Vector128<double> Value3, Vector128<double> Value4) LoadAndReplicateToVector128x4(double* address) => LoadAndReplicateToVector128x4(address);
1874-
#endif
18751871

18761872
/// <summary>
18771873
/// A64: LDP Dt1, Dt2, [Xn]
@@ -2103,9 +2099,6 @@ internal Arm64() { }
21032099
/// </summary>
21042100
public static unsafe (Vector128<ulong> Value1, Vector128<ulong> Value2) LoadPairVector128NonTemporal(ulong* address) => LoadPairVector128NonTemporal(address);
21052101

2106-
#if false
2107-
// Should be disabled until Mono implements these APIs. See https://github.com/dotnet/runtime/issues/93081
2108-
21092102
/// <summary>
21102103
/// A64: LD2 { Vn.16B, Vn+1.16B }, [Xn]
21112104
/// </summary>
@@ -2405,7 +2398,6 @@ internal Arm64() { }
24052398
/// A64: LD1 { Vn.2D, Vn+1.2D, Vn+2.2D, Vn+3.2D }, [Xn]
24062399
/// </summary>
24072400
public static unsafe (Vector128<double> Value1, Vector128<double> Value2, Vector128<double> Value3, Vector128<double> Value4) LoadVector128x4(double* address) => LoadVector128x4(address);
2408-
#endif
24092401

24102402
/// <summary>
24112403
/// float64x2_t vmaxq_f64 (float64x2_t a, float64x2_t b)
@@ -9379,9 +9371,6 @@ internal Arm64() { }
93799371
/// </summary>
93809372
public static unsafe Vector128<uint> LoadAndReplicateToVector128(uint* address) => LoadAndReplicateToVector128(address);
93819373

9382-
#if false
9383-
// Should be disabled until Mono implements these APIs. See https://github.com/dotnet/runtime/issues/93081
9384-
93859374
/// <summary>
93869375
/// A64: LD2R { Vn.8B, Vn+1.8B }, [Xn]
93879376
/// </summary>
@@ -9486,7 +9475,6 @@ internal Arm64() { }
94869475
/// A64: LD4R { Vn.2S, Vn+1.2S, Vn+2.2S, Vn+3.2S }, [Xn]
94879476
/// </summary>
94889477
public static unsafe (Vector64<float> Value1, Vector64<float> Value2, Vector64<float> Value3, Vector64<float> Value4) LoadAndReplicateToVector64x4(float* address) => LoadAndReplicateToVector64x4(address);
9489-
#endif
94909478

94919479
/// <summary>
94929480
/// uint8x8_t vld1_u8 (uint8_t const * ptr)
@@ -9628,9 +9616,6 @@ internal Arm64() { }
96289616
/// </summary>
96299617
public static unsafe Vector128<ulong> LoadVector128(ulong* address) => LoadVector128(address);
96309618

9631-
#if false
9632-
// Should be disabled until Mono implements these APIs. See https://github.com/dotnet/runtime/issues/93081
9633-
96349619
/// <summary>
96359620
/// A64: LD2 { Vn.8B, Vn+1.8B }, [Xn]
96369621
/// </summary>
@@ -9840,7 +9825,6 @@ internal Arm64() { }
98409825
/// A64: LD1 { Vn.2S, Vn+1.2S, Vn+2.2S, Vn+3.2S }, [Xn]
98419826
/// </summary>
98429827
public static unsafe (Vector64<float> Value1, Vector64<float> Value2, Vector64<float> Value3, Vector64<float> Value4) LoadVector64x4(float* address) => LoadVector64x4(address);
9843-
#endif
98449828

98459829
/// <summary>
98469830
/// uint8x8_t vmax_u8 (uint8x8_t a, uint8x8_t b)

src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs

-12
Original file line numberDiff line numberDiff line change
@@ -1954,8 +1954,6 @@ internal AdvSimd() { }
19541954
public static unsafe System.Runtime.Intrinsics.Vector64<float> LoadAndReplicateToVector64(float* address) { throw null; }
19551955
public static unsafe System.Runtime.Intrinsics.Vector64<ushort> LoadAndReplicateToVector64(ushort* address) { throw null; }
19561956
public static unsafe System.Runtime.Intrinsics.Vector64<uint> LoadAndReplicateToVector64(uint* address) { throw null; }
1957-
#if false
1958-
// Should be disabled until Mono implements these APIs. See https://github.com/dotnet/runtime/issues/93081
19591957
public static unsafe (System.Runtime.Intrinsics.Vector64<byte> Value1, System.Runtime.Intrinsics.Vector64<byte> Value2) LoadAndReplicateToVector64x2(byte* address) { throw null; }
19601958
public static unsafe (System.Runtime.Intrinsics.Vector64<sbyte> Value1, System.Runtime.Intrinsics.Vector64<sbyte> Value2) LoadAndReplicateToVector64x2(sbyte* address) { throw null; }
19611959
public static unsafe (System.Runtime.Intrinsics.Vector64<short> Value1, System.Runtime.Intrinsics.Vector64<short> Value2) LoadAndReplicateToVector64x2(short* address) { throw null; }
@@ -1977,7 +1975,6 @@ internal AdvSimd() { }
19771975
public static unsafe (System.Runtime.Intrinsics.Vector64<int> Value1, System.Runtime.Intrinsics.Vector64<int> Value2, System.Runtime.Intrinsics.Vector64<int> Value3, System.Runtime.Intrinsics.Vector64<int> Value4) LoadAndReplicateToVector64x4(int* address) { throw null; }
19781976
public static unsafe (System.Runtime.Intrinsics.Vector64<uint> Value1, System.Runtime.Intrinsics.Vector64<uint> Value2, System.Runtime.Intrinsics.Vector64<uint> Value3, System.Runtime.Intrinsics.Vector64<uint> Value4) LoadAndReplicateToVector64x4(uint* address) { throw null; }
19791977
public static unsafe (System.Runtime.Intrinsics.Vector64<float> Value1, System.Runtime.Intrinsics.Vector64<float> Value2, System.Runtime.Intrinsics.Vector64<float> Value3, System.Runtime.Intrinsics.Vector64<float> Value4) LoadAndReplicateToVector64x4(float* address) { throw null; }
1980-
#endif
19811978
public static unsafe System.Runtime.Intrinsics.Vector128<byte> LoadVector128(byte* address) { throw null; }
19821979
public static unsafe System.Runtime.Intrinsics.Vector128<double> LoadVector128(double* address) { throw null; }
19831980
public static unsafe System.Runtime.Intrinsics.Vector128<short> LoadVector128(short* address) { throw null; }
@@ -1998,8 +1995,6 @@ internal AdvSimd() { }
19981995
public static unsafe System.Runtime.Intrinsics.Vector64<ushort> LoadVector64(ushort* address) { throw null; }
19991996
public static unsafe System.Runtime.Intrinsics.Vector64<uint> LoadVector64(uint* address) { throw null; }
20001997
public static unsafe System.Runtime.Intrinsics.Vector64<ulong> LoadVector64(ulong* address) { throw null; }
2001-
#if false
2002-
// Should be disabled until Mono implements these APIs. See https://github.com/dotnet/runtime/issues/93081
20031998
public static unsafe (System.Runtime.Intrinsics.Vector64<byte> Value1, System.Runtime.Intrinsics.Vector64<byte> Value2) LoadVector64x2AndUnzip(byte* address) { throw null; }
20041999
public static unsafe (System.Runtime.Intrinsics.Vector64<sbyte> Value1, System.Runtime.Intrinsics.Vector64<sbyte> Value2) LoadVector64x2AndUnzip(sbyte* address) { throw null; }
20052000
public static unsafe (System.Runtime.Intrinsics.Vector64<short> Value1, System.Runtime.Intrinsics.Vector64<short> Value2) LoadVector64x2AndUnzip(short* address) { throw null; }
@@ -2042,7 +2037,6 @@ internal AdvSimd() { }
20422037
public static unsafe (System.Runtime.Intrinsics.Vector64<int> Value1, System.Runtime.Intrinsics.Vector64<int> Value2, System.Runtime.Intrinsics.Vector64<int> Value3, System.Runtime.Intrinsics.Vector64<int> Value4) LoadVector64x4(int* address) { throw null; }
20432038
public static unsafe (System.Runtime.Intrinsics.Vector64<uint> Value1, System.Runtime.Intrinsics.Vector64<uint> Value2, System.Runtime.Intrinsics.Vector64<uint> Value3, System.Runtime.Intrinsics.Vector64<uint> Value4) LoadVector64x4(uint* address) { throw null; }
20442039
public static unsafe (System.Runtime.Intrinsics.Vector64<float> Value1, System.Runtime.Intrinsics.Vector64<float> Value2, System.Runtime.Intrinsics.Vector64<float> Value3, System.Runtime.Intrinsics.Vector64<float> Value4) LoadVector64x4(float* address) { throw null; }
2045-
#endif
20462040
public static System.Runtime.Intrinsics.Vector128<byte> Max(System.Runtime.Intrinsics.Vector128<byte> left, System.Runtime.Intrinsics.Vector128<byte> right) { throw null; }
20472041
public static System.Runtime.Intrinsics.Vector128<short> Max(System.Runtime.Intrinsics.Vector128<short> left, System.Runtime.Intrinsics.Vector128<short> right) { throw null; }
20482042
public static System.Runtime.Intrinsics.Vector128<int> Max(System.Runtime.Intrinsics.Vector128<int> left, System.Runtime.Intrinsics.Vector128<int> right) { throw null; }
@@ -3383,8 +3377,6 @@ internal Arm64() { }
33833377
public static unsafe System.Runtime.Intrinsics.Vector128<double> LoadAndReplicateToVector128(double* address) { throw null; }
33843378
public static unsafe System.Runtime.Intrinsics.Vector128<long> LoadAndReplicateToVector128(long* address) { throw null; }
33853379
public static unsafe System.Runtime.Intrinsics.Vector128<ulong> LoadAndReplicateToVector128(ulong* address) { throw null; }
3386-
#if false
3387-
// Should be disabled until Mono implements these APIs. See https://github.com/dotnet/runtime/issues/93081
33883380
public static unsafe (System.Runtime.Intrinsics.Vector128<byte> Value1, System.Runtime.Intrinsics.Vector128<byte> Value2) LoadAndReplicateToVector128x2(byte* address) { throw null; }
33893381
public static unsafe (System.Runtime.Intrinsics.Vector128<sbyte> Value1, System.Runtime.Intrinsics.Vector128<sbyte> Value2) LoadAndReplicateToVector128x2(sbyte* address) { throw null; }
33903382
public static unsafe (System.Runtime.Intrinsics.Vector128<short> Value1, System.Runtime.Intrinsics.Vector128<short> Value2) LoadAndReplicateToVector128x2(short* address) { throw null; }
@@ -3415,7 +3407,6 @@ internal Arm64() { }
34153407
public static unsafe (System.Runtime.Intrinsics.Vector128<ulong> Value1, System.Runtime.Intrinsics.Vector128<ulong> Value2, System.Runtime.Intrinsics.Vector128<ulong> Value3, System.Runtime.Intrinsics.Vector128<ulong> Value4) LoadAndReplicateToVector128x4(ulong* address) { throw null; }
34163408
public static unsafe (System.Runtime.Intrinsics.Vector128<float> Value1, System.Runtime.Intrinsics.Vector128<float> Value2, System.Runtime.Intrinsics.Vector128<float> Value3, System.Runtime.Intrinsics.Vector128<float> Value4) LoadAndReplicateToVector128x4(float* address) { throw null; }
34173409
public static unsafe (System.Runtime.Intrinsics.Vector128<double> Value1, System.Runtime.Intrinsics.Vector128<double> Value2, System.Runtime.Intrinsics.Vector128<double> Value3, System.Runtime.Intrinsics.Vector128<double> Value4) LoadAndReplicateToVector128x4(double* address) { throw null; }
3418-
#endif
34193410
public static unsafe (System.Runtime.Intrinsics.Vector64<int> Value1, System.Runtime.Intrinsics.Vector64<int> Value2) LoadPairScalarVector64(int* address) { throw null; }
34203411
public static unsafe (System.Runtime.Intrinsics.Vector64<float> Value1, System.Runtime.Intrinsics.Vector64<float> Value2) LoadPairScalarVector64(float* address) { throw null; }
34213412
public static unsafe (System.Runtime.Intrinsics.Vector64<uint> Value1, System.Runtime.Intrinsics.Vector64<uint> Value2) LoadPairScalarVector64(uint* address) { throw null; }
@@ -3462,8 +3453,6 @@ internal Arm64() { }
34623453
public static unsafe (System.Runtime.Intrinsics.Vector64<ushort> Value1, System.Runtime.Intrinsics.Vector64<ushort> Value2) LoadPairVector64NonTemporal(ushort* address) { throw null; }
34633454
public static unsafe (System.Runtime.Intrinsics.Vector64<uint> Value1, System.Runtime.Intrinsics.Vector64<uint> Value2) LoadPairVector64NonTemporal(uint* address) { throw null; }
34643455
public static unsafe (System.Runtime.Intrinsics.Vector64<ulong> Value1, System.Runtime.Intrinsics.Vector64<ulong> Value2) LoadPairVector64NonTemporal(ulong* address) { throw null; }
3465-
#if false
3466-
// Should be disabled until Mono implements these APIs. See https://github.com/dotnet/runtime/issues/93081
34673456
public static unsafe (System.Runtime.Intrinsics.Vector128<byte> Value1, System.Runtime.Intrinsics.Vector128<byte> Value2) LoadVector128x2AndUnzip(byte* address) { throw null; }
34683457
public static unsafe (System.Runtime.Intrinsics.Vector128<sbyte> Value1, System.Runtime.Intrinsics.Vector128<sbyte> Value2) LoadVector128x2AndUnzip(sbyte* address) { throw null; }
34693458
public static unsafe (System.Runtime.Intrinsics.Vector128<short> Value1, System.Runtime.Intrinsics.Vector128<short> Value2) LoadVector128x2AndUnzip(short* address) { throw null; }
@@ -3524,7 +3513,6 @@ internal Arm64() { }
35243513
public static unsafe (System.Runtime.Intrinsics.Vector128<ulong> Value1, System.Runtime.Intrinsics.Vector128<ulong> Value2, System.Runtime.Intrinsics.Vector128<ulong> Value3, System.Runtime.Intrinsics.Vector128<ulong> Value4) LoadVector128x4(ulong* address) { throw null; }
35253514
public static unsafe (System.Runtime.Intrinsics.Vector128<float> Value1, System.Runtime.Intrinsics.Vector128<float> Value2, System.Runtime.Intrinsics.Vector128<float> Value3, System.Runtime.Intrinsics.Vector128<float> Value4) LoadVector128x4(float* address) { throw null; }
35263515
public static unsafe (System.Runtime.Intrinsics.Vector128<double> Value1, System.Runtime.Intrinsics.Vector128<double> Value2, System.Runtime.Intrinsics.Vector128<double> Value3, System.Runtime.Intrinsics.Vector128<double> Value4) LoadVector128x4(double* address) { throw null; }
3527-
#endif
35283516
public static System.Runtime.Intrinsics.Vector128<double> Max(System.Runtime.Intrinsics.Vector128<double> left, System.Runtime.Intrinsics.Vector128<double> right) { throw null; }
35293517
public static System.Runtime.Intrinsics.Vector64<byte> MaxAcross(System.Runtime.Intrinsics.Vector128<byte> value) { throw null; }
35303518
public static System.Runtime.Intrinsics.Vector64<short> MaxAcross(System.Runtime.Intrinsics.Vector128<short> value) { throw null; }

src/mono/mono/mini/llvm-intrinsics.h

+19
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#define WidenAcross INTRIN_kind_widen_across
2727
#define Across INTRIN_kind_across
2828
#define Arm64DotProd INTRIN_kind_arm64_dot_prod
29+
#define AddPointer INTRIN_kind_add_pointer
2930
#if !defined(Generic)
3031
#define Generic
3132
#endif
@@ -361,6 +362,24 @@ INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_SADDV, aarch64_neon_saddv, Arm64, Across,
361362
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_UADDV, aarch64_neon_uaddv, Arm64, Across, V64 | V128 | I1 | I2 | I4 | I8)
362363
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_FADDV, aarch64_neon_faddv, Arm64, Across, V64 | V128 | R4 | R8)
363364

365+
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_LD1X2_V64, aarch64_neon_ld1x2, Arm64, AddPointer, V64 | I1 | I2 | I4 | R4)
366+
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_LD1X3_V64, aarch64_neon_ld1x3, Arm64, AddPointer, V64 | I1 | I2 | I4 | R4)
367+
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_LD1X4_V64, aarch64_neon_ld1x4, Arm64, AddPointer, V64 | I1 | I2 | I4 | R4)
368+
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_LD1X2_V128, aarch64_neon_ld1x2, Arm64, AddPointer, V128 | I1 | I2 | I4 | I8 | R4 | R8)
369+
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_LD1X3_V128, aarch64_neon_ld1x3, Arm64, AddPointer, V128 | I1 | I2 | I4 | I8 | R4 | R8)
370+
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_LD1X4_V128, aarch64_neon_ld1x4, Arm64, AddPointer, V128 | I1 | I2 | I4 | I8 | R4 | R8)
371+
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_LD2_V64, aarch64_neon_ld2, Arm64, AddPointer, V64 | I1 | I2 | I4 | R4)
372+
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_LD3_V64, aarch64_neon_ld3, Arm64, AddPointer, V64 | I1 | I2 | I4 | R4)
373+
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_LD4_V64, aarch64_neon_ld4, Arm64, AddPointer, V64 | I1 | I2 | I4 | R4)
374+
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_LD2_V128, aarch64_neon_ld2, Arm64, AddPointer, V128 | I1 | I2 | I4 | I8 | R4 | R8)
375+
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_LD3_V128, aarch64_neon_ld3, Arm64, AddPointer, V128 | I1 | I2 | I4 | I8 | R4 | R8)
376+
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_LD4_V128, aarch64_neon_ld4, Arm64, AddPointer, V128 | I1 | I2 | I4 | I8 | R4 | R8)
377+
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_LD2R_V64, aarch64_neon_ld2r, Arm64, AddPointer, V64 | I1 | I2 | I4 | R4)
378+
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_LD3R_V64, aarch64_neon_ld3r, Arm64, AddPointer, V64 | I1 | I2 | I4 | R4)
379+
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_LD4R_V64, aarch64_neon_ld4r, Arm64, AddPointer, V64 | I1 | I2 | I4 | R4)
380+
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_LD2R_V128, aarch64_neon_ld2r, Arm64, AddPointer, V128 | I1 | I2 | I4 | I8 | R4 | R8)
381+
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_LD3R_V128, aarch64_neon_ld3r, Arm64, AddPointer, V128 | I1 | I2 | I4 | I8 | R4 | R8)
382+
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_LD4R_V128, aarch64_neon_ld4r, Arm64, AddPointer, V128 | I1 | I2 | I4 | I8 | R4 | R8)
364383
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_SMAXV, aarch64_neon_smaxv, Arm64, Across, V64 | V128 | I1 | I2 | I4)
365384
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_UMAXV, aarch64_neon_umaxv, Arm64, Across, V64 | V128 | I1 | I2 | I4)
366385
INTRINS_OVR_TAG_KIND(AARCH64_ADV_SIMD_SMINV, aarch64_neon_sminv, Arm64, Across, V64 | V128 | I1 | I2 | I4)

0 commit comments

Comments
 (0)