diff options
author | Elie Tournier <tournier.elie@gmail.com> | 2017-05-30 14:16:06 +0100 |
---|---|---|
committer | Elie Tournier <tournier.elie@gmail.com> | 2017-05-30 14:30:15 +0100 |
commit | 9a354008446866dde16da13a329bc00eca7400ab (patch) | |
tree | aedc2d5157136c1126569a3230f4d734244f2584 | |
parent | 8a38a40cfa3aadf3d5b56ec1e708154ed6600607 (diff) |
glsl: Add a lowering pass for 64-bit float add()
Signed-off-by: Elie Tournier <tournier.elie@gmail.com>
-rw-r--r-- | src/compiler/glsl/ir_optimization.h | 1 | ||||
-rw-r--r-- | src/compiler/glsl/lower_64bit.cpp | 8 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 3 |
3 files changed, 11 insertions, 1 deletions
diff --git a/src/compiler/glsl/ir_optimization.h b/src/compiler/glsl/ir_optimization.h index 5a500245c5..c6233a9a63 100644 --- a/src/compiler/glsl/ir_optimization.h +++ b/src/compiler/glsl/ir_optimization.h @@ -67,6 +67,7 @@ #define EQ64 (1U << 6) #define LE64 (1U << 7) #define LT64 (1U << 8) +#define ADD64 (1U << 9) /** * \see class lower_packing_builtins_visitor diff --git a/src/compiler/glsl/lower_64bit.cpp b/src/compiler/glsl/lower_64bit.cpp index df7eef5135..e0efd942a8 100644 --- a/src/compiler/glsl/lower_64bit.cpp +++ b/src/compiler/glsl/lower_64bit.cpp @@ -409,6 +409,14 @@ lower_64bit_visitor::handle_rvalue(ir_rvalue **rvalue) } break; + case ir_binop_add: + if (lowering(ADD64)) { + if (ir->type->base_type == GLSL_TYPE_DOUBLE) + *rvalue = handle_op(ir, "__builtin_fadd64", generate_ir::fadd64); + this->progress = true; + } + break; + case ir_binop_div: if (lowering(DIV64)) { if (ir->type->base_type == GLSL_TYPE_UINT64) { diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index de19ace19b..78b72dcd1b 100644 --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -6955,7 +6955,8 @@ st_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) NEG64 | EQ64 | LE64 | - LT64; + LT64 | + ADD64; lower_64bit_double_instructions(ir, lower_inst); } |