1 --- gcc-4.1/gcc/config/i386/i386.md 2005-09-06 10:53:06.000000000 +0200
2 +++ gcc-4.1/gcc/config/i386/i386.md 2005-09-26 10:42:34.581839750 +0200
3 @@ -16475,9 +16475,9 @@
7 -(define_insn_and_split "*fist<mode>2_1"
8 - [(set (match_operand:X87MODEI 0 "nonimmediate_operand" "=m,?r")
9 - (unspec:X87MODEI [(match_operand:XF 1 "register_operand" "f,f")]
10 +(define_insn_and_split "*fistdi2_1"
11 + [(set (match_operand:DI 0 "nonimmediate_operand" "=m,?r")
12 + (unspec:DI [(match_operand:XF 1 "register_operand" "f,f")]
14 "TARGET_USE_FANCY_MATH_387
15 && flag_unsafe_math_optimizations
16 @@ -16487,17 +16487,17 @@
19 if (memory_operand (operands[0], VOIDmode))
20 - emit_insn (gen_fist<mode>2 (operands[0], operands[1]));
21 + emit_insn (gen_fistdi2 (operands[0], operands[1]));
24 - operands[2] = assign_386_stack_local (<MODE>mode, SLOT_TEMP);
25 - emit_insn (gen_fist<mode>2_with_temp (operands[0], operands[1],
27 + operands[2] = assign_386_stack_local (DImode, SLOT_TEMP);
28 + emit_insn (gen_fistdi2_with_temp (operands[0], operands[1],
33 [(set_attr "type" "fpspc")
34 - (set_attr "mode" "<MODE>")])
35 + (set_attr "mode" "DI")])
37 (define_insn "fistdi2"
38 [(set (match_operand:DI 0 "memory_operand" "=m")
39 @@ -16545,6 +16545,25 @@
40 (clobber (match_dup 3))])]
43 +(define_insn_and_split "*fist<mode>2_1"
44 + [(set (match_operand:X87MODEI12 0 "register_operand" "=r")
45 + (unspec:X87MODEI12 [(match_operand:XF 1 "register_operand" "f")]
47 + "TARGET_USE_FANCY_MATH_387
48 + && flag_unsafe_math_optimizations
49 + && !(reload_completed || reload_in_progress)"
54 + operands[2] = assign_386_stack_local (<MODE>mode, SLOT_TEMP);
55 + emit_insn (gen_fist<mode>2_with_temp (operands[0], operands[1],
59 + [(set_attr "type" "fpspc")
60 + (set_attr "mode" "<MODE>")])
62 (define_insn "fist<mode>2"
63 [(set (match_operand:X87MODEI12 0 "memory_operand" "=m")
64 (unspec:X87MODEI12 [(match_operand:XF 1 "register_operand" "f")]
65 @@ -16556,10 +16575,10 @@
66 (set_attr "mode" "<MODE>")])
68 (define_insn "fist<mode>2_with_temp"
69 - [(set (match_operand:X87MODEI12 0 "nonimmediate_operand" "=m,?r")
70 - (unspec:X87MODEI12 [(match_operand:XF 1 "register_operand" "f,f")]
71 + [(set (match_operand:X87MODEI12 0 "register_operand" "=r")
72 + (unspec:X87MODEI12 [(match_operand:XF 1 "register_operand" "f")]
74 - (clobber (match_operand:X87MODEI12 2 "memory_operand" "=m,m"))]
75 + (clobber (match_operand:X87MODEI12 2 "memory_operand" "=m"))]
76 "TARGET_USE_FANCY_MATH_387
77 && flag_unsafe_math_optimizations"