Change rs6000_const_f32_to_i32 return type.

The function rs6000_const_f32_to_i32 called REAL_VALUE_TO_TARGET_SINGLE
with a long long type and returns it.  This patch changes the type to long
which is the proper type for REAL_VALUE_TO_TARGET_SINGLE.

2021-07-12  Michael Meissner  <meissner@linux.ibm.com>

gcc/
	* config/rs6000/altivec.md (xxspltiw_v4sf): Change local variable
	value to to long.
	* config/rs6000/rs6000-protos.h (rs6000_const_f32_to_i32): Change
	return type to long.
	* config/rs6000/rs6000.c (rs6000_const_f32_to_i32): Change return
	type to long.
This commit is contained in:
Michael Meissner 2021-07-12 23:50:38 -04:00
parent 07bcbf9cc2
commit 7591309696
3 changed files with 6 additions and 4 deletions

View File

@ -863,7 +863,7 @@
UNSPEC_XXSPLTIW))]
"TARGET_POWER10"
{
long long value = rs6000_const_f32_to_i32 (operands[1]);
long value = rs6000_const_f32_to_i32 (operands[1]);
emit_insn (gen_xxspltiw_v4sf_inst (operands[0], GEN_INT (value)));
DONE;
})

View File

@ -281,7 +281,7 @@ extern void rs6000_asm_output_dwarf_pcrel (FILE *file, int size,
const char *label);
extern void rs6000_asm_output_dwarf_datarel (FILE *file, int size,
const char *label);
extern long long rs6000_const_f32_to_i32 (rtx operand);
extern long rs6000_const_f32_to_i32 (rtx operand);
/* Declare functions in rs6000-c.c */

View File

@ -27936,10 +27936,12 @@ rs6000_invalid_conversion (const_tree fromtype, const_tree totype)
return NULL;
}
long long
/* Convert a SFmode constant to the integer bit pattern. */
long
rs6000_const_f32_to_i32 (rtx operand)
{
long long value;
long value;
const struct real_value *rv = CONST_DOUBLE_REAL_VALUE (operand);
gcc_assert (GET_MODE (operand) == SFmode);