aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJon Lipstate <jon@lipstate.com>2025-07-16 21:54:24 -0700
committerJon Lipstate <jon@lipstate.com>2025-07-16 21:54:24 -0700
commitecd41b155db7a1ed93923ddc296fab1036e14392 (patch)
treed5fabdba2ea0316ddef4ef7bd77585f348b6d0fe /src
parentfc78f6e83bf800c76cd8ac86281359c91261dd89 (diff)
rename table_lookup to runtime_swizzle
Diffstat (limited to 'src')
-rw-r--r--src/check_builtin.cpp4
-rw-r--r--src/checker_builtin_procs.hpp4
-rw-r--r--src/llvm_backend_proc.cpp20
3 files changed, 14 insertions, 14 deletions
diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp
index c7386a97d..d786afb8e 100644
--- a/src/check_builtin.cpp
+++ b/src/check_builtin.cpp
@@ -1150,7 +1150,7 @@ gb_internal bool check_builtin_simd_operation(CheckerContext *c, Operand *operan
return true;
}
- case BuiltinProc_simd_table_lookup:
+ case BuiltinProc_simd_runtime_swizzle:
{
if (ce->args.count != 2) {
error(call, "'%.*s' expected 2 arguments, got %td", LIT(builtin_name), ce->args.count);
@@ -1163,7 +1163,7 @@ gb_internal bool check_builtin_simd_operation(CheckerContext *c, Operand *operan
check_expr_with_type_hint(c, &indices, ce->args[1], table.type); if (indices.mode == Addressing_Invalid) return false;
if (!is_type_simd_vector(table.type)) {
- error(table.expr, "'%.*s' expected a simd vector type for table", LIT(builtin_name));
+ error(table.expr, "'%.*s' expected a simd vector type for runtime swizzle", LIT(builtin_name));
return false;
}
if (!is_type_simd_vector(indices.type)) {
diff --git a/src/checker_builtin_procs.hpp b/src/checker_builtin_procs.hpp
index 59fc84a4e..8898d4c11 100644
--- a/src/checker_builtin_procs.hpp
+++ b/src/checker_builtin_procs.hpp
@@ -191,7 +191,7 @@ BuiltinProc__simd_begin,
BuiltinProc_simd_shuffle,
BuiltinProc_simd_select,
- BuiltinProc_simd_table_lookup,
+ BuiltinProc_simd_runtime_swizzle,
BuiltinProc_simd_ceil,
BuiltinProc_simd_floor,
@@ -551,7 +551,7 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_COUNT] = {
{STR_LIT("simd_shuffle"), 2, true, Expr_Expr, BuiltinProcPkg_intrinsics},
{STR_LIT("simd_select"), 3, false, Expr_Expr, BuiltinProcPkg_intrinsics},
- {STR_LIT("simd_table_lookup"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics},
+ {STR_LIT("simd_runtime_swizzle"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics},
{STR_LIT("simd_ceil") , 1, false, Expr_Expr, BuiltinProcPkg_intrinsics},
{STR_LIT("simd_floor"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics},
diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp
index 1fe8a15fe..a7766cab2 100644
--- a/src/llvm_backend_proc.cpp
+++ b/src/llvm_backend_proc.cpp
@@ -1721,7 +1721,7 @@ gb_internal lbValue lb_build_builtin_simd_proc(lbProcedure *p, Ast *expr, TypeAn
return res;
}
- case BuiltinProc_simd_table_lookup:
+ case BuiltinProc_simd_runtime_swizzle:
{
LLVMValueRef table = arg0.value;
LLVMValueRef indices = lb_build_expr(p, ce->args[1]).value;
@@ -1734,11 +1734,11 @@ gb_internal lbValue lb_build_builtin_simd_proc(lbProcedure *p, Ast *expr, TypeAn
// Determine strategy based on element size and target architecture
char const *intrinsic_name = nullptr;
- bool use_hardware_table_lookup = false;
+ bool use_hardware_runtime_swizzle = false;
// 8-bit elements: Use dedicated table lookup instructions
if (elem_size == 1) {
- use_hardware_table_lookup = true;
+ use_hardware_runtime_swizzle = true;
if (build_context.metrics.arch == TargetArch_amd64 || build_context.metrics.arch == TargetArch_i386) {
// x86/x86-64: Use pshufb intrinsics
@@ -1753,7 +1753,7 @@ gb_internal lbValue lb_build_builtin_simd_proc(lbProcedure *p, Ast *expr, TypeAn
intrinsic_name = "llvm.x86.avx512.pshuf.b.512";
break;
default:
- use_hardware_table_lookup = false;
+ use_hardware_runtime_swizzle = false;
break;
}
} else if (build_context.metrics.arch == TargetArch_arm64) {
@@ -1772,7 +1772,7 @@ gb_internal lbValue lb_build_builtin_simd_proc(lbProcedure *p, Ast *expr, TypeAn
intrinsic_name = "llvm.aarch64.neon.tbl4";
break;
default:
- use_hardware_table_lookup = false;
+ use_hardware_runtime_swizzle = false;
break;
}
} else if (build_context.metrics.arch == TargetArch_arm32) {
@@ -1791,7 +1791,7 @@ gb_internal lbValue lb_build_builtin_simd_proc(lbProcedure *p, Ast *expr, TypeAn
intrinsic_name = "llvm.arm.neon.vtbl4";
break;
default:
- use_hardware_table_lookup = false;
+ use_hardware_runtime_swizzle = false;
break;
}
} else if (build_context.metrics.arch == TargetArch_wasm32 || build_context.metrics.arch == TargetArch_wasm64p32) {
@@ -1799,14 +1799,14 @@ gb_internal lbValue lb_build_builtin_simd_proc(lbProcedure *p, Ast *expr, TypeAn
if (count == 16) {
intrinsic_name = "llvm.wasm.swizzle";
} else {
- use_hardware_table_lookup = false;
+ use_hardware_runtime_swizzle = false;
}
} else {
- use_hardware_table_lookup = false;
+ use_hardware_runtime_swizzle = false;
}
}
- if (use_hardware_table_lookup && intrinsic_name != nullptr) {
+ if (use_hardware_runtime_swizzle && intrinsic_name != nullptr) {
// Use dedicated hardware table lookup instruction
// Check if required target features are enabled
@@ -1932,7 +1932,7 @@ gb_internal lbValue lb_build_builtin_simd_proc(lbProcedure *p, Ast *expr, TypeAn
return res;
} else {
// Features not enabled, fall back to emulation
- use_hardware_table_lookup = false;
+ use_hardware_runtime_swizzle = false;
}
}