1 // RUN: %clang_cc1 -triple x86_64-linux -emit-llvm -target-feature +avx512fp16 < %s | FileCheck %s --check-prefixes=CHECK,CHECK-C
2 // RUN: %clang_cc1 -triple x86_64-linux -emit-llvm -target-feature +avx512fp16 -x c++ -std=c++11 < %s | FileCheck %s --check-prefixes=CHECK,CHECK-CPP
8 struct half1
h1(_Float16 a
) {
9 // CHECK: define{{.*}}half @
20 struct half2
h2(_Float16 a
, _Float16 b
) {
21 // CHECK: define{{.*}}<2 x half> @
34 struct half3
h3(_Float16 a
, _Float16 b
, _Float16 c
) {
35 // CHECK: define{{.*}}<4 x half> @
50 struct half4
h4(_Float16 a
, _Float16 b
, _Float16 c
, _Float16 d
) {
51 // CHECK: define{{.*}}<4 x half> @
65 struct floathalf
fh(float a
, _Float16 b
) {
66 // CHECK: define{{.*}}<4 x half> @
79 struct floathalf2
fh2(float a
, _Float16 b
, _Float16 c
) {
80 // CHECK: define{{.*}}<4 x half> @
93 struct halffloat
hf(_Float16 a
, float b
) {
94 // CHECK: define{{.*}}<4 x half> @
107 struct half2float
h2f(_Float16 a
, _Float16 b
, float c
) {
108 // CHECK: define{{.*}}<4 x half> @
123 struct floathalf3
fh3(float a
, _Float16 b
, _Float16 c
, _Float16 d
) {
124 // CHECK: define{{.*}}{ <4 x half>, half } @
141 struct half5
h5(_Float16 a
, _Float16 b
, _Float16 c
, _Float16 d
, _Float16 e
) {
142 // CHECK: define{{.*}}{ <4 x half>, half } @
158 float pr51813(struct float2 s
) {
159 // CHECK-C: define{{.*}} @pr51813(<2 x float>
160 // CHECK-CPP: define{{.*}} @_Z7pr518136float2(double {{.*}}, float
170 float pr51813_2(struct float3 s
) {
171 // CHECK-C: define{{.*}} @pr51813_2(<2 x float>
172 // CHECK-CPP: define{{.*}} @_Z9pr51813_26float3(double {{.*}}, float
182 _Float16
sf2(struct shalf2 s
) {
183 // CHECK-C: define{{.*}} @sf2(<2 x half>
184 // CHECK-CPP: define{{.*}} @_Z3sf26shalf2(double {{.*}}
195 _Float16
fs2(struct shalf2 s
) {
196 // CHECK-C: define{{.*}} @fs2(<2 x half>
197 // CHECK-CPP: define{{.*}} @_Z3fs26shalf2(double {{.*}}
207 struct fsd
pr52011(void) {
208 // CHECK: define{{.*}} { float, double } @
217 struct hsd
pr52011_2(void) {
218 // CHECK: define{{.*}} { half, double } @
227 struct hsf
pr52011_3(void) {
228 // CHECK: define{{.*}} <4 x half> @
237 struct fds
pr52011_4(void) {
238 // CHECK-C: define{{.*}} { float, double } @pr52011_4
239 // CHECK-CPP: define{{.*}} void @_Z9pr52011_4v({{.*}} sret