Craig Topper | dd84ec5 | 2014-12-27 07:00:08 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -triple=x86_64-apple-darwin -fsyntax-only -verify %s |
| 2 | |
Craig Topper | 8dd7d0d | 2015-02-13 06:04:48 +0000 | [diff] [blame] | 3 | typedef long long __m128i __attribute__((__vector_size__(16))); |
Craig Topper | dd84ec5 | 2014-12-27 07:00:08 +0000 | [diff] [blame] | 4 | typedef float __m128 __attribute__((__vector_size__(16))); |
| 5 | typedef double __m128d __attribute__((__vector_size__(16))); |
| 6 | |
Craig Topper | df5beb2 | 2017-03-13 17:16:50 +0000 | [diff] [blame] | 7 | typedef long long __m512i __attribute__((__vector_size__(64))); |
Craig Topper | a3306ca | 2015-01-19 01:18:22 +0000 | [diff] [blame] | 8 | typedef float __m512 __attribute__((__vector_size__(64))); |
| 9 | typedef double __m512d __attribute__((__vector_size__(64))); |
| 10 | |
| 11 | typedef unsigned char __mmask8; |
| 12 | typedef unsigned short __mmask16; |
| 13 | |
Craig Topper | dd84ec5 | 2014-12-27 07:00:08 +0000 | [diff] [blame] | 14 | __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 Topper | a3306ca | 2015-01-19 01:18:22 +0000 | [diff] [blame] | 29 | |
| 30 | __mmask16 test__builtin_ia32_cmpps512_mask(__m512d __a, __m512d __b) { |
Craig Topper | 5fbabd7 | 2016-09-22 06:13:33 +0000 | [diff] [blame] | 31 | __builtin_ia32_cmpps512_mask(__a, __b, 32, -1, 4); // expected-error {{argument should be a value from 0 to 31}} |
Craig Topper | a3306ca | 2015-01-19 01:18:22 +0000 | [diff] [blame] | 32 | } |
| 33 | |
| 34 | __mmask8 test__builtin_ia32_cmppd512_mask(__m512d __a, __m512d __b) { |
Craig Topper | 5fbabd7 | 2016-09-22 06:13:33 +0000 | [diff] [blame] | 35 | __builtin_ia32_cmppd512_mask(__a, __b, 32, -1, 4); // expected-error {{argument should be a value from 0 to 31}} |
Craig Topper | a3306ca | 2015-01-19 01:18:22 +0000 | [diff] [blame] | 36 | } |
Craig Topper | 8dd7d0d | 2015-02-13 06:04:48 +0000 | [diff] [blame] | 37 | |
| 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 Topper | a7e253e | 2016-09-23 04:48:31 +0000 | [diff] [blame] | 69 | |
| 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 Topper | df5beb2 | 2017-03-13 17:16:50 +0000 | [diff] [blame] | 73 | |
| 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 Topper | f771f79b | 2017-03-31 17:22:30 +0000 | [diff] [blame^] | 83 | return __builtin_ia32_gatherpfdps(mask, index, addr, 1, 1); // expected-error {{argument should be a value from 2 to 3}} |
Craig Topper | df5beb2 | 2017-03-13 17:16:50 +0000 | [diff] [blame] | 84 | } |
| 85 | |