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