1
1
// RUN: %clang_cc1 -ffreestanding %s -O0 -triple=x86_64-apple-darwin -target-cpu skylake-avx512 -emit-llvm -o - -Wall -Werror | FileCheck %s
2
2
3
3
#include <immintrin.h>
4
+ #include "builtin_test_helpers.h"
4
5
5
6
long long test_mm512_reduce_max_epi64 (__m512i __W ){
6
7
// CHECK-LABEL: @test_mm512_reduce_max_epi64(
7
8
// CHECK: call i64 @llvm.vector.reduce.smax.v8i64(<8 x i64> %{{.*}})
8
9
return _mm512_reduce_max_epi64 (__W );
9
10
}
11
+ TEST_CONSTEXPR (_mm512_reduce_max_epi64 ((__m512i )(__v8di ){-4 , -3 , -2 , -1 , 0 , 1 , 2 , 3 }) == 3 );
10
12
11
13
unsigned long long test_mm512_reduce_max_epu64 (__m512i __W ){
12
14
// CHECK-LABEL: @test_mm512_reduce_max_epu64(
13
15
// CHECK: call i64 @llvm.vector.reduce.umax.v8i64(<8 x i64> %{{.*}})
14
16
return _mm512_reduce_max_epu64 (__W );
15
17
}
18
+ TEST_CONSTEXPR (_mm512_reduce_max_epu64 ((__m512i )(__v8du ){0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 }) == 7 );
16
19
17
20
double test_mm512_reduce_max_pd (__m512d __W , double ExtraAddOp ){
18
21
// CHECK-LABEL: @test_mm512_reduce_max_pd(
@@ -27,12 +30,14 @@ long long test_mm512_reduce_min_epi64(__m512i __W){
27
30
// CHECK: call i64 @llvm.vector.reduce.smin.v8i64(<8 x i64> %{{.*}})
28
31
return _mm512_reduce_min_epi64 (__W );
29
32
}
33
+ TEST_CONSTEXPR (_mm512_reduce_min_epi64 ((__m512i )(__v8di ){-4 , -3 , -2 , -1 , 0 , 1 , 2 , 3 }) == -4 );
30
34
31
35
unsigned long long test_mm512_reduce_min_epu64 (__m512i __W ){
32
36
// CHECK-LABEL: @test_mm512_reduce_min_epu64(
33
37
// CHECK: call i64 @llvm.vector.reduce.umin.v8i64(<8 x i64> %{{.*}})
34
38
return _mm512_reduce_min_epu64 (__W );
35
39
}
40
+ TEST_CONSTEXPR (_mm512_reduce_min_epu64 ((__m512i )(__v8du ){0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 }) == 0 );
36
41
37
42
double test_mm512_reduce_min_pd (__m512d __W , double ExtraMulOp ){
38
43
// CHECK-LABEL: @test_mm512_reduce_min_pd(
@@ -89,12 +94,14 @@ int test_mm512_reduce_max_epi32(__m512i __W){
89
94
// CHECK: call i32 @llvm.vector.reduce.smax.v16i32(<16 x i32> %{{.*}})
90
95
return _mm512_reduce_max_epi32 (__W );
91
96
}
97
+ TEST_CONSTEXPR (_mm512_reduce_max_epi32 ((__m512i )(__v16si ){-8 , -7 , -6 , -5 , -4 , -3 , -2 , -1 , 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 }) == 7 );
92
98
93
99
unsigned int test_mm512_reduce_max_epu32 (__m512i __W ){
94
100
// CHECK-LABEL: @test_mm512_reduce_max_epu32(
95
101
// CHECK: call i32 @llvm.vector.reduce.umax.v16i32(<16 x i32> %{{.*}})
96
102
return _mm512_reduce_max_epu32 (__W );
97
103
}
104
+ TEST_CONSTEXPR (_mm512_reduce_max_epu32 ((__m512i )(__v16su ){0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 }) == 15 );
98
105
99
106
float test_mm512_reduce_max_ps (__m512 __W ){
100
107
// CHECK-LABEL: @test_mm512_reduce_max_ps(
@@ -107,12 +114,14 @@ int test_mm512_reduce_min_epi32(__m512i __W){
107
114
// CHECK: call i32 @llvm.vector.reduce.smin.v16i32(<16 x i32> %{{.*}})
108
115
return _mm512_reduce_min_epi32 (__W );
109
116
}
117
+ TEST_CONSTEXPR (_mm512_reduce_min_epi32 ((__m512i )(__v16si ){-8 , -7 , -6 , -5 , -4 , -3 , -2 , -1 , 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 }) == -8 );
110
118
111
119
unsigned int test_mm512_reduce_min_epu32 (__m512i __W ){
112
120
// CHECK-LABEL: @test_mm512_reduce_min_epu32(
113
121
// CHECK: call i32 @llvm.vector.reduce.umin.v16i32(<16 x i32> %{{.*}})
114
122
return _mm512_reduce_min_epu32 (__W );
115
123
}
124
+ TEST_CONSTEXPR (_mm512_reduce_min_epu32 ((__m512i )(__v16su ){0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 }) == 0 );
116
125
117
126
float test_mm512_reduce_min_ps (__m512 __W ){
118
127
// CHECK-LABEL: @test_mm512_reduce_min_ps(
0 commit comments