optabs.c (expand_fix): Look for wider integer modes first.
* optabs.c (expand_fix): Look for wider integer modes first. * i386.md (mov?f): Avoid the fake const double trick for medium memory model. (min?f*/max?f*): Prohibit memory operands for i387 variant. (fop_df_4): Disable for SSE compilation. From-SVN: r48721
This commit is contained in:
parent
bccd793e46
commit
3987b9db30
@ -1,3 +1,12 @@
|
||||
Thu Jan 10 11:19:18 CET 2002 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* optabs.c (expand_fix): Look for wider integer modes first.
|
||||
|
||||
* i386.md (mov?f): Avoid the fake const double trick for medium
|
||||
memory model.
|
||||
(min?f*/max?f*): Prohibit memory operands for i387 variant.
|
||||
(fop_df_4): Disable for SSE compilation.
|
||||
|
||||
2002-01-20 Graham Stott <grahams@redhat.com>
|
||||
|
||||
* dwarf2out.c (indirect_string_alloc, output_indirect_string):
|
||||
|
@ -2718,6 +2718,7 @@
|
||||
(match_operand:SF 1 "general_operand" "fm#rx,f#rx,G,rmF#fx,Fr#fx,H,x,xm#rf,x#rf"))]
|
||||
"(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
|
||||
&& (reload_in_progress || reload_completed
|
||||
|| (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
|
||||
|| GET_CODE (operands[1]) != CONST_DOUBLE
|
||||
|| memory_operand (operands[0], SFmode))"
|
||||
{
|
||||
@ -2893,6 +2894,7 @@
|
||||
"(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
|
||||
&& (optimize_size || !TARGET_INTEGER_DFMODE_MOVES)
|
||||
&& (reload_in_progress || reload_completed
|
||||
|| (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
|
||||
|| GET_CODE (operands[1]) != CONST_DOUBLE
|
||||
|| memory_operand (operands[0], DFmode))"
|
||||
{
|
||||
@ -2950,6 +2952,7 @@
|
||||
"(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
|
||||
&& !optimize_size && TARGET_INTEGER_DFMODE_MOVES
|
||||
&& (reload_in_progress || reload_completed
|
||||
|| (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
|
||||
|| GET_CODE (operands[1]) != CONST_DOUBLE
|
||||
|| memory_operand (operands[0], DFmode))"
|
||||
{
|
||||
@ -3253,6 +3256,7 @@
|
||||
&& optimize_size
|
||||
&& (reload_in_progress || reload_completed
|
||||
|| GET_CODE (operands[1]) != CONST_DOUBLE
|
||||
|| (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
|
||||
|| memory_operand (operands[0], TFmode))"
|
||||
{
|
||||
switch (which_alternative)
|
||||
@ -3346,6 +3350,7 @@
|
||||
&& !optimize_size
|
||||
&& (reload_in_progress || reload_completed
|
||||
|| GET_CODE (operands[1]) != CONST_DOUBLE
|
||||
|| (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
|
||||
|| memory_operand (operands[0], TFmode))"
|
||||
{
|
||||
switch (which_alternative)
|
||||
@ -14132,7 +14137,7 @@
|
||||
(match_operator:DF 3 "binary_fp_operator"
|
||||
[(float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "fm,0"))
|
||||
(match_operand:DF 2 "register_operand" "0,f")]))]
|
||||
"TARGET_80387
|
||||
"TARGET_80387 && (!TARGET_SSE2 || !TARGET_SSE_MATH)
|
||||
&& (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
|
||||
"* return output_387_binary_op (insn, operands);"
|
||||
[(set (attr "type")
|
||||
@ -15962,7 +15967,7 @@
|
||||
(define_insn "*minsf_nonieee"
|
||||
[(set (match_operand:SF 0 "register_operand" "=x#f,f#x")
|
||||
(if_then_else:SF (lt (match_operand:SF 1 "register_operand" "%0,0")
|
||||
(match_operand:SF 2 "nonimmediate_operand" "xm#f,fm#x"))
|
||||
(match_operand:SF 2 "nonimmediate_operand" "xm#f,f#x"))
|
||||
(match_dup 1)
|
||||
(match_dup 2)))
|
||||
(clobber (reg:CC 17))]
|
||||
@ -16044,7 +16049,7 @@
|
||||
(define_insn "*mindf_nonieee"
|
||||
[(set (match_operand:DF 0 "register_operand" "=Y#f,f#Y")
|
||||
(if_then_else:DF (lt (match_operand:DF 1 "register_operand" "%0,0")
|
||||
(match_operand:DF 2 "nonimmediate_operand" "Ym#f,fm#Y"))
|
||||
(match_operand:DF 2 "nonimmediate_operand" "Ym#f,f#Y"))
|
||||
(match_dup 1)
|
||||
(match_dup 2)))
|
||||
(clobber (reg:CC 17))]
|
||||
@ -16115,7 +16120,7 @@
|
||||
(define_insn "*maxsf"
|
||||
[(set (match_operand:SF 0 "register_operand" "=x#f,f#x,f#x")
|
||||
(if_then_else:SF (gt (match_operand:SF 1 "register_operand" "0,0,f#x")
|
||||
(match_operand:SF 2 "nonimmediate_operand" "xm#f,fm#x,0"))
|
||||
(match_operand:SF 2 "nonimmediate_operand" "xm#f,f#x,0"))
|
||||
(match_dup 1)
|
||||
(match_dup 2)))
|
||||
(clobber (reg:CC 17))]
|
||||
@ -16125,7 +16130,7 @@
|
||||
(define_insn "*maxsf_nonieee"
|
||||
[(set (match_operand:SF 0 "register_operand" "=x#f,f#x")
|
||||
(if_then_else:SF (gt (match_operand:SF 1 "register_operand" "%0,0")
|
||||
(match_operand:SF 2 "nonimmediate_operand" "xm#f,fm#x"))
|
||||
(match_operand:SF 2 "nonimmediate_operand" "xm#f,f#x"))
|
||||
(match_dup 1)
|
||||
(match_dup 2)))
|
||||
(clobber (reg:CC 17))]
|
||||
@ -16195,7 +16200,7 @@
|
||||
(define_insn "*maxdf"
|
||||
[(set (match_operand:DF 0 "register_operand" "=Y#f,f#Y,f#Y")
|
||||
(if_then_else:DF (gt (match_operand:DF 1 "register_operand" "0,0,f#Y")
|
||||
(match_operand:DF 2 "nonimmediate_operand" "Ym#f,fm#Y,0"))
|
||||
(match_operand:DF 2 "nonimmediate_operand" "Ym#f,f#Y,0"))
|
||||
(match_dup 1)
|
||||
(match_dup 2)))
|
||||
(clobber (reg:CC 17))]
|
||||
@ -16205,7 +16210,7 @@
|
||||
(define_insn "*maxdf_nonieee"
|
||||
[(set (match_operand:DF 0 "register_operand" "=Y#f,f#Y")
|
||||
(if_then_else:DF (gt (match_operand:DF 1 "register_operand" "%0,0")
|
||||
(match_operand:DF 2 "nonimmediate_operand" "Ym#f,fm#Y"))
|
||||
(match_operand:DF 2 "nonimmediate_operand" "Ym#f,f#Y"))
|
||||
(match_dup 1)
|
||||
(match_dup 2)))
|
||||
(clobber (reg:CC 17))]
|
||||
|
@ -4349,10 +4349,10 @@ expand_fix (to, from, unsignedp)
|
||||
this conversion. If the integer mode is wider than the mode of TO,
|
||||
we can do the conversion either signed or unsigned. */
|
||||
|
||||
for (imode = GET_MODE (to); imode != VOIDmode;
|
||||
imode = GET_MODE_WIDER_MODE (imode))
|
||||
for (fmode = GET_MODE (from); fmode != VOIDmode;
|
||||
fmode = GET_MODE_WIDER_MODE (fmode))
|
||||
for (fmode = GET_MODE (from); fmode != VOIDmode;
|
||||
fmode = GET_MODE_WIDER_MODE (fmode))
|
||||
for (imode = GET_MODE (to); imode != VOIDmode;
|
||||
imode = GET_MODE_WIDER_MODE (imode))
|
||||
{
|
||||
int doing_unsigned = unsignedp;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user