summaryrefslogtreecommitdiff
path: root/gcc/config/i386/sync.md
diff options
context:
space:
mode:
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2015-04-02 07:56:05 +0000
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2015-04-02 07:56:05 +0000
commitcb5d0a18ce433c9e3dfd0f782c0eaded09a53088 (patch)
tree05245162db6486007dff32f20190cb633afcab28 /gcc/config/i386/sync.md
parentc28f0245e206e28e55e6e38cd28579bc5e32fac0 (diff)
downloadgcc-cb5d0a18ce433c9e3dfd0f782c0eaded09a53088.tar.gz
* config/i386/sync.md (UNSPEC_FILD_ATOMIC, UNSPEC_FIST_ATOMIC): New.
(loaddi_via_fpu): Use UNSPEC_FILD_ATOMIC. (storedi_via_fpu): Use UNSPEC_FIST_ATOMIC. * reg-stack.c (get_true_reg): Change UNSPEC_LDA to UNSPEC_FILD_ATOMIC. (subst_stack_regs_pat): Change UNSPEC_STA to UNSPEC_FIST_ATOMIC. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221830 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/i386/sync.md')
-rw-r--r--gcc/config/i386/sync.md9
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/config/i386/sync.md b/gcc/config/i386/sync.md
index 3ef580be94d..61a2a819260 100644
--- a/gcc/config/i386/sync.md
+++ b/gcc/config/i386/sync.md
@@ -22,6 +22,9 @@
UNSPEC_SFENCE
UNSPEC_MFENCE
+ UNSPEC_FILD_ATOMIC
+ UNSPEC_FIST_ATOMIC
+
;; __atomic support
UNSPEC_LDA
UNSPEC_STA
@@ -302,7 +305,8 @@
(define_insn "loaddi_via_fpu"
[(set (match_operand:DF 0 "register_operand" "=f")
- (unspec:DF [(match_operand:DI 1 "memory_operand" "m")] UNSPEC_LDA))]
+ (unspec:DF [(match_operand:DI 1 "memory_operand" "m")]
+ UNSPEC_FILD_ATOMIC))]
"TARGET_80387"
"fild%Z1\t%1"
[(set_attr "type" "fmov")
@@ -311,7 +315,8 @@
(define_insn "storedi_via_fpu"
[(set (match_operand:DI 0 "memory_operand" "=m")
- (unspec:DI [(match_operand:DF 1 "register_operand" "f")] UNSPEC_STA))]
+ (unspec:DI [(match_operand:DF 1 "register_operand" "f")]
+ UNSPEC_FIST_ATOMIC))]
"TARGET_80387"
{
gcc_assert (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG) != NULL_RTX);