Commit febaf726 by Uros Bizjak Committed by Uros Bizjak

i386.md (unspec): Add UNSPEC_PROBE_STACK.

	* config/i386/i386.md (unspec): Add UNSPEC_PROBE_STACK.
	(probe_stack): New expander.
	(probe_stack_<mode>): New insn pattern.

From-SVN: r235642
parent b891ade6
2016-04-29 Uros Bizjak <ubizjak@gmail.com> 2016-04-29 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.md (unspec): Add UNSPEC_PROBE_STACK.
(probe_stack): New expander.
(probe_stack_<mode>): New insn pattern.
2016-04-29 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.md * config/i386/i386.md
(operations with memory inputs setting flags peephole2): (operations with memory inputs setting flags peephole2):
Remove uneeded REG_P checks. Cleanup pattern generation. Remove uneeded REG_P checks. Cleanup pattern generation.
......
...@@ -88,6 +88,7 @@ ...@@ -88,6 +88,7 @@
UNSPEC_SET_GOT_OFFSET UNSPEC_SET_GOT_OFFSET
UNSPEC_MEMORY_BLOCKAGE UNSPEC_MEMORY_BLOCKAGE
UNSPEC_STACK_CHECK UNSPEC_STACK_CHECK
UNSPEC_PROBE_STACK
;; TLS support ;; TLS support
UNSPEC_TP UNSPEC_TP
...@@ -17552,6 +17553,30 @@ ...@@ -17552,6 +17553,30 @@
DONE; DONE;
}) })
(define_expand "probe_stack"
[(match_operand 0 "memory_operand")]
""
{
rtx (*insn) (rtx, rtx)
= (GET_MODE (operands[0]) == DImode
? gen_probe_stack_di : gen_probe_stack_si);
emit_insn (insn (operands[0], const0_rtx));
DONE;
})
;; Use OR for stack probes, this is shorter.
(define_insn "probe_stack_<mode>"
[(set (match_operand:W 0 "memory_operand" "=m")
(unspec:W [(match_operand:W 1 "const0_operand")]
UNSPEC_PROBE_STACK))
(clobber (reg:CC FLAGS_REG))]
""
"or{<imodesuffix>}\t{%1, %0|%0, %1}"
[(set_attr "type" "alu1")
(set_attr "mode" "<MODE>")
(set_attr "length_immediate" "1")])
(define_insn "adjust_stack_and_probe<mode>" (define_insn "adjust_stack_and_probe<mode>"
[(set (match_operand:P 0 "register_operand" "=r") [(set (match_operand:P 0 "register_operand" "=r")
(unspec_volatile:P [(match_operand:P 1 "register_operand" "0")] (unspec_volatile:P [(match_operand:P 1 "register_operand" "0")]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment