1239c030aa4bde597f45c80c50f653620bdd72922Craig Topper// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +xop -emit-llvm -o - | FileCheck %s
2239c030aa4bde597f45c80c50f653620bdd72922Craig Topper
3239c030aa4bde597f45c80c50f653620bdd72922Craig Topper// Don't include mm_malloc.h, it's system specific.
4239c030aa4bde597f45c80c50f653620bdd72922Craig Topper#define __MM_MALLOC_H
5239c030aa4bde597f45c80c50f653620bdd72922Craig Topper
6239c030aa4bde597f45c80c50f653620bdd72922Craig Topper#include <x86intrin.h>
7239c030aa4bde597f45c80c50f653620bdd72922Craig Topper
8239c030aa4bde597f45c80c50f653620bdd72922Craig Topper__m128i test_mm_maccs_epi16(__m128i a, __m128i b, __m128i c) {
9239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  // CHECK: @llvm.x86.xop.vpmacssww
10239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  return _mm_maccs_epi16(a, b, c);
11239c030aa4bde597f45c80c50f653620bdd72922Craig Topper}
12239c030aa4bde597f45c80c50f653620bdd72922Craig Topper
13239c030aa4bde597f45c80c50f653620bdd72922Craig Topper__m128i test_mm_macc_epi16(__m128i a, __m128i b, __m128i c) {
14239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  // CHECK: @llvm.x86.xop.vpmacsww
15239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  return _mm_macc_epi16(a, b, c);
16239c030aa4bde597f45c80c50f653620bdd72922Craig Topper}
17239c030aa4bde597f45c80c50f653620bdd72922Craig Topper
18239c030aa4bde597f45c80c50f653620bdd72922Craig Topper__m128i test_mm_maccsd_epi16(__m128i a, __m128i b, __m128i c) {
19239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  // CHECK: @llvm.x86.xop.vpmacsswd
20239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  return _mm_maccsd_epi16(a, b, c);
21239c030aa4bde597f45c80c50f653620bdd72922Craig Topper}
22239c030aa4bde597f45c80c50f653620bdd72922Craig Topper
23239c030aa4bde597f45c80c50f653620bdd72922Craig Topper__m128i test_mm_maccd_epi16(__m128i a, __m128i b, __m128i c) {
24239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  // CHECK: @llvm.x86.xop.vpmacswd
25239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  return _mm_maccd_epi16(a, b, c);
26239c030aa4bde597f45c80c50f653620bdd72922Craig Topper}
27239c030aa4bde597f45c80c50f653620bdd72922Craig Topper
28239c030aa4bde597f45c80c50f653620bdd72922Craig Topper__m128i test_mm_maccs_epi32(__m128i a, __m128i b, __m128i c) {
29239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  // CHECK: @llvm.x86.xop.vpmacssdd
30239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  return _mm_maccs_epi32(a, b, c);
31239c030aa4bde597f45c80c50f653620bdd72922Craig Topper}
32239c030aa4bde597f45c80c50f653620bdd72922Craig Topper
33239c030aa4bde597f45c80c50f653620bdd72922Craig Topper__m128i test_mm_macc_epi32(__m128i a, __m128i b, __m128i c) {
34239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  // CHECK: @llvm.x86.xop.vpmacsdd
35239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  return _mm_macc_epi32(a, b, c);
36239c030aa4bde597f45c80c50f653620bdd72922Craig Topper}
37239c030aa4bde597f45c80c50f653620bdd72922Craig Topper
38239c030aa4bde597f45c80c50f653620bdd72922Craig Topper__m128i test_mm_maccslo_epi32(__m128i a, __m128i b, __m128i c) {
39239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  // CHECK: @llvm.x86.xop.vpmacssdql
40239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  return _mm_maccslo_epi32(a, b, c);
41239c030aa4bde597f45c80c50f653620bdd72922Craig Topper}
42239c030aa4bde597f45c80c50f653620bdd72922Craig Topper
43239c030aa4bde597f45c80c50f653620bdd72922Craig Topper__m128i test_mm_macclo_epi32(__m128i a, __m128i b, __m128i c) {
44239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  // CHECK: @llvm.x86.xop.vpmacsdql
45239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  return _mm_macclo_epi32(a, b, c);
46239c030aa4bde597f45c80c50f653620bdd72922Craig Topper}
47239c030aa4bde597f45c80c50f653620bdd72922Craig Topper
48239c030aa4bde597f45c80c50f653620bdd72922Craig Topper__m128i test_mm_maccshi_epi32(__m128i a, __m128i b, __m128i c) {
49239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  // CHECK: @llvm.x86.xop.vpmacssdqh
50239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  return _mm_maccshi_epi32(a, b, c);
51239c030aa4bde597f45c80c50f653620bdd72922Craig Topper}
52239c030aa4bde597f45c80c50f653620bdd72922Craig Topper
53239c030aa4bde597f45c80c50f653620bdd72922Craig Topper__m128i test_mm_macchi_epi32(__m128i a, __m128i b, __m128i c) {
54239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  // CHECK: @llvm.x86.xop.vpmacsdqh
55239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  return _mm_macchi_epi32(a, b, c);
56239c030aa4bde597f45c80c50f653620bdd72922Craig Topper}
57239c030aa4bde597f45c80c50f653620bdd72922Craig Topper
58239c030aa4bde597f45c80c50f653620bdd72922Craig Topper__m128i test_mm_maddsd_epi16(__m128i a, __m128i b, __m128i c) {
59239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  // CHECK: @llvm.x86.xop.vpmadcsswd
60239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  return _mm_maddsd_epi16(a, b, c);
61239c030aa4bde597f45c80c50f653620bdd72922Craig Topper}
62239c030aa4bde597f45c80c50f653620bdd72922Craig Topper
63239c030aa4bde597f45c80c50f653620bdd72922Craig Topper__m128i test_mm_maddd_epi16(__m128i a, __m128i b, __m128i c) {
64239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  // CHECK: @llvm.x86.xop.vpmadcswd
65239c030aa4bde597f45c80c50f653620bdd72922Craig Topper  return _mm_maddd_epi16(a, b, c);
66239c030aa4bde597f45c80c50f653620bdd72922Craig Topper}
6718b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper
6818b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper__m128i test_mm_haddw_epi8(__m128i a) {
6918b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  // CHECK: @llvm.x86.xop.vphaddbw
7018b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  return _mm_haddw_epi8(a);
7118b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper}
7218b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper
7318b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper__m128i test_mm_haddd_epi8(__m128i a) {
7418b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  // CHECK: @llvm.x86.xop.vphaddbd
7518b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  return _mm_haddd_epi8(a);
7618b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper}
7718b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper
7818b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper__m128i test_mm_haddq_epi8(__m128i a) {
7918b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  // CHECK: @llvm.x86.xop.vphaddbq
8018b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  return _mm_haddq_epi8(a);
8118b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper}
8218b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper
8318b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper__m128i test_mm_haddd_epi16(__m128i a) {
8418b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  // CHECK: @llvm.x86.xop.vphaddwd
8518b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  return _mm_haddd_epi16(a);
8618b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper}
8718b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper
8818b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper__m128i test_mm_haddq_epi16(__m128i a) {
8918b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  // CHECK: @llvm.x86.xop.vphaddwq
9018b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  return _mm_haddq_epi16(a);
9118b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper}
9218b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper
9318b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper__m128i test_mm_haddq_epi32(__m128i a) {
9418b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  // CHECK: @llvm.x86.xop.vphadddq
9518b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  return _mm_haddq_epi32(a);
9618b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper}
9718b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper
9818b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper__m128i test_mm_haddw_epu8(__m128i a) {
9918b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  // CHECK: @llvm.x86.xop.vphaddubw
10018b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  return _mm_haddw_epu8(a);
10118b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper}
10218b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper
10318b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper__m128i test_mm_haddd_epu8(__m128i a) {
10418b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  // CHECK: @llvm.x86.xop.vphaddubd
10518b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  return _mm_haddd_epu8(a);
10618b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper}
10718b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper
10818b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper__m128i test_mm_haddq_epu8(__m128i a) {
10918b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  // CHECK: @llvm.x86.xop.vphaddubq
11018b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  return _mm_haddq_epu8(a);
11118b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper}
11218b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper
11318b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper__m128i test_mm_haddd_epu16(__m128i a) {
11418b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  // CHECK: @llvm.x86.xop.vphadduwd
11518b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  return _mm_haddd_epu16(a);
11618b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper}
11718b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper
11818b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper__m128i test_mm_haddq_epu16(__m128i a) {
11918b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  // CHECK: @llvm.x86.xop.vphadduwq
12018b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  return _mm_haddq_epu16(a);
12118b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper}
12218b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper
12318b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper__m128i test_mm_haddq_epu32(__m128i a) {
12418b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  // CHECK: @llvm.x86.xop.vphaddudq
12518b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  return _mm_haddq_epu32(a);
12618b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper}
12718b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper
12818b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper__m128i test_mm_hsubw_epi8(__m128i a) {
12918b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  // CHECK: @llvm.x86.xop.vphsubbw
13018b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  return _mm_hsubw_epi8(a);
13118b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper}
13218b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper
13318b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper__m128i test_mm_hsubd_epi16(__m128i a) {
13418b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  // CHECK: @llvm.x86.xop.vphsubwd
13518b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  return _mm_hsubd_epi16(a);
13618b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper}
13718b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper
13818b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper__m128i test_mm_hsubq_epi32(__m128i a) {
13918b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  // CHECK: @llvm.x86.xop.vphsubdq
14018b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  return _mm_hsubq_epi32(a);
14118b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper}
14218b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper
14318b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper__m128i test_mm_cmov_si128(__m128i a, __m128i b, __m128i c) {
14418b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  // CHECK: @llvm.x86.xop.vpcmov
14518b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  return _mm_cmov_si128(a, b, c);
14618b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper}
14718b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper
14818b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper__m256i test_mm256_cmov_si256(__m256i a, __m256i b, __m256i c) {
14918b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  // CHECK: @llvm.x86.xop.vpcmov.256
15018b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  return _mm256_cmov_si256(a, b, c);
15118b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper}
15218b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper
15318b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper__m128i test_mm_perm_epi8(__m128i a, __m128i b, __m128i c) {
15418b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  // CHECK: @llvm.x86.xop.vpperm
15518b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper  return _mm_perm_epi8(a, b, c);
15618b73eacc21c8a7c03168aa30c401d072cc6ffc9Craig Topper}
1573335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper
1583335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper__m128i test_mm_rot_epi8(__m128i a, __m128i b) {
1593335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper  // CHECK: @llvm.x86.xop.vprotb
1603335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper  return _mm_rot_epi8(a, b);
1613335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper}
1623335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper
1633335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper__m128i test_mm_rot_epi16(__m128i a, __m128i b) {
1643335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper  // CHECK: @llvm.x86.xop.vprotw
1653335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper  return _mm_rot_epi16(a, b);
1663335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper}
1673335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper
1683335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper__m128i test_mm_rot_epi32(__m128i a, __m128i b) {
1693335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper  // CHECK: @llvm.x86.xop.vprotd
1703335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper  return _mm_rot_epi32(a, b);
1713335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper}
1723335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper
1733335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper__m128i test_mm_rot_epi64(__m128i a, __m128i b) {
1743335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper  // CHECK: @llvm.x86.xop.vprotq
1753335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper  return _mm_rot_epi64(a, b);
1763335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper}
1773335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper
1783335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper__m128i test_mm_roti_epi8(__m128i a) {
1793335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper  // CHECK: @llvm.x86.xop.vprotbi
1803335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper  return _mm_roti_epi8(a, 1);
1813335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper}
1823335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper
1833335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper__m128i test_mm_roti_epi16(__m128i a) {
1843335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper  // CHECK: @llvm.x86.xop.vprotwi
1853335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper  return _mm_roti_epi16(a, 50);
1863335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper}
1873335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper
1883335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper__m128i test_mm_roti_epi32(__m128i a) {
1893335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper  // CHECK: @llvm.x86.xop.vprotdi
1903335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper  return _mm_roti_epi32(a, -30);
1913335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper}
1923335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper
1933335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper__m128i test_mm_roti_epi64(__m128i a) {
1943335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper  // CHECK: @llvm.x86.xop.vprotqi
1953335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper  return _mm_roti_epi64(a, 100);
1963335eb7f7c5b82f109c585fb4009ff8240b11a84Craig Topper}
197ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper
198ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper__m128i test_mm_shl_epi8(__m128i a, __m128i b) {
199ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  // CHECK: @llvm.x86.xop.vpshlb
200ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  return _mm_shl_epi8(a, b);
201ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper}
202ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper
203ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper__m128i test_mm_shl_epi16(__m128i a, __m128i b) {
204ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  // CHECK: @llvm.x86.xop.vpshlw
205ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  return _mm_shl_epi16(a, b);
206ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper}
207ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper
208ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper__m128i test_mm_shl_epi32(__m128i a, __m128i b) {
209ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  // CHECK: @llvm.x86.xop.vpshld
210ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  return _mm_shl_epi32(a, b);
211ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper}
212ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper
213ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper__m128i test_mm_shl_epi64(__m128i a, __m128i b) {
214ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  // CHECK: @llvm.x86.xop.vpshlq
215ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  return _mm_shl_epi64(a, b);
216ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper}
217ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper
218ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper__m128i test_mm_sha_epi8(__m128i a, __m128i b) {
219ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  // CHECK: @llvm.x86.xop.vpshab
220ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  return _mm_sha_epi8(a, b);
221ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper}
222ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper
223ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper__m128i test_mm_sha_epi16(__m128i a, __m128i b) {
224ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  // CHECK: @llvm.x86.xop.vpshaw
225ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  return _mm_sha_epi16(a, b);
226ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper}
227ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper
228ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper__m128i test_mm_sha_epi32(__m128i a, __m128i b) {
229ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  // CHECK: @llvm.x86.xop.vpshad
230ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  return _mm_sha_epi32(a, b);
231ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper}
232ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper
233ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper__m128i test_mm_sha_epi64(__m128i a, __m128i b) {
234ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  // CHECK: @llvm.x86.xop.vpshaq
235ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  return _mm_sha_epi64(a, b);
236ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper}
237ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper
238ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper__m128i test_mm_com_epu8(__m128i a, __m128i b) {
239ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  // CHECK: @llvm.x86.xop.vpcomub
240ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  return _mm_com_epu8(a, b, 0);
241ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper}
242ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper
243ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper__m128i test_mm_com_epu16(__m128i a, __m128i b) {
244ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  // CHECK: @llvm.x86.xop.vpcomuw
245ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  return _mm_com_epu16(a, b, 0);
246ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper}
247ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper
248ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper__m128i test_mm_com_epu32(__m128i a, __m128i b) {
249ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  // CHECK: @llvm.x86.xop.vpcomud
250ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  return _mm_com_epu32(a, b, 0);
251ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper}
252ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper
253ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper__m128i test_mm_com_epu64(__m128i a, __m128i b) {
254ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  // CHECK: @llvm.x86.xop.vpcomuq
255ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  return _mm_com_epu64(a, b, 0);
256ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper}
257ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper
258ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper__m128i test_mm_com_epi8(__m128i a, __m128i b) {
259ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  // CHECK: @llvm.x86.xop.vpcomb
260ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  return _mm_com_epi8(a, b, 0);
261ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper}
262ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper
263ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper__m128i test_mm_com_epi16(__m128i a, __m128i b) {
264ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  // CHECK: @llvm.x86.xop.vpcomw
265ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  return _mm_com_epi16(a, b, 0);
266ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper}
267ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper
268ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper__m128i test_mm_com_epi32(__m128i a, __m128i b) {
269ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  // CHECK: @llvm.x86.xop.vpcomd
270ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  return _mm_com_epi32(a, b, 0);
271ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper}
272ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper
273ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper__m128i test_mm_com_epi64(__m128i a, __m128i b) {
274ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  // CHECK: @llvm.x86.xop.vpcomq
275ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper  return _mm_com_epi64(a, b, 0);
276ecbc00929cde5db985b38682b1f62fcc62b3a2feCraig Topper}
2775daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper
2785daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper__m128d test_mm_permute2_pd(__m128d a, __m128d b, __m128i c) {
2795daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper  // CHECK: @llvm.x86.xop.vpermil2pd
2805daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper  return _mm_permute2_pd(a, b, c, 0);
2815daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper}
2825daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper
2835daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper__m256d test_mm256_permute2_pd(__m256d a, __m256d b, __m256i c) {
2845daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper  // CHECK: @llvm.x86.xop.vpermil2pd.256
2855daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper  return _mm256_permute2_pd(a, b, c, 0);
2865daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper}
2875daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper
2885daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper__m128 test_mm_permute2_ps(__m128 a, __m128 b, __m128i c) {
2895daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper  // CHECK: @llvm.x86.xop.vpermil2ps
2905daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper  return _mm_permute2_ps(a, b, c, 0);
2915daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper}
2925daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper
2935daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper__m256 test_mm256_permute2_ps(__m256 a, __m256 b, __m256i c) {
2945daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper  // CHECK: @llvm.x86.xop.vpermil2ps.256
2955daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper  return _mm256_permute2_ps(a, b, c, 0);
2965daa4deddbfc27516e89bbd6d8035cecc52ce03fCraig Topper}
297cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper
298cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper__m128 test_mm_frcz_ss(__m128 a) {
299cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper  // CHECK: @llvm.x86.xop.vfrcz.ss
300cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper  return _mm_frcz_ss(a);
301cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper}
302cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper
303cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper__m128d test_mm_frcz_sd(__m128d a) {
304cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper  // CHECK: @llvm.x86.xop.vfrcz.sd
305cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper  return _mm_frcz_sd(a);
306cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper}
307cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper
308cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper__m128 test_mm_frcz_ps(__m128 a) {
309cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper  // CHECK: @llvm.x86.xop.vfrcz.ps
310cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper  return _mm_frcz_ps(a);
311cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper}
312cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper
313cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper__m128d test_mm_frcz_pd(__m128d a) {
314cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper  // CHECK: @llvm.x86.xop.vfrcz.pd
315cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper  return _mm_frcz_pd(a);
316cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper}
317cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper
318cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper__m256 test_mm256_frcz_ps(__m256 a) {
319cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper  // CHECK: @llvm.x86.xop.vfrcz.ps.256
320cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper  return _mm256_frcz_ps(a);
321cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper}
322cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper
323cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper__m256d test_mm256_frcz_pd(__m256d a) {
324cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper  // CHECK: @llvm.x86.xop.vfrcz.pd.256
325cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper  return _mm256_frcz_pd(a);
326cda8df0bb55203a07f824668220aba48ed4e5cdfCraig Topper}
327