AArch64 - add speculation barrier 66/198466/2
authorrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 31 Jul 2018 17:35:50 +0000 (17:35 +0000)
committerDongkyun Son <dongkyun.s@samsung.com>
Wed, 6 Feb 2019 15:50:49 +0000 (15:50 +0000)
Similar to Arm, this adds an unconditional speculation barrier for AArch64.

* config/aarch64.md (unspecv): Add UNSPECV_SPECULAION_BARRIER.
(speculation_barrier): New insn.

(backported f9d2906f0b6803c42b2200da5e32e331930fc306)

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

Change-Id: Ic9a1826c24f8597033716cec3d02de12fdb57dba

gcc/ChangeLog
gcc/config/aarch64/aarch64.md

index ab2e761..ec6ae81 100644 (file)
@@ -1,5 +1,10 @@
 2018-07-31  Richard Earnshaw  <rearnsha@arm.com>
 
+       * config/aarch64.md (unspecv): Add UNSPECV_SPECULAION_BARRIER.
+       (speculation_barrier): New insn.
+
+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.
index 6fc7979..6a03262 100644 (file)
     UNSPECV_SET_FPSR           ; Represent assign of FPSR content.
     UNSPECV_BLOCKAGE           ; Represent a blockage
     UNSPECV_PROBE_STACK_RANGE  ; Represent stack range probing.
+    UNSPECV_SPECULATION_BARRIER ; Represent speculation barrier.
   ]
 )
 
   DONE;
 })
 
+;; Hard speculation barrier.
+(define_insn "speculation_barrier"
+  [(unspec_volatile [(const_int 0)] UNSPECV_SPECULATION_BARRIER)]
+  ""
+  "isb\;dsb\\tsy"
+  [(set_attr "length" "8")
+   (set_attr "type" "block")]
+)
+
 ;; AdvSIMD Stuff
 (include "aarch64-simd.md")