Rename add_sat -> saturating_add

This commit is contained in:
gingerBill
2024-08-05 13:19:01 +01:00
parent 9a01a13914
commit 90fc52c2ee
5 changed files with 31 additions and 28 deletions
+5 -2
View File
@@ -42,8 +42,8 @@ overflow_add :: proc(lhs, rhs: $T) -> (T, bool) where type_is_integer(T) #option
overflow_sub :: proc(lhs, rhs: $T) -> (T, bool) where type_is_integer(T) #optional_ok --- overflow_sub :: proc(lhs, rhs: $T) -> (T, bool) where type_is_integer(T) #optional_ok ---
overflow_mul :: proc(lhs, rhs: $T) -> (T, bool) where type_is_integer(T) #optional_ok --- overflow_mul :: proc(lhs, rhs: $T) -> (T, bool) where type_is_integer(T) #optional_ok ---
add_sat :: proc(lhs, rhs: $T) -> T where type_is_integer(T) --- saturating_add :: proc(lhs, rhs: $T) -> T where type_is_integer(T) ---
sub_sat :: proc(lhs, rhs: $T) -> T where type_is_integer(T) --- saturating_sub :: proc(lhs, rhs: $T) -> T where type_is_integer(T) ---
sqrt :: proc(x: $T) -> T where type_is_float(T) || (type_is_simd_vector(T) && type_is_float(type_elem_type(T))) --- sqrt :: proc(x: $T) -> T where type_is_float(T) || (type_is_simd_vector(T) && type_is_float(type_elem_type(T))) ---
@@ -227,6 +227,9 @@ simd_sub :: proc(a, b: #simd[N]T) -> #simd[N]T ---
simd_mul :: proc(a, b: #simd[N]T) -> #simd[N]T --- simd_mul :: proc(a, b: #simd[N]T) -> #simd[N]T ---
simd_div :: proc(a, b: #simd[N]T) -> #simd[N]T where type_is_float(T) --- simd_div :: proc(a, b: #simd[N]T) -> #simd[N]T where type_is_float(T) ---
simd_saturating_add :: proc(a, b: #simd[N]T) -> #simd[N]T where type_is_integer(T) ---
simd_saturating_sub :: proc(a, b: #simd[N]T) -> #simd[N]T where type_is_integer(T) ---
// Keeps Odin's Behaviour // Keeps Odin's Behaviour
// (x << y) if y <= mask else 0 // (x << y) if y <= mask else 0
simd_shl :: proc(a: #simd[N]T, b: #simd[N]Unsigned_Integer) -> #simd[N]T --- simd_shl :: proc(a: #simd[N]T, b: #simd[N]Unsigned_Integer) -> #simd[N]T ---
+2 -2
View File
@@ -74,8 +74,8 @@ shl_masked :: intrinsics.simd_shl_masked
shr_masked :: intrinsics.simd_shr_masked shr_masked :: intrinsics.simd_shr_masked
// Saturation Arithmetic // Saturation Arithmetic
add_sat :: intrinsics.simd_add_sat saturating_add :: intrinsics.simd_saturating_add
sub_sat :: intrinsics.simd_sub_sat saturating_sub :: intrinsics.simd_saturating_sub
bit_and :: intrinsics.simd_bit_and bit_and :: intrinsics.simd_bit_and
bit_or :: intrinsics.simd_bit_or bit_or :: intrinsics.simd_bit_or
+6 -6
View File
@@ -470,8 +470,8 @@ gb_internal bool check_builtin_simd_operation(CheckerContext *c, Operand *operan
} }
// Integer only // Integer only
case BuiltinProc_simd_add_sat: case BuiltinProc_simd_saturating_add:
case BuiltinProc_simd_sub_sat: case BuiltinProc_simd_saturating_sub:
case BuiltinProc_simd_bit_and: case BuiltinProc_simd_bit_and:
case BuiltinProc_simd_bit_or: case BuiltinProc_simd_bit_or:
case BuiltinProc_simd_bit_xor: case BuiltinProc_simd_bit_xor:
@@ -501,8 +501,8 @@ gb_internal bool check_builtin_simd_operation(CheckerContext *c, Operand *operan
Type *elem = base_array_type(x.type); Type *elem = base_array_type(x.type);
switch (id) { switch (id) {
case BuiltinProc_simd_add_sat: case BuiltinProc_simd_saturating_add:
case BuiltinProc_simd_sub_sat: case BuiltinProc_simd_saturating_sub:
if (!is_type_integer(elem)) { if (!is_type_integer(elem)) {
gbString xs = type_to_string(x.type); gbString xs = type_to_string(x.type);
error(x.expr, "'%.*s' expected a #simd type with an integer element, got '%s'", LIT(builtin_name), xs); error(x.expr, "'%.*s' expected a #simd type with an integer element, got '%s'", LIT(builtin_name), xs);
@@ -4325,8 +4325,8 @@ gb_internal bool check_builtin_procedure(CheckerContext *c, Operand *operand, As
} }
break; break;
case BuiltinProc_add_sat: case BuiltinProc_saturating_add:
case BuiltinProc_sub_sat: case BuiltinProc_saturating_sub:
{ {
Operand x = {}; Operand x = {};
Operand y = {}; Operand y = {};
+8 -8
View File
@@ -70,8 +70,8 @@ enum BuiltinProcId {
BuiltinProc_overflow_sub, BuiltinProc_overflow_sub,
BuiltinProc_overflow_mul, BuiltinProc_overflow_mul,
BuiltinProc_add_sat, BuiltinProc_saturating_add,
BuiltinProc_sub_sat, BuiltinProc_saturating_sub,
BuiltinProc_sqrt, BuiltinProc_sqrt,
BuiltinProc_fused_mul_add, BuiltinProc_fused_mul_add,
@@ -141,8 +141,8 @@ BuiltinProc__simd_begin,
BuiltinProc_simd_shl_masked, // C logic BuiltinProc_simd_shl_masked, // C logic
BuiltinProc_simd_shr_masked, // C logic BuiltinProc_simd_shr_masked, // C logic
BuiltinProc_simd_add_sat, // saturation arithmetic BuiltinProc_simd_saturating_add, // saturation arithmetic
BuiltinProc_simd_sub_sat, // saturation arithmetic BuiltinProc_simd_saturating_sub, // saturation arithmetic
BuiltinProc_simd_bit_and, BuiltinProc_simd_bit_and,
BuiltinProc_simd_bit_or, BuiltinProc_simd_bit_or,
@@ -399,8 +399,8 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_COUNT] = {
{STR_LIT("overflow_sub"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("overflow_sub"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics},
{STR_LIT("overflow_mul"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("overflow_mul"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics},
{STR_LIT("add_sat"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("saturating_add"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics},
{STR_LIT("sub_sat"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("saturating_sub"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics},
{STR_LIT("sqrt"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("sqrt"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics},
{STR_LIT("fused_mul_add"), 3, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("fused_mul_add"), 3, false, Expr_Expr, BuiltinProcPkg_intrinsics},
@@ -470,8 +470,8 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_COUNT] = {
{STR_LIT("simd_shl_masked"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("simd_shl_masked"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics},
{STR_LIT("simd_shr_masked"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("simd_shr_masked"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics},
{STR_LIT("simd_add_sat"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("simd_saturating_add"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics},
{STR_LIT("simd_sub_sat"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("simd_saturating_sub"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics},
{STR_LIT("simd_bit_and"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("simd_bit_and"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics},
{STR_LIT("simd_bit_or"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("simd_bit_or"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics},
+10 -10
View File
@@ -1646,13 +1646,13 @@ gb_internal lbValue lb_build_builtin_simd_proc(lbProcedure *p, Ast *expr, TypeAn
} }
case BuiltinProc_simd_add_sat: case BuiltinProc_simd_saturating_add:
case BuiltinProc_simd_sub_sat: case BuiltinProc_simd_saturating_sub:
{ {
char const *name = nullptr; char const *name = nullptr;
switch (builtin_id) { switch (builtin_id) {
case BuiltinProc_simd_add_sat: name = is_signed ? "llvm.sadd.sat" : "llvm.uadd.sat"; break; case BuiltinProc_simd_saturating_add: name = is_signed ? "llvm.sadd.sat" : "llvm.uadd.sat"; break;
case BuiltinProc_simd_sub_sat: name = is_signed ? "llvm.ssub.sat" : "llvm.usub.sat"; break; case BuiltinProc_simd_saturating_sub: name = is_signed ? "llvm.ssub.sat" : "llvm.usub.sat"; break;
} }
LLVMTypeRef types[1] = {lb_type(p->module, arg0.type)}; LLVMTypeRef types[1] = {lb_type(p->module, arg0.type)};
@@ -2302,8 +2302,8 @@ gb_internal lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValu
return res; return res;
} }
case BuiltinProc_add_sat: case BuiltinProc_saturating_add:
case BuiltinProc_sub_sat: case BuiltinProc_saturating_sub:
{ {
Type *main_type = tv.type; Type *main_type = tv.type;
Type *type = main_type; Type *type = main_type;
@@ -2316,13 +2316,13 @@ gb_internal lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValu
char const *name = nullptr; char const *name = nullptr;
if (is_type_unsigned(type)) { if (is_type_unsigned(type)) {
switch (id) { switch (id) {
case BuiltinProc_add_sat: name = "llvm.uadd.sat"; break; case BuiltinProc_saturating_add: name = "llvm.uadd.sat"; break;
case BuiltinProc_sub_sat: name = "llvm.usub.sat"; break; case BuiltinProc_saturating_sub: name = "llvm.usub.sat"; break;
} }
} else { } else {
switch (id) { switch (id) {
case BuiltinProc_add_sat: name = "llvm.sadd.sat"; break; case BuiltinProc_saturating_add: name = "llvm.sadd.sat"; break;
case BuiltinProc_sub_sat: name = "llvm.ssub.sat"; break; case BuiltinProc_saturating_sub: name = "llvm.ssub.sat"; break;
} }
} }
LLVMTypeRef types[1] = {lb_type(p->module, type)}; LLVMTypeRef types[1] = {lb_type(p->module, type)};