This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Expansion of narrowing math built-ins into power instructions
On Mon, Aug 12, 2019 at 11:01:11PM +0530, Tejas Joshi wrote:
> I have the following code in my rs6000.md (I haven't used new TARGET_* yet) :
>
> (define_expand "add_truncdfsf3"
> [(set (match_operand:SF 0 "gpc_reg_operand")
> (float_truncate:SF
> (plus:DF (match_operand:DF 1 "gpc_reg_operand")
> (match_operand:DF 2 "gpc_reg_operand"))))]
> "TARGET_HARD_FLOAT"
> "")
>
> (define_insn "*add_truncdfsf3_fpr"
> [(set (match_operand:SF 0 "gpc_reg_operand" "=f,wa")
> (float_truncate:SF
> (plus:DF (match_operand:DF 1 "gpc_reg_operand" "%d,wa")
> (match_operand:DF 2 "gpc_reg_operand" "d,wa"))))]
> "TARGET_HARD_FLOAT"
> "@
> fadds %0,%1,%2
> xsaddsp %x0,%x1,%x2"
> [(set_attr "type" "fp")])
Those look fine. You can also merge them into one:
(define_insn "add_truncdfsf3"
[(set (match_operand:SF 0 "gpc_reg_operand" "=f,wa")
(float_truncate:SF
(plus:DF (match_operand:DF 1 "gpc_reg_operand" "%d,wa")
(match_operand:DF 2 "gpc_reg_operand" "d,wa"))))]
"TARGET_HARD_FLOAT"
"@
fadds %0,%1,%2
xsaddsp %x0,%x1,%x2"
[(set_attr "type" "fp")])
> with following optab in optabs.def :
>
> OPTAB_CD(fadd_optab, "add_trunc$b$a3") (what is the
> difference between $b$a and $a$b?)
Which of the two modes becomes $a and which becomes $b? It depends on
the definition of fadd_optab what order is expected, I think.
Segher