diff --git a/src/mono/mono/mini/llvm-intrinsics.h b/src/mono/mono/mini/llvm-intrinsics.h index d3e909e14d707..7981b3f9d6dfd 100644 --- a/src/mono/mono/mini/llvm-intrinsics.h +++ b/src/mono/mono/mini/llvm-intrinsics.h @@ -261,6 +261,7 @@ INTRINS_OVR(WASM_ANYTRUE_V2, wasm_anytrue, Wasm, sse_i8_t) #if defined(TARGET_ARM64) INTRINS_OVR(BITREVERSE_I32, bitreverse, Generic, LLVMInt32Type ()) INTRINS_OVR(BITREVERSE_I64, bitreverse, Generic, LLVMInt64Type ()) +INTRINS_OVR_TAG(BITREVERSE, bitreverse, Generic, V64 | V128 | I1 | I2 | I4 | I8) INTRINS(AARCH64_CRC32B, aarch64_crc32b, Arm64) INTRINS(AARCH64_CRC32H, aarch64_crc32h, Arm64) INTRINS(AARCH64_CRC32W, aarch64_crc32w, Arm64) @@ -399,6 +400,10 @@ INTRINS_OVR_TAG(AARCH64_ADV_SIMD_FRSQRTE, aarch64_neon_frsqrte, Arm64, Scalar | INTRINS_OVR_TAG(AARCH64_ADV_SIMD_FRSQRTS, aarch64_neon_frsqrts, Arm64, Scalar | V64 | V128 | R4 | R8) INTRINS_OVR_TAG(AARCH64_ADV_SIMD_FRECPS, aarch64_neon_frecps, Arm64, Scalar | V64 | V128 | R4 | R8) +#if LLVM_API_VERSION < 1400 +INTRINS_OVR_TAG(AARCH64_ADV_SIMD_RBIT, aarch64_neon_rbit, Arm64, V64 | V128 | I1) +#endif + INTRINS_OVR_TAG(AARCH64_ADV_SIMD_FRINTA, round, Generic, Scalar | V64 | V128 | R4 | R8) #if LLVM_API_VERSION < 1400 INTRINS_OVR_TAG(AARCH64_ADV_SIMD_FRINTN, aarch64_neon_frintn, Arm64, Scalar | V64 | V128 | R4 | R8) diff --git a/src/mono/mono/mini/simd-intrinsics.c b/src/mono/mono/mini/simd-intrinsics.c index aa27c72158e90..347a17c8bde81 100644 --- a/src/mono/mono/mini/simd-intrinsics.c +++ b/src/mono/mono/mini/simd-intrinsics.c @@ -2517,6 +2517,11 @@ static SimdIntrinsic advsimd_methods [] = { {SN_ReverseElement16, OP_ARM64_REVN, 16}, {SN_ReverseElement32, OP_ARM64_REVN, 32}, {SN_ReverseElement8, OP_ARM64_REVN, 8}, +#if LLVM_API_VERSION >= 1400 + {SN_ReverseElementBits, OP_XOP_OVR_X_X, INTRINS_BITREVERSE}, +#else + {SN_ReverseElementBits, OP_XOP_OVR_X_X, INTRINS_AARCH64_ADV_SIMD_RBIT}, +#endif {SN_RoundAwayFromZero, OP_XOP_OVR_X_X, INTRINS_AARCH64_ADV_SIMD_FRINTA}, {SN_RoundAwayFromZeroScalar, OP_XOP_OVR_SCALAR_X_X, INTRINS_AARCH64_ADV_SIMD_FRINTA}, #if LLVM_API_VERSION >= 1400