<grammar>

<machine name="generic">
<archs>generic</archs>
</machine>

<!--
<machine name="mmx">
<archs>generic 32|64 mmx</archs>
</machine>

<machine name="sse">
<archs>generic 32|64 mmx sse</archs>
</machine>
-->

<!--
Create an SSE2 and AVX only machine (without 64/32 inline assembly support).
This machine is intended to support the MSVC compiler on x86/amd64.
The MSVC compiler has intrinsic support for SSE, SSE2, AVX
however it does not support the gcc style inline assembly.
-->

<machine name="neon">
<archs>generic neon</archs>
</machine>

<machine name="sse2_only">
<archs>generic mmx sse sse2</archs>
</machine>

<machine name="sse2">
<archs>generic 32|64 mmx sse sse2</archs>
</machine>

<machine name="sse3">
<archs>generic 32|64 mmx sse sse2 sse3</archs>
</machine>

<machine name="ssse3">
<archs>generic 32|64 mmx sse sse2 sse3 ssse3</archs>
</machine>

<machine name="sse4_a">
<archs>generic 32|64 mmx sse sse2 sse3 sse4_a popcount</archs>
</machine>

<machine name="sse4_1">
<archs>generic 32|64 mmx sse sse2 sse3 ssse3 sse4_1</archs>
</machine>

<machine name="sse4_2">
<archs>generic 32|64 mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 popcount</archs>
</machine>

<machine name="avx">
<archs>generic 32|64 mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 popcount avx</archs>
</machine>

<machine name="avx_only">
<archs>generic mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 popcount avx</archs>
</machine>

<machine name="altivec">
<archs>generic altivec</archs>
</machine>

</grammar>