Re: [Mesa-dev] [PATCH 5/5] st/glsl_to_tgsi: fix [ui]vec[34] conversion to double

2016-10-13 Thread Marek Olšák
For the series:

Reviewed-by: Marek Olšák 

Marek

On Thu, Oct 13, 2016 at 5:13 PM, Nicolai Hähnle  wrote:
> From: Nicolai Hähnle 
>
> The corresponding opcodes for integers need to be treated the same as F2D.
>
> Fixes GL45-CTS.gpu_shader_fp64.conversions.
> ---
>  src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp 
> b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> index 682c034..f49a873 100644
> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> @@ -862,22 +862,23 @@ glsl_to_tgsi_visitor::emit_asm(ir_instruction *ir, 
> unsigned op,
>dinst->src[j].index++;
>}
>
> if (swz & 1)
>dinst->src[j].swizzle = MAKE_SWIZZLE4(SWIZZLE_Z, 
> SWIZZLE_W, SWIZZLE_Z, SWIZZLE_W);
> else
>dinst->src[j].swizzle = MAKE_SWIZZLE4(SWIZZLE_X, 
> SWIZZLE_Y, SWIZZLE_X, SWIZZLE_Y);
>
>  } else {
> /* some opcodes are special case in what they use as sources
> -  - F2D is a float src0, DLDEXP is integer src1 */
> -   if (op == TGSI_OPCODE_F2D ||
> +  - [FUI]2D/[UI]2I64 is a float/[u]int src0, DLDEXP is 
> integer src1 */
> +   if (op == TGSI_OPCODE_F2D || op == TGSI_OPCODE_U2D || op == 
> TGSI_OPCODE_I2D ||
> +   op == TGSI_OPCODE_I2I64 || op == TGSI_OPCODE_U2I64 ||
> op == TGSI_OPCODE_DLDEXP ||
> (op == TGSI_OPCODE_UCMP && dst_is_64bit[0])) {
>dinst->src[j].swizzle = MAKE_SWIZZLE4(swz, swz, swz, swz);
> }
>  }
>   }
>}
>inst = dinst;
> } else {
>this->instructions.push_tail(inst);
> --
> 2.7.4
>
> ___
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 5/5] st/glsl_to_tgsi: fix [ui]vec[34] conversion to double

2016-10-13 Thread Nicolai Hähnle
From: Nicolai Hähnle 

The corresponding opcodes for integers need to be treated the same as F2D.

Fixes GL45-CTS.gpu_shader_fp64.conversions.
---
 src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp 
b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index 682c034..f49a873 100644
--- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -862,22 +862,23 @@ glsl_to_tgsi_visitor::emit_asm(ir_instruction *ir, 
unsigned op,
   dinst->src[j].index++;
   }
 
if (swz & 1)
   dinst->src[j].swizzle = MAKE_SWIZZLE4(SWIZZLE_Z, SWIZZLE_W, 
SWIZZLE_Z, SWIZZLE_W);
else
   dinst->src[j].swizzle = MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, 
SWIZZLE_X, SWIZZLE_Y);
 
 } else {
/* some opcodes are special case in what they use as sources
-  - F2D is a float src0, DLDEXP is integer src1 */
-   if (op == TGSI_OPCODE_F2D ||
+  - [FUI]2D/[UI]2I64 is a float/[u]int src0, DLDEXP is integer 
src1 */
+   if (op == TGSI_OPCODE_F2D || op == TGSI_OPCODE_U2D || op == 
TGSI_OPCODE_I2D ||
+   op == TGSI_OPCODE_I2I64 || op == TGSI_OPCODE_U2I64 ||
op == TGSI_OPCODE_DLDEXP ||
(op == TGSI_OPCODE_UCMP && dst_is_64bit[0])) {
   dinst->src[j].swizzle = MAKE_SWIZZLE4(swz, swz, swz, swz);
}
 }
  }
   }
   inst = dinst;
} else {
   this->instructions.push_tail(inst);
-- 
2.7.4

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev