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