diff options
author | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-09-19 18:21:54 +0000 |
---|---|---|
committer | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-09-19 18:21:54 +0000 |
commit | 18594fc6162a5fd19dade5767d08960c01c25e20 (patch) | |
tree | fe6b12c1de8bf14c1f53ac2a199388016ae5a5a6 /gcc/config/i386/mmx.md | |
parent | 2af8cce69529f81e44e5e0b09cd705e21337ceb8 (diff) | |
download | gcc-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.md | 40 |
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") |