OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [gcc.target/] [spu/] [abi.c] - Diff between revs 327 and 338

Only display areas with differences | Details | Blame | View Log

Rev 327 Rev 338
/* { dg-do run } */
/* { dg-do run } */
/* { dg-options "-O2" } */
/* { dg-options "-O2" } */
/* Test that arguments are passed in the correct location according to the ABI.  */
/* Test that arguments are passed in the correct location according to the ABI.  */
 
 
#include <stdlib.h>
#include <stdlib.h>
 
 
/* Hack to allow calling func_asm which takes 84 arguments that are scalars.
/* Hack to allow calling func_asm which takes 84 arguments that are scalars.
   The function func_call takes 84 union quadword arguments, so we can check to
   The function func_call takes 84 union quadword arguments, so we can check to
   see if each scalar is passed in the correct location.  This asm glues the
   see if each scalar is passed in the correct location.  This asm glues the
   two functions together, so that the compiler is not aware of the
   two functions together, so that the compiler is not aware of the
   aliasing.  */
   aliasing.  */
__asm__ ("func_asm = func_call");
__asm__ ("func_asm = func_call");
 
 
typedef unsigned int uqword __attribute__((mode(TI)));
typedef unsigned int uqword __attribute__((mode(TI)));
typedef int qword __attribute__((mode(TI)));
typedef int qword __attribute__((mode(TI)));
 
 
union u
union u
{
{
  uqword                uq;
  uqword                uq;
  qword                 sq;
  qword                 sq;
  double                d[2];
  double                d[2];
  float                 f[4];
  float                 f[4];
  unsigned long long    ull[2];
  unsigned long long    ull[2];
  long long             sll[2];
  long long             sll[2];
  unsigned long         ul[4];
  unsigned long         ul[4];
  long                  sl[4];
  long                  sl[4];
  unsigned int          ui[4];
  unsigned int          ui[4];
  int                   si[4];
  int                   si[4];
  unsigned short        us[8];
  unsigned short        us[8];
  short                 ss[8];
  short                 ss[8];
  unsigned char         uc[16];
  unsigned char         uc[16];
  signed char           sc[16];
  signed char           sc[16];
};
};
 
 
 
 
extern void func_asm(signed char a1,
extern void func_asm(signed char a1,
                     unsigned char a2,
                     unsigned char a2,
                     short a3,
                     short a3,
                     unsigned short a4,
                     unsigned short a4,
                     int a5,
                     int a5,
                     unsigned int a6,
                     unsigned int a6,
                     long a7,
                     long a7,
                     unsigned long a8,
                     unsigned long a8,
                     long long a9,
                     long long a9,
                     unsigned long long a10,
                     unsigned long long a10,
                     float a11,
                     float a11,
                     double a12,
                     double a12,
                     int a13,
                     int a13,
                     int a14,
                     int a14,
                     int a15,
                     int a15,
                     int a16,
                     int a16,
                     int a17,
                     int a17,
                     int a18,
                     int a18,
                     int a19,
                     int a19,
                     int a20,
                     int a20,
                     int a21,
                     int a21,
                     int a22,
                     int a22,
                     int a23,
                     int a23,
                     int a24,
                     int a24,
                     int a25,
                     int a25,
                     int a26,
                     int a26,
                     int a27,
                     int a27,
                     int a28,
                     int a28,
                     int a29,
                     int a29,
                     int a30,
                     int a30,
                     int a31,
                     int a31,
                     int a32,
                     int a32,
                     int a33,
                     int a33,
                     int a34,
                     int a34,
                     int a35,
                     int a35,
                     int a36,
                     int a36,
                     int a37,
                     int a37,
                     int a38,
                     int a38,
                     int a39,
                     int a39,
                     int a40,
                     int a40,
                     int a41,
                     int a41,
                     int a42,
                     int a42,
                     int a43,
                     int a43,
                     int a44,
                     int a44,
                     int a45,
                     int a45,
                     int a46,
                     int a46,
                     int a47,
                     int a47,
                     int a48,
                     int a48,
                     int a49,
                     int a49,
                     int a50,
                     int a50,
                     int a51,
                     int a51,
                     int a52,
                     int a52,
                     int a53,
                     int a53,
                     int a54,
                     int a54,
                     int a55,
                     int a55,
                     int a56,
                     int a56,
                     int a57,
                     int a57,
                     int a58,
                     int a58,
                     int a59,
                     int a59,
                     int a60,
                     int a60,
                     int a61,
                     int a61,
                     int a62,
                     int a62,
                     int a63,
                     int a63,
                     int a64,
                     int a64,
                     int a65,
                     int a65,
                     int a66,
                     int a66,
                     int a67,
                     int a67,
                     int a68,
                     int a68,
                     int a69,
                     int a69,
                     int a70,
                     int a70,
                     int a71,
                     int a71,
                     int a72,
                     int a72,
                     signed char a73,
                     signed char a73,
                     unsigned char a74,
                     unsigned char a74,
                     short a75,
                     short a75,
                     unsigned short a76,
                     unsigned short a76,
                     int a77,
                     int a77,
                     unsigned int a78,
                     unsigned int a78,
                     long a79,
                     long a79,
                     unsigned long a80,
                     unsigned long a80,
                     long long a81,
                     long long a81,
                     unsigned long long a82,
                     unsigned long long a82,
                     float a83,
                     float a83,
                     double a84);
                     double a84);
 
 
void func_call(union u a1,
void func_call(union u a1,
               union u a2,
               union u a2,
               union u a3,
               union u a3,
               union u a4,
               union u a4,
               union u a5,
               union u a5,
               union u a6,
               union u a6,
               union u a7,
               union u a7,
               union u a8,
               union u a8,
               union u a9,
               union u a9,
               union u a10,
               union u a10,
               union u a11,
               union u a11,
               union u a12,
               union u a12,
               union u a13,
               union u a13,
               union u a14,
               union u a14,
               union u a15,
               union u a15,
               union u a16,
               union u a16,
               union u a17,
               union u a17,
               union u a18,
               union u a18,
               union u a19,
               union u a19,
               union u a20,
               union u a20,
               union u a21,
               union u a21,
               union u a22,
               union u a22,
               union u a23,
               union u a23,
               union u a24,
               union u a24,
               union u a25,
               union u a25,
               union u a26,
               union u a26,
               union u a27,
               union u a27,
               union u a28,
               union u a28,
               union u a29,
               union u a29,
               union u a30,
               union u a30,
               union u a31,
               union u a31,
               union u a32,
               union u a32,
               union u a33,
               union u a33,
               union u a34,
               union u a34,
               union u a35,
               union u a35,
               union u a36,
               union u a36,
               union u a37,
               union u a37,
               union u a38,
               union u a38,
               union u a39,
               union u a39,
               union u a40,
               union u a40,
               union u a41,
               union u a41,
               union u a42,
               union u a42,
               union u a43,
               union u a43,
               union u a44,
               union u a44,
               union u a45,
               union u a45,
               union u a46,
               union u a46,
               union u a47,
               union u a47,
               union u a48,
               union u a48,
               union u a49,
               union u a49,
               union u a50,
               union u a50,
               union u a51,
               union u a51,
               union u a52,
               union u a52,
               union u a53,
               union u a53,
               union u a54,
               union u a54,
               union u a55,
               union u a55,
               union u a56,
               union u a56,
               union u a57,
               union u a57,
               union u a58,
               union u a58,
               union u a59,
               union u a59,
               union u a60,
               union u a60,
               union u a61,
               union u a61,
               union u a62,
               union u a62,
               union u a63,
               union u a63,
               union u a64,
               union u a64,
               union u a65,
               union u a65,
               union u a66,
               union u a66,
               union u a67,
               union u a67,
               union u a68,
               union u a68,
               union u a69,
               union u a69,
               union u a70,
               union u a70,
               union u a71,
               union u a71,
               union u a72,
               union u a72,
               union u a73,
               union u a73,
               union u a74,
               union u a74,
               union u a75,
               union u a75,
               union u a76,
               union u a76,
               union u a77,
               union u a77,
               union u a78,
               union u a78,
               union u a79,
               union u a79,
               union u a80,
               union u a80,
               union u a81,
               union u a81,
               union u a82,
               union u a82,
               union u a83,
               union u a83,
               union u a84)
               union u a84)
{
{
  /* arguments passed in registers */
  /* arguments passed in registers */
  if (a1.sc[3] != -1)                   /* signed char */
  if (a1.sc[3] != -1)                   /* signed char */
    abort ();
    abort ();
 
 
  if (a2.uc[3] != +2)                   /* unsigned char */
  if (a2.uc[3] != +2)                   /* unsigned char */
    abort ();
    abort ();
 
 
  if (a3.ss[1] != -3)                   /* short */
  if (a3.ss[1] != -3)                   /* short */
    abort ();
    abort ();
 
 
  if (a4.us[1] != +4)                   /* unsigned short */
  if (a4.us[1] != +4)                   /* unsigned short */
    abort ();
    abort ();
 
 
  if (a5.si[0] != -5)                    /* int */
  if (a5.si[0] != -5)                    /* int */
    abort ();
    abort ();
 
 
  if (a6.ui[0] != +6)                    /* unsigned int */
  if (a6.ui[0] != +6)                    /* unsigned int */
    abort ();
    abort ();
 
 
  if (a7.sl[0] != -7)                    /* long */
  if (a7.sl[0] != -7)                    /* long */
    abort ();
    abort ();
 
 
  if (a8.ul[0] != +8)                    /* unsigned long */
  if (a8.ul[0] != +8)                    /* unsigned long */
    abort ();
    abort ();
 
 
  if (a9.sll[0] != -9)                   /* long long */
  if (a9.sll[0] != -9)                   /* long long */
    abort ();
    abort ();
 
 
  if (a10.ull[0] != +10)         /* unsigned long long */
  if (a10.ull[0] != +10)         /* unsigned long long */
    abort ();
    abort ();
 
 
  if (a11.f[0] != -11.0f)                /* float */
  if (a11.f[0] != -11.0f)                /* float */
    abort ();
    abort ();
 
 
  if (a12.d[0] != +12.0)         /* double */
  if (a12.d[0] != +12.0)         /* double */
    abort ();
    abort ();
 
 
  if (a13.si[0] != -13)                  /* int */
  if (a13.si[0] != -13)                  /* int */
    abort ();
    abort ();
 
 
  if (a14.si[0] != +14)                  /* int */
  if (a14.si[0] != +14)                  /* int */
    abort ();
    abort ();
 
 
  if (a15.si[0] != -15)                  /* int */
  if (a15.si[0] != -15)                  /* int */
    abort ();
    abort ();
 
 
  if (a16.si[0] != +16)                  /* int */
  if (a16.si[0] != +16)                  /* int */
    abort ();
    abort ();
 
 
  if (a17.si[0] != -17)                  /* int */
  if (a17.si[0] != -17)                  /* int */
    abort ();
    abort ();
 
 
  if (a18.si[0] != +18)                  /* int */
  if (a18.si[0] != +18)                  /* int */
    abort ();
    abort ();
 
 
  if (a19.si[0] != -19)                  /* int */
  if (a19.si[0] != -19)                  /* int */
    abort ();
    abort ();
 
 
  if (a20.si[0] != +20)                  /* int */
  if (a20.si[0] != +20)                  /* int */
    abort ();
    abort ();
 
 
  if (a21.si[0] != -21)                  /* int */
  if (a21.si[0] != -21)                  /* int */
    abort ();
    abort ();
 
 
  if (a22.si[0] != +22)                  /* int */
  if (a22.si[0] != +22)                  /* int */
    abort ();
    abort ();
 
 
  if (a23.si[0] != -23)                  /* int */
  if (a23.si[0] != -23)                  /* int */
    abort ();
    abort ();
 
 
  if (a24.si[0] != +24)                  /* int */
  if (a24.si[0] != +24)                  /* int */
    abort ();
    abort ();
 
 
  if (a25.si[0] != -25)                  /* int */
  if (a25.si[0] != -25)                  /* int */
    abort ();
    abort ();
 
 
  if (a26.si[0] != +26)                  /* int */
  if (a26.si[0] != +26)                  /* int */
    abort ();
    abort ();
 
 
  if (a27.si[0] != -27)                  /* int */
  if (a27.si[0] != -27)                  /* int */
    abort ();
    abort ();
 
 
  if (a28.si[0] != +28)                  /* int */
  if (a28.si[0] != +28)                  /* int */
    abort ();
    abort ();
 
 
  if (a29.si[0] != -29)                  /* int */
  if (a29.si[0] != -29)                  /* int */
    abort ();
    abort ();
 
 
  if (a30.si[0] != +30)                  /* int */
  if (a30.si[0] != +30)                  /* int */
    abort ();
    abort ();
 
 
  if (a31.si[0] != -31)                  /* int */
  if (a31.si[0] != -31)                  /* int */
    abort ();
    abort ();
 
 
  if (a32.si[0] != +32)                  /* int */
  if (a32.si[0] != +32)                  /* int */
    abort ();
    abort ();
 
 
  if (a33.si[0] != -33)                  /* int */
  if (a33.si[0] != -33)                  /* int */
    abort ();
    abort ();
 
 
  if (a34.si[0] != +34)                  /* int */
  if (a34.si[0] != +34)                  /* int */
    abort ();
    abort ();
 
 
  if (a35.si[0] != -35)                  /* int */
  if (a35.si[0] != -35)                  /* int */
    abort ();
    abort ();
 
 
  if (a36.si[0] != +36)                  /* int */
  if (a36.si[0] != +36)                  /* int */
    abort ();
    abort ();
 
 
  if (a37.si[0] != -37)                  /* int */
  if (a37.si[0] != -37)                  /* int */
    abort ();
    abort ();
 
 
  if (a38.si[0] != +38)                  /* int */
  if (a38.si[0] != +38)                  /* int */
    abort ();
    abort ();
 
 
  if (a39.si[0] != -39)                  /* int */
  if (a39.si[0] != -39)                  /* int */
    abort ();
    abort ();
 
 
  if (a40.si[0] != +40)                  /* int */
  if (a40.si[0] != +40)                  /* int */
    abort ();
    abort ();
 
 
  if (a41.si[0] != -41)                  /* int */
  if (a41.si[0] != -41)                  /* int */
    abort ();
    abort ();
 
 
  if (a42.si[0] != +42)                  /* int */
  if (a42.si[0] != +42)                  /* int */
    abort ();
    abort ();
 
 
  if (a43.si[0] != -43)                  /* int */
  if (a43.si[0] != -43)                  /* int */
    abort ();
    abort ();
 
 
  if (a44.si[0] != +44)                  /* int */
  if (a44.si[0] != +44)                  /* int */
    abort ();
    abort ();
 
 
  if (a45.si[0] != -45)                  /* int */
  if (a45.si[0] != -45)                  /* int */
    abort ();
    abort ();
 
 
  if (a46.si[0] != +46)                  /* int */
  if (a46.si[0] != +46)                  /* int */
    abort ();
    abort ();
 
 
  if (a47.si[0] != -47)                  /* int */
  if (a47.si[0] != -47)                  /* int */
    abort ();
    abort ();
 
 
  if (a48.si[0] != +48)                  /* int */
  if (a48.si[0] != +48)                  /* int */
    abort ();
    abort ();
 
 
  if (a49.si[0] != -49)                  /* int */
  if (a49.si[0] != -49)                  /* int */
    abort ();
    abort ();
 
 
  if (a50.si[0] != +50)                  /* int */
  if (a50.si[0] != +50)                  /* int */
    abort ();
    abort ();
 
 
  if (a51.si[0] != -51)                  /* int */
  if (a51.si[0] != -51)                  /* int */
    abort ();
    abort ();
 
 
  if (a52.si[0] != +52)                  /* int */
  if (a52.si[0] != +52)                  /* int */
    abort ();
    abort ();
 
 
  if (a53.si[0] != -53)                  /* int */
  if (a53.si[0] != -53)                  /* int */
    abort ();
    abort ();
 
 
  if (a54.si[0] != +54)                  /* int */
  if (a54.si[0] != +54)                  /* int */
    abort ();
    abort ();
 
 
  if (a55.si[0] != -55)                  /* int */
  if (a55.si[0] != -55)                  /* int */
    abort ();
    abort ();
 
 
  if (a56.si[0] != +56)                  /* int */
  if (a56.si[0] != +56)                  /* int */
    abort ();
    abort ();
 
 
  if (a57.si[0] != -57)                  /* int */
  if (a57.si[0] != -57)                  /* int */
    abort ();
    abort ();
 
 
  if (a58.si[0] != +58)                  /* int */
  if (a58.si[0] != +58)                  /* int */
    abort ();
    abort ();
 
 
  if (a59.si[0] != -59)                  /* int */
  if (a59.si[0] != -59)                  /* int */
    abort ();
    abort ();
 
 
  if (a60.si[0] != +60)                  /* int */
  if (a60.si[0] != +60)                  /* int */
    abort ();
    abort ();
 
 
  if (a61.si[0] != -61)                  /* int */
  if (a61.si[0] != -61)                  /* int */
    abort ();
    abort ();
 
 
  if (a62.si[0] != +62)                  /* int */
  if (a62.si[0] != +62)                  /* int */
    abort ();
    abort ();
 
 
  if (a63.si[0] != -63)                  /* int */
  if (a63.si[0] != -63)                  /* int */
    abort ();
    abort ();
 
 
  if (a64.si[0] != +64)                  /* int */
  if (a64.si[0] != +64)                  /* int */
    abort ();
    abort ();
 
 
  if (a65.si[0] != -65)                  /* int */
  if (a65.si[0] != -65)                  /* int */
    abort ();
    abort ();
 
 
  if (a66.si[0] != +66)                  /* int */
  if (a66.si[0] != +66)                  /* int */
    abort ();
    abort ();
 
 
  if (a67.si[0] != -67)                  /* int */
  if (a67.si[0] != -67)                  /* int */
    abort ();
    abort ();
 
 
  if (a68.si[0] != +68)                  /* int */
  if (a68.si[0] != +68)                  /* int */
    abort ();
    abort ();
 
 
  if (a69.si[0] != -69)                  /* int */
  if (a69.si[0] != -69)                  /* int */
    abort ();
    abort ();
 
 
  if (a70.si[0] != +70)                  /* int */
  if (a70.si[0] != +70)                  /* int */
    abort ();
    abort ();
 
 
  if (a71.si[0] != -71)                  /* int */
  if (a71.si[0] != -71)                  /* int */
    abort ();
    abort ();
 
 
  if (a72.si[0] != +72)                  /* int */
  if (a72.si[0] != +72)                  /* int */
    abort ();
    abort ();
 
 
  /* arguments passed on the stack */
  /* arguments passed on the stack */
  if (a73.sc[3] != -73)                 /* signed char */
  if (a73.sc[3] != -73)                 /* signed char */
    abort ();
    abort ();
 
 
  if (a74.uc[3] != 74)                  /* unsigned char */
  if (a74.uc[3] != 74)                  /* unsigned char */
    abort ();
    abort ();
 
 
  if (a75.ss[1] != -75)                 /* short */
  if (a75.ss[1] != -75)                 /* short */
    abort ();
    abort ();
 
 
  if (a76.us[1] != +76)                 /* unsigned short */
  if (a76.us[1] != +76)                 /* unsigned short */
    abort ();
    abort ();
 
 
  if (a77.si[0] != -77)                  /* int */
  if (a77.si[0] != -77)                  /* int */
    abort ();
    abort ();
 
 
  if (a78.ui[0] != +78)                  /* unsigned int */
  if (a78.ui[0] != +78)                  /* unsigned int */
    abort ();
    abort ();
 
 
  if (a79.sl[0] != -79)                  /* long */
  if (a79.sl[0] != -79)                  /* long */
    abort ();
    abort ();
 
 
  if (a80.ul[0] != +80)                  /* unsigned long */
  if (a80.ul[0] != +80)                  /* unsigned long */
    abort ();
    abort ();
 
 
  if (a81.sll[0] != -81)         /* long long */
  if (a81.sll[0] != -81)         /* long long */
    abort ();
    abort ();
 
 
  if (a82.ull[0] != +82)         /* unsigned long long */
  if (a82.ull[0] != +82)         /* unsigned long long */
    abort ();
    abort ();
 
 
  if (a83.f[0] != -83.0f)                /* float */
  if (a83.f[0] != -83.0f)                /* float */
    abort ();
    abort ();
 
 
  if (a84.d[0] != +84.0)         /* double */
  if (a84.d[0] != +84.0)         /* double */
    abort ();
    abort ();
}
}
 
 
int main(void)
int main(void)
{
{
  func_asm(-1,   +2,  -3,  +4,  -5,  +6,  -7,  +8,  -9, +10,
  func_asm(-1,   +2,  -3,  +4,  -5,  +6,  -7,  +8,  -9, +10,
           -11, +12, -13, +14, -15, +16, -17, +18, -19, +20,
           -11, +12, -13, +14, -15, +16, -17, +18, -19, +20,
           -21, +22, -23, +24, -25, +26, -27, +28, -29, +30,
           -21, +22, -23, +24, -25, +26, -27, +28, -29, +30,
           -31, +32, -33, +34, -35, +36, -37, +38, -39, +40,
           -31, +32, -33, +34, -35, +36, -37, +38, -39, +40,
           -41, +42, -43, +44, -45, +46, -47, +48, -49, +50,
           -41, +42, -43, +44, -45, +46, -47, +48, -49, +50,
           -51, +52, -53, +54, -55, +56, -57, +58, -59, +60,
           -51, +52, -53, +54, -55, +56, -57, +58, -59, +60,
           -61, +62, -63, +64, -65, +66, -67, +68, -69, +70,
           -61, +62, -63, +64, -65, +66, -67, +68, -69, +70,
           -71, +72, -73, +74, -75, +76, -77, +78, -79, +80,
           -71, +72, -73, +74, -75, +76, -77, +78, -79, +80,
           -81, +82, -83, +84);
           -81, +82, -83, +84);
 
 
  return 0;
  return 0;
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.