This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Is there a reason that fix_trunctfsi2 cannot use fix_truncdfsi2 instead of duplicating most of fix_truncdfsi2_internal in fix_trunctfsi2_internal?
fix_trunctfsi2 currently only is valid for TARGET_POWERPC ||
TARGET_POWER2, which provide fctiwz instruction. This means that GCC
tries to call __fixtfsi when the processor does not support that
intruction. That libgcc function currently is not built and should not
need to be. Using fix_truncdfsi2 would fall back to the exisitng __itrunc
function. Currently the rs6000-ldouble-1.c test is failing on AIX (in
common mode without PowerPC instructions) due to this problem.
In other words, could the define_expand be something like:
(define_expand "fix_trunctfsi2"
[(parallel [(set (match_operand:SI 0 "gpc_reg_operand" "")
(fix:SI (match_operand:TF 1 "gpc_reg_operand" "")))
(clobber (match_dup 2))
(clobber (match_dup 3))])]
"(DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_DARWIN)
&& TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_LONG_DOUBLE_128"
{
emit_insn (gen_fix_trunc_helper (operands[2], operands[1], operands[3]));
emit_insn (gen_fix_truncdfsi (operands[0], operands[2]));
DONE;
})
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |