<html>#2530: Thorn Vectors fails to compile using gcc 8.X on POWER9
<table style='border-spacing: 1ex 0pt; '>
<tr><td style='text-align:right'> Reporter:</td><td>Roland Haas</td></tr>
<tr><td style='text-align:right'>   Status:</td><td>new</td></tr>
<tr><td style='text-align:right'>Milestone:</td><td></td></tr>
<tr><td style='text-align:right'>  Version:</td><td>development version</td></tr>
<tr><td style='text-align:right'>     Type:</td><td>bug</td></tr>
<tr><td style='text-align:right'> Priority:</td><td>minor</td></tr>
<tr><td style='text-align:right'>Component:</td><td>EinsteinToolkit thorn</td></tr>
</table>

<p>Vectors provides SIMD instructions for doubles on POWER9 using the <code>vec_st</code> intrinsic for aligned stores. However that intrinsic seems to differ in gcc 8 and gcc 9.</p>
<p>This demo code:</p>
<div class="codehilite"><pre><span></span><span class="cp">#if 0</span><span class="c"></span>
<span class="c">g++ -mcpu=power9 -mvsx $0</span>
<span class="c">exit</span>
<span class="cp">#endif</span>

<span class="cp">#include</span> <span class="cpf">&lt;altivec.h&gt;</span><span class="cp"></span>

<span class="cp">#define CCTK_REAL8 double</span>
<span class="k">typedef</span> <span class="n">vector</span> <span class="kt">double</span> <span class="n">CCTK_REAL8_VEC</span><span class="p">;</span>

<span class="k">static</span> <span class="kr">inline</span> <span class="kt">void</span> <span class="nf">vec8_store</span><span class="p">(</span><span class="n">CCTK_REAL8</span> <span class="o">&amp;</span><span class="n">p</span><span class="p">,</span>
                              <span class="n">CCTK_REAL8_VEC</span> <span class="n">x</span><span class="p">)</span> <span class="p">{</span>
  <span class="n">vec_st</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="mi">0</span> <span class="p">,</span> <span class="o">&amp;</span><span class="n">p</span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
<span class="p">{</span>
  <span class="n">CCTK_REAL8</span> <span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
  <span class="n">CCTK_REAL8_VEC</span> <span class="n">x</span><span class="p">;</span>
  <span class="n">vec8_store</span><span class="p">(</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">x</span><span class="p">);</span>
  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>

<p>--<br/>
Ticket URL: <a href='https://bitbucket.org/einsteintoolkit/tickets/issues/2530/thorn-vectors-fails-to-compile-using-gcc'>https://bitbucket.org/einsteintoolkit/tickets/issues/2530/thorn-vectors-fails-to-compile-using-gcc</a></p>
</html>