From 423a75c5d607a33cb5fe76a0a9c903cccc645fa7 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 6 May 2010 15:52:05 -0700 Subject: [PATCH] ir_to_mesa: Add ir_unop_f2i -> OPCODE_TRUNC. --- ir_to_mesa.cpp | 5 ++++- mesa_codegen.brg | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ir_to_mesa.cpp b/ir_to_mesa.cpp index b28747e..77a8822 100644 --- a/ir_to_mesa.cpp +++ b/ir_to_mesa.cpp @@ -365,9 +365,12 @@ ir_to_mesa_visitor::visit(ir_expression *ir) this->result = this->create_tree(MB_TERM_rsq_vec4, ir, op[0], op[1]); break; case ir_unop_i2f: - /* Mesa IR lacks types, ints are stored as floats. */ + /* Mesa IR lacks types, ints are stored as truncated floats. */ this->result = op[0]; break; + case ir_unop_f2i: + this->result = this->create_tree(MB_TERM_trunc_vec4, ir, op[0], NULL); + break; default: break; } diff --git a/mesa_codegen.brg b/mesa_codegen.brg index e8d499f..5e7953b 100644 --- a/mesa_codegen.brg +++ b/mesa_codegen.brg @@ -62,6 +62,7 @@ %term sqrt_vec4 %term rsq_vec4 %term swizzle_vec4 +%term trunc_vec4 # Each tree will produce stmt. Currently, the only production for # stmt is from an assign rule -- every statement tree from @@ -245,4 +246,11 @@ vec4: log2_vec4(vec4) 1 tree->left->src_reg); } +vec4: trunc_vec4(vec4) 1 +{ + ir_to_mesa_emit_scalar_op1(tree, OPCODE_TRUNC, + tree->dst_reg, + tree->left->src_reg); +} + %% -- 2.7.4