aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2017-11-21 18:46:38 +0100
committerUros Bizjak <uros@gcc.gnu.org>2017-11-21 18:46:38 +0100
commitffb41aab7a9b8475e773b75fdebd194f4491c9db (patch)
tree188210588a00ec8677cdbf3efebc70c6498ccb69 /gcc
parent826eccc6fd8bebfafa3ac02d9755bb2e59f465b7 (diff)
downloadgcc-ffb41aab7a9b8475e773b75fdebd194f4491c9db.zip
gcc-ffb41aab7a9b8475e773b75fdebd194f4491c9db.tar.gz
gcc-ffb41aab7a9b8475e773b75fdebd194f4491c9db.tar.bz2
* config/i386/i386.md: Missing file from my previous commit.
From-SVN: r255019
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/i386/i386.md31
2 files changed, 22 insertions, 16 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d631cb6..e4c1a77 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2017-11-21 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (*bswap<mode>2_movbe): Add
+ integer suffix to movbe mnemonic.
+ (*bswaphi2_movbe): Ditto.
+ (bswaphi_lowpart): Merge with *bswaphi_lowpart_1.
+
2017-11-21 Jakub Jelinek <jakub@redhat.com>
PR c++/83045
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 0eaa1f2..b871590 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -14074,8 +14074,8 @@
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
bswap\t%0
- movbe\t{%1, %0|%0, %1}
- movbe\t{%1, %0|%0, %1}"
+ movbe{<imodesuffix>}\t{%1, %0|%0, %1}
+ movbe{<imodesuffix>}\t{%1, %0|%0, %1}"
[(set_attr "type" "bitmanip,imov,imov")
(set_attr "modrm" "0,1,1")
(set_attr "prefix_0f" "*,1,1")
@@ -14103,8 +14103,8 @@
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
xchg{b}\t{%h0, %b0|%b0, %h0}
- movbe\t{%1, %0|%0, %1}
- movbe\t{%1, %0|%0, %1}"
+ movbe{w}\t{%1, %0|%0, %1}
+ movbe{w}\t{%1, %0|%0, %1}"
[(set_attr "type" "imov")
(set_attr "modrm" "*,1,1")
(set_attr "prefix_0f" "*,1,1")
@@ -14124,26 +14124,25 @@
[(parallel [(set (match_dup 0) (rotate:HI (match_dup 0) (const_int 8)))
(clobber (reg:CC FLAGS_REG))])])
-(define_insn "*bswaphi_lowpart_1"
+(define_insn "bswaphi_lowpart"
[(set (strict_low_part (match_operand:HI 0 "register_operand" "+Q,r"))
(bswap:HI (match_dup 0)))
(clobber (reg:CC FLAGS_REG))]
- "TARGET_USE_XCHGB || optimize_function_for_size_p (cfun)"
+ ""
"@
xchg{b}\t{%h0, %b0|%b0, %h0}
rol{w}\t{$8, %0|%0, 8}"
- [(set_attr "length" "2,4")
+ [(set (attr "preferred_for_size")
+ (cond [(eq_attr "alternative" "0")
+ (symbol_ref "true")]
+ (symbol_ref "false")))
+ (set (attr "preferred_for_speed")
+ (cond [(eq_attr "alternative" "0")
+ (symbol_ref "TARGET_USE_XCHGB")]
+ (symbol_ref "!TARGET_USE_XCHGB")))
+ (set_attr "length" "2,4")
(set_attr "mode" "QI,HI")])
-(define_insn "bswaphi_lowpart"
- [(set (strict_low_part (match_operand:HI 0 "register_operand" "+r"))
- (bswap:HI (match_dup 0)))
- (clobber (reg:CC FLAGS_REG))]
- ""
- "rol{w}\t{$8, %0|%0, 8}"
- [(set_attr "length" "4")
- (set_attr "mode" "HI")])
-
(define_expand "paritydi2"
[(set (match_operand:DI 0 "register_operand")
(parity:DI (match_operand:DI 1 "register_operand")))]