mips.md (sqrt_condition): Tweak comment.
gcc/ * config/mips/mips.md (sqrt_condition): Tweak comment. (recip_condition): Likewise. Require TARGET_FLOAT64 for DFmode. gcc/testsuite/ * gcc.target/mips/rsqrt-1.c: Require -mgp64. * gcc.target/mips/rsqrt-2.c: Likewise. * gcc.target/mips/rsqrt-4.c: New test. From-SVN: r131318
This commit is contained in:
parent
3c7215130f
commit
6a3d1d4957
|
@ -1,3 +1,8 @@
|
|||
2008-01-04 Richard Sandiford <rsandifo@nildram.co.uk>
|
||||
|
||||
* config/mips/mips.md (sqrt_condition): Tweak comment.
|
||||
(recip_condition): Likewise. Require TARGET_FLOAT64 for DFmode.
|
||||
|
||||
2008-01-03 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
PR c/34457:
|
||||
|
|
|
@ -583,14 +583,19 @@
|
|||
[DF (SF "!TARGET_FIX_SB1 || flag_unsafe_math_optimizations")
|
||||
(V2SF "TARGET_SB1 && (!TARGET_FIX_SB1 || flag_unsafe_math_optimizations)")])
|
||||
|
||||
; This attribute gives the condition for which sqrt instructions exist.
|
||||
;; This attribute gives the conditions under which SQRT.fmt instructions
|
||||
;; can be used.
|
||||
(define_mode_attr sqrt_condition
|
||||
[(SF "!ISA_MIPS1") (DF "!ISA_MIPS1") (V2SF "TARGET_SB1")])
|
||||
|
||||
; This attribute gives the condition for which recip and rsqrt instructions
|
||||
; exist.
|
||||
;; This attribute gives the conditions under which RECIP.fmt and RSQRT.fmt
|
||||
;; instructions can be used. The MIPS32 and MIPS64 ISAs say that RECIP.D
|
||||
;; and RSQRT.D are unpredictable when doubles are stored in pairs of FPRs,
|
||||
;; so for safety's sake, we apply this restriction to all targets.
|
||||
(define_mode_attr recip_condition
|
||||
[(SF "ISA_HAS_FP4") (DF "ISA_HAS_FP4") (V2SF "TARGET_SB1")])
|
||||
[(SF "ISA_HAS_FP4")
|
||||
(DF "ISA_HAS_FP4 && TARGET_FLOAT64")
|
||||
(V2SF "TARGET_SB1")])
|
||||
|
||||
;; This code iterator allows all branch instructions to be generated from
|
||||
;; a single define_expand template.
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2008-01-04 Richard Sandiford <rsandifo@nildram.co.uk>
|
||||
|
||||
* gcc.target/mips/rsqrt-1.c: Require -mgp64.
|
||||
* gcc.target/mips/rsqrt-2.c: Likewise.
|
||||
* gcc.target/mips/rsqrt-4.c: New test.
|
||||
|
||||
2008-01-04 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/34557
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-mips-options "-O2 -ffast-math -mips4 -mhard-float" } */
|
||||
/* { dg-mips-options "-O2 -ffast-math -mips4 -mhard-float -mgp64" } */
|
||||
/* { dg-final { scan-assembler "rsqrt.d" } } */
|
||||
/* { dg-final { scan-assembler "rsqrt.s" } } */
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-mips-options "-O2 -ffast-math -mips4 -mhard-float" } */
|
||||
/* { dg-mips-options "-O2 -ffast-math -mips4 -mhard-float -mgp64" } */
|
||||
/* { dg-final { scan-assembler "rsqrt.d" } } */
|
||||
/* { dg-final { scan-assembler "rsqrt.s" } } */
|
||||
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-mips-options "-O2 -ffast-math -mips64 -mhard-float -mgp32" } */
|
||||
/* { dg-final { scan-assembler-not "\trsqrt.d\t" } } */
|
||||
/* { dg-final { scan-assembler-times "\trsqrt.s\t" 2 } } */
|
||||
|
||||
extern double sqrt(double);
|
||||
extern float sqrtf(float);
|
||||
|
||||
NOMIPS16 double f1 (double x)
|
||||
{
|
||||
return 1.0 / sqrt (x);
|
||||
}
|
||||
|
||||
NOMIPS16 double f2 (double x)
|
||||
{
|
||||
return sqrt (1.0 / x);
|
||||
}
|
||||
|
||||
NOMIPS16 float f3 (float x)
|
||||
{
|
||||
return 1.0f / sqrtf (x);
|
||||
}
|
||||
|
||||
NOMIPS16 float f4 (float x)
|
||||
{
|
||||
return sqrtf (1.0f / x);
|
||||
}
|
Loading…
Reference in New Issue