Use vload to read unaligned data instead of dereference operator.
authorChuanbo Weng <chuanbo.weng@intel.com>
Wed, 17 Sep 2014 11:28:07 +0000 (19:28 +0800)
committerChuanbo Weng <chuanbo.weng@intel.com>
Wed, 17 Sep 2014 11:28:07 +0000 (19:28 +0800)
commitc5552788c59a48ba57e81a4c2f81588dd8b5fcc0
tree48b9b7cf46105ef7fecd25afa35f8780d7f12e96
parentc445ce6125e93bbc03f5aa6f0674db8610837b9c
Use vload to read unaligned data instead of dereference operator.

According to opencl 1.2 spec 6.1.5:
    For arguments to a __kernel function declared to be a pointer to a
    data type, the OpenCL compiler can assume that the pointee is always
    appropriately aligned as required by the data type. The behavior of
    an unaligned load or store is undefined, except for the
    vloadn, vload_halfn, vstoren, and vstore_halfn functions defined in
    section 6.12.7.

Original code read data of type T from address not aligned by multiple
of sizeof(T), so the result is incorrect. With this patch, the cases
./opencv_perf_imgproc
--gtest_filter=OCL_ImgSize_TmplSize_Method_MatType_MatchTemplate.MatchTemplate/*
could work well with beignet 0.9.3.

Signed-off-by: Chuanbo Weng <chuanbo.weng@intel.com>
modules/imgproc/src/opencl/match_template.cl