From 827a6f90454cc7540bb3a809657b8d4162545f3c Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Thu, 29 May 2025 15:11:12 -0400 Subject: [PATCH] Move `simd.IS_EMULATED` to `runtime.SIMD_IS_EMULATED` --- base/runtime/internal.odin | 5 +++++ core/simd/simd.odin | 7 ++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/base/runtime/internal.odin b/base/runtime/internal.odin index 82ae6ffa4..bddbcaa22 100644 --- a/base/runtime/internal.odin +++ b/base/runtime/internal.odin @@ -16,6 +16,11 @@ RUNTIME_REQUIRE :: false // !ODIN_TILDE @(private) __float16 :: f16 when __ODIN_LLVM_F16_SUPPORTED else u16 +SIMD_IS_EMULATED :: true when (ODIN_ARCH == .amd64 || ODIN_ARCH == .i386) && !intrinsics.has_target_feature("sse2") else + true when (ODIN_ARCH == .arm64 || ODIN_ARCH == .arm32) && !intrinsics.has_target_feature("neon") else + true when (ODIN_ARCH == .wasm64p32 || ODIN_ARCH == .wasm32) && !intrinsics.has_target_feature("simd128") else + true when (ODIN_ARCH == .riscv64) && !intrinsics.has_target_feature("v") else + false @(private) byte_slice :: #force_inline proc "contextless" (data: rawptr, len: int) -> []byte #no_bounds_check { diff --git a/core/simd/simd.odin b/core/simd/simd.odin index a97155f58..c6c1e10a0 100644 --- a/core/simd/simd.odin +++ b/core/simd/simd.odin @@ -21,6 +21,7 @@ package simd import "base:builtin" import "base:intrinsics" +import "base:runtime" /* Check if SIMD is software-emulated on a target platform. @@ -30,11 +31,7 @@ at 128-bit (or wider) SIMD. If the compile-time target lacks the hardware suppor for 128-bit SIMD, this value is `true`, and all SIMD operations will likely be emulated. */ -IS_EMULATED :: true when (ODIN_ARCH == .amd64 || ODIN_ARCH == .i386) && !intrinsics.has_target_feature("sse2") else - true when (ODIN_ARCH == .arm64 || ODIN_ARCH == .arm32) && !intrinsics.has_target_feature("neon") else - true when (ODIN_ARCH == .wasm64p32 || ODIN_ARCH == .wasm32) && !intrinsics.has_target_feature("simd128") else - true when (ODIN_ARCH == .riscv64) && !intrinsics.has_target_feature("v") else - false +IS_EMULATED :: runtime.SIMD_IS_EMULATED /* Vector of 16 `u8` lanes (128 bits).