diff options
author | Homer Hsing <homer.xing@intel.com> | 2013-06-21 12:26:31 +0800 |
---|---|---|
committer | Zhigang Gong <zhigang.gong@linux.intel.com> | 2013-06-21 14:27:57 +0800 |
commit | 675086fabb6f32e38c5912931c8566ed8819eb79 (patch) | |
tree | 214c52f73ef9efe064c80765a2d889b56ba42b9a /utests/compiler_double.cpp | |
parent | 104839f4c631dad188791c6584c9a114bc551a7b (diff) | |
download | beignet-675086fabb6f32e38c5912931c8566ed8819eb79.tar.gz |
Support 64-bit float
support:
arithmetic(+ - *)
store load
immediate_value
if else
select
other change:
add "nib control" field in machine instruction format
support "nib control"
fix "directly store float-64 after load float-64".
change hard coded store size (4) to flexible size (4 or 8)
when using float-64 load(store), change to SIMD8
example:
/* support arithmetic store load immediate_value */
kernel void f(global double *src, global double *dst) {
int i = get_global_id(0);
double d = 1.234567890123456789;
dst[i] = d * (src[i] + d);
}
/* support if else */
kernel void f(global float *src, global double *dst) {
int i = get_global_id(0);
float d = 1.234567890123456789f;
if (i < 14)
dst[i] = d * (d + src[i]);
else
dst[i] = 14;
}
/* support select */
kernel void f(global float *src, global double *dst) {
int i = get_global_id(0);
float d = 1.234567890123456789f;
dst[i] = i < 14 ? d : 14;
}
Signed-off-by: Homer Hsing <homer.xing@intel.com>
Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Tested-by: Yang Rong <rong.r.yang@intel.com>
Diffstat (limited to 'utests/compiler_double.cpp')
0 files changed, 0 insertions, 0 deletions