mips.md (mulsi3_mul3, [...]): Merge these ...

* config/mips/mips.md (mulsi3_mul3, muldi3_mul3): Merge these ...
	(mul<mode>3_mul3): ... into this new template.

testsuite/
	* gcc.target/mips/mips.exp (dg-mips-options): Set mips_new_gp to
	32 when -march=r3900 is passed.
	* testsuite/gcc.target/mips/r3900-mult.c: New test.

From-SVN: r140922
This commit is contained in:
Adam Nemet 2008-10-07 00:30:00 +00:00 committed by Adam Nemet
parent 2018c60760
commit 4c6f977010
5 changed files with 31 additions and 24 deletions

View File

@ -1,3 +1,8 @@
2008-10-06 Adam Nemet <anemet@caviumnetworks.com>
* config/mips/mips.md (mulsi3_mul3, muldi3_mul3): Merge these ...
(mul<mode>3_mul3): ... into this new template.
2008-10-06 Aldy Hernandez <aldyh@redhat.com>
* gimplify.c (gimplify_arg): Add location argument. Use it.

View File

@ -1367,35 +1367,21 @@
DONE;
})
(define_insn "mulsi3_mul3"
[(set (match_operand:SI 0 "register_operand" "=d,l")
(mult:SI (match_operand:SI 1 "register_operand" "d,d")
(match_operand:SI 2 "register_operand" "d,d")))
(clobber (match_scratch:SI 3 "=l,X"))]
"ISA_HAS_MUL3"
(define_insn "mul<mode>3_mul3"
[(set (match_operand:GPR 0 "register_operand" "=d,l")
(mult:GPR (match_operand:GPR 1 "register_operand" "d,d")
(match_operand:GPR 2 "register_operand" "d,d")))
(clobber (match_scratch:GPR 3 "=l,X"))]
"ISA_HAS_<D>MUL3"
{
if (which_alternative == 1)
return "mult\t%1,%2";
if (TARGET_MIPS3900)
return "<d>mult\t%1,%2";
if (<MODE>mode == SImode && TARGET_MIPS3900)
return "mult\t%0,%1,%2";
return "mul\t%0,%1,%2";
return "<d>mul\t%0,%1,%2";
}
[(set_attr "type" "imul3,imul")
(set_attr "mode" "SI")])
(define_insn "muldi3_mul3"
[(set (match_operand:DI 0 "register_operand" "=d,l")
(mult:DI (match_operand:DI 1 "register_operand" "d,d")
(match_operand:DI 2 "register_operand" "d,d")))
(clobber (match_scratch:DI 3 "=l,X"))]
"ISA_HAS_DMUL3"
{
if (which_alternative == 1)
return "dmult\t%1,%2";
return "dmul\t%0,%1,%2";
}
[(set_attr "type" "imul3,imul")
(set_attr "mode" "DI")])
(set_attr "mode" "<MODE>")])
;; If a register gets allocated to LO, and we spill to memory, the reload
;; will include a move from LO to a GPR. Merge it into the multiplication

View File

@ -1,3 +1,9 @@
2008-10-06 Adam Nemet <anemet@caviumnetworks.com>
* gcc.target/mips/mips.exp (dg-mips-options): Set mips_new_gp to
32 when -march=r3900 is passed.
* testsuite/gcc.target/mips/r3900-mult.c: New test.
2008-10-06 Aldy Hernandez <aldyh@redhat.com>
* gcc.dg/gomp/for-1.c: Test column.

View File

@ -261,6 +261,7 @@ proc dg-mips-options {args} {
-mips[12] -
-mips32* -
-march=mips32* -
-march=r3900 -
-march=24k* -
-mabi=32 -
-mgp32 {

View File

@ -0,0 +1,9 @@
/* { dg-do compile } */
/* { dg-mips-options "-march=r3900" } */
/* { dg-final { scan-assembler "\tmult\t\[^\n\]*,\[^\n\]*," } } */
NOMIPS16 int
f (int a, int b)
{
return a * b;
}