From f568d8098691ec0e9d086f8fc09019f863ea75f1 Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Fri, 17 Dec 2021 13:33:08 -0800 Subject: [PATCH] glsl: Retire unused modes for lower_64bit_integer_instructions. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Unused since 424ac809bfac ("i965: Do int64 lowering in NIR") Reviewed-by: Alyssa Rosenzweig . Reviewed-by: Marek Olšák Part-of: --- src/compiler/glsl/builtin_functions.cpp | 8 ----- src/compiler/glsl/builtin_functions.h | 6 ---- src/compiler/glsl/builtin_int64.h | 56 --------------------------------- src/compiler/glsl/glcpp/glcpp-parse.y | 2 -- src/compiler/glsl/int64.glsl | 22 ------------- src/compiler/glsl/ir_optimization.h | 8 ++--- src/compiler/glsl/lower_int64.cpp | 16 ++-------- 7 files changed, 5 insertions(+), 113 deletions(-) diff --git a/src/compiler/glsl/builtin_functions.cpp b/src/compiler/glsl/builtin_functions.cpp index 601263e..9e4bfdf 100644 --- a/src/compiler/glsl/builtin_functions.cpp +++ b/src/compiler/glsl/builtin_functions.cpp @@ -4441,10 +4441,6 @@ builtin_builder::create_builtins() generate_ir::imod64(mem_ctx, integer_functions_supported), NULL); - add_function("__builtin_sign64", - generate_ir::sign64(mem_ctx, integer_functions_supported), - NULL); - add_function("__builtin_udiv64", generate_ir::udiv64(mem_ctx, integer_functions_supported), NULL); @@ -4453,10 +4449,6 @@ builtin_builder::create_builtins() generate_ir::umod64(mem_ctx, integer_functions_supported), NULL); - add_function("__builtin_umul64", - generate_ir::umul64(mem_ctx, integer_functions_supported), - NULL); - add_function("countLeadingZeros", _countLeadingZeros(shader_integer_functions2, glsl_type::uint_type), diff --git a/src/compiler/glsl/builtin_functions.h b/src/compiler/glsl/builtin_functions.h index ff3d4e9..fb1e5e5 100644 --- a/src/compiler/glsl/builtin_functions.h +++ b/src/compiler/glsl/builtin_functions.h @@ -69,12 +69,6 @@ ir_function_signature * imod64(void *mem_ctx, builtin_available_predicate avail); ir_function_signature * -umul64(void *mem_ctx, builtin_available_predicate avail); - -ir_function_signature * -sign64(void *mem_ctx, builtin_available_predicate avail); - -ir_function_signature * udivmod64(void *mem_ctx, builtin_available_predicate avail); } diff --git a/src/compiler/glsl/builtin_int64.h b/src/compiler/glsl/builtin_int64.h index 6812d4b..40e2c1c 100644 --- a/src/compiler/glsl/builtin_int64.h +++ b/src/compiler/glsl/builtin_int64.h @@ -1,60 +1,4 @@ ir_function_signature * -umul64(void *mem_ctx, builtin_available_predicate avail) -{ - ir_function_signature *const sig = - new(mem_ctx) ir_function_signature(glsl_type::uvec2_type, avail); - ir_factory body(&sig->body, mem_ctx); - sig->is_defined = true; - - exec_list sig_parameters; - - ir_variable *const r0001 = new(mem_ctx) ir_variable(glsl_type::uvec2_type, "a", ir_var_function_in); - sig_parameters.push_tail(r0001); - ir_variable *const r0002 = new(mem_ctx) ir_variable(glsl_type::uvec2_type, "b", ir_var_function_in); - sig_parameters.push_tail(r0002); - ir_variable *const r0003 = new(mem_ctx) ir_variable(glsl_type::uvec2_type, "result", ir_var_auto); - body.emit(r0003); - body.emit(assign(r0003, imul_high(swizzle_x(r0001), swizzle_x(r0002)), 0x02)); - - body.emit(assign(r0003, mul(swizzle_x(r0001), swizzle_x(r0002)), 0x01)); - - ir_expression *const r0004 = mul(swizzle_x(r0001), swizzle_y(r0002)); - ir_expression *const r0005 = mul(swizzle_y(r0001), swizzle_x(r0002)); - ir_expression *const r0006 = add(r0004, r0005); - body.emit(assign(r0003, add(swizzle_y(r0003), r0006), 0x02)); - - body.emit(ret(r0003)); - - sig->replace_parameters(&sig_parameters); - return sig; -} -ir_function_signature * -sign64(void *mem_ctx, builtin_available_predicate avail) -{ - ir_function_signature *const sig = - new(mem_ctx) ir_function_signature(glsl_type::ivec2_type, avail); - ir_factory body(&sig->body, mem_ctx); - sig->is_defined = true; - - exec_list sig_parameters; - - ir_variable *const r0007 = new(mem_ctx) ir_variable(glsl_type::ivec2_type, "a", ir_var_function_in); - sig_parameters.push_tail(r0007); - ir_variable *const r0008 = new(mem_ctx) ir_variable(glsl_type::ivec2_type, "result", ir_var_auto); - body.emit(r0008); - body.emit(assign(r0008, rshift(swizzle_y(r0007), body.constant(int(31))), 0x02)); - - ir_expression *const r0009 = bit_or(swizzle_x(r0007), swizzle_y(r0007)); - ir_expression *const r000A = nequal(r0009, body.constant(int(0))); - ir_expression *const r000B = expr(ir_unop_b2i, r000A); - body.emit(assign(r0008, bit_or(swizzle_y(r0008), r000B), 0x01)); - - body.emit(ret(r0008)); - - sig->replace_parameters(&sig_parameters); - return sig; -} -ir_function_signature * udivmod64(void *mem_ctx, builtin_available_predicate avail) { ir_function_signature *const sig = diff --git a/src/compiler/glsl/glcpp/glcpp-parse.y b/src/compiler/glsl/glcpp/glcpp-parse.y index 2359967..33aba1b 100644 --- a/src/compiler/glsl/glcpp/glcpp-parse.y +++ b/src/compiler/glsl/glcpp/glcpp-parse.y @@ -2489,8 +2489,6 @@ _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t versio * those functions so that they can be tested. */ if (parser->extension_list->MESA_shader_integer_functions) { - add_builtin_define(parser, "__have_builtin_builtin_sign64", 1); - add_builtin_define(parser, "__have_builtin_builtin_umul64", 1); add_builtin_define(parser, "__have_builtin_builtin_udiv64", 1); add_builtin_define(parser, "__have_builtin_builtin_umod64", 1); add_builtin_define(parser, "__have_builtin_builtin_idiv64", 1); diff --git a/src/compiler/glsl/int64.glsl b/src/compiler/glsl/int64.glsl index 538f56c..7b826ae 100644 --- a/src/compiler/glsl/int64.glsl +++ b/src/compiler/glsl/int64.glsl @@ -8,28 +8,6 @@ #extension GL_ARB_gpu_shader_int64: require #extension GL_ARB_shading_language_420pack: require -uvec2 -umul64(uvec2 a, uvec2 b) -{ - uvec2 result; - - umulExtended(a.x, b.x, result.y, result.x); - result.y += a.x * b.y + a.y * b.x; - - return result; -} - -ivec2 -sign64(ivec2 a) -{ - ivec2 result; - - result.y = a.y >> 31; - result.x = result.y | int((a.x | a.y) != 0); - - return result; -} - uvec4 udivmod64(uvec2 n, uvec2 d) { diff --git a/src/compiler/glsl/ir_optimization.h b/src/compiler/glsl/ir_optimization.h index 56e5ceb..898e2f7 100644 --- a/src/compiler/glsl/ir_optimization.h +++ b/src/compiler/glsl/ir_optimization.h @@ -59,11 +59,9 @@ struct gl_shader_program; #define SQRT_TO_ABS_SQRT 0x200000 #define MUL64_TO_MUL_AND_MUL_HIGH 0x400000 -/* Opertaions for lower_64bit_integer_instructions() */ -#define MUL64 (1U << 0) -#define SIGN64 (1U << 1) -#define DIV64 (1U << 2) -#define MOD64 (1U << 3) +/* Operations for lower_64bit_integer_instructions() */ +#define DIV64 (1U << 0) +#define MOD64 (1U << 1) /** * \see class lower_packing_builtins_visitor diff --git a/src/compiler/glsl/lower_int64.cpp b/src/compiler/glsl/lower_int64.cpp index 43774d6..a4d3673 100644 --- a/src/compiler/glsl/lower_int64.cpp +++ b/src/compiler/glsl/lower_int64.cpp @@ -29,11 +29,11 @@ * called __builtin_foo with the same number of parameters that takes uvec2 * sources and produces uvec2 results. An operation like * - * uint64_t(x) * uint64_t(y) + * uint64_t(x) / uint64_t(y) * * becomes * - * packUint2x32(__builtin_umul64(unpackUint2x32(x), unpackUint2x32(y))); + * packUint2x32(__builtin_udiv64(unpackUint2x32(x), unpackUint2x32(y))); */ #include "main/macros.h" @@ -353,12 +353,6 @@ lower_64bit_visitor::handle_rvalue(ir_rvalue **rvalue) assert(ir != NULL); switch (ir->operation) { - case ir_unop_sign: - if (lowering(SIGN64)) { - *rvalue = handle_op(ir, "__builtin_sign64", generate_ir::sign64); - } - break; - case ir_binop_div: if (lowering(DIV64)) { if (ir->type->base_type == GLSL_TYPE_UINT64) { @@ -379,12 +373,6 @@ lower_64bit_visitor::handle_rvalue(ir_rvalue **rvalue) } break; - case ir_binop_mul: - if (lowering(MUL64)) { - *rvalue = handle_op(ir, "__builtin_umul64", generate_ir::umul64); - } - break; - default: break; } -- 2.7.4