62 lines · cpp
1// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-feature +avx | FileCheck %s2 3namespace test1 {4typedef double __m256d __attribute__((__vector_size__(32)));5 6class PR22753 {7public:8 __m256d data;9};10 11// CHECK: define{{.*}} <4 x double> @_ZN5test14testENS_7PR22753E(<4 x double>12PR22753 test(PR22753 x) {13 return x;14}15}16 17namespace test2 {18typedef double __m128d __attribute__((__vector_size__(16)));19typedef float __m128 __attribute__((__vector_size__(16)));20typedef double __m256d __attribute__((__vector_size__(32)));21typedef float __m256 __attribute__((__vector_size__(32)));22 23union U1 {24 __m128 v1;25 __m128d v2;26};27 28union UU1 {29 union U1;30 __m128d v3;31};32 33// CHECK: define{{.*}} <2 x double> @_ZN5test27PR23082ENS_3UU1E(<2 x double>34UU1 PR23082(UU1 x) {35 return x;36}37 38union U2 {39 __m256 v1;40 __m256d v2;41};42 43union UU2 {44 union U2;45 __m256d v3;46};47 48// CHECK: define{{.*}} <4 x double> @_ZN5test27PR23082ENS_3UU2E(<4 x double>49UU2 PR23082(UU2 x) {50 return x;51}52}53 54namespace test3 {55union U {56 __attribute__((__vector_size__(32))) float f1;57 int f2;58};59// CHECK: define{{.*}} i32 @_ZN5test31fENS_1UE(ptr noundef byval({{.*}}) align 3260int f(U u) { return u.f2; }61}62