summaryrefslogtreecommitdiff
path: root/gcc/config/i386/i386.md
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/i386/i386.md')
-rw-r--r--gcc/config/i386/i386.md11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index d20bbe431fa..a256d2ca93d 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -194,6 +194,9 @@
UNSPEC_BNDCU
UNSPEC_BNDCN
UNSPEC_MPX_FENCE
+
+ ;; IRET support
+ UNSPEC_INTERRUPT_RETURN
])
(define_c_enum "unspecv" [
@@ -12434,6 +12437,14 @@
(set_attr "modrm" "0")
(set_attr "maybe_prefix_bnd" "1")])
+(define_insn "interrupt_return"
+ [(simple_return)
+ (unspec [(const_int 0)] UNSPEC_INTERRUPT_RETURN)]
+ "reload_completed"
+{
+ return TARGET_64BIT ? "iretq" : "iret";
+})
+
;; Used by x86_machine_dependent_reorg to avoid penalty on single byte RET
;; instruction Athlon and K8 have.