sh.exp (check_effective_target_sh4a, [...]): New effective target checks.
authorOleg Endo <olegendo@gcc.gnu.org>
Sun, 20 Sep 2015 14:09:36 +0000 (14:09 +0000)
committerOleg Endo <olegendo@gcc.gnu.org>
Sun, 20 Sep 2015 14:09:36 +0000 (14:09 +0000)
gcc/testsuite/
* gcc.target/sh/sh.exp (check_effective_target_sh4a,
check_effective_target_big_endian, check_effective_target_little_endian,
check_effective_target_any_fpu, check_effective_target_double_fpu,
check_effective_target_use_single_only_fpu,
check_effective_target_default_single_fpu,
check_effective_target_no_fpu, check_effective_target_has_xf_regs,
check_effective_target_has_fsca, check_effective_target_has_fsrra,
check_effective_target_has_fpchg, check_effective_target_has_dyn_shift,
check_effective_target_fmovd_enabled,
check_effective_target_has_privileged, check_effective_target_has_pref,
check_effective_target_banked_r0r7_isr,
check_effective_target_stack_save_isr): New effective target checks.
* gcc.target/sh/pr51244-16.c: Merge into pr51244-15.c.
* gcc.target/sh/pr51244-20-sh2a.c: Merge into pr51244-20.c.
* gcc.target/sh/pr51244-3.c: Merge into pr51244-2.c
* gcc.target/sh/pr54089-5.c: Merge into pr54089-4.c.
* gcc.target/sh/20080410-1.c: Use new effective target checks.
* gcc.target/sh/attr-isr-nosave_low_regs.c: Likewise.
* gcc.target/sh/attr-isr.c: Likewise.
* gcc.target/sh/fpul-usage-1.c: Likewise.
* gcc.target/sh/hiconst.c: Likewise.
* gcc.target/sh/mfmovd.c: Likewise.
* gcc.target/sh/pr21255-3.c: Likewise.
* gcc.target/sh/pr33135-1.c: Likewise.
* gcc.target/sh/pr33135-2.c: Likewise.
* gcc.target/sh/pr33135-3.c: Likewise.
* gcc.target/sh/pr33135-4.c: Likewise.
* gcc.target/sh/pr39423-2.c: Likewise.
* gcc.target/sh/pr49880-4.c: Likewise.
* gcc.target/sh/pr49880-5.c: Likewise.
* gcc.target/sh/pr50749-sf-postinc-1.c: Likewise.
* gcc.target/sh/pr50749-sf-postinc-2.c: Likewise.
* gcc.target/sh/pr50749-sf-postinc-3.c: Likewise.
* gcc.target/sh/pr50749-sf-postinc-4.c: Likewise.
* gcc.target/sh/pr50749-sf-predec-1.c: Likewise.
* gcc.target/sh/pr50749-sf-predec-2.c: Likewise.
* gcc.target/sh/pr50749-sf-predec-3.c: Likewise.
* gcc.target/sh/pr50749-sf-predec-4.c: Likewise.
* gcc.target/sh/pr50751-2.c: Likewise.
* gcc.target/sh/pr50751-3.c: Likewise.
* gcc.target/sh/pr50751-5.c: Likewise.
* gcc.target/sh/pr50751-6.c: Likewise.
* gcc.target/sh/pr50751-8.c: Likewise.
* gcc.target/sh/pr51244-15.c: Likewise.
* gcc.target/sh/pr51244-2.c: Likewise.
* gcc.target/sh/pr51244-20.c: Likewise.
* gcc.target/sh/pr51244-6.c: Likewise.
* gcc.target/sh/pr52483-4.c: Likewise.
* gcc.target/sh/pr53511-1.c: Likewise.
* gcc.target/sh/pr53512-1.c: Likewise.
* gcc.target/sh/pr53512-2.c: Likewise.
* gcc.target/sh/pr53512-3.c: Likewise.
* gcc.target/sh/pr53512-4.c: Likewise.
* gcc.target/sh/pr53513-1.c: Likewise.
* gcc.target/sh/pr54089-2.c: Likewise.
* gcc.target/sh/pr54089-3.c: Likewise.
* gcc.target/sh/pr54089-4.c: Likewise.
* gcc.target/sh/pr54602-2.c: Likewise.
* gcc.target/sh/pr54602-3.c: Likewise.
* gcc.target/sh/pr54602-4.c: Likewise.
* gcc.target/sh/pr54680.c: Likewise.
* gcc.target/sh/pr55303-1.c: Likewise.
* gcc.target/sh/pr55303-2.c: Likewise.
* gcc.target/sh/pr55303-3.c: Likewise.
* gcc.target/sh/pr56547-1.c: Likewise.
* gcc.target/sh/pr56547-2.c: Likewise.
* gcc.target/sh/pr61195.c: Likewise.
* gcc.target/sh/pr61996.c: Likewise.
* gcc.target/sh/pr6526.c: Likewise.
* gcc.target/sh/pragma-isr-nosave_low_regs.c: Likewise.
* gcc.target/sh/pragma-isr-trapa2.c: Likewise.
* gcc.target/sh/prefetch.c: Likewise.
* gcc.target/sh/rte-delay-slot.c: Likewise.
* gcc.target/sh/sh2a-band.c: Likewise.
* gcc.target/sh/sh2a-bclr.c: Likewise.
* gcc.target/sh/sh2a-bclrmem.c: Likewise.
* gcc.target/sh/sh2a-bld.c: Likewise.
* gcc.target/sh/sh2a-bor.c: Likewise.
* gcc.target/sh/sh2a-bset.c: Likewise.
* gcc.target/sh/sh2a-bsetmem.c: Likewise.
* gcc.target/sh/sh2a-bxor.c: Likewise.
* gcc.target/sh/sh2a-jsrn.c: Likewise.
* gcc.target/sh/sh2a-movi20s.c: Likewise.
* gcc.target/sh/sh2a-movrt.c: Likewise.
* gcc.target/sh/sh2a-resbank.c: Likewise.
* gcc.target/sh/sh2a-rtsn.c: Likewise.
* gcc.target/sh/sh2a-tbr-jump.c: Likewise.
* gcc.target/sh/sh4a-bitmovua.c: Likewise.
* gcc.target/sh/sh4a-cosf.c: Likewise.
* gcc.target/sh/sh4a-fsrra.c: Likewise.
* gcc.target/sh/sh4a-memmovua.c: Likewise.
* gcc.target/sh/sh4a-sincosf.c: Likewise.
* gcc.target/sh/sh4a-sinf.c: Likewise.

From-SVN: r227944

83 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/sh/20080410-1.c
gcc/testsuite/gcc.target/sh/attr-isr-nosave_low_regs.c
gcc/testsuite/gcc.target/sh/attr-isr.c
gcc/testsuite/gcc.target/sh/fpul-usage-1.c
gcc/testsuite/gcc.target/sh/hiconst.c
gcc/testsuite/gcc.target/sh/mfmovd.c
gcc/testsuite/gcc.target/sh/pr21255-3.c
gcc/testsuite/gcc.target/sh/pr33135-1.c
gcc/testsuite/gcc.target/sh/pr33135-2.c
gcc/testsuite/gcc.target/sh/pr33135-3.c
gcc/testsuite/gcc.target/sh/pr33135-4.c
gcc/testsuite/gcc.target/sh/pr39423-2.c
gcc/testsuite/gcc.target/sh/pr49880-4.c
gcc/testsuite/gcc.target/sh/pr49880-5.c
gcc/testsuite/gcc.target/sh/pr50749-sf-postinc-1.c
gcc/testsuite/gcc.target/sh/pr50749-sf-postinc-2.c
gcc/testsuite/gcc.target/sh/pr50749-sf-postinc-3.c
gcc/testsuite/gcc.target/sh/pr50749-sf-postinc-4.c
gcc/testsuite/gcc.target/sh/pr50749-sf-predec-1.c
gcc/testsuite/gcc.target/sh/pr50749-sf-predec-2.c
gcc/testsuite/gcc.target/sh/pr50749-sf-predec-3.c
gcc/testsuite/gcc.target/sh/pr50749-sf-predec-4.c
gcc/testsuite/gcc.target/sh/pr50751-2.c
gcc/testsuite/gcc.target/sh/pr50751-3.c
gcc/testsuite/gcc.target/sh/pr50751-5.c
gcc/testsuite/gcc.target/sh/pr50751-6.c
gcc/testsuite/gcc.target/sh/pr50751-8.c
gcc/testsuite/gcc.target/sh/pr51244-15.c
gcc/testsuite/gcc.target/sh/pr51244-16.c [deleted file]
gcc/testsuite/gcc.target/sh/pr51244-2.c
gcc/testsuite/gcc.target/sh/pr51244-20-sh2a.c [deleted file]
gcc/testsuite/gcc.target/sh/pr51244-20.c
gcc/testsuite/gcc.target/sh/pr51244-3.c [deleted file]
gcc/testsuite/gcc.target/sh/pr51244-6.c
gcc/testsuite/gcc.target/sh/pr52483-4.c
gcc/testsuite/gcc.target/sh/pr53511-1.c
gcc/testsuite/gcc.target/sh/pr53512-1.c
gcc/testsuite/gcc.target/sh/pr53512-2.c
gcc/testsuite/gcc.target/sh/pr53512-3.c
gcc/testsuite/gcc.target/sh/pr53512-4.c
gcc/testsuite/gcc.target/sh/pr53513-1.c
gcc/testsuite/gcc.target/sh/pr54089-2.c
gcc/testsuite/gcc.target/sh/pr54089-3.c
gcc/testsuite/gcc.target/sh/pr54089-4.c
gcc/testsuite/gcc.target/sh/pr54089-5.c [deleted file]
gcc/testsuite/gcc.target/sh/pr54602-2.c
gcc/testsuite/gcc.target/sh/pr54602-3.c
gcc/testsuite/gcc.target/sh/pr54602-4.c
gcc/testsuite/gcc.target/sh/pr54680.c
gcc/testsuite/gcc.target/sh/pr55303-1.c
gcc/testsuite/gcc.target/sh/pr55303-2.c
gcc/testsuite/gcc.target/sh/pr55303-3.c
gcc/testsuite/gcc.target/sh/pr56547-1.c
gcc/testsuite/gcc.target/sh/pr56547-2.c
gcc/testsuite/gcc.target/sh/pr61195.c
gcc/testsuite/gcc.target/sh/pr61996.c
gcc/testsuite/gcc.target/sh/pr6526.c
gcc/testsuite/gcc.target/sh/pragma-isr-nosave_low_regs.c
gcc/testsuite/gcc.target/sh/pragma-isr-trapa2.c
gcc/testsuite/gcc.target/sh/prefetch.c
gcc/testsuite/gcc.target/sh/rte-delay-slot.c
gcc/testsuite/gcc.target/sh/sh.exp
gcc/testsuite/gcc.target/sh/sh2a-band.c
gcc/testsuite/gcc.target/sh/sh2a-bclr.c
gcc/testsuite/gcc.target/sh/sh2a-bclrmem.c
gcc/testsuite/gcc.target/sh/sh2a-bld.c
gcc/testsuite/gcc.target/sh/sh2a-bor.c
gcc/testsuite/gcc.target/sh/sh2a-bset.c
gcc/testsuite/gcc.target/sh/sh2a-bsetmem.c
gcc/testsuite/gcc.target/sh/sh2a-bxor.c
gcc/testsuite/gcc.target/sh/sh2a-jsrn.c
gcc/testsuite/gcc.target/sh/sh2a-movi20s.c
gcc/testsuite/gcc.target/sh/sh2a-movrt.c
gcc/testsuite/gcc.target/sh/sh2a-resbank.c
gcc/testsuite/gcc.target/sh/sh2a-rtsn.c
gcc/testsuite/gcc.target/sh/sh2a-tbr-jump.c
gcc/testsuite/gcc.target/sh/sh4a-bitmovua.c
gcc/testsuite/gcc.target/sh/sh4a-cosf.c
gcc/testsuite/gcc.target/sh/sh4a-fsrra.c
gcc/testsuite/gcc.target/sh/sh4a-memmovua.c
gcc/testsuite/gcc.target/sh/sh4a-sincosf.c
gcc/testsuite/gcc.target/sh/sh4a-sinf.c

index 74afa641325c705fa67a481d361e9d45b70e2f9b..9142a39f3676c99a9f2f572378cad8e77bb87fbb 100644 (file)
@@ -1,6 +1,102 @@
+2015-09-20  Oleg Endo  <olegendo@gcc.gnu.org>
+
+       * gcc.target/sh/sh.exp (check_effective_target_sh4a,
+       check_effective_target_big_endian, check_effective_target_little_endian,
+       check_effective_target_any_fpu, check_effective_target_double_fpu,
+       check_effective_target_use_single_only_fpu,
+       check_effective_target_default_single_fpu,
+       check_effective_target_no_fpu, check_effective_target_has_xf_regs,
+       check_effective_target_has_fsca, check_effective_target_has_fsrra,
+       check_effective_target_has_fpchg, check_effective_target_has_dyn_shift,
+       check_effective_target_fmovd_enabled,
+       check_effective_target_has_privileged, check_effective_target_has_pref,
+       check_effective_target_banked_r0r7_isr,
+       check_effective_target_stack_save_isr): New effective target checks.
+       * gcc.target/sh/pr51244-16.c: Merge into pr51244-15.c.
+       * gcc.target/sh/pr51244-20-sh2a.c: Merge into pr51244-20.c.
+       * gcc.target/sh/pr51244-3.c: Merge into pr51244-2.c
+       * gcc.target/sh/pr54089-5.c: Merge into pr54089-4.c.
+       * gcc.target/sh/20080410-1.c: Use new effective target checks.
+       * gcc.target/sh/attr-isr-nosave_low_regs.c: Likewise.
+       * gcc.target/sh/attr-isr.c: Likewise.
+       * gcc.target/sh/fpul-usage-1.c: Likewise.
+       * gcc.target/sh/hiconst.c: Likewise.
+       * gcc.target/sh/mfmovd.c: Likewise.
+       * gcc.target/sh/pr21255-3.c: Likewise.
+       * gcc.target/sh/pr33135-1.c: Likewise.
+       * gcc.target/sh/pr33135-2.c: Likewise.
+       * gcc.target/sh/pr33135-3.c: Likewise.
+       * gcc.target/sh/pr33135-4.c: Likewise.
+       * gcc.target/sh/pr39423-2.c: Likewise.
+       * gcc.target/sh/pr49880-4.c: Likewise.
+       * gcc.target/sh/pr49880-5.c: Likewise.
+       * gcc.target/sh/pr50749-sf-postinc-1.c: Likewise.
+       * gcc.target/sh/pr50749-sf-postinc-2.c: Likewise.
+       * gcc.target/sh/pr50749-sf-postinc-3.c: Likewise.
+       * gcc.target/sh/pr50749-sf-postinc-4.c: Likewise.
+       * gcc.target/sh/pr50749-sf-predec-1.c: Likewise.
+       * gcc.target/sh/pr50749-sf-predec-2.c: Likewise.
+       * gcc.target/sh/pr50749-sf-predec-3.c: Likewise.
+       * gcc.target/sh/pr50749-sf-predec-4.c: Likewise.
+       * gcc.target/sh/pr50751-2.c: Likewise.
+       * gcc.target/sh/pr50751-3.c: Likewise.
+       * gcc.target/sh/pr50751-5.c: Likewise.
+       * gcc.target/sh/pr50751-6.c: Likewise.
+       * gcc.target/sh/pr50751-8.c: Likewise.
+       * gcc.target/sh/pr51244-15.c: Likewise.
+       * gcc.target/sh/pr51244-2.c: Likewise.
+       * gcc.target/sh/pr51244-20.c: Likewise.
+       * gcc.target/sh/pr51244-6.c: Likewise.
+       * gcc.target/sh/pr52483-4.c: Likewise.
+       * gcc.target/sh/pr53511-1.c: Likewise.
+       * gcc.target/sh/pr53512-1.c: Likewise.
+       * gcc.target/sh/pr53512-2.c: Likewise.
+       * gcc.target/sh/pr53512-3.c: Likewise.
+       * gcc.target/sh/pr53512-4.c: Likewise.
+       * gcc.target/sh/pr53513-1.c: Likewise.
+       * gcc.target/sh/pr54089-2.c: Likewise.
+       * gcc.target/sh/pr54089-3.c: Likewise.
+       * gcc.target/sh/pr54089-4.c: Likewise.
+       * gcc.target/sh/pr54602-2.c: Likewise.
+       * gcc.target/sh/pr54602-3.c: Likewise.
+       * gcc.target/sh/pr54602-4.c: Likewise.
+       * gcc.target/sh/pr54680.c: Likewise.
+       * gcc.target/sh/pr55303-1.c: Likewise.
+       * gcc.target/sh/pr55303-2.c: Likewise.
+       * gcc.target/sh/pr55303-3.c: Likewise.
+       * gcc.target/sh/pr56547-1.c: Likewise.
+       * gcc.target/sh/pr56547-2.c: Likewise.
+       * gcc.target/sh/pr61195.c: Likewise.
+       * gcc.target/sh/pr61996.c: Likewise.
+       * gcc.target/sh/pr6526.c: Likewise.
+       * gcc.target/sh/pragma-isr-nosave_low_regs.c: Likewise.
+       * gcc.target/sh/pragma-isr-trapa2.c: Likewise.
+       * gcc.target/sh/prefetch.c: Likewise.
+       * gcc.target/sh/rte-delay-slot.c: Likewise.
+       * gcc.target/sh/sh2a-band.c: Likewise.
+       * gcc.target/sh/sh2a-bclr.c: Likewise.
+       * gcc.target/sh/sh2a-bclrmem.c: Likewise.
+       * gcc.target/sh/sh2a-bld.c: Likewise.
+       * gcc.target/sh/sh2a-bor.c: Likewise.
+       * gcc.target/sh/sh2a-bset.c: Likewise.
+       * gcc.target/sh/sh2a-bsetmem.c: Likewise.
+       * gcc.target/sh/sh2a-bxor.c: Likewise.
+       * gcc.target/sh/sh2a-jsrn.c: Likewise.
+       * gcc.target/sh/sh2a-movi20s.c: Likewise.
+       * gcc.target/sh/sh2a-movrt.c: Likewise.
+       * gcc.target/sh/sh2a-resbank.c: Likewise.
+       * gcc.target/sh/sh2a-rtsn.c: Likewise.
+       * gcc.target/sh/sh2a-tbr-jump.c: Likewise.
+       * gcc.target/sh/sh4a-bitmovua.c: Likewise.
+       * gcc.target/sh/sh4a-cosf.c: Likewise.
+       * gcc.target/sh/sh4a-fsrra.c: Likewise.
+       * gcc.target/sh/sh4a-memmovua.c: Likewise.
+       * gcc.target/sh/sh4a-sincosf.c: Likewise.
+       * gcc.target/sh/sh4a-sinf.c: Likewise.
+
 2015-09-20  Jeff Law  <law@redhat.com>
 
-        PR tree-optimization/47679
+       PR tree-optimization/47679
        * g++.dg/warn/Wuninitialized-6.C: New test.
 
 2015-09-18  Ville Voutilainen  <ville.voutilainen@gmail.com>
index c398674c2aa7d0b6c6c7a3e60d98aafecf0fb485..6e9e9c14476f9bd14b3a65a9a8088074dba156a9 100644 (file)
@@ -1,6 +1,5 @@
-/* { dg-do compile }  */
+/* { dg-do compile { target { little_endian } } }  */
 /* { dg-options "-O0" } */
-/* { dg-skip-if "" { "sh*-*-*" } "-mb" "" }  */
 /* { dg-final { scan-assembler-not "add\tr0,r0" } } */
 
 /* This test checks chain reloads conflicts.  If they don't
index f1ad4cdad12d66896740640357ca11e8fc74be2b..5087a73b502205f8ce3f968d6380e0b564175b20 100644 (file)
@@ -3,8 +3,7 @@
    (On SH3* and SH4* r0..r7 are banked)
    Call-saved registers r8..r13 also don't need to be restored.
    To test that we look for register push insns such as 'mov.l r0,@-r15'.  */
-/* { dg-do compile { target { { "sh*-*-*" } && nonpic } } }  */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1*" "-m2*" "-m5*" } { "" } }  */
+/* { dg-do compile { target { { banked_r0r7_isr } && nonpic } } }  */
 /* { dg-options "-O" }  */
 /* { dg-final { scan-assembler-times "rte" 1 } }  */
 /* { dg-final { scan-assembler-not "mov.l\tr\[0-9\],@-r15" } }  */
index 8e24aa2555d31dc611a03d64a5dd2974bfd68851..c2efd765e2e6b34bd3e1b4048df43855e2db0a16 100644 (file)
@@ -1,8 +1,7 @@
 /* The call will clobber r0..r7, which will need not be saved/restored, but
    not the call-saved registers r8..r14.  Check this by counting the register
    push insns.  */
-/* { dg-do compile { target { { { sh-*-* sh[1234ble]*-*-* } && { ! sh2a*-*-* } } && nonpic } } } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m2a*" } { "" } } */
+/* { dg-do compile { target { { ! sh2a } && nonpic } } } */
 /* { dg-options "-O" } */
 /* { dg-final { scan-assembler-times "rte" 1} } */
 /* { dg-final { scan-assembler-times "mov.l\tr\[0-7\],@-r15" 8 } }  */
index 5c3bb196de0ffab276f069d0ae263c009f1c98a9..277f708b6c614fb9a73d297c85436ae254ea8c54 100644 (file)
@@ -1,8 +1,7 @@
 /* Check that the FPUL register is used when reading a float as an int and
    vice versa, as opposed to pushing and popping the values over the stack.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { any_fpu } } }  */
 /* { dg-options "-O1" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler "fpul" } } */
 /* { dg-final { scan-assembler-not "r15" } } */
 
index 778bb8a3d2eeb932a6943c9a20679308af0550fc..d8911a52d78cf1a5005c42f89a6e45d59d1d2d14 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-do compile } */
 /* { dg-options "-O1" } */
 
 char a;
index ce3e99332e3ae47e00e56b0ec45980b1ca87bb5e..3fb1e8ee8c776b78ef8925367ad90b715bd5e8b9 100644 (file)
@@ -1,9 +1,7 @@
 /* Verify that we generate fmov.d instructions to move doubles when -mfmovd 
    option is enabled.  */
-/* { dg-do compile }  */
-/* { dg-require-effective-target hard_float } */
+/* { dg-do compile { target { double_fpu } } }  */
 /* { dg-options "-mfmovd" } */
-/* { dg-skip-if "" { *-*-* }  { "*-single-only" } { "" } } */
 /* { dg-final { scan-assembler "fmov.d" } } */
 
 extern double g;
index a6727841837dd5559c65de3ea436eeebf17da5d2..7dccf073c8e64b349fc2bbcd6b95bcd1da938071 100644 (file)
@@ -1,6 +1,5 @@
-/* { dg-do compile }  */
+/* { dg-do compile { target { double_fpu } } }  */
 /* { dg-options "-O2 -fomit-frame-pointer" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m2e" "-m3e" "*single-only" } { "" } }  */
 /* { dg-final { scan-assembler "mov #?0,r.*; mov #?20,r" } } */
 /* { dg-final { scan-assembler "mov #?1077149696,r.*; mov #?0,r" } } */
 double
index cc6a3f984d3e4092902e22ed1a14b49a6d9aa06b..a6e88387d6f7418aa4251fb0564df5a03714768e 100644 (file)
@@ -1,8 +1,7 @@
 /* Check that fcmp/eq and fcmp/gt instructions are generated by default
    (implicit -mieee).  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { any_fpu } } }  */
 /* { dg-options "-O1" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-times "fcmp/eq" 4 } } */
 /* { dg-final { scan-assembler-times "fcmp/gt" 4 } } */
 
@@ -29,4 +28,3 @@ test_03 (double a, double b)
 {
   return a >= b;
 }
-
index b93ecb81e4890e1bddfb67db56c143517338a679..ec6452b8810d2afc1e409f1ec90136bdc83943e9 100644 (file)
@@ -1,8 +1,7 @@
 /* Check that only the fcmp/gt instruction is generated when specifying
    -ffinite-math-only (implicit -mno-ieee).  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { any_fpu } } }  */
 /* { dg-options "-O1 -ffinite-math-only" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-not "fcmp/eq" } } */
 /* { dg-final { scan-assembler-times "fcmp/gt" 4 } } */
 
index f5f9a5b92275f7bec371aad41ff00b6cd32b718b..c5b9274d66b30aaf51308dc2cd77bfe7f51a497b 100644 (file)
@@ -1,8 +1,7 @@
 /* Check that fcmp/eq and fcmp/gt instructions are generated when specifying
    -ffinite-math-only and -mieee.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { any_fpu } } }  */
 /* { dg-options "-O1 -ffinite-math-only -mieee" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-times "fcmp/eq" 4 } } */
 /* { dg-final { scan-assembler-times "fcmp/gt" 4 } } */
 
@@ -29,4 +28,3 @@ test_03 (double a, double b)
 {
   return a >= b;
 }
-
index 20178d7e493e4f18cb1b93cbe7a7605bfcbe8b01..0c5ff1c001c5149697f1f6e4b5d23990512657ad 100644 (file)
@@ -1,8 +1,7 @@
 /* Check that only the fcmp/gt instruction is generated when specifying
    -fno-finite-math-only and -mno-ieee.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { any_fpu } } }  */
 /* { dg-options "-O1 -fno-finite-math-only -mno-ieee" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-not "fcmp/eq" } } */
 /* { dg-final { scan-assembler-times "fcmp/gt" 4 } } */
 
@@ -29,4 +28,3 @@ test_03 (double a, double b)
 {
   return a >= b;
 }
-
index 702384dc27a730bad3d344b29253df8c1b4fc732..962d982059ad7e96ba0e5d2b2b9d9d733ecb8efc 100644 (file)
@@ -1,9 +1,8 @@
 /* Check that displacement addressing is used for indexed addresses with a
    small offset, instead of re-calculating the index and that the movu.w
    instruction is used on SH2A.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m2a*" } } */
 /* { dg-final { scan-assembler-not "add\t#1" } } */
 /* { dg-final { scan-assembler "movu.w" } } */
 
index 5b5af1e40141f5cfef354b2f95de2889ea6cf6e9..8819be0c72314e368d24537c8a4d845d8c1ba427 100644 (file)
@@ -1,9 +1,8 @@
 /* Check that the option -mdiv=call-fp does not produce calls to the
    library function that uses FPU to implement integer division if FPU insns
    are not supported or are disabled.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { no_fpu } } }  */
 /* { dg-options "-mdiv=call-fp" }  */
-/* { dg-skip-if "" { "sh*-*-*" } { "*"} { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" } }  */
 /* { dg-final { scan-assembler-not "sdivsi3_i4\n|udivsi3_i4\n" } }  */
 
 int
index bff9f331f9a20aba3d98146c352d3e79e92ea377..f83a35bc261118032ff12547973bdbf6d0199cda 100644 (file)
@@ -1,8 +1,7 @@
 /* Check that the option -mdiv=call-fp results in the corresponding library
    function calls on targets that have a double precision FPU.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { double_fpu || use_single_only_fpu } } }  */
 /* { dg-options "-mdiv=call-fp" }  */
-/* { dg-skip-if "" { "sh*-*-*" } { "*"} { "-m2a" "-m4" "-m4a" "*single-only" } }  */
 /* { dg-final { scan-assembler "sdivsi3_i4\n" } }  */
 /* { dg-final { scan-assembler "udivsi3_i4\n" } }  */
 
index 41e3bdd28349a3bd77afd6f1cd7c1b047d3e13c2..3da1cca565cee3e604ec6c260ce8c6b6dc6a9893 100644 (file)
@@ -1,7 +1,6 @@
 /* PR target/50749: Verify that post-increment addressing is generated.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { any_fpu } } }  */
 /* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-times "fmov.s\t@r\[0-9]\+\\+,fr\[0-9]\+" 1 } } */
 
 float*
@@ -12,4 +11,3 @@ test_func_00 (float* p, float* x)
   *x = r;
   return p;
 }
-
index 304ed11c4286c6fd68cc0c105f3dae3c42071259..ec9eff46954d873a0099d3ed2e5216416c0bdf62 100644 (file)
@@ -1,8 +1,7 @@
 /* PR target/50749: Verify that subsequent post-increment addressings
    are generated.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { any_fpu } } }  */
 /* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2*" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-times "fmov.s\t@r\[0-9]\+\\+,fr\[0-9]\+" 5 { xfail *-*-*} } } */
 
 float*
index 7461bedb4a63e9c9cb837e2f3d4bda9d571bdd55..3ce81b646919754114ebe7203d8152b8f857ed54 100644 (file)
@@ -1,8 +1,7 @@
 /* PR target/50749: Verify that post-increment addressing is generated
    inside a loop.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { any_fpu } } }  */
 /* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-times "fmov.s\t@r\[0-9]\+\\+,fr\[0-9]\+" 1 } } */
 
 float
index b6dce42fca7f13eca5e4c0e56318eb0bce70a07a..65f45a3f9754f0e17aaf6d16fab6506577e74e6a 100644 (file)
@@ -1,8 +1,7 @@
 /* PR target/50749: Verify that post-increment addressing is generated
    inside a loop.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { any_fpu } } }  */
 /* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2*" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-times "fmov.s\t@r\[0-9]\+\\+,fr\[0-9]\+" 3 { xfail *-*-*} } } */
 
 float
index d51aa9e09a60f1c60c91682564c6525df8f8b1e7..05e603d4613e7e8e9d1fd900539da93018cff441 100644 (file)
@@ -1,7 +1,6 @@
 /* PR target/50749: Verify that pre-decrement addressing is generated.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { any_fpu } } }  */
 /* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-times "fmov.s\tfr\[0-9]\+,@-r\[0-9]\+" 1 } } */
 
 float*
index cd87ce95f8f8921429193a7ee11b5a4887cf932e..22ec161f4ae52986fcc3ad20514c085c234070f3 100644 (file)
@@ -1,8 +1,7 @@
 /* PR target/50749: Verify that subsequent pre-decrement addressings
    are generated.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { any_fpu } } }  */
 /* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2*" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-times "fmov.s\tfr\[0-9]\+,@-r\[0-9]\+" 5 { xfail *-*-*} } } */
 
 float*
index a772b23a4ba7571ea72f2e1b4c8b2b6cbb9b08bd..6ed3254a089b0f8363f0a9d3bd73b47e878cf3ee 100644 (file)
@@ -1,8 +1,7 @@
 /* PR target/50749: Verify that pre-decrement addressing is generated
    inside a loop.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { any_fpu } } }  */
 /* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-times "fmov.s\tfr\[0-9]\+,@-r\[0-9]\+" 1 } } */
 
 float*
index 9d080387d2e5e8fb7622c885246bb5f4b9b185d1..26bc3eb9ac3866be40ba1d31d79701598ab628fe 100644 (file)
@@ -1,8 +1,7 @@
 /* PR target/50749: Verify that pre-decrement addressing is generated
    inside a loop.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { any_fpu } } }  */
 /* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2*" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-times "fmov.s\tfr\[0-9]\+,@-r\[0-9]\+" 3 { xfail *-*-*} } } */
 
 float*
index cd716426112fc34b0499a3767103462002762adc..c8780f94e4d39eb3d6ed88de0a238cdb99ee6aef 100644 (file)
@@ -2,9 +2,8 @@
    base address is adjusted only once.  On SH2A this test is skipped because
    there is a 4 byte mov.b insn that can handle larger displacements.  Thus
    on SH2A the base address will not be adjusted in this case.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { ! sh2a } } }  */
 /* { dg-options "-O1" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m5*" "-m2a*" } { "" } } */
 /* { dg-final { scan-assembler-times "add" 2 } } */
 
 void
index 5b8d3514e4d6b42ebcff6775a6acc2f3489e3ed9..caf8a8703559ed4a48ba25ca984dcd3ee6d683c8 100644 (file)
@@ -1,9 +1,8 @@
 /* Check that on SH2A the 4 byte mov.b displacement insn is generated to
    handle larger displacements.  If it is generated correctly, there should
    be no base address adjustments outside the mov.b insns.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-O1" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m2a*" } } */
 /* { dg-final { scan-assembler-not "add|sub" } } */
 
 void
index 5da9ac2a1282519e21b36cae57a61ec2ec84c666..89658c0cc35a4b5187f8f022f92bc6e97b43f0d4 100644 (file)
@@ -2,9 +2,8 @@
    base address is adjusted only once.  On SH2A this test is skipped because
    there is a 4 byte mov.w insn that can handle larger displacements.  Thus
    on SH2A the base address will not be adjusted in this case.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { ! sh2a } } }  */
 /* { dg-options "-O1" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m5*" "-m2a*" } { "" } } */
 /* { dg-final { scan-assembler-times "add" 2 } } */
 
 void
index 129729037e22822365f4a0a875594f722ad795d9..e8f0e3e16862c5a296592c9223497c9337f192ec 100644 (file)
@@ -1,9 +1,8 @@
 /* Check that on SH2A the 4 byte mov.w displacement insn is generated to
    handle larger displacements.  If it is generated correctly, there should
    be no base address adjustments outside the mov.w insns.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-O1" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m2a*" } } */
 /* { dg-final { scan-assembler-not "add|sub" } } */
 
 void
index d9eda44f04154d814b9fbf1c7b5e82938c6a673c..07bbee4fe8f64110fc5fcd90d600480c8a2c4c5c 100644 (file)
@@ -1,9 +1,8 @@
 /* Check that on SH2A the 4 byte movu.b and movu.w displacement insns are
    generated.  This has to be checked with -O2 because some of the patterns
    rely on peepholes.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m2a*" } } */
 /* { dg-final { scan-assembler-times "movu.b" 4 } } */
 /* { dg-final { scan-assembler-times "movu.w" 3 } } */
 
index e99963f8f99f6758337386d582c1ff2a74a110fc..8b9d57bf8d3d9b9fbf6ff2c37c6260d61773e7e9 100644 (file)
@@ -1,13 +1,16 @@
 /* Check that the redundant test removal code in the *cbranch_t split works
-   as expected on non-SH2A targets.  Because on SH2A the movrt instruction
-   is used, this test is re-used and checked differently in pr51244-16.c.  */
+   as expected.  */
 /* { dg-do compile }  */
 /* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m5*" "-m2a*" } { "" } } */
-/* { dg-final { scan-assembler-times "tst" 6 } } */
-/* { dg-final { scan-assembler-times "movt" 6 } } */
-/* { dg-final { scan-assembler-times "xor" 3 } } */
+
 /* { dg-final { scan-assembler-not "extu|exts|negc" } } */
+/* { dg-final { scan-assembler-times "tst" 6 } } */
+
+/* { dg-final { scan-assembler-times "movt" 6 { target { ! sh2a } } } } */
+/* { dg-final { scan-assembler-times "xor" 3 { target { ! sh2a } } } } */
+
+/* { dg-final { scan-assembler-times "movt" 3 { target { sh2a } } } } */
+/* { dg-final { scan-assembler-times "movrt" 3 { target { sh2a } } } } */
 
 typedef char bool;
 
diff --git a/gcc/testsuite/gcc.target/sh/pr51244-16.c b/gcc/testsuite/gcc.target/sh/pr51244-16.c
deleted file mode 100644 (file)
index 5132f74..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Check that the redundant test removal code in the *cbranch_t split works
-   as expected on SH2A targets.  */
-/* { dg-do compile }  */
-/* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m2a*" } } */
-/* { dg-final { scan-assembler-times "tst" 6 } } */
-/* { dg-final { scan-assembler-times "movt" 3 } } */
-/* { dg-final { scan-assembler-times "movrt" 3 } } */
-/* { dg-final { scan-assembler-not "extu|exts|negc" } } */
-
-#include "pr51244-15.c"
index a81ee7ed9d62ec00186acd47a58f14733450dca9..c6318389ff36a5a6e382f03e110fe1ff4fde2570 100644 (file)
@@ -1,11 +1,11 @@
 /* Check that when taking the complement of the T bit using the negc
-   instruction pattern, the constant -1 is loaded only once.
-   On SH2A this test is skipped because the movrt instruction is used
-   to get the complement of the T bit.  */
+   instruction pattern, the constant -1 is loaded only once on non-SH2A and
+   that the movrt insn is generated on SH2A.
 /* { dg-do compile }  */
 /* { dg-options "-O1 -mbranch-cost=2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m5*" "-m2a*" } { "" } } */
-/* { dg-final { scan-assembler-times "mov\t#-1" 1 } } */
+
+/* { dg-final { scan-assembler-times "mov\t#-1" 1 { target { ! sh2a } } } } */
+/* { dg-final { scan-assembler-times "movrt" 4 { target { sh2a } } } } */
 
 void
 testfunc_00 (int* a, int* b, int c, int d)
diff --git a/gcc/testsuite/gcc.target/sh/pr51244-20-sh2a.c b/gcc/testsuite/gcc.target/sh/pr51244-20-sh2a.c
deleted file mode 100644 (file)
index 2c6f365..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Check that the SH specific sh_treg_combine RTL optimization pass works as
-   expected.  */
-/* { dg-do compile }  */
-/* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m2a*" } } */
-/* { dg-final { scan-assembler-times "tst" 6 } } */
-/* { dg-final { scan-assembler-not "movt" } } */
-/* { dg-final { scan-assembler-times "nott" 2 } } */
-/* { dg-final { scan-assembler-times "cmp/eq" 2 } } */
-/* { dg-final { scan-assembler-times "cmp/hi" 4 } } */
-/* { dg-final { scan-assembler-times "cmp/gt" 2 } } */
-/* { dg-final { scan-assembler-not "not\t" } } */
-
-#include "pr51244-20.c"
index aad6a2fd34fc67e511747729e6ba478313280a5c..c342163160b2cf10f26f59c54c3043ba478561c8 100644 (file)
@@ -1,15 +1,19 @@
 /* Check that the SH specific sh_treg_combine RTL optimization pass works as
-   expected.  On SH2A the expected insns are slightly different, see
-   pr51244-20-sh2a.c.  */
+   expected.  */
 /* { dg-do compile }  */
 /* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m5*" "-m2a*" } { "" } } */
-/* { dg-final { scan-assembler-times "tst" 7 } } */
-/* { dg-final { scan-assembler-times "movt" 2 } } */
+
+/* { dg-final { scan-assembler-not "not\t" } } */
 /* { dg-final { scan-assembler-times "cmp/eq" 2 } } */
 /* { dg-final { scan-assembler-times "cmp/hi" 4 } } */
 /* { dg-final { scan-assembler-times "cmp/gt" 2 } } */
-/* { dg-final { scan-assembler-not "not\t" } } */
+
+/* { dg-final { scan-assembler-times "tst" 7 { target { ! sh2a } } } } */
+/* { dg-final { scan-assembler-times "movt" 2 { target { ! sh2a } } } } */
+
+/* { dg-final { scan-assembler-times "tst" 6 { target { sh2a } } } } */
+/* { dg-final { scan-assembler-not "movt" { target { sh2a } } } } */
+/* { dg-final { scan-assembler-times "nott" 2 { target { sh2a } } } } */
 
 
 /* non-SH2A: 2x tst, 1x movt, 2x cmp/eq, 1x cmp/hi
diff --git a/gcc/testsuite/gcc.target/sh/pr51244-3.c b/gcc/testsuite/gcc.target/sh/pr51244-3.c
deleted file mode 100644 (file)
index 92963c4..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Check that when taking the complement of the T bit on SH2A, 
-   the movrt instruction is being generated.  */
-/* { dg-do compile }  */
-/* { dg-options "-O1 -mbranch-cost=2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m2a*" } } */
-/* { dg-final { scan-assembler-times "movrt" 4 } } */
-
-void
-testfunc_00 (int* a, int* b, int c, int d)
-{
-  b[0] = a[0] != c;
-  b[1] = a[1] != d;
-  b[2] = a[2] != c;
-  b[3] = a[3] != d;
-}
-
index 3f9aafb7d876c26d939f8ca21904a104b6f1396a..57f1f31f2addb5b6078e80a204c4ab0a53db241d 100644 (file)
@@ -1,8 +1,7 @@
 /* Check that no unnecessary sign or zero extension insn is generated after
    a negc or movrt insn that stores the inverted T bit in a reg.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { any_fpu } } }  */
 /* { dg-options "-O1" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-not "extu|exts" } } */
 
 float
index 743e8dc546e39d7dd5bbab1bbb7084b632e5a061..81a24d4f48118db9e20b076801eebfc2248032b6 100644 (file)
@@ -1,8 +1,7 @@
 /* Check that loads/stores from/to volatile floating point mems utilize
    indexed addressing modes. */
-/* { dg-do compile }  */
+/* { dg-do compile { target { any_fpu } } }  */
 /* { dg-options "-O1" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-times "@\\(r0," 2 } } */
 
 float
index d58a72c3b2bf18b252c588dae61550fb2117c570..bd6ac00fdd67e8e65a1bf6b2c0ce66e033b2b508 100644 (file)
@@ -1,7 +1,6 @@
 /* Verify that the fmac insn is used for the standard fmaf function.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { any_fpu } } }  */
 /* { dg-options "-O1" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler "fmac" } } */
 
 #include <math.h>
index c54671bd20cd3ffa6450acd52f3ece2fbe154211..14106c02facd51f08ca1d4a779bff83a8c8dda75 100644 (file)
@@ -1,8 +1,7 @@
 /* Verify that the fsca insn is used when specifying -mfsca and
   -funsafe-math-optimizations.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { has_fsca } } }  */
 /* { dg-options "-O1 -mfsca -funsafe-math-optimizations" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2*" "-m3*" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-times "fsca" 3 } } */
 
 #include <math.h>
index ed410116c675274333f764132ca17c75919925c0..a79e58adb749e7d27b8771d050ea44ee9304786e 100644 (file)
@@ -1,8 +1,7 @@
 /* Verify that the fsca insn is not used when specifying -mno-fsca and
   -funsafe-math-optimizations.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { has_fsca } } }  */
 /* { dg-options "-O1 -mno-fsca -funsafe-math-optimizations" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2*" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-not "fsca" } } */
 
 #include <math.h>
index 71522c8d96498aaaa7eb3ec69fc8f8f9e8370b11..19e9ede8156b6125f3fdf31acf9fd42018b21bce 100644 (file)
@@ -1,8 +1,7 @@
 /* Verify that the fsrra insn is used when specifying -mfsrra and
   -funsafe-math-optimizations and -ffinite-math-only.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { has_fsrra } } }  */
 /* { dg-options "-O1 -mfsrra -funsafe-math-optimizations -ffinite-math-only" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2*" "-m3*" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler "fsrra" } } */
 
 #include <math.h>
index 1645eed528fed919c841d97c49804940db3f3bd7..a1d3e8141170956b6fc2a796232c13055f2cd48d 100644 (file)
@@ -1,8 +1,7 @@
 /* Verify that the fsrra insn is not used when specifying -mno-fsrra and
   -funsafe-math-optimizations and -ffinite-math-only.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { has_fsrra } } }  */
 /* { dg-options "-O1 -mno-fsrra -funsafe-math-optimizations -ffinite-math-only" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2*" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-not "fsrra" } } */
 
 #include <math.h>
@@ -12,4 +11,3 @@ test_func_00 (float x)
 {
   return 1 / sqrtf (x);
 }
-
index 9e4b3448346f7b034b45b62abfea91ae93ee2325..a1106111c7bbeccb15bf93d525281f39abecc8b8 100644 (file)
@@ -1,6 +1,6 @@
 /* Check that fpchg is used to switch FPSCR.PR mode on SH4A.  */
+/* { dg-do compile { target { has_fpchg } } }  */
 /* { dg-additional-options "-O" }  */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m4a" "-m4a-single" } }  */
 /* { dg-final { scan-assembler "fpchg" } }  */
 /* { dg-final { scan-assembler-not "fpscr" } }  */
 
index 17466f3e19e1e04850e288c833e52420caf15253..e6d6a0ed8e5ffcfaea5e81127b46457c9ee8c2dd 100644 (file)
@@ -9,9 +9,8 @@
        mov     r4,r0
        rts
        rotcr   r0  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { has_dyn_shift } } }  */
 /* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*"} { "-m3* -m2a* -m4*" } }  */
 /* { dg-final { scan-assembler-not "neg" } } */
 
 unsigned int
index abdb021cade38cc08986a7bd1454cf2e7802db55..7370f189d18582e057e0fe01d064054754beaf2c 100644 (file)
@@ -1,9 +1,8 @@
 /* The dynamic shift library functions truncate the shift count to 5 bits.
    Verify that this is taken into account and no extra shift count
    truncations are generated before the library call.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { ! has_dyn_shift } } }  */
 /* { dg-options "-O1" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m1*" "-m2" "-m2e*" } } */
 /* { dg-final { scan-assembler-not "and" } } */
 /* { dg-final { scan-assembler-not "#31" } } */
 
index e01e51c0a36471c57baa805eb31542f48e672ec5..421d7bf80adf591a9027d5ab5f20c4d7d1f8723d 100644 (file)
@@ -1,11 +1,15 @@
 /* Check that the rotcr instruction is generated when shifting the
-   negated T bit on non-SH2A.  */
+   negated T bit on non-SH2A.
+   On SH2A expect a movrt rotr sequence instead.  */
 /* { dg-do compile }  */
 /* { dg-options "-O1" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m5*" "-m2a*" } { "" } }  */
-/* { dg-final { scan-assembler-times "rotcr" 1 } } */
-/* { dg-final { scan-assembler-times "tst" 1 } } */
-/* { dg-final { scan-assembler-times "movt" 1 } } */
+
+/* { dg-final { scan-assembler-times "rotcr" 1 { target { ! sh2a } } } } */
+/* { dg-final { scan-assembler-times "tst" 1 { target { ! sh2a } } } } */
+/* { dg-final { scan-assembler-times "movt" 1 { target { ! sh2a } } } } */
+
+/* { dg-final { scan-assembler-times "movrt" 1 { target { sh2a } } } } */
+/* { dg-final { scan-assembler-times "rotr" 1 { target { sh2a } } } } */
 
 int
 test_00 (int a, int b)
diff --git a/gcc/testsuite/gcc.target/sh/pr54089-5.c b/gcc/testsuite/gcc.target/sh/pr54089-5.c
deleted file mode 100644 (file)
index decb9db..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Check that the movrt rotr instruction sequence is generated when shifting
-   the negated T bit on SH2A.  */
-/* { dg-do compile }  */
-/* { dg-options "-O1" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m2a*" } } */
-/* { dg-final { scan-assembler-times "movrt" 1 } } */
-/* { dg-final { scan-assembler-times "rotr" 1 } } */
-
-int
-test_00 (int a, int b)
-{
-  int r = a != b;
-  return r << 31;
-}
index 05592ddbfdd9f1da6b4db79e69e7d917ff82183b..f5d5c77bba06a18616c190df2911c37d9c3af197 100644 (file)
@@ -1,9 +1,8 @@
 /* Verify that the delay slot is not stuffed with register pop insns for
    interrupt handler function returns on SH1* and SH2* targets, where the
    rte insn uses the stack pointer.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { stack_save_isr } } }  */
 /* { dg-options "-O1" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m1*" "-m2*" } }  */
 /* { dg-final { scan-assembler-times "nop" 1 } } */
 
 int test00 (int a, int b);
index 5d6a75a70ae313908b42d54e8fa504ec5ab7ce55..37dc005121cb9b7956860c2cb7f69576f23fb203 100644 (file)
@@ -1,8 +1,7 @@
 /* Verify that the rte delay slot is not stuffed with register pop insns
    which touch the banked registers r0..r7 on SH3* and SH4* targets.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { banked_r0r7_isr } } }  */
 /* { dg-options "-O1" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m3*" "-m4*" } }  */
 /* { dg-final { scan-assembler-times "nop" 1 } } */
 
 int __attribute__ ((interrupt_handler))
index 6bda66bd675ac5c87c22a7b8a8a574ce8f30b06e..8e044ed47add7f62906b4da85477bb861135eca4 100644 (file)
@@ -1,9 +1,8 @@
 /* Verify that the delay slot is stuffed with register pop insns on SH3* and
    SH4* targets, where the stack pointer is not used by the rte insn.  If
    everything works out, we won't see a nop insn.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { banked_r0r7_isr } } }  */
 /* { dg-options "-O1" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m3*" "-m4*" } }  */
 /* { dg-final { scan-assembler-not "rte\n\tnop" } } */
 
 int test00 (int a, int b);
index 807a53a10b411112476f54877db6cd3c712fc04e..7b02de35464787ccdc4eb5b28be01a71e8ca668f 100644 (file)
@@ -1,9 +1,8 @@
 /* Verify that the fsca input value is not converted to float and then back
    to int.  Notice that we can't count just "lds" insns because mode switches
    use "lds.l".  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { has_fsca } } }  */
 /* { dg-options "-O2 -mfsca -funsafe-math-optimizations -fno-ipa-icf" }  */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2*" "-m3*" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-times "fsca" 7 } } */
 /* { dg-final { scan-assembler-times "shad" 1 } } */
 /* { dg-final { scan-assembler-times "lds\tr\[0-9\],fpul" 6 } } */
index b77c5e10ee5753633771644df42e5c87f9360688..bbf6570a6b7a4b7220ea3e1d95dc1b8c02129e19 100644 (file)
@@ -1,8 +1,7 @@
 /* Verify that the SH2A clips and clipu instructions are generated as
    expected.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m2a*" } } */
 /* { dg-final { scan-assembler-times "clips.b" 2 } } */
 /* { dg-final { scan-assembler-times "clips.w" 2 } } */
 /* { dg-final { scan-assembler-times "clipu.b" 2 } } */
index 34f706327dfece72c1e960bbdbb813212e182f79..4525790888a66dede86ce8d03e66bdd432675f17 100644 (file)
@@ -1,9 +1,8 @@
 /* Verify that for SH2A smax/smin -> cbranch conversion is done properly
    if the clips insn is not used and the expected comparison insns are
    generated.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m2a*" } } */
 /* { dg-final { scan-assembler-times "cmp/pl" 4 } } */
 
 int
index 57c2f403e7165d4953bcee9eeca8127b4b143377..f5c23730f7bab760df7ce30e5dba8628fc796c05 100644 (file)
@@ -1,8 +1,7 @@
 /* Verify that the special case (umin (reg const_int 1)) results in the
    expected instruction sequence on SH2A.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m2a*" } } */
 /* { dg-final { scan-assembler-times "tst" 1 } } */
 /* { dg-final { scan-assembler-times "movrt" 1 } } */
 
index 0c7c97e81dd8cb038eb9f97ea75cb8cb264df864..d9be9be05b04cb72942f1c81475e12f860c81c64 100644 (file)
@@ -1,9 +1,8 @@
 /* Verify that the fmac insn is used for the expression 'a * b + a' and
    'a * a + a'.
    This assumes that the default compiler setting is -ffp-contract=fast.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { any_fpu } } }  */
 /* { dg-options "-O1" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-times "fmac" 2 } } */
 
 float
index 2d36fa9c5685c8412fc5b3f707ea44c8d8ac0368..e9f1df94cebc111e30818295868d1fc6d62a80d0 100644 (file)
@@ -1,8 +1,7 @@
 /* Verify that the fmac insn is used for the expression 'a * b + a' and
    'a * a + a' when -ffast-math is specified.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { any_fpu } } }  */
 /* { dg-options "-O1 -ffast-math" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 /* { dg-final { scan-assembler-times "fmac" 2 } } */
 
 float
index f3fb10b7bf4a934f0e8ace93f7b36f91afc8bf85..5c7925428a72acf85a0c13c8fc993919561f519a 100644 (file)
@@ -1,8 +1,6 @@
 /* Verify that we don't switch mode for single moves.  */
-/* { dg-do compile }  */
-/* { dg-require-effective-target hard_float } */
-/* { dg-skip-if "" { *-*-* }  { "mfmovd" } { "" } } */
-/* { dg-final { scan-assembler-not "fpscr" } } */
+/* { dg-do compile { target { any_fpu && { ! fmovd_enabled } } } }  */
+/* { dg-final { scan-assembler-not "fpscr|fpchg" } } */
 
 float *g;
 
index 51a5f929d5501291a84aaa9eeef4e0845efe0a1a..e839cc3555b1da4a4256a9a17de3b469cde0811e 100644 (file)
@@ -1,9 +1,8 @@
 /* Check that the option -musermode has no effect on targets that do not
    support user/privileged mode and that it does not interfere with option
    -matomic-model=soft-imask.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { ! has_privileged } } }  */
 /* { dg-options "-matomic-model=soft-imask" }  */
-/* { dg-skip-if "" { "sh*-*-*" } { "*"} { "-m1*" "-m2*" } }  */
 
 int
 test (void)
index a49b877b5760d5e2424728bcb01c75b5cba60c6b..7443b4d1e34973078a75c8c74849e3f8e89d00af 100644 (file)
@@ -1,8 +1,8 @@
 /* Check that the XF registers are not clobbered by an integer division
    that is done using double precision FPU division.  */
-/* { dg-do run }  */
+
+/* { dg-do run { target { default_single_fpu && has_xf_regs } } } */
 /* { dg-options "-O1 -mdiv=call-fp" }  */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m4*-single" "-m4*-single-only" } }  */
 
 #include <assert.h>
 #include <stdlib.h>
index fffc4257b7edbb1d154f1dbe5f8cb9327b1af263..8c91b3778796f8bdff79cd48d2a10ba0b6a1d43d 100644 (file)
@@ -3,8 +3,7 @@
    (On SH3* and SH4* r0..r7 are banked)
    Call-saved registers r8..r14 also don't need to be restored.
    To test that we look for register push insns such as 'mov.l r0,@-r15'.  */
-/* { dg-do compile { target { { "sh*-*-*" } && nonpic } } }  */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1*" "-m2*" "-m5*" } { "" } }  */
+/* { dg-do compile { target { { banked_r0r7_isr } && nonpic } } }  */
 /* { dg-options "-O" }  */
 /* { dg-final { scan-assembler-times "rte" 1 } }  */
 /* { dg-final { scan-assembler-not "mov.l\tr\[0-9\],@-r15" } }  */
index e2e69993fae3328496d51e6e4161cec15a5fad9c..49a60dff8a4d86c594c90eeb0fcefba43fb0615c 100644 (file)
@@ -2,8 +2,7 @@
    The function call will require to load the address first into a register,
    then use that for a jsr or jmp.  It will also need to load a constant
    address in order to load fpscr.  */
-/* { dg-do compile { target { { "sh*-*-*" } && nonpic } } }  */
-/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
+/* { dg-do compile { target { { any_fpu } && nonpic } } }  */
 /* { dg-options "-O" }  */
 /* { dg-final { scan-assembler-times "rte" 1 } }  */
 /* { dg-final { scan-assembler-not "mov.l\tr\[0-9\],@-r15" } }  */
index fb580bde87a65d02e7ad67827d87ef9265cea6a0..24b7939b99915cf6d8bafe38159102d45d8eff92 100644 (file)
@@ -1,9 +1,8 @@
-/* Testcase to check generation of a SH4 and SH2A operand cache prefetch
-   instruction PREF @Rm.  */
-/* { dg-do assemble }  */
+/* Testcase to check generation of the operand cache prefetch instruction
+   PREF @Rm.  */
+/* { dg-do compile { target { has_pref } } }  */
 /* { dg-options "-O0" }  */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m2a*" "-m3*" "-m4*" } }  */
-/* { dg-final { scan-assembler "pref"} }  */
+/* { dg-final { scan-assembler "pref" } }  */
 
 void
 opt (void)
index 48f1b13b0d30135da8a2a185d111a5d85264aa63..ea5521275a33434f39258a7c7832561f368dbc9a 100644 (file)
@@ -1,6 +1,5 @@
-/* { dg-do compile }  */
+/* { dg-do compile { target { stack_save_isr } } }  */
 /* { dg-options "-O2" } */
-/* { dg-skip-if "" { "sh*-*-*" } "*" "-m1 -m2*" }  */
 /* { dg-final { scan-assembler-not "\trte\t\n\tmov.l\t@r15\\+" } } */
 
 /* This test checks if the compiler generates a pop instruction
index f00dbd54cef7c3e6c8cf8ba6afd2fa920f6b7d91..3064bd00ad59a3316a2511d953039cc9dfb1e816 100644 (file)
@@ -42,6 +42,217 @@ proc check_effective_target_sh1 { } {
     } ""]
 }
 
+# Return 1 if target is SH4A
+proc check_effective_target_sh4a { } {
+    return [check_no_compiler_messages sh4a object {
+            #ifndef __SH4A__
+            #error ""
+            #endif
+    } ""]
+}
+
+# Return 1 if target is big endian
+proc check_effective_target_big_endian { } {
+    return [check_no_compiler_messages big_endian object {
+            #if __BYTE_ORDER__ != __ORDER_BIG_ENDIAN__
+            #error ""
+            #endif
+    } ""]
+}
+
+# Return 1 if target is little endian
+proc check_effective_target_little_endian { } {
+    return [check_no_compiler_messages little_endian object {
+            #if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__
+            #error ""
+            #endif
+    } ""]
+}
+
+# Return 1 if the target has any FPU (single or double precision)
+proc check_effective_target_any_fpu { } {
+    return [check_no_compiler_messages any_fpu object {
+            #ifndef __SH_FPU_ANY__
+            #error ""
+            #endif
+    } ""]
+}
+
+# Return 1 if the target has a double precision FPU which is allowed to be
+# used by the compiler as such.
+proc check_effective_target_double_fpu { } {
+    return [check_no_compiler_messages double_fpu object {
+            #ifndef __SH_FPU_DOUBLE__
+            #error ""
+            #endif
+    } ""]
+}
+
+# Return 1 if the target has a double precision FPU but it is only being used
+# in single precision mode by the compiler
+proc check_effective_target_use_single_only_fpu { } {
+    return [check_no_compiler_messages use_single_only_fpu object {
+            #if !(defined (__SH2A_SINGLE_ONLY__) \
+                  || defined (__SH4_SINGLE_ONLY__))
+            #error ""
+            #endif
+    } ""]
+}
+
+# Return 1 if the target has an FPU and the default mode is single
+proc check_effective_target_default_single_fpu { } {
+    return [check_no_compiler_messages default_single_fpu object {
+            #if !(defined (__SH2E__) || defined (__SH3E__) \
+                  || defined (__SH2A_SINGLE__) \
+                  || defined (__SH2A_SINGLE_ONLY__) \
+                  || defined (__SH4_SINGLE__) \
+                  || defined (__SH4_SINGLE_ONLY__))
+            #error ""
+            #endif
+    } ""]
+}
+
+# Return 1 if the target has no FPU
+proc check_effective_target_no_fpu { } {
+    return [check_no_compiler_messages no_fpu object {
+            #ifdef __SH_FPU_ANY__
+            #error ""
+            #endif
+    } ""]
+}
+
+
+# Return 1 if the target has XF regs
+proc check_effective_target_has_xf_regs { } {
+    return [check_no_compiler_messages has_xf_regs object {
+            #if !(defined (__SH_FPU_ANY__) \
+                  && (defined (__SH4__) \
+                      || defined (__SH4_SINGLE__) \
+                      || defined (__SH4_SINGLE_ONLY__) \
+                      || defined (__SH4A__)))
+            #error ""
+            #endif
+    } ""]
+}
+
+
+# Return 1 if the target can do the fsca insn
+proc check_effective_target_has_fsca { } {
+    return [check_no_compiler_messages has_fsca object {
+            #if !(defined (__SH_FPU_ANY__) \
+                  && (defined (__SH4__) \
+                      || defined (__SH4_SINGLE__) \
+                      || defined (__SH4_SINGLE_ONLY__) \
+                      || defined (__SH4A__)))
+            #error ""
+            #endif
+    } ""]
+}
+
+# Return 1 if the target can do the fsrra insn
+proc check_effective_target_has_fsrra { } {
+    return [check_no_compiler_messages has_fsrra object {
+            #if !(defined (__SH_FPU_ANY__) \
+                  && (defined (__SH4__) \
+                      || defined (__SH4_SINGLE__) \
+                      || defined (__SH4_SINGLE_ONLY__) \
+                      || defined (__SH4A__)))
+            #error ""
+            #endif
+    } ""]
+}
+
+# Return 1 if the target can do the fpchg insn
+proc check_effective_target_has_fpchg { } {
+    return [check_no_compiler_messages has_fpchg object {
+            #if !(defined (__SH4A__) && defined (__SH_FPU_ANY__) \
+                  && !defined (__SH4_SINGLE_ONLY__))
+            #error ""
+            #endif
+    } ""]
+}
+
+# Return 1 if the target can do dynamic shifts
+proc check_effective_target_has_dyn_shift { } {
+    return [check_no_compiler_messages has_dyn_shift object {
+            #if !(defined (__SH3__) \
+                  || defined (__SH3E__) \
+                  || defined (__SH2A__) \
+                  || defined (__SH4__) \
+                  || defined (__SH4_NOFPU__) \
+                  || defined (__SH4_SINGLE__) \
+                  || defined (__SH4_SINGLE_ONLY__) \
+                  || defined (__SH4A__))
+            #error ""
+            #endif
+    } ""]
+}
+
+# Return 1 if the mfmovd option is enabled
+proc check_effective_target_fmovd_enabled { } {
+    return [check_no_compiler_messages fmovd_enabled object {
+            #ifndef __FMOVD_ENABLED__
+            #error ""
+            #endif
+    } ""]
+}
+
+# Return 1 if the target supports privileged mode
+proc check_effective_target_has_privileged { } {
+    return [check_no_compiler_messages has_privileged object {
+            #if !(defined (__SH3__) \
+                  || defined (__SH3E__) \
+                  || defined (__SH4__) \
+                  || defined (__SH4_NOFPU__) \
+                  || defined (__SH4_SINGLE__) \
+                  || defined (__SH4_SINGLE_ONLY__) \
+                  || defined (__SH4A__))
+            #error ""
+            #endif
+    } ""]
+}
+
+# Return 1 if the target supports the prefetch insn
+proc check_effective_target_has_pref { } {
+    return [check_no_compiler_messages has_pref object {
+            #if !(defined (__SH3__) \
+                  || defined (__SH3E__) \
+                  || defined (__SH4__) \
+                  || defined (__SH4_NOFPU__) \
+                  || defined (__SH4_SINGLE__) \
+                  || defined (__SH4_SINGLE_ONLY__) \
+                  || defined (__SH4A__))
+            #error ""
+            #endif
+    } ""]
+}
+
+# Return 1 if target does banked r0..r7 regs type of ISRs
+proc check_effective_target_banked_r0r7_isr { } {
+    return [check_no_compiler_messages banked_r0r7_isr object {
+            #if !(defined (__SH3__) || defined (__SH3E__) \
+                  || defined (__SH4__) \
+                  || defined (__SH4_SINGLE__) \
+                  || defined (__SH4_SINGLE_ONLY__) \
+                  || defined (__SH4_NOFPU__) \
+                  || defined (__SH4A__))
+            #error ""
+            #endif
+    } ""]
+}
+
+# Return 1 if target does stack only type of ISRs
+proc check_effective_target_stack_save_isr { } {
+    return [check_no_compiler_messages stack_save_isr object {
+            #if !(defined (__SH1__) \
+                  || defined (__SH2__) \
+                  || defined (__SH2E__) \
+                  || defined (__SH2A__))
+            #error ""
+            #endif
+    } ""]
+}
+
 # Return 1 if target supports atomic-model=soft-gusa
 proc check_effective_target_atomic_model_soft_gusa_available { } {
     return [check_no_compiler_messages atomic_model_soft_gusa_available object {
index a5096262c876ee47a651688586b55c6ef493470a..fd1fe01521710017ebd77d20690113bc7396ffe1 100644 (file)
@@ -1,8 +1,7 @@
 /* Testcase to check generation of a SH2A specific instruction for
    "BAND.B #imm3, @(disp12, Rn)".  */
-/* { dg-do assemble }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-O1 -mbitops" }  */
-/* { dg-skip-if "" { "sh*-*-*" } "*" "-m2a -m2a-nofpu -m2a-single -m2a-single-only" }  */
 /* { dg-final { scan-assembler "band.b"} }  */
 
 volatile struct
index ab1e3ddab204f39f4b940839152dfcd1b1a69f4d..7465d5b8fdac2c256a0b0974faf1b8c415fbb3e1 100644 (file)
@@ -1,8 +1,7 @@
 /* Testcase to check generation of a SH2A specific instruction
    'BCLR #imm3,Rn'.  */
-/* { dg-do assemble }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-O1" }  */
-/* { dg-skip-if "" { "sh*-*-*" } "*" "-m2a -m2a-nofpu -m2a-single -m2a-single-only" }  */
 /* { dg-final { scan-assembler "bclr"} }  */
 
 struct a
index 9c99c592980233fc3ffd18da50454a96c6fcbf71..d039e6e9552297952a0ae4a36560e8238f749562 100644 (file)
@@ -1,8 +1,7 @@
 /* Testcase to check generation of a SH2A specific instruction
    "BCLR #imm3,@(disp12,Rn)".  */
-/* { dg-do assemble }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-O2 -mbitops" }  */
-/* { dg-skip-if "" { "sh*-*-*" } "*" "-m2a -m2a-nofpu -m2a-single -m2a-single-only" }  */
 /* { dg-final { scan-assembler "bclr"} }  */
 /* { dg-final { scan-assembler "bclr.b"} }  */
 
index d0c74c9c72c524c11e7831274605636e8ece94ec..0d4ab27ee3b4278375116b7736c0a8a9bbc247b9 100644 (file)
@@ -4,9 +4,8 @@
     BLD #imm3, Rn
     BLD.B #imm3, @(disp12, Rn)
  */
-/* { dg-do assemble }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-Os -mbitops" }  */
-/* { dg-skip-if "" { "sh*-*-*" } "*" "-m2a -m2a-nofpu -m2a-single -m2a-single-only" }  */
 /* { dg-final { scan-assembler "bld"} }  */
 /* { dg-final { scan-assembler "bld.b"} }  */
 
index 8db437709972524dba969a325c93a21d4d8cece8..648e7661302f4f31927646ca90e6660cbed70e04 100644 (file)
@@ -1,8 +1,7 @@
 /* Testcase to check generation of a SH2A specific instruction for
    "BOR.B #imm3, @(disp12, Rn)".  */
-/* { dg-do assemble }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-O1 -mbitops" } */
-/* { dg-skip-if "" { "sh*-*-*" } "*" "-m2a -m2a-nofpu -m2a-single -m2a-single-only" }  */
 /* { dg-final { scan-assembler "bor.b"} }  */
 
 volatile struct
index 322821b5accffe8071704499c1301329e6e4665d..27e04b46fa2ffbd6d494956126662084cd15346b 100644 (file)
@@ -1,8 +1,7 @@
 /* Testcase to check generation of a SH2A specific instruction
   'BSET #imm3,Rn'.  */
-/* { dg-do assemble }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-O1" }  */
-/* { dg-skip-if "" { "sh*-*-*" } "*" "-m2a -m2a-nofpu -m2a-single -m2a-single-only" }  */
 /* { dg-final { scan-assembler "bset"} }  */
 
 struct a
index cf35ed632bf211e46604b835dc8dfed4d7ffd702..ba5793254578b52d2e8544c0ddb2924cd8bc06c8 100644 (file)
@@ -1,8 +1,7 @@
 /* Testcase to check generation of a SH2A specific instruction
    "BSET #imm3,@(disp12,Rn)".  */
-/* { dg-do assemble }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-O2 -mbitops" }  */
-/* { dg-skip-if "" { "sh*-*-*" } "*" "-m2a -m2a-nofpu -m2a-single -m2a-single-only" }  */
 /* { dg-final { scan-assembler "bset"} }  */
 /* { dg-final { scan-assembler "bset.b"} }  */
 
index 6cca825e61220a4998b5fdb5463779a3188fea10..9259981c255ec992888bc4a73850c37b1a1e0a09 100644 (file)
@@ -1,8 +1,7 @@
 /* Testcase to check generation of a SH2A specific instruction for
    "BXOR.B #imm3, @(disp12, Rn)".  */
-/* { dg-do assemble }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-O1 -mbitops" }  */
-/* { dg-skip-if "" { "sh*-*-*" } "*" "-m2a -m2a-nofpu -m2a-single -m2a-single-only" }  */
 /* { dg-final { scan-assembler "bxor.b"} }  */
 
 volatile struct
index 3f55327f0d734380815869f8dcc463be2f44d78a..62e312859b630e4f9e192d93318118a321bb1999 100644 (file)
@@ -1,8 +1,7 @@
 /* Testcase to check generation of a SH2A specific instruction for
    'JSR/N @Rm'.  */
-/* { dg-do assemble }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-O0" }  */
-/* { dg-skip-if "" { "sh*-*-*" } "*" "-m2a -m2a-nofpu -m2a-single -m2a-single-only" }  */
 /* { dg-final { scan-assembler "jsr/n"} }  */
 
 void foo(void)
index fe3226e25141fa427728df4b0a30fadb1794c474..91cf96e82a89db946d8941a314c47497d3186d13 100644 (file)
@@ -1,7 +1,6 @@
 /* Testcase to check generation of 'MOVI20S #imm20, Rn'.  */
-/* { dg-do assemble }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-O0" } */
-/* { dg-skip-if "" { "sh*-*-*" } "*" "-m2a -m2a-nofpu -m2a-single -m2a-single-only" }  */
 /* { dg-final { scan-assembler "movi20s"} }  */
 
 volatile long la;
index 3e72930ca64c9fbb8e4c1850151eeb9d97a834c3..dd2abc2a4278c7926a10eb71b8ff1ec47dd99f0a 100644 (file)
@@ -1,9 +1,8 @@
 /* Testcase to check generation of a SH2A specific instruction for
    'MOVRT Rn'.  */
-/* { dg-do assemble }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-O1" }  */
-/* { dg-skip-if "" { "sh*-*-*" } "*" "-m2a -m2a-nofpu -m2a-single -m2a-single-only" }  */
-/* { dg-final { scan-assembler "movrt"} }  */
+/* { dg-final { scan-assembler "movrt" } }  */
 
 int
 foo (void)
index a12a711afa6dedeec9889cf96282228765090a11..bb2fa07ac170726b1f2644b8fc8e032a110397b5 100644 (file)
@@ -1,6 +1,5 @@
 /* Test for resbank attribute.  */
-/* { dg-do assemble }  */
-/* { dg-skip-if "" { "sh*-*-*" } "*" "-m2a -m2a-nofpu -m2a-single -m2a-single-only" } */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-final { scan-assembler "resbank" } } */
  
 extern void bar(void);
index 612c3032de119294c0bf14b56b45922efa002809..78782b8cc312b7b4a37c13f0504496211ae9a505 100644 (file)
@@ -1,8 +1,7 @@
 /* Testcase to check generation of a SH2A specific instruction for
    'RTS/N'.  */
-/* { dg-do assemble }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "-O0" }  */
-/* { dg-skip-if "" { "sh*-*-*" } "*" "-m2a -m2a-nofpu -m2a-single -m2a-single-only" }  */
 /* { dg-final { scan-assembler "rts/n"} }  */
 
 void
index 24b57febe636393b03dc14dabd4067eb49a1a0a0..7e92bb96ad2166fd15eaa4564e549f3dbebb9568 100644 (file)
@@ -1,8 +1,7 @@
 /* Testcase to check generation of a SH2A specific,
    TBR relative jump instruction - 'JSR @@(disp8,TBR)'.  */
-/* { dg-do assemble }  */
+/* { dg-do compile { target { sh2a } } }  */
 /* { dg-options "" } */
-/* { dg-skip-if "" { "sh*-*-*" } "*" "-m2a -m2a-nofpu -m2a-single -m2a-single-only" } */
 /* { dg-final { scan-assembler-times "jsr/n\\t@@\\(40,tbr\\)" 1} } */
 /* { dg-final { scan-assembler-times "jsr/n\\t@@\\(72,tbr\\)" 1} } */
  
index 35ebf5cd3e63fc54e2551740f0c2293995ac21a0..13c620686c387bd57bcb22fdc70d37077e366644 100644 (file)
@@ -1,7 +1,6 @@
 /* Verify that we generate movua to load unaligned 32-bit values on SH4A.  */
-/* { dg-do run }  */
+/* { dg-do run { target { sh4a } } }  */
 /* { dg-options "-O1 -save-temps -fno-inline" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m4a*" } }  */
 /* { dg-final { scan-assembler-times "movua.l" 6 } } */
 
 /* Aligned.  */
index d6277da7e9ae9f029e6687c665489b6fe1d34b8f..70262f8100331f4e02590104248bf9c12187fc08 100644 (file)
@@ -1,11 +1,13 @@
 /* Verify that we generate single-precision sine and cosine approximate
    (fsca) in fast math mode on SH4A with FPU.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { sh4a && any_fpu } } }  */
 /* { dg-options "-O -ffast-math" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m4a" "-m4a-single" "-m4a-single-only" } }  */
 /* { dg-final { scan-assembler "fsca" } } */
 
 #include <math.h>
 
-float test(float f) { return cosf(f); }
-
+float
+test (float f)
+{
+  return cosf (f);
+}
index 0bd7d8773bbade334d2e3f0bdd3408ff7124916b..ebbb05a0846a046c7342d081afaa19dc5add7c03 100644 (file)
@@ -1,11 +1,13 @@
 /* Verify that we generate single-precision square root reciprocal
    approximate (fsrra) in fast math mode on SH4A with FPU.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { has_fsrra } } }  */
 /* { dg-options "-O -ffast-math" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m4a" "-m4a-single" "-m4a-single-only" } }  */
 /* { dg-final { scan-assembler "fsrra" } } */
 
 #include <math.h>
 
-float test(float f) { return 1 / sqrtf(f); }
-
+float
+test (float f)
+{
+  return 1 / sqrtf (f);
+}
index 7e817c4c12295102b5b94dfecaeecf62111fc63d..bb565dff6ac1e25bf88ce010d28cdc9bf836b49c 100644 (file)
@@ -1,14 +1,15 @@
 /* Verify that we generate movua to copy unaligned memory regions to
    32-bit-aligned addresses on SH4A.  */
-/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-do compile { target { sh4a } } }  */
 /* { dg-options "-O" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m4a" "-m4a-single" "-m4a-single-only" "-m4a-nofpu" } }  */
 /* { dg-final { scan-assembler-times "movua.l" 2 } } */
 
 #include <string.h>
 
 struct s { int i; char a[10], b[10]; } x;
-int f() {
-  memcpy(x.a, x.b, 10);
-}
 
+int
+f (void)
+{
+  memcpy (x.a, x.b, 10);
+}
index b85fa86a278c45c757ca0afce56db01783a4ebdb..533c83c08b47016049232532fb47c81c6ff9ad62 100644 (file)
@@ -1,12 +1,14 @@
 /* Verify that we generate a single single-precision sine and cosine
    approximate (fsca) in fast math mode when a function computes both
    sine and cosine.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { sh4a && any_fpu } } }  */
 /* { dg-options "-O -ffast-math" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m4a" "-m4a-single" "-m4a-single-only" } }  */
 /* { dg-final { scan-assembler-times "fsca" 1 } } */
 
 #include <math.h>
 
-float test(float f) { return sinf(f) + cosf(f); }
-
+float
+test (float f)
+{
+  return sinf (f) + cosf (f);
+}
index 0ce13263ec17055d10f0a295010d080293d6d7d8..fbe9592460bfd56d3844b7fa76a7a466fe833b81 100644 (file)
@@ -1,11 +1,13 @@
 /* Verify that we generate single-precision sine and cosine approximate
    (fsca) in fast math mode on SH4A with FPU.  */
-/* { dg-do compile }  */
+/* { dg-do compile { target { sh4a && any_fpu } } }  */
 /* { dg-options "-O -ffast-math" } */
-/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m4a" "-m4a-single" "-m4a-single-only" } }  */
 /* { dg-final { scan-assembler "fsca" } } */
 
 #include <math.h>
 
-float test(float f) { return sinf(f); }
-
+float
+test (float f)
+{
+  return sinf (f);
+}