title: alignof(T) with T=__m512 is not equal to alignof(__m512)
body: <p>I ran into a strange situation that <code>alignof(__m512)</code> is not equal to <code>std::alignment_of&lt;__m512&gt;::value</code> compiled by Apple's clang. After some testing I found that when <code>alignof(T)</code> is evaluated inside a template with <code>T=__m512</code>, the result is different with direct <code>alignof(__m512)</code>.
  I also ran several test compiled by g++ and non-Apple's clang on ubuntu(WSL) and got correct(I thought) behavior.
  Is this a bug of Apple's clang or an issue about implemented behavior?</p>
  <pre class="lang-cpp prettyprint-override"><code>#include &lt;immintrin.h&gt; //avx headers
  
  #include &lt;cstdio&gt;
  #include &lt;typeinfo&gt;
  #include &lt;type_traits&gt;
  
  void test_directly() {
    printf(&quot;directly: typeid %s alignof %zu\n&quot;, typeid(__m512).name(), alignof(__m512));
  }
  
  template&lt;typename T&gt;
  void test_as_template_argument() {
    static_assert(std::is_same&lt;T, __m512&gt;::value, &quot;assert&quot;);
    printf(&quot;template: typeid %s alignof %zu\n&quot;, typeid(T).name(), alignof(T));
  }
  
  int main() {
    test_directly();
    test_as_template_argument&lt;__m512&gt;();
    return 0;
  }
  </code></pre>
  <p>output(compiled with <code>clang++ -std=c++17 -march=native</code>):</p>
  <pre><code>directly: typeid Dv16_f alignof 64
  template: typeid Dv16_f alignof 32
  </code></pre>
  <p>clang's version:</p>
  <pre><code>Apple clang version 11.0.3 (clang-1103.0.32.62)
  Target: x86_64-apple-darwin19.4.0
  Thread model: posix
  InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
  </code></pre>
  <p>macOS's version: <code>macOS Catalina 10.15.4 (19E2269) Darwin 19.4.0</code></p>