OSDN Git Service

Remove ix86_split_call_pop_vzeroupper.
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 2 Nov 2010 22:02:52 +0000 (22:02 +0000)
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 2 Nov 2010 22:02:52 +0000 (22:02 +0000)
2010-11-02  H.J. Lu  <hongjiu.lu@intel.com>

* config/i386/i386-protos.h (ix86_split_call_pop_vzeroupper):
Removed.
* config/i386/i386.c (ix86_split_call_pop_vzeroupper): Likewise.

* config/i386/i386.md (*call_pop_0_vzeroupper): Use parallel
and call ix86_split_call_vzeroupper instead of
ix86_split_call_pop_vzeroupper.
(*call_pop_1_vzeroupper): Likewise.
(*sibcall_pop_1_vzeroupper): Likewise.
(*call_value_pop_0_vzeroupper): Likewise.
(*call_value_pop_1_vzeroupper): Likewise.
(*sibcall_value_pop_1_vzeroupper): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166218 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/i386-protos.h
gcc/config/i386/i386.c
gcc/config/i386/i386.md

index 570b67d..61f8fde 100644 (file)
@@ -1,5 +1,20 @@
 2010-11-02  H.J. Lu  <hongjiu.lu@intel.com>
 
 2010-11-02  H.J. Lu  <hongjiu.lu@intel.com>
 
+       * config/i386/i386-protos.h (ix86_split_call_pop_vzeroupper):
+       Removed.
+       * config/i386/i386.c (ix86_split_call_pop_vzeroupper): Likewise.
+
+       * config/i386/i386.md (*call_pop_0_vzeroupper): Use parallel
+       and call ix86_split_call_vzeroupper instead of
+       ix86_split_call_pop_vzeroupper.
+       (*call_pop_1_vzeroupper): Likewise.
+       (*sibcall_pop_1_vzeroupper): Likewise.
+       (*call_value_pop_0_vzeroupper): Likewise.
+       (*call_value_pop_1_vzeroupper): Likewise.
+       (*sibcall_value_pop_1_vzeroupper): Likewise.
+
+2010-11-02  H.J. Lu  <hongjiu.lu@intel.com>
+
        * config/i386/i386.md (*sibcall_1_rex64_vzeroupper): Fix a
        typo.
 
        * config/i386/i386.md (*sibcall_1_rex64_vzeroupper): Fix a
        typo.
 
index c64135b..4dc707c 100644 (file)
@@ -120,7 +120,6 @@ extern void ix86_expand_sse4_unpack (rtx[], bool, bool);
 extern bool ix86_expand_int_addcc (rtx[]);
 extern rtx ix86_expand_call (rtx, rtx, rtx, rtx, rtx, int);
 extern void ix86_split_call_vzeroupper (rtx, rtx);
 extern bool ix86_expand_int_addcc (rtx[]);
 extern rtx ix86_expand_call (rtx, rtx, rtx, rtx, rtx, int);
 extern void ix86_split_call_vzeroupper (rtx, rtx);
-extern void ix86_split_call_pop_vzeroupper (rtx, rtx);
 extern void x86_initialize_trampoline (rtx, rtx, rtx);
 extern rtx ix86_zero_extend_to_Pmode (rtx);
 extern void ix86_split_long_move (rtx[]);
 extern void x86_initialize_trampoline (rtx, rtx, rtx);
 extern rtx ix86_zero_extend_to_Pmode (rtx);
 extern void ix86_split_long_move (rtx[]);
index a5beb83..afecc89 100644 (file)
@@ -21561,16 +21561,6 @@ ix86_split_call_vzeroupper (rtx insn, rtx vzeroupper)
   emit_call_insn (call);
 }
 
   emit_call_insn (call);
 }
 
-void
-ix86_split_call_pop_vzeroupper (rtx insn, rtx vzeroupper)
-{
-  rtx call = XVECEXP (PATTERN (insn), 0, 0);
-  rtx pop = XVECEXP (PATTERN (insn), 0, 1);
-  emit_insn (gen_avx_vzeroupper (vzeroupper));
-  emit_call_insn (gen_rtx_PARALLEL (VOIDmode,
-                                   gen_rtvec (2, call, pop)));
-}
-
 /* Output the assembly for a call instruction.  */
 
 const char *
 /* Output the assembly for a call instruction.  */
 
 const char *
index a4dc9de..79f4b68 100644 (file)
 })
 
 (define_insn_and_split "*call_pop_0_vzeroupper"
 })
 
 (define_insn_and_split "*call_pop_0_vzeroupper"
-  [(call (mem:QI (match_operand:SI 0 "constant_call_address_operand" ""))
-        (match_operand:SI 1 "" ""))
-   (set (reg:SI SP_REG)
-       (plus:SI (reg:SI SP_REG)
-                (match_operand:SI 2 "immediate_operand" "")))
+  [(parallel
+    [(call (mem:QI (match_operand:SI 0 "constant_call_address_operand" ""))
+          (match_operand:SI 1 "" ""))
+     (set (reg:SI SP_REG)
+         (plus:SI (reg:SI SP_REG)
+                  (match_operand:SI 2 "immediate_operand" "")))])
    (unspec [(match_operand 3 "const_int_operand" "")]
           UNSPEC_CALL_NEEDS_VZEROUPPER)]
   "TARGET_VZEROUPPER && !TARGET_64BIT"
   "#"
   "&& reload_completed"
   [(const_int 0)]
    (unspec [(match_operand 3 "const_int_operand" "")]
           UNSPEC_CALL_NEEDS_VZEROUPPER)]
   "TARGET_VZEROUPPER && !TARGET_64BIT"
   "#"
   "&& reload_completed"
   [(const_int 0)]
-  "ix86_split_call_pop_vzeroupper (curr_insn, operands[3]); DONE;"
+  "ix86_split_call_vzeroupper (curr_insn, operands[3]); DONE;"
   [(set_attr "type" "call")])
 
 (define_insn "*call_pop_0"
   [(set_attr "type" "call")])
 
 (define_insn "*call_pop_0"
   [(set_attr "type" "call")])
 
 (define_insn_and_split "*call_pop_1_vzeroupper"
   [(set_attr "type" "call")])
 
 (define_insn_and_split "*call_pop_1_vzeroupper"
-  [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lsm"))
-        (match_operand:SI 1 "" ""))
-   (set (reg:SI SP_REG)
-       (plus:SI (reg:SI SP_REG)
-                (match_operand:SI 2 "immediate_operand" "i")))
+  [(parallel
+    [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lsm"))
+          (match_operand:SI 1 "" ""))
+     (set (reg:SI SP_REG)
+         (plus:SI (reg:SI SP_REG)
+                  (match_operand:SI 2 "immediate_operand" "i")))])
    (unspec [(match_operand 3 "const_int_operand" "")]
           UNSPEC_CALL_NEEDS_VZEROUPPER)]
   "TARGET_VZEROUPPER && !TARGET_64BIT && !SIBLING_CALL_P (insn)"
   "#"
   "&& reload_completed"
   [(const_int 0)]
    (unspec [(match_operand 3 "const_int_operand" "")]
           UNSPEC_CALL_NEEDS_VZEROUPPER)]
   "TARGET_VZEROUPPER && !TARGET_64BIT && !SIBLING_CALL_P (insn)"
   "#"
   "&& reload_completed"
   [(const_int 0)]
-  "ix86_split_call_pop_vzeroupper (curr_insn, operands[3]); DONE;"
+  "ix86_split_call_vzeroupper (curr_insn, operands[3]); DONE;"
   [(set_attr "type" "call")])
 
 (define_insn "*call_pop_1"
   [(set_attr "type" "call")])
 
 (define_insn "*call_pop_1"
   [(set_attr "type" "call")])
 
 (define_insn_and_split "*sibcall_pop_1_vzeroupper"
   [(set_attr "type" "call")])
 
 (define_insn_and_split "*sibcall_pop_1_vzeroupper"
-  [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "s,U"))
-        (match_operand:SI 1 "" ""))
-   (set (reg:SI SP_REG)
-       (plus:SI (reg:SI SP_REG)
-                (match_operand:SI 2 "immediate_operand" "i,i")))
+ [(parallel
+   [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "s,U"))
+          (match_operand:SI 1 "" ""))
+     (set (reg:SI SP_REG)
+         (plus:SI (reg:SI SP_REG)
+                  (match_operand:SI 2 "immediate_operand" "i,i")))])
    (unspec [(match_operand 3 "const_int_operand" "")]
           UNSPEC_CALL_NEEDS_VZEROUPPER)]
   "TARGET_VZEROUPPER && !TARGET_64BIT && SIBLING_CALL_P (insn)"
   "#"
   "&& reload_completed"
   [(const_int 0)]
    (unspec [(match_operand 3 "const_int_operand" "")]
           UNSPEC_CALL_NEEDS_VZEROUPPER)]
   "TARGET_VZEROUPPER && !TARGET_64BIT && SIBLING_CALL_P (insn)"
   "#"
   "&& reload_completed"
   [(const_int 0)]
-  "ix86_split_call_pop_vzeroupper (curr_insn, operands[3]); DONE;"
+  "ix86_split_call_vzeroupper (curr_insn, operands[3]); DONE;"
   [(set_attr "type" "call")])
 
 (define_insn "*sibcall_pop_1"
   [(set_attr "type" "call")])
 
 (define_insn "*sibcall_pop_1"
 ;; disrupt insn-recog's switch tables.
 
 (define_insn_and_split "*call_value_pop_0_vzeroupper"
 ;; disrupt insn-recog's switch tables.
 
 (define_insn_and_split "*call_value_pop_0_vzeroupper"
-  [(set (match_operand 0 "" "")
-       (call (mem:QI (match_operand:SI 1 "constant_call_address_operand" ""))
-             (match_operand:SI 2 "" "")))
-   (set (reg:SI SP_REG)
-       (plus:SI (reg:SI SP_REG)
-                (match_operand:SI 3 "immediate_operand" "")))
+  [(parallel
+    [(set (match_operand 0 "" "")
+         (call (mem:QI (match_operand:SI 1 "constant_call_address_operand" ""))
+               (match_operand:SI 2 "" "")))
+     (set (reg:SI SP_REG)
+         (plus:SI (reg:SI SP_REG)
+                  (match_operand:SI 3 "immediate_operand" "")))])
    (unspec [(match_operand 4 "const_int_operand" "")]
           UNSPEC_CALL_NEEDS_VZEROUPPER)]
   "TARGET_VZEROUPPER && !TARGET_64BIT"
   "#"
   "&& reload_completed"
   [(const_int 0)]
    (unspec [(match_operand 4 "const_int_operand" "")]
           UNSPEC_CALL_NEEDS_VZEROUPPER)]
   "TARGET_VZEROUPPER && !TARGET_64BIT"
   "#"
   "&& reload_completed"
   [(const_int 0)]
-  "ix86_split_call_pop_vzeroupper (curr_insn, operands[4]); DONE;"
+  "ix86_split_call_vzeroupper (curr_insn, operands[4]); DONE;"
   [(set_attr "type" "callv")])
 
 (define_insn "*call_value_pop_0"
   [(set_attr "type" "callv")])
 
 (define_insn "*call_value_pop_0"
   [(set_attr "type" "callv")])
 
 (define_insn_and_split "*call_value_pop_1_vzeroupper"
   [(set_attr "type" "callv")])
 
 (define_insn_and_split "*call_value_pop_1_vzeroupper"
-  [(set (match_operand 0 "" "")
-       (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lsm"))
-             (match_operand:SI 2 "" "")))
-   (set (reg:SI SP_REG)
-       (plus:SI (reg:SI SP_REG)
-                (match_operand:SI 3 "immediate_operand" "i")))
+  [(parallel
+    [(set (match_operand 0 "" "")
+         (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lsm"))
+               (match_operand:SI 2 "" "")))
+     (set (reg:SI SP_REG)
+         (plus:SI (reg:SI SP_REG)
+                  (match_operand:SI 3 "immediate_operand" "i")))])
    (unspec [(match_operand 4 "const_int_operand" "")]
           UNSPEC_CALL_NEEDS_VZEROUPPER)]
   "TARGET_VZEROUPPER && !TARGET_64BIT && !SIBLING_CALL_P (insn)"
   "#"
   "&& reload_completed"
   [(const_int 0)]
    (unspec [(match_operand 4 "const_int_operand" "")]
           UNSPEC_CALL_NEEDS_VZEROUPPER)]
   "TARGET_VZEROUPPER && !TARGET_64BIT && !SIBLING_CALL_P (insn)"
   "#"
   "&& reload_completed"
   [(const_int 0)]
-  "ix86_split_call_pop_vzeroupper (curr_insn, operands[4]); DONE;"
+  "ix86_split_call_vzeroupper (curr_insn, operands[4]); DONE;"
   [(set_attr "type" "callv")])
 
 (define_insn "*call_value_pop_1"
   [(set_attr "type" "callv")])
 
 (define_insn "*call_value_pop_1"
   [(set_attr "type" "callv")])
 
 (define_insn_and_split "*sibcall_value_pop_1_vzeroupper"
   [(set_attr "type" "callv")])
 
 (define_insn_and_split "*sibcall_value_pop_1_vzeroupper"
-  [(set (match_operand 0 "" "")
-       (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "s,U"))
-             (match_operand:SI 2 "" "")))
-   (set (reg:SI SP_REG)
-       (plus:SI (reg:SI SP_REG)
-                (match_operand:SI 3 "immediate_operand" "i,i")))
+ [(parallel
+   [(set (match_operand 0 "" "")
+         (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "s,U"))
+               (match_operand:SI 2 "" "")))
+     (set (reg:SI SP_REG)
+         (plus:SI (reg:SI SP_REG)
+                  (match_operand:SI 3 "immediate_operand" "i,i")))])
    (unspec [(match_operand 4 "const_int_operand" "")]
           UNSPEC_CALL_NEEDS_VZEROUPPER)]
   "TARGET_VZEROUPPER && !TARGET_64BIT && SIBLING_CALL_P (insn)"
   "#"
   "&& reload_completed"
   [(const_int 0)]
    (unspec [(match_operand 4 "const_int_operand" "")]
           UNSPEC_CALL_NEEDS_VZEROUPPER)]
   "TARGET_VZEROUPPER && !TARGET_64BIT && SIBLING_CALL_P (insn)"
   "#"
   "&& reload_completed"
   [(const_int 0)]
-  "ix86_split_call_pop_vzeroupper (curr_insn, operands[4]); DONE;"
+  "ix86_split_call_vzeroupper (curr_insn, operands[4]); DONE;"
   [(set_attr "type" "callv")])
 
 (define_insn "*sibcall_value_pop_1"
   [(set_attr "type" "callv")])
 
 (define_insn "*sibcall_value_pop_1"