diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f3119994aa5..730e18c74ba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2012-03-12 H.J. Lu + + * config/i386/i386.c (ix86_option_override_internal): Properly + set ix86_gen_leave and ix86_gen_monitor. Check Pmode == DImode, + instead of TARGET_64BIT, to set ix86_gen_add3, ix86_gen_sub3, + ix86_gen_one_cmpl2, ix86_gen_andsp, + ix86_gen_allocate_stack_worker, ix86_gen_adjust_stack_and_probe + and ix86_gen_probe_stack_range. + + * config/i386/sse.md (sse3_monitor64): Renamed to ... + (sse3_monitor64_): This. + 2012-03-12 Tristan Gingold * config/ia64/ia64.c (ia64_function_arg_1): Move code around. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 6744f89a821..d85dc253c21 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -3753,11 +3753,23 @@ ix86_option_override_internal (bool main_args_p) if (TARGET_64BIT) { ix86_gen_leave = gen_leave_rex64; + if (Pmode == DImode) + ix86_gen_monitor = gen_sse3_monitor64_di; + else + ix86_gen_monitor = gen_sse3_monitor64_si; + } + else + { + ix86_gen_leave = gen_leave; + ix86_gen_monitor = gen_sse3_monitor; + } + + if (Pmode == DImode) + { ix86_gen_add3 = gen_adddi3; ix86_gen_sub3 = gen_subdi3; ix86_gen_sub3_carry = gen_subdi3_carry; ix86_gen_one_cmpl2 = gen_one_cmpldi2; - ix86_gen_monitor = gen_sse3_monitor64; ix86_gen_andsp = gen_anddi3; ix86_gen_allocate_stack_worker = gen_allocate_stack_worker_probe_di; ix86_gen_adjust_stack_and_probe = gen_adjust_stack_and_probedi; @@ -3765,12 +3777,10 @@ ix86_option_override_internal (bool main_args_p) } else { - ix86_gen_leave = gen_leave; ix86_gen_add3 = gen_addsi3; ix86_gen_sub3 = gen_subsi3; ix86_gen_sub3_carry = gen_subsi3_carry; ix86_gen_one_cmpl2 = gen_one_cmplsi2; - ix86_gen_monitor = gen_sse3_monitor; ix86_gen_andsp = gen_andsi3; ix86_gen_allocate_stack_worker = gen_allocate_stack_worker_probe_si; ix86_gen_adjust_stack_and_probe = gen_adjust_stack_and_probesi; diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 4afc4b3e249..f5935f1b487 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -8147,8 +8147,8 @@ "monitor\t%0, %1, %2" [(set_attr "length" "3")]) -(define_insn "sse3_monitor64" - [(unspec_volatile [(match_operand:DI 0 "register_operand" "a") +(define_insn "sse3_monitor64_" + [(unspec_volatile [(match_operand:P 0 "register_operand" "a") (match_operand:SI 1 "register_operand" "c") (match_operand:SI 2 "register_operand" "d")] UNSPECV_MONITOR)]