@@ -1171,15 +1171,6 @@ __emu_mm256_test_impl( __emu_mm, nzc, ps, ps, __emu__m256 );
11711171
11721172#endif
11731173
1174- #if defined(__clang__ )
1175- #define XM "xm"
1176- #elif defined( __GNUC__ )
1177- #define XM "x"
1178- #else
1179- #define XM "x"
1180- #endif
1181-
1182-
11831174#if defined(_WIN32 ) || ( !defined(__clang__ ) && defined( __GNUC__ ) && ( __GNUC__ == 4 ) && (__GNUC_MINOR__ < 4 ) ) || defined(OPTMO0 )
11841175/* use macro implementation instead of inline functions to allow -O0 for GCC pre 4.4 */
11851176
@@ -1189,46 +1180,46 @@ __emu_mm256_test_impl( __emu_mm, nzc, ps, ps, __emu__m256 );
11891180({ \
11901181 __m128 res_ = (m1), m2_ = (m2); \
11911182 if ( 7 < (unsigned)predicate ) __asm__ __volatile__ ( "ud2" : : : "memory" ); \
1192- __asm__ ( "cmpps %[pred_], %[m2_], %[res_]" : [res_] "+x" (res_) : [m2_] XM (m2_), [pred_] "i" (predicate) ); \
1183+ __asm__ ( "cmpps %[pred_], %[m2_], %[res_]" : [res_] "+x" (res_) : [m2_] "x" (m2_), [pred_] "i" (predicate) ); \
11931184 res_; })
11941185
11951186#define __emu_mm256_cmp_ps (m1 , m2 , predicate ) \
11961187({ \
11971188 __emu__m256 res_ = (m1), m2_ = (m2); \
11981189 if ( 7 < (unsigned)predicate ) __asm__ __volatile__ ( "ud2" : : : "memory" ); /* not supported yet */ \
1199- __asm__ ( "cmpps %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res_ .__emu_m128 [0 ]) : [m2_ ] XM (m2_ .__emu_m128 [0 ]), [pred_ ] "i " (predicate) ); \
1200- __asm__ ( " cmpps %[pred_ ], %[m2_ ], %[res_ ]" : [res_ ] "+ x " (res_.__emu_m128[1]) : [m2_] XM (m2_.__emu_m128[1]), [pred_] " i " (predicate) ); \
1190+ __asm__ ( "cmpps %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res_ .__emu_m128 [0 ]) : [m2_ ] "x" (m2_ .__emu_m128 [0 ]), [pred_ ] "i" (predicate ) ); \
1191+ __asm__ ( "cmpps %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res_ .__emu_m128 [1 ]) : [m2_ ] "x" (m2_ .__emu_m128 [1 ]), [pred_ ] "i" (predicate ) ); \
12011192 res_ ; })
12021193
12031194
12041195#define __emu_mm_cmp_pd (m1 , m2 , predicate ) \
12051196({ \
12061197 __m128d res_ = (m1), m2_ = (m2); \
12071198 if ( 7 < (unsigned)predicate ) __asm__ __volatile__ ( "ud2" : : : "memory" ); /* not supported yet */ \
1208- __asm__ ( "cmppd %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res_ ) : [m2_ ] XM (m2_ ), [pred_ ] "i" (predicate ) ); \
1199+ __asm__ ( "cmppd %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res_ ) : [m2_ ] "x" (m2_ ), [pred_ ] "i" (predicate ) ); \
12091200 res_ ; })
12101201
12111202#define __emu_mm256_cmp_pd (m1 , m2 , predicate ) \
12121203({ \
12131204 __emu__m256d res_ = (m1), m2_ = (m2); \
12141205 if ( 7 < (unsigned)predicate ) __asm__ __volatile__ ( "ud2" : : : "memory" ); /* not supported yet */ \
1215- __asm__ ( "cmppd %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res_ .__emu_m128 [0 ]) : [m2_ ] XM (m2_ .__emu_m128 [0 ]), [pred_ ] "i " (predicate) ); \
1216- __asm__ ( " cmppd %[pred_ ], %[m2_ ], %[res_ ]" : [res_ ] "+ x " (res_.__emu_m128[1]) : [m2_] XM (m2_.__emu_m128[1]), [pred_] " i " (predicate) ); \
1206+ __asm__ ( "cmppd %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res_ .__emu_m128 [0 ]) : [m2_ ] "x" (m2_ .__emu_m128 [0 ]), [pred_ ] "i" (predicate ) ); \
1207+ __asm__ ( "cmppd %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res_ .__emu_m128 [1 ]) : [m2_ ] "x" (m2_ .__emu_m128 [1 ]), [pred_ ] "i" (predicate ) ); \
12171208 res_ ; })
12181209
12191210
12201211#define __emu_mm_cmp_ss (m1 , m2 , predicate ) \
12211212({ \
12221213 __m128 res_ = (m1), m2_ = (m2); \
12231214 if ( 7 < (unsigned)predicate ) __asm__ __volatile__ ( "ud2" : : : "memory" ); /* not supported yet */ \
1224- __asm__ ( "cmpss %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res_ ) : [m2_ ] XM (m2_ ), [pred_ ] "i" (predicate ) ); \
1215+ __asm__ ( "cmpss %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res_ ) : [m2_ ] "x" (m2_ ), [pred_ ] "i" (predicate ) ); \
12251216 res_ ; })
12261217
12271218#define __emu_mm_cmp_sd (m1 , m2 , predicate ) \
12281219({ \
12291220 __m128 res_ = (m1), m2_ = (m2); \
12301221 if ( 7 < (unsigned)predicate ) __asm__ __volatile__ ( "ud2" : : : "memory" ); /* not supported yet */ \
1231- __asm__ ( "cmpsd %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res_ ) : [m2_ ] XM (m2_ ), [pred_ ] "i " (predicate) ); \
1222+ __asm__ ( "cmpsd %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res_ ) : [m2_ ] "x" (m2_ ), [pred_ ] "i" (predicate ) ); \
12321223 res_ ; })
12331224
12341225
@@ -1242,7 +1233,11 @@ static __emu_inline __m128 __emu_mm_cmp_ps(__m128 m1, __m128 m2, const int predi
12421233
12431234 if (__builtin_constant_p (predicate ) && predicate >= 0 && predicate <= 7 ) {
12441235 res = m1 ;
1245- __asm__ ( "cmpps %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res ) : [m2_ ] XM (m2 ), [pred_ ] "i" (predicate ) );
1236+ #if defined(__clang__ )
1237+ __asm__ ( "cmpps %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res ) : [m2_ ] "xm" (m2 ), [pred_ ] "i" (predicate ) );
1238+ #else
1239+ __asm__ ( "cmpps %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res ) : [m2_ ] "x" (m2 ), [pred_ ] "i" (predicate ) );
1240+ #endif
12461241 } else {
12471242 res = _mm_setzero_ps ();
12481243 __asm__ __volatile__ ( "ud2" : : : "memory" ); /* not supported yet */
@@ -1258,7 +1253,11 @@ static __emu_inline __m128d __emu_mm_cmp_pd(__m128d m1, __m128d m2, const int pr
12581253
12591254 if ( predicate >= 0 && predicate <= 7 ) {
12601255 res = m1 ;
1261- __asm__ ( "cmppd %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res ) : [m2_ ] XM (m2 ), [pred_ ] "i" (predicate ) );
1256+ #if defined(__clang__ )
1257+ __asm__ ( "cmppd %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res ) : [m2_ ] "xm" (m2 ), [pred_ ] "i" (predicate ) );
1258+ #else
1259+ __asm__ ( "cmppd %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res ) : [m2_ ] "x" (m2 ), [pred_ ] "i" (predicate ) );
1260+ #endif
12621261 } else {
12631262 __asm__ __volatile__ ( "ud2" : : : "memory" ); /* not supported yet */
12641263 }
@@ -1274,7 +1273,11 @@ static __emu_inline __m128d __emu_mm_cmp_sd(__m128d m1, __m128d m2, const int pr
12741273
12751274 if ( predicate >= 0 && predicate <= 7 ) {
12761275 res = m1 ;
1277- __asm__ ( "cmpsd %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res ) : [m2_ ] XM (m2 ), [pred_ ] "i" (predicate ) );
1276+ #if defined(__clang__ )
1277+ __asm__ ( "cmpsd %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res ) : [m2_ ] "xm" (m2 ), [pred_ ] "i" (predicate ) );
1278+ #else
1279+ __asm__ ( "cmpsd %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res ) : [m2_ ] "x" (m2 ), [pred_ ] "i" (predicate ) );
1280+ #endif
12781281 } else {
12791282 __asm__ __volatile__ ( "ud2" : : : "memory" ); /* not supported yet */
12801283 }
@@ -1288,7 +1291,11 @@ static __emu_inline __m128 __emu_mm_cmp_ss(__m128 m1, __m128 m2, const int predi
12881291
12891292 if ( predicate >= 0 && predicate <= 7 ) {
12901293 res = m1 ;
1291- __asm__ ( "cmpss %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res ) : [m2_ ] XM (m2 ), [pred_ ] "i" (predicate ) );
1294+ #if defined(__clang__ )
1295+ __asm__ ( "cmpss %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res ) : [m2_ ] "xm" (m2 ), [pred_ ] "i" (predicate ) );
1296+ #else
1297+ __asm__ ( "cmpss %[pred_], %[m2_], %[res_]" : [res_ ] "+x" (res ) : [m2_ ] "x" (m2 ), [pred_ ] "i" (predicate ) );
1298+ #endif
12921299 } else {
12931300 __asm__ __volatile__ ( "ud2" : : : "memory" ); /* not supported yet */
12941301 }
@@ -2422,6 +2429,4 @@ static __emu_inline __emu__m256i __emu_mm256_sllv_epi64(__emu__m256i a, __emu__m
24222429
24232430#endif /* __EMU_M256_NOMAP */
24242431
2425- #undef XM
2426-
24272432#endif /* __EMU_M256_AVXIMMINTRIN_EMU_H__ */
0 commit comments