Commit 929c046d by Bill Schmidt Committed by William Schmidt

cpu-future.c: Require powerpc_future_ok.

2019-05-31  Bill Schmidt  <wschmidt@linux.ibm.com>
	    Michael Meissner  <meissner@linux.ibm.com>

	* gcc.target/powerpc/cpu-future.c: Require powerpc_future_ok.
	* gcc.target/powerpc/localentry-1.c: Likewise.
	* gcc.target/powerpc/localentry-direct-1.c: Likewise.
	* gcc.target/powerpc/notoc-direct-1.c: Likewise.
	* gcc.target/powerpc/pcrel-sibcall-1.c: Likewise.
	* lib/target-supports.exp (check_powerpc_future_hw_available): New.
	(check_effective_target_powerpc_future_ok): New.


Co-Authored-By: Michael Meissner <meissner@linux.ibm.com>

From-SVN: r271810
parent 3228289e
2019-05-31 Bill Schmidt <wschmidt@linux.ibm.com>
Michael Meissner <meissner@linux.ibm.com>
* gcc.target/powerpc/cpu-future.c: Require powerpc_future_ok.
* gcc.target/powerpc/localentry-1.c: Likewise.
* gcc.target/powerpc/localentry-direct-1.c: Likewise.
* gcc.target/powerpc/notoc-direct-1.c: Likewise.
* gcc.target/powerpc/pcrel-sibcall-1.c: Likewise.
* lib/target-supports.exp (check_powerpc_future_hw_available): New.
(check_effective_target_powerpc_future_ok): New.
2019-05-31 Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> 2019-05-31 Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
PR debug/86964 PR debug/86964
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-require-effective-target powerpc_future_ok } */
/* { dg-options "-mdejagnu-cpu=future -O2" } */ /* { dg-options "-mdejagnu-cpu=future -O2" } */
/* Ensure -mcpu=future compiles cleanly. */ /* Ensure -mcpu=future compiles cleanly. */
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-mdejagnu-cpu=future -O2" } */ /* { dg-options "-mdejagnu-cpu=future -O2" } */
/* { dg-require-effective-target powerpc_elfv2 } */ /* { dg-require-effective-target powerpc_elfv2 } */
/* { dg-require-effective-target powerpc_future_ok } */
/* Ensure we generate ".localentry fn,1" for both leaf and non-leaf /* Ensure we generate ".localentry fn,1" for both leaf and non-leaf
functions. */ functions. */
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-require-effective-target powerpc_elfv2 } */ /* { dg-require-effective-target powerpc_elfv2 } */
/* { dg-require-effective-target powerpc_future_ok } */
/* { dg-options "-O2 -mdejagnu-cpu=future" } */ /* { dg-options "-O2 -mdejagnu-cpu=future" } */
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-mdejagnu-cpu=future -O2" } */ /* { dg-options "-mdejagnu-cpu=future -O2" } */
/* { dg-require-effective-target powerpc_elfv2 } */ /* { dg-require-effective-target powerpc_elfv2 } */
/* { dg-require-effective-target powerpc_future_ok } */
/* Test that calls generated from PC-relative code are /* Test that calls generated from PC-relative code are
annotated with @notoc. */ annotated with @notoc. */
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-mdejagnu-cpu=future -O2" } */ /* { dg-options "-mdejagnu-cpu=future -O2" } */
/* { dg-require-effective-target powerpc_elfv2 } */ /* { dg-require-effective-target powerpc_elfv2 } */
/* { dg-require-effective-target powerpc_future_ok } */
/* Test that potential sibcalls are not generated when the caller preserves /* Test that potential sibcalls are not generated when the caller preserves
the TOC and the callee doesn't, or vice versa. */ the TOC and the callee doesn't, or vice versa. */
......
...@@ -2140,6 +2140,25 @@ proc check_p9modulo_hw_available { } { ...@@ -2140,6 +2140,25 @@ proc check_p9modulo_hw_available { } {
}] }]
} }
# Return 1 if the target supports executing FUTURE instructions, 0 otherwise.
# Cache the result. It is assumed that if a simulator does not support the
# FUTURE instructions, that it will generate an error and this test will fail.
proc check_powerpc_future_hw_available { } {
return [check_cached_effective_target powerpc_future_hw_available {
check_runtime_nocache powerpc_future_hw_available {
int main()
{
/* Set e first and use +r to check if pli actually works. */
long e = -1;
asm ("pli %0,%1" : "+r" (e) : "n" (0x12345));
return (e == 0x12345);
}
} "-mfuture"
}]
}
# Return 1 if the target supports executing __float128 on PowerPC via software # Return 1 if the target supports executing __float128 on PowerPC via software
# emulation, 0 otherwise. Cache the result. # emulation, 0 otherwise. Cache the result.
...@@ -5157,6 +5176,24 @@ proc check_effective_target_powerpc_p9modulo_ok { } { ...@@ -5157,6 +5176,24 @@ proc check_effective_target_powerpc_p9modulo_ok { } {
} }
} }
# Return 1 if this is a PowerPC target supporting -mfuture.
# Limit this to 64-bit linux systems for now until other
# targets support FUTURE.
proc check_effective_target_powerpc_future_ok { } {
if { ([istarget powerpc64*-*-linux*]) } {
return [check_no_compiler_messages powerpc_future_ok object {
int main (void) {
long e;
asm ("pli %0,%1" : "=r" (e) : "n" (0x12345));
return e;
}
} "-mfuture"]
} else {
return 0
}
}
# Return 1 if this is a PowerPC target supporting -mfloat128 via either # Return 1 if this is a PowerPC target supporting -mfloat128 via either
# software emulation on power7/power8 systems or hardware support on power9. # software emulation on power7/power8 systems or hardware support on power9.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment