Re: [Mesa-dev] [PATCH v2] nir/spirv: fix chain access with different index bit sizes

2017-09-07 Thread Jason Ekstrand
I'd probably go with u2u32 so we don't get sign-extension.  Other than that,

Reviewed-by: Jason Ekstrand 

On Mon, Aug 28, 2017 at 11:42 PM, Samuel Iglesias Gonsálvez <
sigles...@igalia.com> wrote:

> Currently we support 32-bit indexes/offsets all over the driver, so we
> convert them to that bit size.
>
> Fixes dEQP-VK.spirv_assembly.instruction.*.indexing.*
>
> Signed-off-by: Samuel Iglesias Gonsálvez 
> ---
>  src/compiler/spirv/vtn_variables.c | 11 ---
>  1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_
> variables.c
> index 4432e72e54..4f6acd2e07 100644
> --- a/src/compiler/spirv/vtn_variables.c
> +++ b/src/compiler/spirv/vtn_variables.c
> @@ -102,10 +102,15 @@ vtn_access_link_as_ssa(struct vtn_builder *b, struct
> vtn_access_link link,
> if (link.mode == vtn_access_mode_literal) {
>return nir_imm_int(>nb, link.id * stride);
> } else if (stride == 1) {
> -  return vtn_ssa_value(b, link.id)->def;
> +   nir_ssa_def *ssa = vtn_ssa_value(b, link.id)->def;
> +   if (ssa->bit_size != 32)
> +  ssa = nir_i2i32(>nb, ssa);
> +  return ssa;
> } else {
> -  return nir_imul(>nb, vtn_ssa_value(b, link.id)->def,
> -  nir_imm_int(>nb, stride));
> +  nir_ssa_def *src0 = vtn_ssa_value(b, link.id)->def;
> +  if (src0->bit_size != 32)
> + src0 = nir_i2i32(>nb, src0);
> +  return nir_imul(>nb, src0, nir_imm_int(>nb, stride));
> }
>  }
>
> --
> 2.14.1
>
> ___
> 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


Re: [Mesa-dev] [PATCH v2] nir/spirv: fix chain access with different index bit sizes

2017-09-07 Thread Samuel Iglesias Gonsálvez
This patch is unreviewed.

On Tue, 2017-08-29 at 08:42 +0200, Samuel Iglesias Gonsálvez wrote:
> Currently we support 32-bit indexes/offsets all over the driver, so
> we
> convert them to that bit size.
> 
> Fixes dEQP-VK.spirv_assembly.instruction.*.indexing.*
> 
> Signed-off-by: Samuel Iglesias Gonsálvez 
> ---
>  src/compiler/spirv/vtn_variables.c | 11 ---
>  1 file changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/src/compiler/spirv/vtn_variables.c
> b/src/compiler/spirv/vtn_variables.c
> index 4432e72e54..4f6acd2e07 100644
> --- a/src/compiler/spirv/vtn_variables.c
> +++ b/src/compiler/spirv/vtn_variables.c
> @@ -102,10 +102,15 @@ vtn_access_link_as_ssa(struct vtn_builder *b,
> struct vtn_access_link link,
> if (link.mode == vtn_access_mode_literal) {
>    return nir_imm_int(>nb, link.id * stride);
> } else if (stride == 1) {
> -  return vtn_ssa_value(b, link.id)->def;
> +   nir_ssa_def *ssa = vtn_ssa_value(b, link.id)->def;
> +   if (ssa->bit_size != 32)
> +  ssa = nir_i2i32(>nb, ssa);
> +  return ssa;
> } else {
> -  return nir_imul(>nb, vtn_ssa_value(b, link.id)->def,
> -  nir_imm_int(>nb, stride));
> +  nir_ssa_def *src0 = vtn_ssa_value(b, link.id)->def;
> +  if (src0->bit_size != 32)
> + src0 = nir_i2i32(>nb, src0);
> +  return nir_imul(>nb, src0, nir_imm_int(>nb, stride));
> }
>  }
>  

signature.asc
Description: This is a digitally signed message part
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH v2] nir/spirv: fix chain access with different index bit sizes

2017-08-29 Thread Samuel Iglesias Gonsálvez
Currently we support 32-bit indexes/offsets all over the driver, so we
convert them to that bit size.

Fixes dEQP-VK.spirv_assembly.instruction.*.indexing.*

Signed-off-by: Samuel Iglesias Gonsálvez 
---
 src/compiler/spirv/vtn_variables.c | 11 ---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/compiler/spirv/vtn_variables.c 
b/src/compiler/spirv/vtn_variables.c
index 4432e72e54..4f6acd2e07 100644
--- a/src/compiler/spirv/vtn_variables.c
+++ b/src/compiler/spirv/vtn_variables.c
@@ -102,10 +102,15 @@ vtn_access_link_as_ssa(struct vtn_builder *b, struct 
vtn_access_link link,
if (link.mode == vtn_access_mode_literal) {
   return nir_imm_int(>nb, link.id * stride);
} else if (stride == 1) {
-  return vtn_ssa_value(b, link.id)->def;
+   nir_ssa_def *ssa = vtn_ssa_value(b, link.id)->def;
+   if (ssa->bit_size != 32)
+  ssa = nir_i2i32(>nb, ssa);
+  return ssa;
} else {
-  return nir_imul(>nb, vtn_ssa_value(b, link.id)->def,
-  nir_imm_int(>nb, stride));
+  nir_ssa_def *src0 = vtn_ssa_value(b, link.id)->def;
+  if (src0->bit_size != 32)
+ src0 = nir_i2i32(>nb, src0);
+  return nir_imul(>nb, src0, nir_imm_int(>nb, stride));
}
 }
 
-- 
2.14.1

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