Commit 0c436cbd by Richard Sandiford Committed by Richard Sandiford

mips.exp: Use gcc-dg-runtest rather than dg-runtest.

gcc/testsuite/
	* gcc.target/mips/mips.exp: Use gcc-dg-runtest rather than dg-runtest.
	(mips_option_groups): Remove optimization.  Add various -f options.
	(mips-dg-options): Make -funroll-loops imply -funroll-all-loops
	and -pg imply -fno-omit-frame-pointer.
	* gcc.target/mips/abi-eabi32-long32.c: Remove optimization flag.
	* gcc.target/mips/abi-eabi32-long64.c: Likewise.
	* gcc.target/mips/abi-eabi64-long32.c: Likewise.
	* gcc.target/mips/abi-eabi64-long64.c: Likewise.
	* gcc.target/mips/abi-n32-long32-no-shared.c: Likewise.
	* gcc.target/mips/abi-n32-long32-pic.c: Likewise.
	* gcc.target/mips/abi-n32-long32.c: Likewise.
	* gcc.target/mips/abi-n32-long64-no-shared.c: Likewise.
	* gcc.target/mips/abi-n32-long64-pic.c: Likewise.
	* gcc.target/mips/abi-n32-long64.c: Likewise.
	* gcc.target/mips/abi-n64-long32-no-shared.c: Likewise.
	* gcc.target/mips/abi-n64-long32-pic.c: Likewise.
	* gcc.target/mips/abi-n64-long32.c: Likewise.
	* gcc.target/mips/abi-n64-long64-no-shared.c: Likewise.
	* gcc.target/mips/abi-n64-long64-pic.c: Likewise.
	* gcc.target/mips/abi-n64-long64.c: Likewise.
	* gcc.target/mips/abi-o32-long32-no-shared.c: Likewise.
	* gcc.target/mips/abi-o32-long32-pic.c: Likewise.
	* gcc.target/mips/abi-o32-long32.c: Likewise.
	* gcc.target/mips/abi-o32-long64-no-shared.c: Likewise.
	* gcc.target/mips/abi-o32-long64-pic.c: Likewise.
	* gcc.target/mips/abi-o32-long64.c: Likewise.
	* gcc.target/mips/abi-o64-long32-no-shared.c: Likewise.
	* gcc.target/mips/abi-o64-long32-pic.c: Likewise.
	* gcc.target/mips/abi-o64-long32.c: Likewise.
	* gcc.target/mips/abi-o64-long64-no-shared.c: Likewise.
	* gcc.target/mips/abi-o64-long64-pic.c: Likewise.
	* gcc.target/mips/abi-o64-long64.c: Likewise.
	* gcc.target/mips/asm-1.c: Likewise.
	* gcc.target/mips/branch-1.c: Likewise.
	* gcc.target/mips/call-3.c: Likewise.
	* gcc.target/mips/call-saved-3.c: Likewise.
	* gcc.target/mips/clear-cache-1.c: Likewise.
	* gcc.target/mips/div-1.c: Likewise.
	* gcc.target/mips/div-2.c: Likewise.
	* gcc.target/mips/div-3.c: Likewise.
	* gcc.target/mips/div-4.c: Likewise.
	* gcc.target/mips/div-5.c: Likewise.
	* gcc.target/mips/div-6.c: Likewise.
	* gcc.target/mips/div-7.c: Likewise.
	* gcc.target/mips/div-8.c: Likewise.
	* gcc.target/mips/div-9.c: Likewise.
	* gcc.target/mips/div-10.c: Likewise.
	* gcc.target/mips/div-11.c: Likewise.
	* gcc.target/mips/div-12.c: Likewise.
	* gcc.target/mips/dsp-ctrl.c: Likewise.
	* gcc.target/mips/dsp-no-lhx.c: Likewise.
	* gcc.target/mips/ext-8.c: Likewise.
	* gcc.target/mips/extend-2.c: Likewise.
	* gcc.target/mips/fix-r10000-1.c: Likewise.
	* gcc.target/mips/fix-r10000-2.c: Likewise.
	* gcc.target/mips/fix-r10000-3.c: Likewise.
	* gcc.target/mips/fix-r10000-4.c: Likewise.
	* gcc.target/mips/fix-r10000-5.c: Likewise.
	* gcc.target/mips/fix-r10000-6.c: Likewise.
	* gcc.target/mips/fix-r10000-7.c: Likewise.
	* gcc.target/mips/fix-r10000-8.c: Likewise.
	* gcc.target/mips/fix-r10000-9.c: Likewise.
	* gcc.target/mips/fix-r10000-10.c: Likewise.
	* gcc.target/mips/fix-r10000-11.c: Likewise.
	* gcc.target/mips/fix-r10000-12.c: Likewise.
	* gcc.target/mips/fix-r10000-13.c: Likewise.
	* gcc.target/mips/fix-r10000-14.c: Likewise.
	* gcc.target/mips/fix-r10000-15.c: Likewise.
	* gcc.target/mips/fpcmp-1.c: Likewise.
	* gcc.target/mips/fpcmp-2.c: Likewise.
	* gcc.target/mips/fpr-moves-7.c: Likewise.
	* gcc.target/mips/fpr-moves-8.c: Likewise.
	* gcc.target/mips/int-moves-1.c: Likewise.
	* gcc.target/mips/int-moves-2.c: Likewise.
	* gcc.target/mips/long-calls-pg.c: Likewise.
	* gcc.target/mips/loongson-muldiv-1.c: Likewise.
	* gcc.target/mips/loongson-muldiv-2.c: Likewise.
	* gcc.target/mips/loongson-shift-count-truncated-1.c: Likewise.
	* gcc.target/mips/loongson3a-muldiv-1.c: Likewise.
	* gcc.target/mips/loongson3a-muldiv-2.c: Likewise.
	* gcc.target/mips/mips-3d-1.c: Likewise.
	* gcc.target/mips/mips-3d-2.c: Likewise.
	* gcc.target/mips/mips-3d-3.c: Likewise.
	* gcc.target/mips/mips-3d-4.c: Likewise.
	* gcc.target/mips/mips-3d-5.c: Likewise.
	* gcc.target/mips/mips-3d-6.c: Likewise.
	* gcc.target/mips/mips-3d-7.c: Likewise.
	* gcc.target/mips/mips-3d-8.c: Likewise.
	* gcc.target/mips/mips-3d-9.c: Likewise.
	* gcc.target/mips/mips-ps-1.c: Likewise.
	* gcc.target/mips/mips-ps-2.c: Likewise.
	* gcc.target/mips/mips-ps-3.c: Likewise.
	* gcc.target/mips/mips-ps-4.c: Likewise.
	* gcc.target/mips/mips-ps-6.c: Likewise.
	* gcc.target/mips/mips32-dspr2.c: Likewise.
	* gcc.target/mips/mmcount-ra-address-1.c: Likewise.
	* gcc.target/mips/neg-abs-1.c: Likewise.
	* gcc.target/mips/neg-abs-2.c: Likewise.
	* gcc.target/mips/nmadd-3.c: Likewise.
	* gcc.target/mips/no-smartmips-lwxs.c: Likewise.
	* gcc.target/mips/no-smartmips-ror-1.c: Likewise.
	* gcc.target/mips/octeon-pop-1.c: Likewise.
	* gcc.target/mips/pr26765.c: Likewise.
	* gcc.target/mips/pr33256.c: Likewise.
	* gcc.target/mips/pr33635-1.c: Likewise.
	* gcc.target/mips/pr33755.c: Likewise.
	* gcc.target/mips/pr35802.c: Likewise.
	* gcc.target/mips/pr45074.c: Likewise.
	* gcc.target/mips/r10k-cache-barrier-1.c: Likewise.
	* gcc.target/mips/r10k-cache-barrier-2.c: Likewise.
	* gcc.target/mips/r10k-cache-barrier-3.c: Likewise.
	* gcc.target/mips/r10k-cache-barrier-4.c: Likewise.
	* gcc.target/mips/r10k-cache-barrier-5.c: Likewise.
	* gcc.target/mips/r10k-cache-barrier-6.c: Likewise.
	* gcc.target/mips/r10k-cache-barrier-7.c: Likewise.
	* gcc.target/mips/r10k-cache-barrier-8.c: Likewise.
	* gcc.target/mips/r10k-cache-barrier-9.c: Likewise.
	* gcc.target/mips/r10k-cache-barrier-11.c: Likewise.
	* gcc.target/mips/r10k-cache-barrier-12.c: Likewise.
	* gcc.target/mips/r10k-cache-barrier-13.c: Likewise.
	* gcc.target/mips/r10k-cache-barrier-14.c: Likewise.
	* gcc.target/mips/r10k-cache-barrier-15.c: Likewise.
	* gcc.target/mips/save-restore-1.c: Likewise.
	* gcc.target/mips/save-restore-3.c: Likewise.
	* gcc.target/mips/save-restore-5.c: Likewise.
	* gcc.target/mips/smartmips-ror-1.c: Likewise.
	* gcc.target/mips/smartmips-ror-2.c: Likewise.
	* gcc.target/mips/smartmips-ror-3.c: Likewise.
	* gcc.target/mips/smartmips-ror-4.c: Likewise.
	* gcc.target/mips/stack-1.c: Likewise.

	* gcc.target/mips/clear-cache-2.c: Remove optimization flag.
	Tighten regexps.

	* gcc.target/mips/branch-8.c: Arrange for the delay slot of the
	branch under test to be filled with preceding rather than
	following instructions.
	* gcc.target/mips/branch-10.c: Likewise.
	* gcc.target/mips/branch-11.c: Likewise.
	* gcc.target/mips/branch-12.c: Likewise.
	* gcc.target/mips/branch-13.c: Likewise.
	* gcc.target/mips/branch-9.c: Likewise.  Allow the frame pointer
	to be eliminated.  Tighten $28 scan-assembler-not test.

	* gcc.target/mips/call-2.c: Remove optimization flag.  Move second
	function to...
	* gcc.target/mips/call-4.c: ...this new test.

	* gcc.target/mips/code-readable-2.c: Rework to make a jump table
	more likely.
	* gcc.target/mips/code-readable-3.c: Likewise.
	* gcc.target/mips/code-readable-1.c: Likewise.  Remove optimization
	flag but skip for -O0.
	* gcc.target/mips/code-readable-4.c: Likewise.

	* gcc.target/mips/mips32-dsp-run.c: Prevent compile-time reduction
	of operations under test.
	* gcc.target/mips/mips32-dsp.c: Likewise.  Remove optimization flag.

	* gcc.target/mips/near-far-3.c: Remove optimization flag.
	Don't require sibling-call optimization.
	* gcc.target/mips/near-far-4.c: Likewise.

	* gcc.target/mips/no-dsp-1.c: Require -ffat-lto-objects.
	Make sure that the register variable is used.
	* gcc.target/mips/soft-float-1.c: Likewise.

	* gcc.target/mips/sdata-1.c: Make static data volatile.
	* gcc.target/mips/sdata-2.c: Likewise.
	* gcc.target/mips/sdata-3.c: Likewise.
	* gcc.target/mips/sdata-4.c: Likewise.

	* gcc.target/mips/20020620-1.c: Remove optimization flag but
	skip for -O0.
	* gcc.target/mips/atomic-memory-2.c: Likewise.
	* gcc.target/mips/branch-cost-1.c: Likewise.
	* gcc.target/mips/branch-cost-2.c: Likewise.
	* gcc.target/mips/cache-1.c: Likewise.
	* gcc.target/mips/call-1.c: Likewise.
	* gcc.target/mips/call-saved-2.c: Likewise.
	* gcc.target/mips/const-anchor-1.c: Likewise.
	* gcc.target/mips/const-anchor-2.c: Likewise.
	* gcc.target/mips/dse-1.c: Likewise.
	* gcc.target/mips/dsp-lhx.c: Likewise.
	* gcc.target/mips/dspr2-MULTU.c: Likewise.
	* gcc.target/mips/ext-1.c: Likewise.
	* gcc.target/mips/ext-2.c: Likewise.
	* gcc.target/mips/ext-3.c: Likewise.
	* gcc.target/mips/ext-4.c: Likewise.
	* gcc.target/mips/ext-5.c: Likewise.
	* gcc.target/mips/ext-6.c: Likewise.
	* gcc.target/mips/ext-7.c: Likewise.
	* gcc.target/mips/extend-1.c: Likewise.
	* gcc.target/mips/fix-r4000-1.c: Likewise.
	* gcc.target/mips/fix-r4000-3.c: Likewise.
	* gcc.target/mips/fix-r4000-5.c: Likewise.
	* gcc.target/mips/fix-r4000-6.c: Likewise.
	* gcc.target/mips/fix-r4000-8.c: Likewise.
	* gcc.target/mips/fix-r4000-10.c: Likewise.
	* gcc.target/mips/fixed-scalar-type.c: Likewise.
	* gcc.target/mips/fixed-vector-type.c: Likewise.
	* gcc.target/mips/fpr-moves-1.c: Likewise.
	* gcc.target/mips/fpr-moves-2.c: Likewise.
	* gcc.target/mips/fpr-moves-3.c: Likewise.
	* gcc.target/mips/fpr-moves-4.c: Likewise.
	* gcc.target/mips/fpr-moves-5.c: Likewise.
	* gcc.target/mips/fpr-moves-6.c: Likewise.
	* gcc.target/mips/ins-1.c: Likewise.
	* gcc.target/mips/ins-2.c: Likewise.
	* gcc.target/mips/interrupt_handler-2.c: Likewise.
	* gcc.target/mips/interrupt_handler-3.c: Likewise.
	* gcc.target/mips/lazy-binding-1.c: Likewise.
	* gcc.target/mips/madd-3.c: Likewise.
	* gcc.target/mips/madd-5.c: Likewise.
	* gcc.target/mips/madd-6.c: Likewise.
	* gcc.target/mips/madd-8.c: Likewise.
	* gcc.target/mips/madd-9.c: Likewise.
	* gcc.target/mips/memcpy-1.c: Likewise.
	* gcc.target/mips/mips-ps-type.c: Likewise.
	* gcc.target/mips/mips-ps-type-2.c: Likewise.
	* gcc.target/mips/mips-sched-madd.c: Likewise.
	* gcc.target/mips/mips16e-extends.c: Likewise.
	* gcc.target/mips/mips32r2-mxhc1.c: Likewise.
	* gcc.target/mips/mips64-dsp-ldx.c: Likewise.
	* gcc.target/mips/movcc-1.c: Likewise.
	* gcc.target/mips/movcc-2.c: Likewise.
	* gcc.target/mips/movcc-3.c: Likewise.
	* gcc.target/mips/msub-5.c: Likewise.
	* gcc.target/mips/msub-6.c: Likewise.
	* gcc.target/mips/msub-8.c: Likewise.
	* gcc.target/mips/mult-2.c: Likewise.
	* gcc.target/mips/mult-3.c: Likewise.
	* gcc.target/mips/mult-5.c: Likewise.
	* gcc.target/mips/mult-6.c: Likewise.
	* gcc.target/mips/mult-7.c: Likewise.
	* gcc.target/mips/mult-12.c: Likewise.
	* gcc.target/mips/mult-13.c: Likewise.
	* gcc.target/mips/mult-14.c: Likewise.
	* gcc.target/mips/mult-15.c: Likewise.
	* gcc.target/mips/mult-17.c: Likewise.
	* gcc.target/mips/mult-18.c: Likewise.
	* gcc.target/mips/mult-19.c: Likewise.
	* gcc.target/mips/nmadd-1.c: Likewise.
	* gcc.target/mips/nmadd-2.c: Likewise.
	* gcc.target/mips/octeon-baddu-1.c: Likewise.
	* gcc.target/mips/octeon-cins-1.c: Likewise.
	* gcc.target/mips/octeon-cins-2.c: Likewise.
	* gcc.target/mips/octeon-dmul-3.c: Likewise.
	* gcc.target/mips/octeon-exts-2.c: Likewise.
	* gcc.target/mips/octeon-exts-3.c: Likewise.
	* gcc.target/mips/octeon-exts-4.c: Likewise.
	* gcc.target/mips/octeon-exts-5.c: Likewise.
	* gcc.target/mips/octeon-exts-6.c: Likewise.
	* gcc.target/mips/octeon-exts-7.c: Likewise.
	* gcc.target/mips/octeon-pop-2.c: Likewise.
	* gcc.target/mips/octeon-seq-3.c: Likewise.
	* gcc.target/mips/octeon-seq-4.c: Likewise.
	* gcc.target/mips/octeon2-lx-1.c: Likewise.
	* gcc.target/mips/octeon2-lx-2.c: Likewise.
	* gcc.target/mips/octeon2-lx-3.c: Likewise.
	* gcc.target/mips/pr54240.c: Likewise.
	* gcc.target/mips/rsqrt-1.c: Likewise.
	* gcc.target/mips/rsqrt-2.c: Likewise.
	* gcc.target/mips/rsqrt-3.c: Likewise.
	* gcc.target/mips/rsqrt-4.c: Likewise.
	* gcc.target/mips/save-restore-2.c: Likewise.
	* gcc.target/mips/save-restore-4.c: Likewise.
	* gcc.target/mips/sb1-1.c: Likewise.
	* gcc.target/mips/scc-1.c: Likewise.
	* gcc.target/mips/scc-2.c: Likewise.
	* gcc.target/mips/scc-3.c: Likewise.
	* gcc.target/mips/scc-4.c: Likewise.
	* gcc.target/mips/smartmips-lwxs.c: Likewise.
	* gcc.target/mips/truncate-1.c: Likewise.
	* gcc.target/mips/truncate-2.c: Likewise.
	* gcc.target/mips/truncate-3.c: Likewise.
	* gcc.target/mips/truncate-4.c: Likewise.
	* gcc.target/mips/truncate-5.c: Likewise.
	* gcc.target/mips/truncate-6.c: Likewise.
	* gcc.target/mips/unaligned-1.c: Likewise.

	* gcc.target/mips/dpaq_sa_l_w.c: Remove optimization flag but
	skip for -O0.  Require -fexpensive-optimizations.
	* gcc.target/mips/dpsq_sa_l_w.c: Likewise.
	* gcc.target/mips/dspr2-MULT.c: Likewise.
	* gcc.target/mips/fix-r4000-2.c: Likewise.
	* gcc.target/mips/fix-r4000-4.c: Likewise.
	* gcc.target/mips/fix-r4000-7.c: Likewise.
	* gcc.target/mips/fix-r4000-9.c: Likewise.
	* gcc.target/mips/madd-1.c: Likewise.
	* gcc.target/mips/madd-2.c: Likewise.
	* gcc.target/mips/madd-4.c: Likewise.
	* gcc.target/mips/maddu-1.c: Likewise.
	* gcc.target/mips/maddu-2.c: Likewise.
	* gcc.target/mips/maddu-3.c: Likewise.
	* gcc.target/mips/maddu-4.c: Likewise.
	* gcc.target/mips/msub-1.c: Likewise.
	* gcc.target/mips/msub-2.c: Likewise.
	* gcc.target/mips/msub-3.c: Likewise.
	* gcc.target/mips/msub-4.c: Likewise.
	* gcc.target/mips/msubu-1.c: Likewise.
	* gcc.target/mips/msubu-2.c: Likewise.
	* gcc.target/mips/msubu-3.c: Likewise.
	* gcc.target/mips/msubu-4.c: Likewise.
	* gcc.target/mips/mult-1.c: Likewise.
	* gcc.target/mips/mult-4.c: Likewise.
	* gcc.target/mips/mult-8.c: Likewise.
	* gcc.target/mips/mult-9.c: Likewise.
	* gcc.target/mips/mult-10.c: Likewise.
	* gcc.target/mips/mult-11.c: Likewise.
	* gcc.target/mips/mult-16.c: Likewise.

	* gcc.target/mips/fix-r4000-11.c: Remove optimization flag but
	skip for -O0 and -Os.
	* gcc.target/mips/fix-r4000-12.c: Likewise.
	* gcc.target/mips/madd-7.c: Likewise.
	* gcc.target/mips/mips-ps-5.c: Likewise.
	* gcc.target/mips/mips-ps-7.c: Likewise.
	* gcc.target/mips/msub-7.c: Likewise.

	* gcc.target/mips/mmcount-ra-address-2.c: Remove optimization flag but
	skip for -O0.  Require -mno-abicalls.
	* gcc.target/mips/mmcount-ra-address-3.c: Likewise.

	* gcc.target/mips/octeon-bbit-1.c: Remove optimization flag but
	skip for -O0.  Require a total number of BBIT instructions and
	at least one of each kind.

	* gcc.target/mips/octeon-bbit-2.c: Remove optimization flag but
	skip for -O0.  Require -fno-unroll-loops.

	* gcc.target/mips/octeon-bbit-3.c: Remove optimization flag but
	skip for -O0.  Allow BLTZ as well as BGEZ.

	* gcc.target/mips/octeon-dmul-2.c: Skip for -Os.

	* gcc.target/mips/octeon-pipe-1.c: Remove optimization flag but
	skip for -O0.  Require -fschedule-insns2.
	* gcc.target/mips/octeon2-pipe-1.c: Likewise.

	* gcc.target/mips/r10k-cache-barrier-10.c: Remove optimization flag
	but skip for -O0.  Make a branch-likely more likely.

	* gcc.target/mips/timode-2.c: Split each test into its own function.
	* gcc.target/mips/timode-1.c: Likewise.  Skip for -Os.

	* gcc.target/mips/vr-mult-1.c: Remove optimization flag but
	skip for -O0.  Require -fpeephole2.
	* gcc.target/mips/vr-mult-2.c: Likewise.

From-SVN: r190718
parent cb038fd2
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -mlong64" } */ /* { dg-options "-mlong64" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
int foo (int *x, int i) int foo (int *x, int i)
{ {
return x[i] + i; return x[i] + i;
......
/* { dg-options "-mabi=eabi -mgp32 -mlong32 -O2" } */ /* { dg-options "-mabi=eabi -mgp32 -mlong32" } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=eabi -mgp32 -mlong64 -O2" } */ /* { dg-options "-mabi=eabi -mgp32 -mlong64" } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=eabi -mgp64 -mlong32 -O2" } */ /* { dg-options "-mabi=eabi -mgp64 -mlong32" } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=eabi -mgp64 -mlong64 -O2" } */ /* { dg-options "-mabi=eabi -mgp64 -mlong64" } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=n32 -mlong32 -mabicalls -mno-shared -mno-plt -O2" } */ /* { dg-options "-mabi=n32 -mlong32 -mabicalls -mno-shared -mno-plt" } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=n32 -mlong32 -fpic -O2" } */ /* { dg-options "-mabi=n32 -mlong32 -fpic" } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=n32 -mlong32 addressing=absolute -O2" } */ /* { dg-options "-mabi=n32 -mlong32 addressing=absolute" } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=n32 -mlong64 -mabicalls -mno-shared -mno-plt -O2" } */ /* { dg-options "-mabi=n32 -mlong64 -mabicalls -mno-shared -mno-plt" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */ /* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=n32 -mlong64 -fpic -O2" } */ /* { dg-options "-mabi=n32 -mlong64 -fpic" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */ /* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=n32 -mlong64 addressing=absolute -O2" } */ /* { dg-options "-mabi=n32 -mlong64 addressing=absolute" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */ /* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=64 -mlong32 -mabicalls -mno-shared -mno-plt -O2" } */ /* { dg-options "-mabi=64 -mlong32 -mabicalls -mno-shared -mno-plt" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */ /* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=64 -mlong32 -fpic -O2" } */ /* { dg-options "-mabi=64 -mlong32 -fpic" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */ /* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=64 -mlong32 addressing=absolute -O2" } */ /* { dg-options "-mabi=64 -mlong32 addressing=absolute" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */ /* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=64 -mlong64 -mabicalls -mno-shared -mno-plt -O2" } */ /* { dg-options "-mabi=64 -mlong64 -mabicalls -mno-shared -mno-plt" } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=64 -mlong64 -fpic -O2" } */ /* { dg-options "-mabi=64 -mlong64 -fpic" } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=64 -mlong64 addressing=absolute -O2" } */ /* { dg-options "-mabi=64 -mlong64 addressing=absolute" } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=32 -mlong32 -mabicalls -mno-shared -mno-plt -O2" } */ /* { dg-options "-mabi=32 -mlong32 -mabicalls -mno-shared -mno-plt" } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=32 -mlong32 -fpic -O2" } */ /* { dg-options "-mabi=32 -mlong32 -fpic" } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=32 -mlong32 addressing=absolute -O2" } */ /* { dg-options "-mabi=32 -mlong32 addressing=absolute" } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=32 -mlong64 -mabicalls -mno-shared -mno-plt -O2" } */ /* { dg-options "-mabi=32 -mlong64 -mabicalls -mno-shared -mno-plt" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */ /* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=32 -mlong64 -fpic -O2" } */ /* { dg-options "-mabi=32 -mlong64 -fpic" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */ /* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=32 -mlong64 addressing=absolute -O2" } */ /* { dg-options "-mabi=32 -mlong64 addressing=absolute" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */ /* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=o64 -mlong32 -mabicalls -mno-shared -mno-plt -O2" } */ /* { dg-options "-mabi=o64 -mlong32 -mabicalls -mno-shared -mno-plt" } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=o64 -mlong32 -fpic -O2" } */ /* { dg-options "-mabi=o64 -mlong32 -fpic" } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=o64 -mlong32 addressing=absolute -O2" } */ /* { dg-options "-mabi=o64 -mlong32 addressing=absolute" } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=o64 -mlong64 -mabicalls -mno-shared -mno-plt -O2" } */ /* { dg-options "-mabi=o64 -mlong64 -mabicalls -mno-shared -mno-plt" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */ /* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=o64 -mlong64 -fpic -O2" } */ /* { dg-options "-mabi=o64 -mlong64 -fpic" } */
/* { dg-error "is incompatible with" "" { target *-*-* } 0 } */ /* { dg-error "is incompatible with" "" { target *-*-* } 0 } */
#include "abi-main.h" #include "abi-main.h"
/* { dg-options "-mabi=o64 -mlong64 -mno-abicalls -O2" } */ /* { dg-options "-mabi=o64 -mlong64 -mno-abicalls" } */
#include "abi-main.h" #include "abi-main.h"
/* PR target/17565. GCC used to put the asm into the delay slot /* PR target/17565. GCC used to put the asm into the delay slot
of the call. */ of the call. */
/* { dg-do assemble } */ /* { dg-do assemble } */
/* { dg-options "-O" } */
NOMIPS16 int foo (int n) NOMIPS16 int foo (int n)
{ {
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 isa>=2 -mabi=32" } */ /* { dg-options "isa>=2 -mabi=32" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "addiu" } } */ /* { dg-final { scan-assembler "addiu" } } */
/* { dg-final { scan-assembler-not "subu" } } */ /* { dg-final { scan-assembler-not "subu" } } */
NOMIPS16 unsigned long NOMIPS16 unsigned long
f(unsigned long *p) f(unsigned long *p)
{ {
return __sync_fetch_and_sub (p, 5); return __sync_fetch_and_sub (p, 5);
} }
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
but we test for "bbit" elsewhere. On other targets, we should implement but we test for "bbit" elsewhere. On other targets, we should implement
the "if" statements using an "andi" instruction followed by a branch the "if" statements using an "andi" instruction followed by a branch
on zero. */ on zero. */
/* { dg-options "-O2 forbid_cpu=octeon.*" } */ /* { dg-options "forbid_cpu=octeon.*" } */
void bar (void); void bar (void);
NOMIPS16 void f1 (int x) { if (x & 4) bar (); } NOMIPS16 void f1 (int x) { if (x & 4) bar (); }
......
...@@ -5,9 +5,9 @@ ...@@ -5,9 +5,9 @@
#include "branch-helper.h" #include "branch-helper.h"
NOMIPS16 void NOMIPS16 void
foo (void (*bar) (void), volatile int *x) foo (int (*bar) (void), int *x)
{ {
bar (); *x = bar ();
if (__builtin_expect (*x == 0, 1)) if (__builtin_expect (*x == 0, 1))
OCCUPY_0x1fff8; OCCUPY_0x1fff8;
} }
...@@ -9,9 +9,9 @@ ...@@ -9,9 +9,9 @@
#include "branch-helper.h" #include "branch-helper.h"
NOMIPS16 void NOMIPS16 void
foo (void (*bar) (void), volatile int *x) foo (int (*bar) (void), int *x)
{ {
bar (); *x = bar ();
if (__builtin_expect (*x == 0, 1)) if (__builtin_expect (*x == 0, 1))
OCCUPY_0x1fffc; OCCUPY_0x1fffc;
} }
...@@ -5,9 +5,9 @@ ...@@ -5,9 +5,9 @@
#include "branch-helper.h" #include "branch-helper.h"
NOMIPS16 void NOMIPS16 void
foo (void (*bar) (void), volatile int *x) foo (int (*bar) (void), int *x)
{ {
bar (); *x = bar ();
if (__builtin_expect (*x == 0, 1)) if (__builtin_expect (*x == 0, 1))
OCCUPY_0x1fff8; OCCUPY_0x1fff8;
} }
...@@ -9,9 +9,9 @@ ...@@ -9,9 +9,9 @@
#include "branch-helper.h" #include "branch-helper.h"
NOMIPS16 void NOMIPS16 void
foo (void (*bar) (void), volatile int *x) foo (int (*bar) (void), int *x)
{ {
bar (); *x = bar ();
if (__builtin_expect (*x == 0, 1)) if (__builtin_expect (*x == 0, 1))
OCCUPY_0x1fffc; OCCUPY_0x1fffc;
} }
...@@ -5,9 +5,9 @@ ...@@ -5,9 +5,9 @@
#include "branch-helper.h" #include "branch-helper.h"
NOMIPS16 void NOMIPS16 void
foo (void (*bar) (void), volatile int *x) foo (int (*bar) (void), int *x)
{ {
bar (); *x = bar ();
if (__builtin_expect (*x == 0, 1)) if (__builtin_expect (*x == 0, 1))
OCCUPY_0x1fff8; OCCUPY_0x1fff8;
} }
/* { dg-options "-mshared -mabi=32" } */ /* { dg-options "-mshared -mabi=32" } */
/* { dg-final { scan-assembler "\t\\.cpload\t\\\$25\n" } } */ /* { dg-final { scan-assembler "\t\\.cpload\t\\\$25\n" } } */
/* { dg-final { scan-assembler "\t\\.cprestore\t16\n" } } */ /* { dg-final { scan-assembler "\t\\.cprestore\t16\n" } } */
/* { dg-final { scan-assembler "\tlw\t\\\$1,16\\(\\\$fp\\)\n" } } */ /* { dg-final { scan-assembler "\tlw\t\\\$1,16\\(\\\$(fp|sp)\\)\n" } } */
/* { dg-final { scan-assembler "\tlw\t\\\$1,%got\\(\[^)\]*\\)\\(\\\$1\\)\n" } } */ /* { dg-final { scan-assembler "\tlw\t\\\$1,%got\\(\[^)\]*\\)\\(\\\$1\\)\n" } } */
/* { dg-final { scan-assembler "\taddiu\t\\\$1,\\\$1,%lo\\(\[^)\]*\\)\n" } } */ /* { dg-final { scan-assembler "\taddiu\t\\\$1,\\\$1,%lo\\(\[^)\]*\\)\n" } } */
/* { dg-final { scan-assembler "\tjr\t\\\$1\n" } } */ /* { dg-final { scan-assembler "\tjr\t\\\$1\n" } } */
/* { dg-final { scan-assembler-not "\tlw\t\\\$28,16\\(\\\$sp\\)\n" } } */ /* { dg-final { scan-assembler-not "\\\$28" } } */
#include "branch-helper.h" #include "branch-helper.h"
NOMIPS16 void NOMIPS16 void
foo (void (*bar) (void), volatile int *x) foo (int (*bar) (void), int *x)
{ {
bar (); *x = bar ();
if (__builtin_expect (*x == 0, 1)) if (__builtin_expect (*x == 0, 1))
OCCUPY_0x1fffc; OCCUPY_0x1fffc;
} }
/* { dg-options "-mbranch-cost=1 isa>=4 -O2" } */ /* { dg-options "-mbranch-cost=1 isa>=4" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 int NOMIPS16 int
foo (int x, int y, int z, int k) foo (int x, int y, int z, int k)
{ {
......
/* { dg-options "-mbranch-cost=10 isa>=4 -O2" } */ /* { dg-options "-mbranch-cost=10 isa>=4" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 int NOMIPS16 int
foo (int x, int y, int z, int k) foo (int x, int y, int z, int k)
{ {
......
/* { dg-options "-O2 isa>=3" } */ /* { dg-options "isa>=3" } */
/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
NOMIPS16 void NOMIPS16 void
f1 (int *area) f1 (int *area)
......
/* { dg-options "-O2 -mrelax-pic-calls -mshared" } */ /* { dg-options "-mrelax-pic-calls -mshared -foptimize-sibling-calls" } */
/* { dg-skip-if "requires -foptimize-sibling-calls" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,normal\n1:\tjalr\t" } } */ /* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,normal\n1:\tjalr\t" } } */
/* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,normal2\n1:\tjalr\t" } } */ /* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,normal2\n1:\tjalr\t" } } */
/* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,staticfunc\n1:\tjalr\t" } } */ /* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,staticfunc\n1:\tjalr\t" } } */
......
/* See through some simple data-flow. */ /* See through some simple data-flow. */
/* { dg-options "-O2 -mrelax-pic-calls" } */ /* { dg-options "-mrelax-pic-calls" } */
/* { dg-final { scan-assembler-times "\\.reloc\t1f,R_MIPS_JALR,g\n1:\tjalr\t" 3 } } */ /* { dg-final { scan-assembler-times "\\.reloc\t1f,R_MIPS_JALR,g\n1:\tjalr\t" 2 } } */
NOMIPS16 f (int i) NOMIPS16 f ()
{
while (i--)
g ();
}
NOMIPS16 ff ()
{ {
g (); g ();
g (); g ();
......
/* { dg-options "-O2 -mrelax-pic-calls -mno-shared" } */ /* { dg-options "-mrelax-pic-calls -mno-shared" } */
/* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,g\n1:\tjalr\t" } } */ /* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,g\n1:\tjalr\t" } } */
/* { dg-require-visibility "" } */ /* { dg-require-visibility "" } */
......
/* See through some simple data-flow. */
/* { dg-options "-mrelax-pic-calls" } */
/* { dg-final { scan-assembler "\\.reloc\t1f,R_MIPS_JALR,g\n1:\tjalr\t" } } */
NOMIPS16 f (int i)
{
while (i--)
g ();
}
/* Check that we save non-MIPS16 GPRs if they are explicitly clobbered. */ /* Check that we save non-MIPS16 GPRs if they are explicitly clobbered. */
/* { dg-options "(-mips16) isa_rev=0 -O2" } */ /* { dg-options "(-mips16) isa_rev=0" } */
/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
MIPS16 void MIPS16 void
foo (void) foo (void)
......
/* Check that we save all call-saved GPRs in a MIPS16 __builtin_setjmp /* Check that we save all call-saved GPRs in a MIPS16 __builtin_setjmp
function. */ function. */
/* { dg-options "(-mips16) isa_rev=0 -O2" } */ /* { dg-options "(-mips16) isa_rev=0" } */
void bar (void); void bar (void);
extern int buf[]; extern int buf[];
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -msynci isa_rev>=2" } */ /* { dg-options "-msynci isa_rev>=2" } */
/* { dg-final { scan-assembler "synci" } } */ /* { dg-final { scan-assembler "synci" } } */
/* { dg-final { scan-assembler "jr.hb" } } */ /* { dg-final { scan-assembler "jr.hb" } } */
/* { dg-final { scan-assembler-not "_flush_cache|mips_sync_icache|_cacheflush" } } */ /* { dg-final { scan-assembler-not "_flush_cache|mips_sync_icache|_cacheflush" } } */
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -mips32" } */ /* { dg-options "-mips32" } */
/* { dg-final { scan-assembler-not "synci" } } */ /* { dg-final { scan-assembler-not "\tsynci" } } */
/* { dg-final { scan-assembler-not "jr.hb" } } */ /* { dg-final { scan-assembler-not "\tjr.hb" } } */
/* { dg-final { scan-assembler "_flush_cache|mips_sync_icache|_cacheflush" } } */ /* { dg-final { scan-assembler "_flush_cache|mips_sync_icache|_cacheflush" } } */
void f() void f()
......
/* { dg-options "(-mips16) -mcode-readable=yes -mgp32 addressing=absolute -O" } */ /* { dg-options "(-mips16) -mcode-readable=yes -mgp32 addressing=absolute" } */
/* { dg-skip-if ".half requires -O" { *-*-* } { "-O0" } { "" } } */
volatile int x1;
volatile int x2;
volatile int x3;
volatile int x4;
volatile int x5;
volatile int x6;
volatile int x7;
MIPS16 int MIPS16 int
foo (int i) foo (int i, volatile *x)
{ {
switch (i) switch (i)
{ {
case 1: return 40; case 1: return x1 + x[0];
case 2: return 11; case 2: return x2 + x[1];
case 3: return 29; case 3: return x3 + x[2];
case 4: return 10; case 4: return x4 + x[3];
case 5: return 12; case 5: return x5 + x[4];
case 6: return 35; case 6: return x6 + x[5];
case 7: return 23; case 7: return x7 + x[6];
default: return 0; default: return 0;
} }
} }
......
/* { dg-options "(-mips16) -mcode-readable=pcrel -mgp32 addressing=absolute" } */ /* { dg-options "(-mips16) -mcode-readable=pcrel -mgp32 addressing=absolute" } */
volatile int x1;
volatile int x2;
volatile int x3;
volatile int x4;
volatile int x5;
volatile int x6;
volatile int x7;
MIPS16 int MIPS16 int
foo (int i) foo (int i, volatile *x)
{ {
switch (i) switch (i)
{ {
case 1: return 40; case 1: return x1 + x[0];
case 2: return 11; case 2: return x2 + x[1];
case 3: return 29; case 3: return x3 + x[2];
case 4: return 10; case 4: return x4 + x[3];
case 5: return 12; case 5: return x5 + x[4];
case 6: return 35; case 6: return x6 + x[5];
case 7: return 23; case 7: return x7 + x[6];
default: return 0; default: return 0;
} }
} }
......
/* { dg-options "(-mips16) -mcode-readable=no -mgp32 addressing=absolute" } */ /* { dg-options "(-mips16) -mcode-readable=no -mgp32 addressing=absolute" } */
volatile int x1;
volatile int x2;
volatile int x3;
volatile int x4;
volatile int x5;
volatile int x6;
volatile int x7;
MIPS16 int MIPS16 int
foo (int i) foo (int i, volatile *x)
{ {
switch (i) switch (i)
{ {
case 1: return 40; case 1: return x1 + x[0];
case 2: return 11; case 2: return x2 + x[1];
case 3: return 29; case 3: return x3 + x[2];
case 4: return 10; case 4: return x4 + x[3];
case 5: return 12; case 5: return x5 + x[4];
case 6: return 35; case 6: return x6 + x[5];
case 7: return 23; case 7: return x7 + x[6];
default: return 0; default: return 0;
} }
} }
......
/* { dg-options "(-mips16) -mcode-readable=yes -mabi=eabi -mgp64 -O" } */ /* { dg-options "(-mips16) -mcode-readable=yes -mabi=eabi -mgp64" } */
/* { dg-skip-if ".half requires -O" { *-*-* } { "-O0" } { "" } } */
volatile int x1;
volatile int x2;
volatile int x3;
volatile int x4;
volatile int x5;
volatile int x6;
volatile int x7;
MIPS16 int MIPS16 int
foo (int i) foo (int i, volatile *x)
{ {
switch (i) switch (i)
{ {
case 1: return 40; case 1: return x1 + x[0];
case 2: return 11; case 2: return x2 + x[1];
case 3: return 29; case 3: return x3 + x[2];
case 4: return 10; case 4: return x4 + x[3];
case 5: return 12; case 5: return x5 + x[4];
case 6: return 35; case 6: return x6 + x[5];
case 7: return 23; case 7: return x7 + x[6];
default: return 0; default: return 0;
} }
} }
......
/* Derive a constant (0x1233ffff) from an intermediate value /* Derive a constant (0x1233ffff) from an intermediate value
(0x1234000) used to build another constant. */ (0x1234000) used to build another constant. */
/* { dg-options "-O" } */ /* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "0x12330000|305332224" } } */ /* { dg-final { scan-assembler-not "0x12330000|305332224" } } */
/* { dg-final { scan-assembler "addiu\t\\\$5,\\\$\[0-9\]*,-1" } } */ /* { dg-final { scan-assembler "addiu\t\\\$5,\\\$\[0-9\]*,-1" } } */
......
/* Derive a constant (0x30001) from another constant. */ /* Derive a constant (0x30001) from another constant. */
/* { dg-options "-O" } */ /* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-not "0x300000|196608" } } */ /* { dg-final { scan-assembler-not "0x300000|196608" } } */
/* { dg-final { scan-assembler "addiu\t\\\$5,\\\$\[0-9\]*,32763" } } */ /* { dg-final { scan-assembler "addiu\t\\\$5,\\\$\[0-9\]*,32763" } } */
......
/* { dg-options "-O -mgp64 (-mips16)" } */ /* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tddiv\t" } } */ /* { dg-final { scan-assembler "\tddiv\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */ /* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */ /* { dg-final { scan-assembler-not "\tmfhi\t" } } */
......
/* { dg-options "-O -mgp64 (-mips16)" } */ /* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdivu\t" } } */ /* { dg-final { scan-assembler "\tdivu\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */ /* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */ /* { dg-final { scan-assembler-not "\tmfhi\t" } } */
......
/* { dg-options "-O -mgp64 (-mips16)" } */ /* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdiv\t" } } */ /* { dg-final { scan-assembler "\tdiv\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */ /* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */ /* { dg-final { scan-assembler "\tmfhi\t" } } */
......
/* { dg-options "-O -mgp64 (-mips16)" } */ /* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdivu\t" } } */ /* { dg-final { scan-assembler "\tdivu\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */ /* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */ /* { dg-final { scan-assembler "\tmfhi\t" } } */
......
/* { dg-options "-O -mgp64 (-mips16)" } */ /* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tddivu\t" } } */ /* { dg-final { scan-assembler "\tddivu\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */ /* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */ /* { dg-final { scan-assembler-not "\tmfhi\t" } } */
......
/* { dg-options "-O -mgp64 (-mips16)" } */ /* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tddiv\t" } } */ /* { dg-final { scan-assembler "\tddiv\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */ /* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */ /* { dg-final { scan-assembler "\tmfhi\t" } } */
......
/* { dg-options "-O -mgp64 (-mips16)" } */ /* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tddivu\t" } } */ /* { dg-final { scan-assembler "\tddivu\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */ /* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */ /* { dg-final { scan-assembler "\tmfhi\t" } } */
......
/* { dg-options "-O -mgp64 (-mips16)" } */ /* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdiv\t" } } */ /* { dg-final { scan-assembler "\tdiv\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */ /* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */ /* { dg-final { scan-assembler-not "\tmfhi\t" } } */
......
/* { dg-options "-O -mgp64 (-mips16)" } */ /* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdivu\t" } } */ /* { dg-final { scan-assembler "\tdivu\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */ /* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */ /* { dg-final { scan-assembler-not "\tmfhi\t" } } */
......
/* { dg-options "-O -mgp64 (-mips16)" } */ /* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdiv\t" } } */ /* { dg-final { scan-assembler "\tdiv\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */ /* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */ /* { dg-final { scan-assembler "\tmfhi\t" } } */
......
/* { dg-options "-O -mgp64 (-mips16)" } */ /* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdivu\t" } } */ /* { dg-final { scan-assembler "\tdivu\t" } } */
/* { dg-final { scan-assembler-not "\tmflo\t" } } */ /* { dg-final { scan-assembler-not "\tmflo\t" } } */
/* { dg-final { scan-assembler "\tmfhi\t" } } */ /* { dg-final { scan-assembler "\tmfhi\t" } } */
......
/* { dg-options "-O -mgp64 (-mips16)" } */ /* { dg-options "-mgp64 (-mips16)" } */
/* { dg-final { scan-assembler "\tdiv\t" } } */ /* { dg-final { scan-assembler "\tdiv\t" } } */
/* { dg-final { scan-assembler "\tmflo\t" } } */ /* { dg-final { scan-assembler "\tmflo\t" } } */
/* { dg-final { scan-assembler-not "\tmfhi\t" } } */ /* { dg-final { scan-assembler-not "\tmfhi\t" } } */
......
/* { dg-do compile { target { fixed_point } } } */ /* { dg-do compile { target { fixed_point } } } */
/* { dg-options "-O2 -mgp32 -mdsp" } */ /* This test requires widening_mul */
/* { dg-options "-mgp32 -mdsp -fexpensive-optimizations" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tdpaq_sa.l.w\t\\\$ac" 3 } } */ /* { dg-final { scan-assembler-times "\tdpaq_sa.l.w\t\\\$ac" 3 } } */
NOMIPS16 _Sat long long _Fract NOMIPS16 _Sat long long _Fract
......
/* { dg-do compile { target { fixed_point } } } */ /* { dg-do compile { target { fixed_point } } } */
/* { dg-options "-O2 -mgp32 -mdsp" } */ /* This test requires widening_mul */
/* { dg-options "-mgp32 -mdsp -fexpensive-optimizations" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tdpsq_sa.l.w\t\\\$ac" 2 } } */ /* { dg-final { scan-assembler-times "\tdpsq_sa.l.w\t\\\$ac" 2 } } */
NOMIPS16 _Sat long long _Fract NOMIPS16 _Sat long long _Fract
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-mgp64 -O" } */ /* { dg-options "-mgp64" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
#define TEST(ID, TYPE1, TYPE2) \ #define TEST(ID, TYPE1, TYPE2) \
union u##ID { \ union u##ID { \
......
/* { dg-do run } */ /* { dg-do run } */
/* { dg-options "-O2 -mdsp -mgp32" } */ /* { dg-options "-mdsp -mgp32" } */
extern void abort (void); extern void abort (void);
extern void exit (int); extern void exit (int);
......
/* Test MIPS32 DSP LHX instruction */ /* Test MIPS32 DSP LHX instruction */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-mgp32 -mdsp -O2" } */ /* { dg-options "-mgp32 -mdsp" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tlhx\t" } } */ /* { dg-final { scan-assembler "\tlhx\t" } } */
......
/* Test MIPS32 DSP LHX instruction */ /* Test MIPS32 DSP LHX instruction */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-mgp32 -mdsp -O2" } */ /* { dg-options "-mgp32 -mdsp" } */
/* { dg-final { scan-assembler-not "\tlhx\t" } } */ /* { dg-final { scan-assembler-not "\tlhx\t" } } */
......
/* Test MIPS32 DSP REV 2 MULT instruction. Tune for a CPU that has /* Test MIPS32 DSP REV 2 MULT instruction. Tune for a CPU that has
pipelined mult. */ pipelined mult. */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-mgp32 -mdspr2 -O2 -mtune=74kc" } */ /* This test requires widening_mul */
/* { dg-options "-mgp32 -mdspr2 -mtune=74kc -fexpensive-optimizations" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* See PR target/51729 for the reason behind the XFAILs. */ /* See PR target/51729 for the reason behind the XFAILs. */
/* { dg-final { scan-assembler "\tmult\t" } } */ /* { dg-final { scan-assembler "\tmult\t" } } */
......
/* Test MIPS32 DSP REV 2 MULTU instruction. Tune for a CPU that has /* Test MIPS32 DSP REV 2 MULTU instruction. Tune for a CPU that has
pipelined multu. */ pipelined multu. */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-mgp32 -mdspr2 -O2 -mtune=74kc" } */ /* { dg-options "-mgp32 -mdspr2 -mtune=74kc" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* See PR target/51729 for the reason behind the XFAILs. */ /* See PR target/51729 for the reason behind the XFAILs. */
/* { dg-final { scan-assembler "\tmultu\t" } } */ /* { dg-final { scan-assembler "\tmultu\t" } } */
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O isa_rev>=2 -mgp64" } */ /* { dg-options "isa_rev>=2 -mgp64" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdext\t" } } */ /* { dg-final { scan-assembler "\tdext\t" } } */
/* { dg-final { scan-assembler-not "and" } } */ /* { dg-final { scan-assembler-not "and" } } */
......
...@@ -2,7 +2,8 @@ ...@@ -2,7 +2,8 @@
zero_extract. The truncate is due to TARGET_PROMOTE_PROTOTYPES, the zero_extract. The truncate is due to TARGET_PROMOTE_PROTOTYPES, the
zero_extend to PROMOTE_MODE. */ zero_extend to PROMOTE_MODE. */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O isa_rev>=2 -mgp64" } */ /* { dg-options "isa_rev>=2 -mgp64" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdext\t" } } */ /* { dg-final { scan-assembler "\tdext\t" } } */
/* { dg-final { scan-assembler-not "and" } } */ /* { dg-final { scan-assembler-not "and" } } */
/* { dg-final { scan-assembler-not "srl" } } */ /* { dg-final { scan-assembler-not "srl" } } */
......
/* For MIPS64r2 use DEXT rather than DSLL/DSRL to zero-extend. */ /* For MIPS64r2 use DEXT rather than DSLL/DSRL to zero-extend. */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O isa_rev>=2 -mgp64" } */ /* { dg-options "isa_rev>=2 -mgp64" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdext\t" } } */ /* { dg-final { scan-assembler "\tdext\t" } } */
/* { dg-final { scan-assembler-not "sll" } } */ /* { dg-final { scan-assembler-not "sll" } } */
......
/* For MIPS64r2 use DEXT rather than DSLL/DSRL for clear_upper32. */ /* For MIPS64r2 use DEXT rather than DSLL/DSRL for clear_upper32. */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O isa_rev>=2 -mgp64" } */ /* { dg-options "isa_rev>=2 -mgp64" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdext\t" } } */ /* { dg-final { scan-assembler "\tdext\t" } } */
/* { dg-final { scan-assembler-not "sll" } } */ /* { dg-final { scan-assembler-not "sll" } } */
......
/* For MIPS32r2 use EXT when ANDing with low-order bitmasks. */ /* For MIPS32r2 use EXT when ANDing with low-order bitmasks. */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O isa_rev>=2" } */ /* { dg-options "isa_rev>=2" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\text\t" } } */ /* { dg-final { scan-assembler "\text\t" } } */
/* { dg-final { scan-assembler-not "\tandi?\t" } } */ /* { dg-final { scan-assembler-not "\tandi?\t" } } */
......
/* For MIPS64r2 use DEXT when ANDing with low-order bitmasks. */ /* For MIPS64r2 use DEXT when ANDing with low-order bitmasks. */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O isa_rev>=2 -mgp64" } */ /* { dg-options "isa_rev>=2 -mgp64" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tdext\t" } } */ /* { dg-final { scan-assembler "\tdext\t" } } */
/* { dg-final { scan-assembler-not "\tandi?\t" } } */ /* { dg-final { scan-assembler-not "\tandi?\t" } } */
......
/* No need to use ext if we can use andi. */ /* No need to use ext if we can use andi. */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O isa_rev>=2" } */ /* { dg-options "isa_rev>=2" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler "\tandi\t" } } */ /* { dg-final { scan-assembler "\tandi\t" } } */
/* { dg-final { scan-assembler-not "\td?ext\t" } } */ /* { dg-final { scan-assembler-not "\td?ext\t" } } */
......
/* Also make sure we don't use ext for MIPS*r1. */ /* Also make sure we don't use ext for MIPS*r1. */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O isa_rev<=1" } */ /* { dg-options "isa_rev<=1" } */
/* { dg-final { scan-assembler "\tand\t" } } */ /* { dg-final { scan-assembler "\tand\t" } } */
/* { dg-final { scan-assembler-not "\td?ext\t" } } */ /* { dg-final { scan-assembler-not "\td?ext\t" } } */
......
/* { dg-options "-O -mgp64 forbid_cpu=octeon.*" } */ /* { dg-options "-mgp64 forbid_cpu=octeon.*" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\tdsll\t" 5 } } */ /* { dg-final { scan-assembler-times "\tdsll\t" 5 } } */
/* { dg-final { scan-assembler-times "\tdsra\t" 5 } } */ /* { dg-final { scan-assembler-times "\tdsra\t" 5 } } */
/* { dg-final { scan-assembler-not "\tsll\t" } } */ /* { dg-final { scan-assembler-not "\tsll\t" } } */
......
/* Check the shift_shift alternative of the AND patterns. */ /* Check the shift_shift alternative of the AND patterns. */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O isa_rev<=1 -mgp64" } */ /* { dg-options "isa_rev<=1 -mgp64" } */
/* { dg-final { scan-assembler "\tdsrl\t" } } */ /* { dg-final { scan-assembler "\tdsrl\t" } } */
/* { dg-final { scan-assembler "\tdsll\t" } } */ /* { dg-final { scan-assembler "\tdsll\t" } } */
/* { dg-final { scan-assembler-not "\td?ext\t" } } */ /* { dg-final { scan-assembler-not "\td?ext\t" } } */
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -mfix-r10000" } */ /* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */ /* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int NOMIPS16 int
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -mfix-r10000" } */ /* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */ /* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int NOMIPS16 int
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -mfix-r10000" } */ /* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */ /* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int NOMIPS16 int
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -mfix-r10000" } */ /* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */ /* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
/* { dg-message "note: '__sync_nand_and_fetch' changed semantics in GCC 4.4" "" { target *-*-* } 0 } */ /* { dg-message "note: '__sync_nand_and_fetch' changed semantics in GCC 4.4" "" { target *-*-* } 0 } */
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -mfix-r10000" } */ /* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */ /* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int NOMIPS16 int
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -mfix-r10000" } */ /* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */ /* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int NOMIPS16 int
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -mfix-r10000" } */ /* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */ /* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int NOMIPS16 int
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -mfix-r10000" } */ /* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */ /* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int NOMIPS16 int
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -mfix-r10000" } */ /* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */ /* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int NOMIPS16 int
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -mfix-r10000" } */ /* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */ /* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int NOMIPS16 int
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -mfix-r10000" } */ /* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */ /* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int NOMIPS16 int
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -mfix-r10000" } */ /* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */ /* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
/* { dg-message "note: '__sync_fetch_and_nand' changed semantics in GCC 4.4" "" { target *-*-* } 0 } */ /* { dg-message "note: '__sync_fetch_and_nand' changed semantics in GCC 4.4" "" { target *-*-* } 0 } */
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -mfix-r10000" } */ /* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */ /* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int NOMIPS16 int
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -mfix-r10000" } */ /* { dg-options "-mfix-r10000" } */
/* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */ /* { dg-final { scan-assembler-times "\tbeql\t" 3 } } */
NOMIPS16 int NOMIPS16 int
......
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