mirror of git://gcc.gnu.org/git/gcc.git
Arm - add speculation_barrier pattern
This patch defines a speculation barrier for AArch32. * config/arm/unspecs.md (unspecv): Add VUNSPEC_SPECULATION_BARRIER. * config/arm/arm.md (speculation_barrier): New expand. (speculation_barrier_insn): New pattern. From-SVN: r263169
This commit is contained in:
parent
425fc685dd
commit
bb8b009682
|
|
@ -1,3 +1,9 @@
|
||||||
|
2018-07-31 Richard Earnshaw <rearnsha@arm.com>
|
||||||
|
|
||||||
|
* config/arm/unspecs.md (unspecv): Add VUNSPEC_SPECULATION_BARRIER.
|
||||||
|
* config/arm/arm.md (speculation_barrier): New expand.
|
||||||
|
(speculation_barrier_insn): New pattern.
|
||||||
|
|
||||||
2018-07-31 Richard Earnshaw <rearnsha@arm.com>
|
2018-07-31 Richard Earnshaw <rearnsha@arm.com>
|
||||||
|
|
||||||
* builtin-types.def (BT_FN_PTR_PTR_VAR): New function type.
|
* builtin-types.def (BT_FN_PTR_PTR_VAR): New function type.
|
||||||
|
|
|
||||||
|
|
@ -12012,6 +12012,27 @@
|
||||||
[(set_attr "length" "4")
|
[(set_attr "length" "4")
|
||||||
(set_attr "type" "coproc")])
|
(set_attr "type" "coproc")])
|
||||||
|
|
||||||
|
(define_expand "speculation_barrier"
|
||||||
|
[(unspec_volatile [(const_int 0)] VUNSPEC_SPECULATION_BARRIER)]
|
||||||
|
"TARGET_EITHER"
|
||||||
|
"
|
||||||
|
/* Don't emit anything for Thumb1 and suppress the warning from the
|
||||||
|
generic expansion. */
|
||||||
|
if (!TARGET_32BIT)
|
||||||
|
DONE;
|
||||||
|
"
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Generate a hard speculation barrier when we have not enabled speculation
|
||||||
|
;; tracking.
|
||||||
|
(define_insn "*speculation_barrier_insn"
|
||||||
|
[(unspec_volatile [(const_int 0)] VUNSPEC_SPECULATION_BARRIER)]
|
||||||
|
"TARGET_32BIT"
|
||||||
|
"isb\;dsb\\tsy"
|
||||||
|
[(set_attr "type" "block")
|
||||||
|
(set_attr "length" "8")]
|
||||||
|
)
|
||||||
|
|
||||||
;; Vector bits common to IWMMXT and Neon
|
;; Vector bits common to IWMMXT and Neon
|
||||||
(include "vec-common.md")
|
(include "vec-common.md")
|
||||||
;; Load the Intel Wireless Multimedia Extension patterns
|
;; Load the Intel Wireless Multimedia Extension patterns
|
||||||
|
|
|
||||||
|
|
@ -168,6 +168,7 @@
|
||||||
VUNSPEC_MCRR2 ; Represent the coprocessor mcrr2 instruction.
|
VUNSPEC_MCRR2 ; Represent the coprocessor mcrr2 instruction.
|
||||||
VUNSPEC_MRRC ; Represent the coprocessor mrrc instruction.
|
VUNSPEC_MRRC ; Represent the coprocessor mrrc instruction.
|
||||||
VUNSPEC_MRRC2 ; Represent the coprocessor mrrc2 instruction.
|
VUNSPEC_MRRC2 ; Represent the coprocessor mrrc2 instruction.
|
||||||
|
VUNSPEC_SPECULATION_BARRIER ; Represents an unconditional speculation barrier.
|
||||||
])
|
])
|
||||||
|
|
||||||
;; Enumerators for NEON unspecs.
|
;; Enumerators for NEON unspecs.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue