You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

364 lines
8.6 KiB

/*
* Copyright 2002-2019 Intel Corporation.
*
* This software is provided to you as Sample Source Code as defined in the accompanying
* End User License Agreement for the Intel(R) Software Development Products ("Agreement")
* section 1.L.
*
* This software and the related documents are provided as is, with no express or implied
* warranties, other than those that are expressly stated in the License.
*/
// This little application tests calling application functions.
//
#include <stdio.h>
#include <limits.h>
#if defined (TARGET_WINDOWS)
#define EXPORT_SYM __declspec( dllexport )
#define FAST_CALL __fastcall
#define STD_CALL __stdcall
#else
#define EXPORT_SYM extern
#define FAST_CALL
#define STD_CALL
#endif
EXPORT_SYM void Bar()
{
printf(" Hello from Bar!\n ");
}
EXPORT_SYM void Blue()
{
printf(" Hello from Blue!\n");
}
EXPORT_SYM void Bar1( int one )
{
printf(" Hello from Bar1: one = %d!\n ", one );
}
EXPORT_SYM int Bar2( int one, int two )
{
printf(" Hello from Bar2: one = %d, two = %d!\n ", one, two );
return one+two;
}
EXPORT_SYM long Bar3( long one, long two )
{
printf(" Hello from Bar3: one = %ld, two = %ld!\n ", one, two );
return one+two;
}
EXPORT_SYM void Blue1( int one )
{
printf(" Hello from Blue1: one = %d!\n ", one );
}
EXPORT_SYM int Blue2( int one, int two )
{
printf(" Hello from Blue2: one = %d, two = %d!\n ", one, two );
return one+two;
}
EXPORT_SYM long Blue3( long one, long two )
{
printf(" Hello from Blue3: one = %ld, two = %ld!\n ", one, two );
return one+two;
}
EXPORT_SYM int Blue6( int one, int two )
{
printf("Hello from Blue6: one = %d, two = %d!\n ", one, two );
return one+two;
}
EXPORT_SYM int Bar6( int one, int two )
{
int sum=0;
printf(" Hello from Bar6: one = %d, two = %d!\n ", one, two );
sum = Blue6( one, two );
return sum;
}
EXPORT_SYM int Blue7( int one, int two );
EXPORT_SYM int Bar7( int one, int two, int stop )
{
int sum=0;
if ( stop == 0 )
{
printf(" Bar7: once\n" );
sum = Blue7( one, two );
}
else
{
printf(" Bar7: twice\n" );
sum = one+two;
}
return sum;
}
EXPORT_SYM int Blue7( int one, int two )
{
int sum = 0;
printf(" Blue7: once\n" );
sum = Bar7( one, two, 1 );
printf(" Blue7: twice\n" );
return sum;
}
EXPORT_SYM int Bar8( int one, int two, int stop )
{
int sum=0;
if ( stop == 0 )
{
printf(" Bar8: once\n" );
sum = Bar8( one, two, 1 );
}
else if ( stop == 1 )
{
printf(" Bar8: twice\n" );
sum = Bar8( one, two, 2 );
}
else
{
printf(" Bar8: thrice\n" );
sum = one+two;
}
return sum;
}
EXPORT_SYM int Bar10( int one, int two, int three, int four, int five,
int six, int seven, int eight, int nine, int zero )
{
int sum=0;
printf(" Hello from Bar10: one = %d, two = %d\n ", one, two );
printf(" three = %d, four = %d, five = %d, six = %d\n ", three, four, five, six );
printf(" seven = %d, eight = %d, nine = %d, zero = %d\n ", seven, eight, nine, zero );
sum = one + two + three + four + five + six + seven + eight + nine + zero;
printf(" sum = %d\n", sum );
return sum;
}
EXPORT_SYM int Blue10( int one, int two, int three, int four, int five,
int six, int seven, int eight, int nine, int zero )
{
int sum=0;
printf(" Hello from Blue10: one = %d, two = %d\n ", one, two );
printf(" three = %d, four = %d, five = %d, six = %d\n ", three, four, five, six );
printf(" seven = %d, eight = %d, nine = %d, zero = %d\n ", seven, eight, nine, zero );
sum = one + two + three + four + five + six + seven + eight + nine + zero;
printf(" sum = %d\n", sum );
return sum;
}
#if defined (TARGET_WINDOWS) && defined (TARGET_IA32)
extern __declspec( dllexport ) int FAST_CALL FastBar10(
int one, int two, int three, int four, int five,
int six, int seven, int eight, int nine, int zero )
{
int sum;
printf(" Hello from FastBar10: one = %d, two = %d\n ", one, two );
printf(" three = %d, four = %d, five = %d, six = %d\n ", three, four, five, six );
printf(" seven = %d, eight = %d, nine = %d, zero = %d\n ", seven, eight, nine, zero );
sum = one + two + three + four + five + six + seven + eight + nine + zero;
printf(" sum = %d\n", sum );
return sum;
}
extern __declspec( dllexport ) int FAST_CALL FastBlue10(
int one, int two, int three, int four, int five,
int six, int seven, int eight, int nine, int zero )
{
int sum=0;
printf(" Hello from FastBlue10: one = %d, two = %d\n ", one, two );
printf(" three = %d, four = %d, five = %d, six = %d\n ", three, four, five, six );
printf(" seven = %d, eight = %d, nine = %d, zero = %d\n ", seven, eight, nine, zero );
sum = one + two + three + four + five + six + seven + eight + nine + zero;
printf(" sum = %d\n", sum );
return sum;
}
extern __declspec( dllexport ) int STD_CALL StdBar10(
int one, int two, int three, int four, int five,
int six, int seven, int eight, int nine, int zero )
{
int sum;
printf(" Hello from StdBar10: one = %d, two = %d\n ", one, two );
printf(" three = %d, four = %d, five = %d, six = %d\n ", three, four, five, six );
printf(" seven = %d, eight = %d, nine = %d, zero = %d\n ", seven, eight, nine, zero );
sum = one + two + three + four + five + six + seven + eight + nine + zero;
printf(" sum = %d\n", sum );
return sum;
}
extern __declspec( dllexport ) int STD_CALL StdBlue10(
int one, int two, int three, int four, int five,
int six, int seven, int eight, int nine, int zero )
{
int sum=0;
printf(" Hello from StdBlue10: one = %d, two = %d\n ", one, two );
printf(" three = %d, four = %d, five = %d, six = %d\n ", three, four, five, six );
printf(" seven = %d, eight = %d, nine = %d, zero = %d\n ", seven, eight, nine, zero );
sum = one + two + three + four + five + six + seven + eight + nine + zero;
printf(" sum = %d\n", sum );
return sum;
}
#endif
EXPORT_SYM char Bar12( int i1, int i2, unsigned int ui1,
signed char c1, signed char c2, unsigned char uc1,
int i3, int i4, unsigned int ui2,
signed char c3, signed char c4, unsigned char uc2 )
{
printf(" Hello from Bar12: \n");
printf(" i1 = %d, i2 = %d, ui1 = %d\n ", i1, i2, ui1 );
printf(" c1 = %c, c2 = %c, uc1 = %c\n ", c1, c2, uc1 );
printf(" i3 = %d, i4 = %d, ui2 = %d\n ", i3, i4, ui2 );
printf(" c1 = %c, c2 = %c, uc1 = %c\n ", c3, c4, uc2 );
return '1';
}
EXPORT_SYM char Green12( int i1, int i2, unsigned int ui1,
signed char c1, signed char c2, unsigned char uc1,
int i3, int i4, unsigned int ui2,
signed char c3, signed char c4, unsigned char uc2 )
{
printf(" Green12: ");
if ( i1 == INT_MIN &&
i2 == INT_MAX &&
ui1 == UINT_MAX &&
c1 == SCHAR_MIN &&
c2 == SCHAR_MAX &&
uc1 == UCHAR_MAX &&
i3 == INT_MIN &&
i4 == INT_MAX &&
ui2 == UINT_MAX &&
c3 == SCHAR_MIN &&
c4 == SCHAR_MAX &&
uc2 == UCHAR_MAX )
{
printf(" Test passed\n" );
return '1';
}
else
{
printf(" Test failed\n" );
if ( i1 != INT_MIN )
printf (" i1 != INT_MIN\n");
if ( i2 != INT_MAX )
printf(" i1 != INT_MIN\n");
if ( ui1 != UINT_MAX )
printf(" ui1 != UINT_MAX\n");
if ( c1 != SCHAR_MIN )
printf(" c1 != SCHAR_MIN\n");
if ( c2 != SCHAR_MAX )
printf(" c2 != SCHAR_MAX\n");
if ( uc1 != UCHAR_MAX )
printf(" uc1 == UCHAR_MAX\n");
if ( i3 != INT_MIN )
printf(" i3 != INT_MIN\n");
if ( i4 != INT_MAX )
printf(" i4 != INT_MAX\n");
if ( ui2 != UINT_MAX )
printf(" ui2 != UINT_MAX\n");
if ( c3 != SCHAR_MIN )
printf(" c3 != SCHAR_MIN\n");
if ( c4 != SCHAR_MAX )
printf(" c4 != SCHAR_MAX\n");
if ( uc2 != UCHAR_MAX )
printf(" uc2 != UCHAR_MAX\n");
}
return '1';
}