GBE/libocl: Fix sub_sat corner case.
authorRuiling Song <ruiling.song@intel.com>
Mon, 15 Sep 2014 03:14:05 +0000 (11:14 +0800)
committerZhigang Gong <zhigang.gong@intel.com>
Mon, 15 Sep 2014 04:04:06 +0000 (12:04 +0800)
commitd1854ddacdf71bfe42a66e81713065d8d56035db
tree2a415354fb423050d0b7a8480ba43c0e9c548c1a
parent1c743b0e1262efa676950cbc27418a2210711801
GBE/libocl: Fix sub_sat corner case.

It seems that hw return wrong result when y is equal to 0x80000000
in sub_sat(int x, int y). So we re-write it as:
add_sat(add_sat(0x7fffffff, x), 1)

Also enable corresponding utest.

Signed-off-by: Ruiling Song <ruiling.song@intel.com>
Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
backend/src/libocl/tmpl/ocl_integer.tmpl.cl
utests/compiler_saturate_sub.cpp