<div dir="ltr"><div>Good idea. I agree to add this option by default currently. Could you make such a patch?</div><div>Thanks.</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jul 22, 2013 at 12:08 PM, Yang, Rong R <span dir="ltr"><<a href="mailto:rong.r.yang@intel.com" target="_blank">rong.r.yang@intel.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Can we simply add clang build option -fno-builtin to disable these intrinsic?<br>
<div class="HOEnZb"><div class="h5"><br>
-----Original Message-----<br>
From: beignet-bounces+rong.r.yang=<a href="mailto:intel.com@lists.freedesktop.org">intel.com@lists.freedesktop.org</a> [mailto:<a href="mailto:beignet-bounces%2Brong.r.yang">beignet-bounces+rong.r.yang</a>=<a href="mailto:intel.com@lists.freedesktop.org">intel.com@lists.freedesktop.org</a>] On Behalf Of Zhigang Gong<br>

Sent: Monday, July 22, 2013 11:26 AM<br>
To: Edward Ching<br>
Cc: <a href="mailto:beignet@lists.freedesktop.org">beignet@lists.freedesktop.org</a><br>
Subject: Re: [Beignet] compiler asserts on unsupported instrinsics compiling kernel with a single function<br>
<br>
Hi Edward,<br>
<br>
Thanks for reporting this bug, I did a quick look at the LLVM IR layer of this kernel. And I think the root cause is that the shr_mem[pid+offset] = 0 in a for loop make the compiler generate a llvm.memset intrinsic which is not implemented.<br>

<br>
We need to implement these intrinsics. Anybody from this list want to take this work item?<br>
<br>
Edward, before we get this intrinsic implemented, if you need a workaround, here is a simple one, define a constant zero<br>
<br>
constant int zero = 0;<br>
...<br>
shr_mem[pid+offset] = zero;<br>
<br>
On Sat, Jul 20, 2013 at 10:49:08PM -0700, Edward Ching wrote:<br>
> When compiling a simple single function kernel (patch attached, also<br>
> cut and pasted below), the compiler asserted on unsupported intrinsics:<br>
><br>
> ASSERTION FAILED: Unsupported intrinsics<br>
>   at file<br>
> /root/WORK/test_split/beignet/backend/src/llvm/llvm_gen_backend.cpp,<br>
> function void gbe::GenWriter::regAllocateCallInst(llvm::CallInst&),<br>
> line<br>
> 1688<br>
> Stack dump:<br>
> 0. Running pass 'Function Pass Manager' on module '/tmp/file0yciwa.ll'.<br>
> 1. Running pass 'Gen Back-End' on function '@test_split'<br>
><br>
> It looks like this is triggered by the "shr_mem[pid+offset]=0;" line<br>
> when 0 is assigned. Is this a bug? It looks like the kernel code is<br>
> not doing anything illegal. It compiled ok using Intel OpenCL SDK 2013<br>
> (on Linux, for<br>
> CPU)<br>
><br>
> Thanks,<br>
> /Ed<br>
><br>
> <a href="http://test_split.cl" target="_blank">test_split.cl</a>:<br>
><br>
> __kernel void<br>
> test_split(<br>
> __global int *in,<br>
> int stride,<br>
> int n_recs,<br>
> int n_parts,<br>
> __global int *out,<br>
> __local  int *shr_mem)<br>
> {<br>
> int pid;<br>
> int glb_tid = get_global_id(0);<br>
> int loc_tid = get_local_id(0);<br>
> int offset  = loc_tid*n_parts;<br>
><br>
> for(pid=0; pid<n_parts; pid++)<br>
> {<br>
> shr_mem[pid+offset]=0;<br>
> }<br>
><br>
> for(int pos=glb_tid; pos<n_recs; pos+=stride) { pid=in[pos];<br>
> shr_mem[pid+offset]++; }<br>
><br>
> for(pid=0; pid<n_parts; pid++)<br>
> {<br>
> out[glb_tid + stride*pid] = shr_mem[pid+offset]; } }<br>
><br>
> compiler_test_split.cpp:<br>
><br>
> void compiler_test_split(void)<br>
> {<br>
>   OCL_CREATE_KERNEL("test_split");<br>
> }<br>
<br>
<br>
> _______________________________________________<br>
> Beignet mailing list<br>
> <a href="mailto:Beignet@lists.freedesktop.org">Beignet@lists.freedesktop.org</a><br>
> <a href="http://lists.freedesktop.org/mailman/listinfo/beignet" target="_blank">http://lists.freedesktop.org/mailman/listinfo/beignet</a><br>
<br>
_______________________________________________<br>
Beignet mailing list<br>
<a href="mailto:Beignet@lists.freedesktop.org">Beignet@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/beignet" target="_blank">http://lists.freedesktop.org/mailman/listinfo/beignet</a><br>
_______________________________________________<br>
Beignet mailing list<br>
<a href="mailto:Beignet@lists.freedesktop.org">Beignet@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/beignet" target="_blank">http://lists.freedesktop.org/mailman/listinfo/beignet</a><br>
</div></div></blockquote></div><br></div>