aboutsummaryrefslogtreecommitdiff
path: root/src/check_builtin.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2024-08-05 14:54:09 +0100
committergingerBill <bill@gingerbill.org>2024-08-05 14:54:09 +0100
commitf56abf37804240c508f0ca7f249176208d333c72 (patch)
tree7657f8f1e80ca46534c04e85cecde4877a444e98 /src/check_builtin.cpp
parent78919f85249a6136929be772319694cf6c1e4df1 (diff)
Add `intrinsics.masked_expand_load` and `intrinsics.masked_compress_store`
Diffstat (limited to 'src/check_builtin.cpp')
-rw-r--r--src/check_builtin.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp
index b5851bc01..bde102a8d 100644
--- a/src/check_builtin.cpp
+++ b/src/check_builtin.cpp
@@ -667,12 +667,16 @@ gb_internal bool check_builtin_simd_operation(CheckerContext *c, Operand *operan
case BuiltinProc_simd_scatter:
case BuiltinProc_simd_masked_load:
case BuiltinProc_simd_masked_store:
+ case BuiltinProc_simd_masked_expand_load:
+ case BuiltinProc_simd_masked_compress_store:
{
// gather (ptr: #simd[N]rawptr, values: #simd[N]T, mask: #simd[N]int_or_bool) -> #simd[N]T
// scatter(ptr: #simd[N]rawptr, values: #simd[N]T, mask: #simd[N]int_or_bool)
// masked_load (ptr: rawptr, values: #simd[N]T, mask: #simd[N]int_or_bool) -> #simd[N]T
// masked_store(ptr: rawptr, values: #simd[N]T, mask: #simd[N]int_or_bool)
+ // masked_expand_load (ptr: rawptr, values: #simd[N]T, mask: #simd[N]int_or_bool) -> #simd[N]T
+ // masked_compress_store(ptr: rawptr, values: #simd[N]T, mask: #simd[N]int_or_bool)
Operand ptr = {};
Operand values = {};
@@ -733,7 +737,8 @@ gb_internal bool check_builtin_simd_operation(CheckerContext *c, Operand *operan
}
if (id == BuiltinProc_simd_gather ||
- id == BuiltinProc_simd_masked_load) {
+ id == BuiltinProc_simd_masked_load ||
+ id == BuiltinProc_simd_masked_expand_load) {
operand->mode = Addressing_Value;
operand->type = values.type;
} else {