<div dir="ltr">Hi list,<div><br></div><div>When I run the kernel copied below, I find that it compiles just fine, but upon running emits the following error:</div><div><br></div><div><div>ASSERTION FAILED: scalarMap.find(key) != scalarMap.end()</div>
<div>  at file /media/Programming/src/beignet/backend/src/llvm/llvm_gen_backend.cpp, function gbe::ir::Register gbe::RegisterTranslator::getScalar(llvm::Value*, uint32_t), line 373</div><div>Stack dump:</div><div>0.<span class="" style="white-space:pre"> </span>Running pass 'Function Pass Manager' on module '/tmp/fileLxplMp.ll'.</div>
<div>1.<span class="" style="white-space:pre">  </span>Running pass 'Gen Back-End' on function '@edge_detect'</div></div><div><br></div><div>This looks like a bug to me.</div><div>Thanks,</div><div>Matt</div>
<div><br></div><div>Here is the kernel that caused this error:</div><div><br></div><div><div>__constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE | CLK_FILTER_NEAREST;</div><div><br></div>
<div>float calculate_intensity(float4 rgba)</div><div>{</div><div>    //equation taken from <a href="http://en.wikipedia.org/wiki/YUV#Converting_between_Y.27UV_and_RGB">http://en.wikipedia.org/wiki/YUV#Converting_between_Y.27UV_and_RGB</a></div>
<div>    return (0.299f * rgba[0]) +</div><div>            (0.587f * rgba[1]) +</div><div>            (0.114f * rgba[2]);</div><div>}</div><div><br></div><div>__kernel void edge_detect(__read_only image2d_t image_in,</div>
<div>                        __write_only image2d_t image_out,</div><div>                        __read_only ulong image_width,</div><div>                        __read_only ulong image_height)</div><div>{</div><div>    const int2 pos = { get_global_id(0), get_global_id(1) };</div>
<div>    float4 output = (float4)(0.0f, 0.0f, 0.0f, 1.0f); //black</div><div>    if ((pos[0] != 0) && (pos[1] != 0) && (pos[0] != image_width) && (pos[1] != image_height))</div><div>    {</div><div>
        float A = calculate_intensity(read_imagef(image_in, sampler, (int2)(pos[0] - 1, pos[1] - 1)));</div><div>        float F = calculate_intensity(read_imagef(image_in, sampler, (int2)(pos[0], pos[1] + 1)));</div><div>
        float G = calculate_intensity(read_imagef(image_in, sampler, (int2)(pos[0] - 1, pos[1] + 1)));</div><div>        float H = calculate_intensity(read_imagef(image_in, sampler, (int2)(pos[0] - 1, pos[1])));</div><div>
        float addFG = F + G;</div><div>        float addAH = A + H;</div><div>        float subtraction = addFG - addAH;</div><div>        if (subtraction > 383.0f)</div><div>        {</div><div>            output = (float4)(1.0f, 1.0f, 1.0f, 1.0f);</div>
<div>        }</div><div>    }</div><div>    write_imagef(image_out, pos, output);</div><div>}</div></div><div><br></div></div>