re PR target/38598 (MIPS extendsidi2 does not have a LO alternative)
gcc/ PR target/38598 * config/mips/mips.md (extendsidi2): Add an "l" alternative. Update commentary. gcc/testsuite/ PR target/38598 * gcc.target/mips/madd-7.c: Remove -mlong32. * gcc.target/mips/msub-7.c: Likewise. From-SVN: r171572
This commit is contained in:
parent
b99ce2a8b9
commit
1ea9206ac5
@ -1,3 +1,9 @@
|
|||||||
|
2011-03-27 Richard Sandiford <rdsandiford@googlemail.com>
|
||||||
|
|
||||||
|
PR target/38598
|
||||||
|
* config/mips/mips.md (extendsidi2): Add an "l" alternative.
|
||||||
|
Update commentary.
|
||||||
|
|
||||||
2011-03-27 Richard Sandiford <rdsandiford@googlemail.com>
|
2011-03-27 Richard Sandiford <rdsandiford@googlemail.com>
|
||||||
|
|
||||||
* config/mips/mips.c (mips_prepare_builtin_arg): Replace icode and
|
* config/mips/mips.c (mips_prepare_builtin_arg): Replace icode and
|
||||||
|
@ -2963,19 +2963,25 @@
|
|||||||
;; Extension insns.
|
;; Extension insns.
|
||||||
;; Those for integer source operand are ordered widest source type first.
|
;; Those for integer source operand are ordered widest source type first.
|
||||||
|
|
||||||
;; When TARGET_64BIT, all SImode integer registers should already be in
|
;; When TARGET_64BIT, all SImode integer and accumulator registers
|
||||||
;; sign-extended form (see TRULY_NOOP_TRUNCATION and truncdisi2). We can
|
;; should already be in sign-extended form (see TRULY_NOOP_TRUNCATION
|
||||||
;; therefore get rid of register->register instructions if we constrain
|
;; and truncdisi2). We can therefore get rid of register->register
|
||||||
;; the source to be in the same register as the destination.
|
;; instructions if we constrain the source to be in the same register as
|
||||||
|
;; the destination.
|
||||||
;;
|
;;
|
||||||
;; The register alternative has type "arith" so that the pre-reload
|
;; Only the pre-reload scheduler sees the type of the register alternatives;
|
||||||
;; scheduler will treat it as a move. This reflects what happens if
|
;; we split them into nothing before the post-reload scheduler runs.
|
||||||
;; the register alternative needs a reload.
|
;; These alternatives therefore have type "move" in order to reflect
|
||||||
|
;; what happens if the two pre-reload operands cannot be tied, and are
|
||||||
|
;; instead allocated two separate GPRs. We don't distinguish between
|
||||||
|
;; the GPR and LO cases because we don't usually know during pre-reload
|
||||||
|
;; scheduling whether an operand will be LO or not.
|
||||||
(define_insn_and_split "extendsidi2"
|
(define_insn_and_split "extendsidi2"
|
||||||
[(set (match_operand:DI 0 "register_operand" "=d,d")
|
[(set (match_operand:DI 0 "register_operand" "=d,l,d")
|
||||||
(sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "0,m")))]
|
(sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "0,0,m")))]
|
||||||
"TARGET_64BIT"
|
"TARGET_64BIT"
|
||||||
"@
|
"@
|
||||||
|
#
|
||||||
#
|
#
|
||||||
lw\t%0,%1"
|
lw\t%0,%1"
|
||||||
"&& reload_completed && register_operand (operands[1], VOIDmode)"
|
"&& reload_completed && register_operand (operands[1], VOIDmode)"
|
||||||
@ -2984,7 +2990,7 @@
|
|||||||
emit_note (NOTE_INSN_DELETED);
|
emit_note (NOTE_INSN_DELETED);
|
||||||
DONE;
|
DONE;
|
||||||
}
|
}
|
||||||
[(set_attr "move_type" "move,load")
|
[(set_attr "move_type" "move,move,load")
|
||||||
(set_attr "mode" "DI")])
|
(set_attr "mode" "DI")])
|
||||||
|
|
||||||
(define_expand "extend<SHORT:mode><GPR:mode>2"
|
(define_expand "extend<SHORT:mode><GPR:mode>2"
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2011-03-27 Richard Sandiford <rdsandiford@googlemail.com>
|
||||||
|
|
||||||
|
PR target/38598
|
||||||
|
* gcc.target/mips/madd-7.c: Remove -mlong32.
|
||||||
|
* gcc.target/mips/msub-7.c: Likewise.
|
||||||
|
|
||||||
2011-03-27 Ira Rosen <ira.rosen@linaro.org>
|
2011-03-27 Ira Rosen <ira.rosen@linaro.org>
|
||||||
|
|
||||||
* gcc.dg/vect/vect-outer-5.c: Reduce the distance between data
|
* gcc.dg/vect/vect-outer-5.c: Reduce the distance between data
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
/* -mlong32 added because of PR target/38598. */
|
/* { dg-options "-O2 -march=5kc" } */
|
||||||
/* { dg-options "-O2 -march=5kc -mlong32" } */
|
|
||||||
/* { dg-final { scan-assembler-not "\tmul\t" } } */
|
/* { dg-final { scan-assembler-not "\tmul\t" } } */
|
||||||
/* { dg-final { scan-assembler "\tmadd\t" } } */
|
/* { dg-final { scan-assembler "\tmadd\t" } } */
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
/* -mlong32 added because of PR target/38598. */
|
/* { dg-options "-O2 -march=5kc" } */
|
||||||
/* { dg-options "-O2 -march=5kc -mlong32" } */
|
|
||||||
/* { dg-final { scan-assembler-not "\tmul\t" } } */
|
/* { dg-final { scan-assembler-not "\tmul\t" } } */
|
||||||
/* { dg-final { scan-assembler "\tmsub\t" } } */
|
/* { dg-final { scan-assembler "\tmsub\t" } } */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user