re PR rtl-optimization/79593 (Poor/Worse code generation for FPU on versions after 6)
PR target/79593 * config/i386/i386.md (standard_x87sse_constant_load splitter): Use nonimmediate_operand instead of memory_operand for operand 1. (float-extend standard_x87sse_constant_load splitter): Ditto. testsuite/ChangeLog: PR target/79593 * gcc.target/i386/pr79593.c: New test. From-SVN: r245640
This commit is contained in:
parent
b7280ac270
commit
a2b48844ed
|
@ -3660,7 +3660,7 @@
|
|||
|
||||
(define_split
|
||||
[(set (match_operand 0 "any_fp_register_operand")
|
||||
(match_operand 1 "memory_operand"))]
|
||||
(match_operand 1 "nonimmediate_operand"))]
|
||||
"reload_completed
|
||||
&& (GET_MODE (operands[0]) == TFmode
|
||||
|| GET_MODE (operands[0]) == XFmode
|
||||
|
@ -3672,7 +3672,7 @@
|
|||
|
||||
(define_split
|
||||
[(set (match_operand 0 "any_fp_register_operand")
|
||||
(float_extend (match_operand 1 "memory_operand")))]
|
||||
(float_extend (match_operand 1 "nonimmediate_operand")))]
|
||||
"reload_completed
|
||||
&& (GET_MODE (operands[0]) == TFmode
|
||||
|| GET_MODE (operands[0]) == XFmode
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
/* PR target/79593 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-Ofast -mfpmath=387" } */
|
||||
|
||||
extern float global_data[1024];
|
||||
|
||||
static long double MIN (long double a, long double b) { return a < b ? a : b; }
|
||||
static long double MAX (long double a, long double b) { return a > b ? a : b; }
|
||||
|
||||
float bar (void)
|
||||
{
|
||||
long double delta = (global_data[0]);
|
||||
|
||||
return (MIN (MAX (delta, 0.0l), 1.0l));
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler-not "fld\[ \t\]+%st" } } */
|
Loading…
Reference in New Issue