aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hongjiu.lu@intel.com>2012-03-12 15:56:26 +0000
committerH.J. Lu <hjl@gcc.gnu.org>2012-03-12 08:56:26 -0700
commit986b64239b40389df573aef3dec36da5f5637c0d (patch)
tree56083eec7eeed4a0ee13a9b6ab4ef69cba7b9c56
parent472b8fdc56b2ff0f8f222a783d0a8174ae96c94a (diff)
downloadgcc-986b64239b40389df573aef3dec36da5f5637c0d.zip
gcc-986b64239b40389df573aef3dec36da5f5637c0d.tar.gz
gcc-986b64239b40389df573aef3dec36da5f5637c0d.tar.bz2
Properly set ix86_gen_xxx function pointers
2012-03-12 H.J. Lu <hongjiu.lu@intel.com> * 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_<mode>): This. From-SVN: r185247
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/config/i386/i386.c16
-rw-r--r--gcc/config/i386/sse.md4
3 files changed, 27 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f311999..730e18c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,15 @@
+2012-03-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ * 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_<mode>): This.
+
2012-03-12 Tristan Gingold <gingold@adacore.com>
* 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 6744f89..d85dc25 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 4afc4b3..f5935f1 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_<mode>"
+ [(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)]