10ccb31c389a09216a5b60cf05bd01516ddbe8d4fGalina Kistanova// REQUIRES: x86-64-registered-target 2da500caf3ccd04214465e3c457c83e3a4adf8175Bill Wendling// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +ssse3 -S -o - | FileCheck %s 39ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 480d56a9956af762373ea75326feb7720b81577b8Bill Wendling// FIXME: Disable inclusion of mm_malloc.h, our current implementation is broken 580d56a9956af762373ea75326feb7720b81577b8Bill Wendling// on win32 since we don't generally know how to find errno.h. 680d56a9956af762373ea75326feb7720b81577b8Bill Wendling#define __MM_MALLOC_H 780d56a9956af762373ea75326feb7720b81577b8Bill Wendling 89ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling#include <tmmintrin.h> 99ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 109ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test1(__m64 a, __m64 b) { 119ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: phaddw 129ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_hadd_pi16(a, b); 139ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 149ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 159ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test2(__m64 a, __m64 b) { 169ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: phaddd 179ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_hadd_pi32(a, b); 189ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 199ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 209ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test3(__m64 a, __m64 b) { 219ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: phaddsw 229ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_hadds_pi16(a, b); 239ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 249ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 259ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test4(__m64 a, __m64 b) { 269ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: phsubw 279ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_hsub_pi16(a, b); 289ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 299ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 309ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test5(__m64 a, __m64 b) { 319ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: phsubd 329ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_hsub_pi32(a, b); 339ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 349ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 359ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test6(__m64 a, __m64 b) { 369ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: phsubsw 379ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_hsubs_pi16(a, b); 389ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 399ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 409ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test7(__m64 a, __m64 b) { 419ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pmaddubsw 429ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_maddubs_pi16(a, b); 439ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 449ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 459ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test8(__m64 a, __m64 b) { 469ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pmulhrsw 479ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_mulhrs_pi16(a, b); 489ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 499ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 509ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test9(__m64 a, __m64 b) { 519ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pshufb 529ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_shuffle_pi8(a, b); 539ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 549ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 559ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test10(__m64 a, __m64 b) { 569ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psignb 579ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_sign_pi8(a, b); 589ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 599ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 609ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test11(__m64 a, __m64 b) { 619ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psignw 629ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_sign_pi16(a, b); 639ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 649ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 659ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test12(__m64 a, __m64 b) { 669ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psignd 679ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_sign_pi32(a, b); 689ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 699ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 709ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test13(__m64 a) { 719ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pabsb 729ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_abs_pi8(a); 739ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 749ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 759ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test14(__m64 a) { 769ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pabsw 779ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_abs_pi16(a); 789ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 799ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 809ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test15(__m64 a) { 819ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pabsd 829ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_abs_pi32(a); 839ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 849ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 859ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test16(__m64 a, __m64 b) { 869ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: palignr 879ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_alignr_pi8(a, b, 2); 889ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 899ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 909ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test17(__m128d a) { 919ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: cvtpd2pi 929ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_cvtpd_pi32(a); 939ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 949ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 959ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test18(__m128d a) { 969ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: cvttpd2pi 979ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_cvttpd_pi32(a); 989ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 999ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1009ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m128d test19(__m64 a) { 1019ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: cvtpi2pd 1029ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_cvtpi32_pd(a); 1039ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1049ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1059ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test20(__m64 a, __m64 b) { 1069ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pmuludq 1079ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_mul_su32(a, b); 1089ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1099ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1109ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test21(__m64 a) { 1119ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pshufw 1129ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_shuffle_pi16(a, 3); 1139ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1149ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1159ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test22(__m64 a, __m64 b) { 1169ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pmulhuw 1179ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_mulhi_pu16(a, b); 1189ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1199ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1209ab0a15bb85e607dc9ff6013753366818413e34fBill Wendlingvoid test23(__m64 d, __m64 n, char *p) { 1219ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: maskmovq 1229ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling _mm_maskmove_si64(d, n, p); 1239ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1249ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1259ab0a15bb85e607dc9ff6013753366818413e34fBill Wendlingint test24(__m64 a) { 1269ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pmovmskb 1279ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_movemask_pi8(a); 1289ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1299ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1309ab0a15bb85e607dc9ff6013753366818413e34fBill Wendlingvoid test25(__m64 *p, __m64 a) { 1319ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: movntq 1329ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling _mm_stream_pi(p, a); 1339ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1349ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1359ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test26(__m64 a, __m64 b) { 1369ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pavgb 1379ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_avg_pu8(a, b); 1389ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1399ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1409ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test27(__m64 a, __m64 b) { 1419ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pavgw 1429ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_avg_pu16(a, b); 1439ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1449ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1459ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test28(__m64 a, __m64 b) { 1469ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pmaxub 1479ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_max_pu8(a, b); 1489ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1499ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1509ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test29(__m64 a, __m64 b) { 1519ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pmaxsw 1529ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_max_pi16(a, b); 1539ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1549ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1559ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test30(__m64 a, __m64 b) { 1569ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pminub 1579ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_min_pu8(a, b); 1589ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1599ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1609ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test31(__m64 a, __m64 b) { 1619ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pminsw 1629ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_min_pi16(a, b); 1639ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1649ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1659ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test32(__m64 a, __m64 b) { 1669ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psadbw 1679ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_sad_pu8(a, b); 1689ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1699ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1709ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test33(__m64 a, __m64 b) { 1719ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: paddb 1729ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_add_pi8(a, b); 1739ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1749ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1759ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test34(__m64 a, __m64 b) { 1769ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: paddw 1779ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_add_pi16(a, b); 1789ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1799ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1809ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test35(__m64 a, __m64 b) { 1819ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: paddd 1829ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_add_pi32(a, b); 1839ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1849ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1859ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test36(__m64 a, __m64 b) { 1869ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: paddq 1879ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return __builtin_ia32_paddq(a, b); 1889ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1899ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1909ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test37(__m64 a, __m64 b) { 1919ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: paddsb 1929ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_adds_pi8(a, b); 1939ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1949ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 1959ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test38(__m64 a, __m64 b) { 1969ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: paddsw 1979ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_adds_pi16(a, b); 1989ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 1999ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2009ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test39(__m64 a, __m64 b) { 2019ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: paddusb 2029ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_adds_pu8(a, b); 2039ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2049ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2059ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test40(__m64 a, __m64 b) { 2069ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: paddusw 2079ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_adds_pu16(a, b); 2089ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2099ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2109ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test41(__m64 a, __m64 b) { 2119ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psubb 2129ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_sub_pi8(a, b); 2139ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2149ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2159ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test42(__m64 a, __m64 b) { 2169ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psubw 2179ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_sub_pi16(a, b); 2189ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2199ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2209ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test43(__m64 a, __m64 b) { 2219ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psubd 2229ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_sub_pi32(a, b); 2239ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2249ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2259ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test44(__m64 a, __m64 b) { 2269ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psubq 2279ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return __builtin_ia32_psubq(a, b); 2289ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2299ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2309ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test45(__m64 a, __m64 b) { 2319ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psubsb 2329ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_subs_pi8(a, b); 2339ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2349ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2359ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test46(__m64 a, __m64 b) { 2369ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psubsw 2379ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_subs_pi16(a, b); 2389ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2399ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2409ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test47(__m64 a, __m64 b) { 2419ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psubusb 2429ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_subs_pu8(a, b); 2439ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2449ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2459ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test48(__m64 a, __m64 b) { 2469ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psubusw 2479ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_subs_pu16(a, b); 2489ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2499ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2509ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test49(__m64 a, __m64 b) { 2519ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pmaddwd 2529ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_madd_pi16(a, b); 2539ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2549ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2559ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test50(__m64 a, __m64 b) { 2569ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pmulhw 2579ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_mulhi_pi16(a, b); 2589ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2599ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2609ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test51(__m64 a, __m64 b) { 2619ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pmullw 2629ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_mullo_pi16(a, b); 2639ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2649ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2659ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test52(__m64 a, __m64 b) { 2669ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pmullw 2679ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_mullo_pi16(a, b); 2689ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2699ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2709ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test53(__m64 a, __m64 b) { 2719ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pand 2729ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_and_si64(a, b); 2739ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2749ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2759ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test54(__m64 a, __m64 b) { 2769ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pandn 2779ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_andnot_si64(a, b); 2789ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2799ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2809ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test55(__m64 a, __m64 b) { 2819ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: por 2829ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_or_si64(a, b); 2839ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2849ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2859ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test56(__m64 a, __m64 b) { 2869ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pxor 2879ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_xor_si64(a, b); 2889ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2899ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2909ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test57(__m64 a, __m64 b) { 2919ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pavgb 2929ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_avg_pu8(a, b); 2939ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2949ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 2959ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test58(__m64 a, __m64 b) { 2969ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pavgw 2979ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_avg_pu16(a, b); 2989ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 2999ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3009ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test59(__m64 a, __m64 b) { 3019ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psllw 3029ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_sll_pi16(a, b); 3039ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3049ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3059ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test60(__m64 a, __m64 b) { 3069ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pslld 3079ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_sll_pi32(a, b); 3089ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3099ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3109ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test61(__m64 a, __m64 b) { 3119ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psllq 3129ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_sll_si64(a, b); 3139ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3149ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3159ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test62(__m64 a, __m64 b) { 3169ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psrlw 3179ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_srl_pi16(a, b); 3189ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3199ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3209ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test63(__m64 a, __m64 b) { 3219ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psrld 3229ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_srl_pi32(a, b); 3239ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3249ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3259ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test64(__m64 a, __m64 b) { 3269ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psrlq 3279ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_srl_si64(a, b); 3289ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3299ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3309ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test65(__m64 a, __m64 b) { 3319ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psraw 3329ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_sra_pi16(a, b); 3339ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3349ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3359ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test66(__m64 a, __m64 b) { 3369ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psrad 3379ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_sra_pi32(a, b); 3389ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3399ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3409ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test67(__m64 a) { 3419ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psllw 3429ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_slli_pi16(a, 3); 3439ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3449ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3459ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test68(__m64 a) { 3469ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pslld 3479ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_slli_pi32(a, 3); 3489ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3499ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3509ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test69(__m64 a) { 3519ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psllq 3529ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_slli_si64(a, 3); 3539ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3549ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3559ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test70(__m64 a) { 3569ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psrlw 3579ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_srli_pi16(a, 3); 3589ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3599ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3609ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test71(__m64 a) { 3619ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psrld 3629ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_srli_pi32(a, 3); 3639ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3649ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3659ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test72(__m64 a) { 3669ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psrlq 3679ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_srli_si64(a, 3); 3689ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3699ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3709ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test73(__m64 a) { 3719ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psraw 3729ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_srai_pi16(a, 3); 3739ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3749ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3759ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test74(__m64 a) { 3769ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: psrad 3779ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_srai_pi32(a, 3); 3789ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3799ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3809ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test75(__m64 a, __m64 b) { 3819ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: packsswb 3829ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_packs_pi16(a, b); 3839ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3849ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3859ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test76(__m64 a, __m64 b) { 3869ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: packssdw 3879ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_packs_pi32(a, b); 3889ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3899ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3909ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test77(__m64 a, __m64 b) { 3919ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: packuswb 3929ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_packs_pu16(a, b); 3939ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3949ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 3959ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test78(__m64 a, __m64 b) { 3969ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: punpckhbw 3979ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_unpackhi_pi8(a, b); 3989ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 3999ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 4009ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test79(__m64 a, __m64 b) { 4019ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: punpckhwd 4029ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_unpackhi_pi16(a, b); 4039ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 4049ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 4059ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test80(__m64 a, __m64 b) { 4069ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: punpckhdq 4079ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_unpackhi_pi32(a, b); 4089ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 4099ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 4109ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test81(__m64 a, __m64 b) { 4119ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: punpcklbw 4129ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_unpacklo_pi8(a, b); 4139ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 4149ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 4159ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test82(__m64 a, __m64 b) { 4169ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: punpcklwd 4179ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_unpacklo_pi16(a, b); 4189ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 4199ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 4209ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test83(__m64 a, __m64 b) { 4219ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: punpckldq 4229ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_unpacklo_pi32(a, b); 4239ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 4249ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 4259ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test84(__m64 a, __m64 b) { 4269ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pcmpeqb 4279ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_cmpeq_pi8(a, b); 4289ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 4299ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 4309ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test85(__m64 a, __m64 b) { 4319ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pcmpeqw 4329ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_cmpeq_pi16(a, b); 4339ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 4349ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 4359ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test86(__m64 a, __m64 b) { 4369ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pcmpeqd 4379ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_cmpeq_pi32(a, b); 4389ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 4399ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 4409ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test87(__m64 a, __m64 b) { 4419ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pcmpgtb 4429ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_cmpgt_pi8(a, b); 4439ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 4449ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 4459ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test88(__m64 a, __m64 b) { 4469ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pcmpgtw 4479ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_cmpgt_pi16(a, b); 4489ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 4499ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling 4509ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling__m64 test89(__m64 a, __m64 b) { 4519ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling // CHECK: pcmpgtd 4529ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling return _mm_cmpgt_pi32(a, b); 4539ab0a15bb85e607dc9ff6013753366818413e34fBill Wendling} 454