<div dir="ltr"><div class="gmail_default cye-lm-tag" style="font-family:trebuchet ms,sans-serif;font-size:small;color:#000099"><div class="gmail_default" style="font-family:"trebuchet ms",sans-serif;font-size:small;color:rgb(0,0,153)">​Hi</div><div class="gmail_default" style="font-family:"trebuchet ms",sans-serif;font-size:small;color:rgb(0,0,153)"><br></div><div class="gmail_default" style="font-family:"trebuchet ms",sans-serif;font-size:small;color:rgb(0,0,153)">I am using Halide​, and trying to generate a simplified version of the inner kernel in a GEMM operation, similar to <a href="https://github.com/google/gemmlowp/blob/master/internal/kernel_neon.h#L59">this</a>. Basically it multiplies a 12x1 column vector with a 1x4 row vector and updates an accumulator cell of size 12x4. I am targeting 32-bit ARM NEON.</div><div class="gmail_default" style="font-family:"trebuchet ms",sans-serif;font-size:small;color:rgb(0,0,153)"><br></div><div class="gmail_default" style="font-family:"trebuchet ms",sans-serif;font-size:small;color:rgb(0,0,153)">Ideally, all the accumulators and operands should fit in the q registers, without spilling to the stack. However, the generated ARM assembly uses the registers in a sub-optimal way, and keeps spilling registers onto the stack and reloading them.</div><div class="gmail_default" style="font-family:"trebuchet ms",sans-serif;font-size:small;color:rgb(0,0,153)"><br></div><div class="gmail_default cye-lm-tag" style="font-family:"trebuchet ms",sans-serif;font-size:small;color:rgb(0,0,153)">The relevant part of the LLVM IR is <a href="https://gist.github.com/mohamedadaly/57d62a71f6acee21be0883b487cf2e7d" class="cye-lm-tag">here</a>, and the corresponding arm32 assembly is <a href="https://gist.github.com/mohamedadaly/b815a4e59e7fcdbae9bc5968f844dab5">here</a>.</div><div class="gmail_default cye-lm-tag" style="font-family:"trebuchet ms",sans-serif;font-size:small;color:rgb(0,0,153)"><br></div><div class="gmail_default cye-lm-tag" style="font-family:"trebuchet ms",sans-serif;font-size:small;color:rgb(0,0,153)"><div class="gmail_default" style="font-family:"trebuchet ms",sans-serif;font-size:small;color:rgb(0,0,153)">​Any help to how to solve this, or what might be causing it, will be greatly appreciated.</div><div class="gmail_default" style="font-family:"trebuchet ms",sans-serif;font-size:small;color:rgb(0,0,153)"><br></div><div class="gmail_default" style="font-family:"trebuchet ms",sans-serif;font-size:small;color:rgb(0,0,153)">Thanks a lot,</div><div class="gmail_default" style="font-family:"trebuchet ms",sans-serif;font-size:small;color:rgb(0,0,153)">Mohamed​</div><br></div><br></div></div>