summaryrefslogtreecommitdiff
path: root/gcc/config/sh/sh.h
diff options
context:
space:
mode:
authorolegendo <olegendo@138bc75d-0d04-0410-961f-82ee72b054a4>2013-03-13 18:09:10 +0000
committerolegendo <olegendo@138bc75d-0d04-0410-961f-82ee72b054a4>2013-03-13 18:09:10 +0000
commitbb0578782fc7e912baf8eb5ace9b9046aa4d95aa (patch)
treef74de87ca2e71aa3f530e74fa71a89a4e333a087 /gcc/config/sh/sh.h
parentcfdddc4bb07cddac1682c817d741d0ec09d20fe4 (diff)
downloadgcc-bb0578782fc7e912baf8eb5ace9b9046aa4d95aa.tar.gz
PR target/49880
* config/sh/sh.opt (FPU_SINGLE_ONLY): New mask. (musermode): Convert to Var(TARGET_USERMODE). * config/sh/sh.h (SELECT_SH2A_SINGLE_ONLY, SELECT_SH4_SINGLE_ONLY, MASK_ARCH): Add MASK_FPU_SINGLE_ONLY. * config/sh/sh.c (sh_option_override): Use TARGET_FPU_DOUBLE || TARGET_FPU_SINGLE_ONLY for call-fp case. * config/sh/sh.md (udivsi3_i1, divsi3_i1): Remove ! TARGET_SH4 condition. (udivsi3_i4, divsi3_i4): Use TARGET_FPU_DOUBLE condition instead of TARGET_SH4. (udivsi3_i4_single, divsi3_i4_single): Use TARGET_FPU_SINGLE_ONLY || TARGET_FPU_DOUBLE instead of TARGET_HARD_SH4. PR target/49880 * config/sh/lib1funcs.S (sdivsi3_i4, udivsi3_i4): Enable for SH2A. (sdivsi3, udivsi3): Remove SH4 check and always compile these functions. PR target/49880 * gcc.target/sh/pr49880-1.c: New. * gcc.target/sh/pr49880-2.c: New. * gcc.target/sh/pr49880-3.c: New. * gcc.target/sh/pr49880-4.c: New. * gcc.target/sh/pr49880-5.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@196636 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/sh/sh.h')
-rw-r--r--gcc/config/sh/sh.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h
index ecd6c17e553..3744f980fe7 100644
--- a/gcc/config/sh/sh.h
+++ b/gcc/config/sh/sh.h
@@ -138,14 +138,16 @@ extern int code_for_indirect_jump_scratch;
| MASK_SH2 | MASK_SH1)
#define SELECT_SH2A_NOFPU (MASK_HARD_SH2A | MASK_SH2 | MASK_SH1)
#define SELECT_SH2A_SINGLE_ONLY (MASK_SH_E | MASK_HARD_SH2A | MASK_SH2 \
- | MASK_SH1 | MASK_FPU_SINGLE)
+ | MASK_SH1 | MASK_FPU_SINGLE \
+ | MASK_FPU_SINGLE_ONLY)
#define SELECT_SH2A_SINGLE (MASK_SH_E | MASK_HARD_SH2A \
| MASK_FPU_SINGLE | MASK_HARD_SH2A_DOUBLE \
| MASK_SH2 | MASK_SH1)
#define SELECT_SH3 (MASK_SH3 | SELECT_SH2)
#define SELECT_SH3E (MASK_SH_E | MASK_FPU_SINGLE | SELECT_SH3)
#define SELECT_SH4_NOFPU (MASK_HARD_SH4 | SELECT_SH3)
-#define SELECT_SH4_SINGLE_ONLY (MASK_HARD_SH4 | SELECT_SH3E)
+#define SELECT_SH4_SINGLE_ONLY (MASK_HARD_SH4 | SELECT_SH3E \
+ | MASK_FPU_SINGLE_ONLY)
#define SELECT_SH4 (MASK_SH4 | MASK_SH_E | MASK_HARD_SH4 \
| SELECT_SH3)
#define SELECT_SH4_SINGLE (MASK_FPU_SINGLE | SELECT_SH4)
@@ -212,7 +214,8 @@ extern int code_for_indirect_jump_scratch;
/* Reset all target-selection flags. */
#define MASK_ARCH (MASK_SH1 | MASK_SH2 | MASK_SH3 | MASK_SH_E | MASK_SH4 \
| MASK_HARD_SH2A | MASK_HARD_SH2A_DOUBLE | MASK_SH4A \
- | MASK_HARD_SH4 | MASK_FPU_SINGLE | MASK_SH5)
+ | MASK_HARD_SH4 | MASK_FPU_SINGLE | MASK_SH5 \
+ | MASK_FPU_SINGLE_ONLY)
/* This defaults us to big-endian. */
#ifndef TARGET_ENDIAN_DEFAULT