[Beignet] [PATCH V3] Fix some piglit constant buffer tests fail.
Zhigang Gong
zhigang.gong at linux.intel.com
Wed Jun 19 00:55:06 PDT 2013
Pushed with ruiling and mine comments. Thanks.
On Wed, Jun 19, 2013 at 03:36:34PM +0800, Yang Rong wrote:
> If indirect move's source is scalrar reg, such as using cb[0] in kernel,
> should not unpack.
>
> Change test case compiler_function_constant0 to trigger this bug.
>
> Signed-off-by: Yang Rong <rong.r.yang at intel.com>
> ---
> backend/src/backend/gen_context.cpp | 7 ++++++-
> kernels/compiler_function_constant0.cl | 2 +-
> utests/compiler_function_constant0.cpp | 6 ++----
> 3 files changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/backend/src/backend/gen_context.cpp b/backend/src/backend/gen_context.cpp
> index af651e7..70c5bcf 100644
> --- a/backend/src/backend/gen_context.cpp
> +++ b/backend/src/backend/gen_context.cpp
> @@ -223,7 +223,12 @@ namespace gbe
> }
>
> void GenContext::emitIndirectMoveInstruction(const SelectionInstruction &insn) {
> - const GenRegister src = GenRegister::unpacked_uw(ra->genReg(insn.src(0)).nr, 0);
> + GenRegister src = ra->genReg(insn.src(0));
> + if(isScalarReg(src.reg()))
> + src = GenRegister::retype(src, GEN_TYPE_UW);
> + else
> + src = GenRegister::unpacked_uw(src.nr, src.subnr / typeSize(GEN_TYPE_UW));
> +
> const GenRegister dst = ra->genReg(insn.dst(0));
> const GenRegister a0 = GenRegister::addr8(0);
> uint32_t simdWidth = p->curr.execWidth;
> diff --git a/kernels/compiler_function_constant0.cl b/kernels/compiler_function_constant0.cl
> index f6efcef..363d84e 100644
> --- a/kernels/compiler_function_constant0.cl
> +++ b/kernels/compiler_function_constant0.cl
> @@ -2,5 +2,5 @@ __kernel void
> compiler_function_constant0(__constant short *c0, __constant char *c1, __global int *dst, int value)
> {
> int id = (int)get_global_id(0);
> - dst[id] = value + c0[id%69] + c1[15];
> + dst[id] = value + c0[id%69] + c1[0];
> }
> diff --git a/utests/compiler_function_constant0.cpp b/utests/compiler_function_constant0.cpp
> index de564f3..c0a8a9d 100644
> --- a/utests/compiler_function_constant0.cpp
> +++ b/utests/compiler_function_constant0.cpp
> @@ -8,7 +8,7 @@ void compiler_function_constant0(void)
> // Setup kernel and buffers
> OCL_CREATE_KERNEL("compiler_function_constant0");
> OCL_CREATE_BUFFER(buf[0], 0, 75 * sizeof(short), NULL);
> - OCL_CREATE_BUFFER(buf[1], 0, 256 * sizeof(char), NULL);
> + OCL_CREATE_BUFFER(buf[1], 0, 1 * sizeof(char), NULL);
> OCL_CREATE_BUFFER(buf[2], 0, n * sizeof(uint32_t), NULL);
> OCL_SET_ARG(0, sizeof(cl_mem), &buf[0]);
> OCL_SET_ARG(1, sizeof(cl_mem), &buf[1]);
> @@ -21,9 +21,7 @@ void compiler_function_constant0(void)
> OCL_UNMAP_BUFFER(0);
>
> OCL_MAP_BUFFER(1);
> - for(uint32_t i = 0; i < 256; ++i)
> - ((char *)buf_data[1])[i] = 10;
> - ((char *)buf_data[1])[15] = 15;
> + ((char *)buf_data[1])[0] = 15;
> OCL_UNMAP_BUFFER(1);
>
> // Run the kernel
> --
> 1.7.10.4
>
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list