blob: 074efe16ade6b66eeaaebc8c1c33e4d4445aa9c1 [file] [log] [blame]
Craig Topperdd84ec52014-12-27 07:00:08 +00001// RUN: %clang_cc1 -triple=x86_64-apple-darwin -fsyntax-only -verify %s
2
Craig Topper8dd7d0d2015-02-13 06:04:48 +00003typedef long long __m128i __attribute__((__vector_size__(16)));
Craig Topperdd84ec52014-12-27 07:00:08 +00004typedef float __m128 __attribute__((__vector_size__(16)));
5typedef double __m128d __attribute__((__vector_size__(16)));
6
Craig Topperdf5beb22017-03-13 17:16:50 +00007typedef long long __m512i __attribute__((__vector_size__(64)));
Craig Toppera3306ca2015-01-19 01:18:22 +00008typedef float __m512 __attribute__((__vector_size__(64)));
9typedef double __m512d __attribute__((__vector_size__(64)));
10
11typedef unsigned char __mmask8;
12typedef unsigned short __mmask16;
13
Craig Topperdd84ec52014-12-27 07:00:08 +000014__m128 test__builtin_ia32_cmpps(__m128 __a, __m128 __b) {
15 __builtin_ia32_cmpps(__a, __b, 32); // expected-error {{argument should be a value from 0 to 31}}
16}
17
18__m128d test__builtin_ia32_cmppd(__m128d __a, __m128d __b) {
19 __builtin_ia32_cmppd(__a, __b, 32); // expected-error {{argument should be a value from 0 to 31}}
20}
21
22__m128 test__builtin_ia32_cmpss(__m128 __a, __m128 __b) {
23 __builtin_ia32_cmpss(__a, __b, 32); // expected-error {{argument should be a value from 0 to 31}}
24}
25
26__m128d test__builtin_ia32_cmpsd(__m128d __a, __m128d __b) {
27 __builtin_ia32_cmpsd(__a, __b, 32); // expected-error {{argument should be a value from 0 to 31}}
28}
Craig Toppera3306ca2015-01-19 01:18:22 +000029
30__mmask16 test__builtin_ia32_cmpps512_mask(__m512d __a, __m512d __b) {
Craig Topper5fbabd72016-09-22 06:13:33 +000031 __builtin_ia32_cmpps512_mask(__a, __b, 32, -1, 4); // expected-error {{argument should be a value from 0 to 31}}
Craig Toppera3306ca2015-01-19 01:18:22 +000032}
33
34__mmask8 test__builtin_ia32_cmppd512_mask(__m512d __a, __m512d __b) {
Craig Topper5fbabd72016-09-22 06:13:33 +000035 __builtin_ia32_cmppd512_mask(__a, __b, 32, -1, 4); // expected-error {{argument should be a value from 0 to 31}}
Craig Toppera3306ca2015-01-19 01:18:22 +000036}
Craig Topper8dd7d0d2015-02-13 06:04:48 +000037
38__m128i test__builtin_ia32_vpcomub(__m128i __a, __m128i __b) {
39 __builtin_ia32_vpcomub(__a, __b, 8); // expected-error {{argument should be a value from 0 to 7}}
40}
41
42__m128i test__builtin_ia32_vpcomuw(__m128i __a, __m128i __b) {
43 __builtin_ia32_vpcomuw(__a, __b, 8); // expected-error {{argument should be a value from 0 to 7}}
44}
45
46__m128i test__builtin_ia32_vpcomud(__m128i __a, __m128i __b) {
47 __builtin_ia32_vpcomud(__a, __b, 8); // expected-error {{argument should be a value from 0 to 7}}
48}
49
50__m128i test__builtin_ia32_vpcomuq(__m128i __a, __m128i __b) {
51 __builtin_ia32_vpcomuq(__a, __b, 8); // expected-error {{argument should be a value from 0 to 7}}
52}
53
54__m128i test__builtin_ia32_vpcomb(__m128i __a, __m128i __b) {
55 __builtin_ia32_vpcomub(__a, __b, 8); // expected-error {{argument should be a value from 0 to 7}}
56}
57
58__m128i test__builtin_ia32_vpcomw(__m128i __a, __m128i __b) {
59 __builtin_ia32_vpcomuw(__a, __b, 8); // expected-error {{argument should be a value from 0 to 7}}
60}
61
62__m128i test__builtin_ia32_vpcomd(__m128i __a, __m128i __b) {
63 __builtin_ia32_vpcomud(__a, __b, 8); // expected-error {{argument should be a value from 0 to 7}}
64}
65
66__m128i test__builtin_ia32_vpcomq(__m128i __a, __m128i __b) {
67 __builtin_ia32_vpcomuq(__a, __b, 8); // expected-error {{argument should be a value from 0 to 7}}
68}
Craig Toppera7e253e2016-09-23 04:48:31 +000069
70__mmask16 test__builtin_ia32_cmpps512_mask_rounding(__m512 __a, __m512 __b, __mmask16 __u) {
71 __builtin_ia32_cmpps512_mask(__a, __b, 0, __u, 0); // expected-error {{invalid rounding argument}}
72}
Craig Topperdf5beb22017-03-13 17:16:50 +000073
74__m128i test_mm_mask_i32gather_epi32(__m128i a, int const *b, __m128i c, __m128i mask) {
75 return __builtin_ia32_gatherd_d(a, b, c, mask, 5); // expected-error {{scale argument must be 1, 2, 4, or 8}}
76}
77
78__m512i _mm512_mask_prefetch_i32gather_ps(__m512i index, __mmask16 mask, int const *addr) {
79 return __builtin_ia32_gatherpfdps(mask, index, addr, 5, 1); // expected-error {{scale argument must be 1, 2, 4, or 8}}
80}
81
82__m512 _mm512_mask_prefetch_i32gather_ps_2(__m512i index, __mmask16 mask, int const *addr) {
Craig Topperf771f79b2017-03-31 17:22:30 +000083 return __builtin_ia32_gatherpfdps(mask, index, addr, 1, 1); // expected-error {{argument should be a value from 2 to 3}}
Craig Topperdf5beb22017-03-13 17:16:50 +000084}
85