xref: /llvm-project/clang/test/CodeGen/RISCV/riscv32-ilp32d-abi.cpp (revision e9f53e4095d8a8600b5c5d445c73e2d5a6f45abb)
1 // RUN: %clang_cc1 -triple riscv32 -target-feature +d -target-feature +f -target-abi ilp32d \
2 // RUN:     -Wno-missing-declarations -emit-llvm %s -o - | FileCheck %s
3 
4 struct empty_float2 { struct {}; float f; float g; };
5 
6 // CHECK: define{{.*}} float @_Z14f_empty_float212empty_float2(float %0, float %1)
7 // CHECK: { [4 x i8], float, float }
f_empty_float2(empty_float2 a)8 float f_empty_float2(empty_float2 a) {
9     return a.g;
10 }
11 
12 struct empty_double2 { struct {}; double f; double g; };
13 
14 // CHECK: define{{.*}} double @_Z15f_empty_double213empty_double2(double %0, double %1)
15 // CHECK: { [8 x i8], double, double }
f_empty_double2(empty_double2 a)16 double f_empty_double2(empty_double2 a) {
17     return a.g;
18 }
19 
20 struct empty_float_double { struct {}; float f; double g; };
21 
22 // CHECK: define{{.*}} double @_Z20f_empty_float_double18empty_float_double(float %0, double %1)
23 // CHECK: { [4 x i8], float, double }
f_empty_float_double(empty_float_double a)24 double f_empty_float_double(empty_float_double a) {
25     return a.g;
26 }
27 
28 struct empty_double_float { struct {}; double f; float g; };
29 
30 // CHECK: define{{.*}} double @_Z20f_empty_double_float18empty_double_float(double %0, float %1)
31 // CHECK: { [8 x i8], double, float }
f_empty_double_float(empty_double_float a)32 double f_empty_double_float(empty_double_float a) {
33     return a.g;
34 }
35 
36 struct empty_complex_f { struct {}; float _Complex fc; };
37 
38 // CHECK: define{{.*}} float @_Z17f_empty_complex_f15empty_complex_f(float %0, float %1)
39 // CHECK: { [4 x i8], float, float }
f_empty_complex_f(empty_complex_f a)40 float f_empty_complex_f(empty_complex_f a) {
41     return __imag__ a.fc;
42 }
43 
44 struct empty_complex_d { struct {}; double _Complex fc; };
45 
46 // CHECK: define{{.*}} double @_Z17f_empty_complex_d15empty_complex_d(double %0, double %1)
47 // CHECK: { [8 x i8], double, double }
f_empty_complex_d(empty_complex_d a)48 double f_empty_complex_d(empty_complex_d a) {
49     return __imag__ a.fc;
50 }
51