a5dd47d...
by
"H.J. Lu" <email address hidden>
on 2015-05-19
Add Intel MCU psABI testsuite
We run Intel MCU psABI tests on Linux/ia32 with -miamcu. Since Intel
MCU psABI has a different calling convention, the only Linux libc function
allowed is "abort".
asm-support.S contains some support functions as well as a subset of
soft-fp, which is written in assembly with x87 instructions, to provide
intrinsics needed by -miamcu so that Intel MCU psABI tests can run on
Linux.
* gcc.target/ i386/iamcu/ abi-iamcu. exp: New file.
* gcc.target/ i386/iamcu/ args.h: Likewise.
* gcc.target/ i386/iamcu/ asm-support. S: Likewise.
* gcc.target/ i386/iamcu/ defines. h: Likewise.
* gcc.target/ i386/iamcu/ macros. h: Likewise.
* gcc.target/ i386/iamcu/ test_3_ element_ struct_ and_unions. c: Likewise.
* gcc.target/ i386/iamcu/ test_basic_ 64bit_returning .c: Likewise.
* gcc.target/ i386/iamcu/ test_basic_ alignment. c: Likewise.
* gcc.target/ i386/iamcu/ test_basic_ array_size_ and_align. c: Likewise.
* gcc.target/ i386/iamcu/ test_basic_ returning. c: Likewise.
* gcc.target/ i386/iamcu/ test_basic_ sizes.c: Likewise.
* gcc.target/ i386/iamcu/ test_basic_ struct_ size_and_ align.c: Likewise.
* gcc.target/ i386/iamcu/ test_basic_ union_size_ and_align. c: Likewise.
* gcc.target/ i386/iamcu/ test_bitfields. c: Likewise.
* gcc.target/ i386/iamcu/ test_complex_ returning. c: Likewise.
* gcc.target/ i386/iamcu/ test_passing_ floats. c: Likewise.
* gcc.target/ i386/iamcu/ test_passing_ integers. c: Likewise.
* gcc.target/ i386/iamcu/ test_passing_ structs. c: Likewise.
* gcc.target/ i386/iamcu/ test_passing_ structs_ and_unions. c: Likewise.
* gcc.target/ i386/iamcu/ test_passing_ unions. c: Likewise.
* gcc.target/ i386/iamcu/ test_struct_ returning. c: Likewise.
* gcc.target/ i386/iamcu/ test_varargs. c: Likewise.
9a427c2...
by
"H.J. Lu" <email address hidden>
on 2015-05-19
Verify that x87/MMX/SSE/AVX is off for -miamcu
Intel MCU doesn't support x87/MMX/SSE/AVX. We should verify that they
aren't turned on when -miamcu is used.
* config/i386/i386.c (ix86_option_ override_ internal) : Issue an
error if x87, MMX, SSE or AVX is turned on when -miamcu is used.
d33f0aa...
by
"H.J. Lu" <email address hidden>
on 2015-05-19
Issue an error when -miamcu is used in 64-bit/x32 mode
Intel MCU psABI is 32-bit only and can't be used in 64-bit nor x32 mode.
Issue an error when -miamcu is used in 64-bit or x32 mode.
* config/i386/i386.c (ix86_option_ override_ internal) : Issue an
error when -miamcu is used in 64-bit or x32 mode.
e71bbe1...
by
"H.J. Lu" <email address hidden>
on 2015-05-18
Turn off X87/MMX/SSE/AVX codegen for -miamcu
Intel MCU doesn't support x87/MMX/SSE/AVX. -miamcu should turn them off.
* common/ config/ i386/i386- common. c (ix86_handle_ option) : Turn
off x87/MMX/SSE/AVX codegen for -miamcu.
4356ce5...
by
"H.J. Lu" <email address hidden>
on 2015-05-24
Pass/return values <= 8 bytes in registers
Intel MCU psABI passes/returns scalars and aggregates no larger than 8
bytes in registers.
* config/i386/i386.c (function_ arg_advance_ 32): Pass value whose
size is no larger than 8 bytes in registers for Intel MCU.
(function_arg_32): Likewise.
(return_ in_memory_ 32): Return value whose size is no larger
than 8 bytes in registers for Intel MCU.
387c146...
by
"H.J. Lu" <email address hidden>
on 2015-05-18
Enable decimal floating point for Intel MCU
Intel MCU psABI supports decimal floating point. This patch enables
decimal floating point for Intel MCU.
config/
* dfp.m4 (enable_ decimal_ float): Also set to yes for
i?86*-*-elfiamcu target.
gcc/
* configure: Regenerated.
libdecnumber/
* configure: Regenerated.
libgcc/
* config.host (tmake_file): Add t-dfprules for
i[34567] 86-*-elfiamcu target.
* configure: Regenerated.
8515422...
by
"H.J. Lu" <email address hidden>
on 2015-05-18
Turn on -freg-struct-return for -miamcu
Intel MCU psABI specifies that -freg-struct-return should be on.
Instead of setting DEFAULT_ PCC_STRUCT_ RETURN to 1, we check
-miamcu so that -freg-struct-return is always turned on if
-miamcu is used.
* config/i386/i386.c (ix86_option_ override_ internal) : Turn on
-freg- struct- return for Intel MCU.
c14fa45...
by
"H.J. Lu" <email address hidden>
on 2015-05-18
Make long double to 64-bit for Intel MCU
Intel MCU psABI specifies long double is the same as double. This
patch defaults long double to 64-bit for Intel MCU.
* config/i386/i386.c (ix86_option_ override_ internal) : Default
long double to 64-bit for Intel MCU.
5e5d104...
by
"H.J. Lu" <email address hidden>
on 2015-05-18
Enable -mregparm=3 for Intel MCU by default
Intel MCU psABI uses the first 3 integer registers to pass paramters.
This patch enables -mregparm=3 for Intel MCU by default.
* config/i386/i386.c (ix86_option_ override_ internal) : Ignore
and warn -mregparm for Intel MCU. Turn on -mregparm=3 for Intel
MCU by default.
83239ee...
by
"H.J. Lu" <email address hidden>
on 2015-05-20
Don't increase alignments of objects on stack
We should never increase alignments of objects on stack for Intel MCU.
There is nothing to gain.
* config/i386/i386.c (ix86_local_ alignment) : Don't increase
alignment for Intel MCU.