summaryrefslogtreecommitdiff
path: root/gcc/config/i386/mmx.md
diff options
context:
space:
mode:
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2011-09-19 18:21:54 +0000
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2011-09-19 18:21:54 +0000
commit18594fc6162a5fd19dade5767d08960c01c25e20 (patch)
treefe6b12c1de8bf14c1f53ac2a199388016ae5a5a6 /gcc/config/i386/mmx.md
parent2af8cce69529f81e44e5e0b09cd705e21337ceb8 (diff)
downloadgcc-18594fc6162a5fd19dade5767d08960c01c25e20.tar.gz
* config/i386/mmx.md (*mov<mode>_internal_rex64): Use if_then_else RTX
to calculate unit, prefix_rep and prefix_data16 attributes. (*mov<mode>_internal): Ditto for unit attribute. (*movv2sf_internal_rex64): Ditto for unit and prefix_rep attributes. (*movv2sf_internal): Ditto. * config/i386/sse.md (VI1248_256): Remove mode iterator. (avx2_eq<mode>3): Use VI_256 instead of VI1248_256. (*avx2_eq<mode>3): Ditto. (avx2_gt<mode>3): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@178982 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/i386/mmx.md')
-rw-r--r--gcc/config/i386/mmx.md40
1 files changed, 32 insertions, 8 deletions
diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md
index 21f2c94edde..f092c0f4f85 100644
--- a/gcc/config/i386/mmx.md
+++ b/gcc/config/i386/mmx.md
@@ -98,9 +98,18 @@
(const_string "sselog1")
]
(const_string "ssemov")))
- (set_attr "unit" "*,*,*,*,*,*,mmx,mmx,*,*,*,*,*")
- (set_attr "prefix_rep" "*,*,*,*,*,*,1,1,*,1,*,*,*")
- (set_attr "prefix_data16" "*,*,*,*,*,*,*,*,*,*,1,1,1")
+ (set (attr "unit")
+ (if_then_else (eq_attr "alternative" "6,7")
+ (const_string "mmx")
+ (const_string "*")))
+ (set (attr "prefix_rep")
+ (if_then_else (eq_attr "alternative" "6,7,9")
+ (const_string "1")
+ (const_string "*")))
+ (set (attr "prefix_data16")
+ (if_then_else (eq_attr "alternative" "10,11,12")
+ (const_string "1")
+ (const_string "*")))
(set (attr "prefix_rex")
(if_then_else (eq_attr "alternative" "9,10")
(symbol_ref "x86_extended_reg_mentioned_p (insn)")
@@ -154,7 +163,10 @@
(const_string "multi")
]
(const_string "ssemov")))
- (set_attr "unit" "*,*,*,*,mmx,mmx,*,*,*,*,*,*,*,*,*")
+ (set (attr "unit")
+ (if_then_else (eq_attr "alternative" "4,5")
+ (const_string "mmx")
+ (const_string "*")))
(set (attr "prefix_rep")
(if_then_else
(ior (eq_attr "alternative" "4,5")
@@ -219,8 +231,14 @@
(const_string "sselog1")
]
(const_string "ssemov")))
- (set_attr "unit" "*,*,*,*,*,*,mmx,mmx,*,*,*,*,*,*")
- (set_attr "prefix_rep" "*,*,*,*,*,*,1,1,*,*,*,*,*,*")
+ (set (attr "unit")
+ (if_then_else (eq_attr "alternative" "6,7")
+ (const_string "mmx")
+ (const_string "*")))
+ (set (attr "prefix_rep")
+ (if_then_else (eq_attr "alternative" "6,7")
+ (const_string "1")
+ (const_string "*")))
(set (attr "length_vex")
(if_then_else
(and (eq_attr "alternative" "12,13")
@@ -270,8 +288,14 @@
(const_string "multi")
]
(const_string "ssemov")))
- (set_attr "unit" "*,*,*,*,mmx,mmx,*,*,*,*,*,*")
- (set_attr "prefix_rep" "*,*,*,*,1,1,*,*,*,*,*,*")
+ (set (attr "unit")
+ (if_then_else (eq_attr "alternative" "4,5")
+ (const_string "mmx")
+ (const_string "*")))
+ (set (attr "prefix_rep")
+ (if_then_else (eq_attr "alternative" "4,5")
+ (const_string "1")
+ (const_string "*")))
(set (attr "prefix")
(if_then_else (eq_attr "alternative" "6,7,8,9")
(const_string "maybe_vex")