aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2022-05-26 20:40:48 +0100
committergingerBill <bill@gingerbill.org>2022-05-26 20:40:48 +0100
commit70451f9335b819a056a06536016cdad7784cb8ea (patch)
treefe840464b5f09f72ba4fd10df92a7d70ce8f6330
parent1f438d4e6c0a979b249683cb2da048a0ff36dcce (diff)
Support reverse_bits for #simd
-rw-r--r--core/intrinsics/intrinsics.odin2
-rw-r--r--core/simd/simd.odin3
-rw-r--r--src/check_builtin.cpp2
3 files changed, 4 insertions, 3 deletions
diff --git a/core/intrinsics/intrinsics.odin b/core/intrinsics/intrinsics.odin
index 4f10c5a32..fa9b0ecec 100644
--- a/core/intrinsics/intrinsics.odin
+++ b/core/intrinsics/intrinsics.odin
@@ -26,7 +26,7 @@ count_ones :: proc(x: $T) -> T where type_is_integer(T) || type_is_sim
count_zeros :: proc(x: $T) -> T where type_is_integer(T) || type_is_simd_vector(T) ---
count_trailing_zeros :: proc(x: $T) -> T where type_is_integer(T) || type_is_simd_vector(T) ---
count_leading_zeros :: proc(x: $T) -> T where type_is_integer(T) || type_is_simd_vector(T) ---
-reverse_bits :: proc(x: $T) -> T where type_is_integer(T) ---
+reverse_bits :: proc(x: $T) -> T where type_is_integer(T) || type_is_simd_vector(T) ---
byte_swap :: proc(x: $T) -> T where type_is_integer(T) || type_is_float(T) ---
overflow_add :: proc(lhs, rhs: $T) -> (T, bool) #optional_ok ---
diff --git a/core/simd/simd.odin b/core/simd/simd.odin
index 263402c43..fc3c95e82 100644
--- a/core/simd/simd.odin
+++ b/core/simd/simd.odin
@@ -99,7 +99,7 @@ nearest :: intrinsics.simd_nearest
to_bits :: intrinsics.simd_to_bits
-reverse :: intrinsics.simd_reverse
+lanes_reverse :: intrinsics.simd_reverse
rotate_left :: intrinsics.simd_rotate_left
rotate_right :: intrinsics.simd_rotate_right
@@ -108,6 +108,7 @@ count_ones :: intrinsics.count_ones
count_zeros :: intrinsics.count_zeros
count_trailing_zeros :: intrinsics.count_trailing_zeros
count_leading_zeros :: intrinsics.count_leading_zeros
+reverse_bits :: intrinsics.reverse_bits
fused_mul_add :: intrinsics.fused_mul_add
fma :: intrinsics.fused_mul_add
diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp
index 87f7358f0..ecaba8b49 100644
--- a/src/check_builtin.cpp
+++ b/src/check_builtin.cpp
@@ -3558,7 +3558,7 @@ bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32
return false;
}
- if (is_type_simd_vector(x.type) && id != BuiltinProc_reverse_bits) {
+ if (is_type_simd_vector(x.type)) {
Type *elem = base_array_type(x.type);
if (!is_type_integer_like(elem)) {
gbString xts = type_to_string(x.type);