avx: implement simde_mm256_zext{ps,pd,si}128_* with other intrinics
Some ancient compilers (like clang-3.8) may not have the native
intrinsics defined.  In this case, however, the functions are actually
composed of other functions instead of mapping directly to an
instruction.  We can just use the underlying instructions and there
will be no penalty.
Fixes
@@ -4946,8 +4946,8 @@ simde_mm256_unpacklo_pd (simde__m256d a, simde__m256d b) {
SIMDE_FUNCTION_ATTRIBUTES
simde__m256
simde_mm256_zextps128_ps256 (simde__m128 a) {
-#if defined(SIMDE_X86_AVX_NATIVE) && !defined(SIMDE_BUG_GCC_REV_274313)
- return _mm256_zextps128_ps256(a);
+#if defined(SIMDE_X86_AVX_NATIVE)
+ return _mm256_insertf128_ps(_mm256_setzero_ps(), a, 0);
#else
simde__m256_private r_;
@@ -4964,8 +4964,8 @@ simde_mm256_zextps128_ps256 (simde__m128 a) {
SIMDE_FUNCTION_ATTRIBUTES
simde__m256d
simde_mm256_zextpd128_pd256 (simde__m128d a) {
-#if defined(SIMDE_X86_AVX_NATIVE) && !defined(SIMDE_BUG_GCC_REV_274313)
- return _mm256_zextpd128_pd256(a);
+#if defined(SIMDE_X86_AVX_NATIVE)
+ return _mm256_insertf128_pd(_mm256_setzero_pd(), a, 0);
#else
simde__m256d_private r_;
@@ -4982,8 +4982,8 @@ simde_mm256_zextpd128_pd256 (simde__m128d a) {
SIMDE_FUNCTION_ATTRIBUTES
simde__m256i
simde_mm256_zextsi128_si256 (simde__m128i a) {
-#if defined(SIMDE_X86_AVX_NATIVE) && !defined(SIMDE_BUG_GCC_REV_274313)
- return _mm256_zextsi128_si256(a);
+#if defined(SIMDE_X86_AVX_NATIVE)
+ return _mm256_insertf128_si256(_mm256_setzero_si256(), a, 0);
#else
simde__m256i_private r_;
