aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFeoramund <161657516+Feoramund@users.noreply.github.com>2025-05-29 15:11:12 -0400
committerFeoramund <161657516+Feoramund@users.noreply.github.com>2025-05-29 15:12:01 -0400
commit827a6f90454cc7540bb3a809657b8d4162545f3c (patch)
tree8aaec9326adb410b508e9b060c02a8fd74a8943f
parentb5bc0fdcda8285656562d701fae0e4d6f92ae183 (diff)
Move `simd.IS_EMULATED` to `runtime.SIMD_IS_EMULATED`
-rw-r--r--base/runtime/internal.odin5
-rw-r--r--core/simd/simd.odin7
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).