decimal float modes for all floating point registers.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109836
138bc75d-0d04-0410-961f-
82ee72b054a4
2006-01-18 Ben Elliston <bje@au.ibm.com>
+ * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Reject
+ decimal float modes for all floating point registers.
+
* config/rs6000/predicates.md (reg_or_mem_operand): Pair up
match_code "mem" with match_test "macho_lo_sum_memory_operand".
if (INT_REGNO_P (regno))
return INT_REGNO_P (regno + HARD_REGNO_NREGS (regno, mode) - 1);
- /* The float registers can only hold floating modes and DImode. */
+ /* The float registers can only hold floating modes and DImode.
+ This also excludes decimal float modes. */
if (FP_REGNO_P (regno))
return
(SCALAR_FLOAT_MODE_P (mode)
+ && !DECIMAL_FLOAT_MODE_P (mode)
&& FP_REGNO_P (regno + HARD_REGNO_NREGS (regno, mode) - 1))
|| (GET_MODE_CLASS (mode) == MODE_INT
&& GET_MODE_SIZE (mode) == UNITS_PER_FP_WORD);