brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 75dfd88 Raw
73 lines · c
1// RUN: %clang_cc1 -triple aarch64 -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-AAPCS2// RUN: %clang_cc1 -triple arm64-apple-ios7.0 -target-abi darwinpcs -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-DARWIN3// RUN: %clang_cc1 -triple aarch64-linux-gnu -emit-llvm -o - -x c %s | FileCheck %s --check-prefixes=CHECK,CHECK-AAPCS4 5typedef struct {6  float v[2];7} S0;8 9// CHECK-AAPCS:  define{{.*}} float @f0([2 x float] alignstack(8) %h.coerce)10// CHECK-DARWIN: define{{.*}} float @f0([2 x float] %h.coerce)11float f0(S0 h) {12  return h.v[0];13}14 15// CHECK: define{{.*}} float @f0_call()16// CHECK-AAPCS: %call = call float @f0([2 x float] alignstack(8) %0)17// CHECK-DARWIN: %call = call float @f0([2 x float] %0)18float f0_call(void) {19  S0 h = {1.0f, 2.0f};20  return f0(h);21}22typedef struct {23  double v[2];24} S1;25// CHECK-AAPCS: define{{.*}} double @f1([2 x double] alignstack(8) %h.coerce)26// CHECK-DARWIN: define{{.*}} double @f1([2 x double] %h.coerce)27double f1(S1 h) {28  return h.v[0];29}30 31// CHECK: define{{.*}} double @f1_call()32// CHECK-AAPCS: %call = call double @f1([2 x double] alignstack(8) %033// CHECK-DARWIN: %call = call double @f1([2 x double] %034double f1_call(void) {35  S1 h = {1.0, 2.0};36  return f1(h);37}38typedef struct {39  __attribute__((__aligned__(16))) double v[2];40} S2;41 42// CHECK-AAPCS:  define{{.*}} double @f2([2 x double] alignstack(16) %h.coerce)43// CHECK-DARWIN: define{{.*}} double @f2([2 x double] %h.coerce)44double f2(S2 h) {45  return h.v[0];46}47 48// CHECK: define{{.*}} double @f2_call()49// CHECK-AAPCS:  %call = call double @f2([2 x double] alignstack(16) %0)50// CHECK-DARWIN: %call = call double @f2([2 x double] %051double f2_call(void) {52  S2 h = {1.0, 2.0};53  return f2(h);54}55 56typedef struct {57  __attribute__((__aligned__(32))) double v[4];58} S3;59 60// CHECK-AAPCS:  define{{.*}} double @f3([4 x double] alignstack(16) %h.coerce)61// CHECK-DARWIN: define{{.*}} double @f3([4 x double] %h.coerce)62double f3(S3 h) {63  return h.v[0];64}65 66// CHECK: define{{.*}} double @f3_call()67// CHECK-AAPCS:  %call = call double @f3([4 x double] alignstack(16) %0)68// CHECK-DARWIN: %call = call double @f3([4 x double] %069double f3_call(void) {70  S3 h = {1.0, 2.0};71  return f3(h);72}73