* config/i386/i386.md: Missing file from my previous commit.
authorUros Bizjak <ubizjak@gmail.com>
Tue, 21 Nov 2017 17:46:38 +0000 (18:46 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Tue, 21 Nov 2017 17:46:38 +0000 (18:46 +0100)
From-SVN: r255019

gcc/ChangeLog
gcc/config/i386/i386.md

index d631cb694d1d746ed08de40c18eb6e637bf8d355..e4c1a77d0b9a22420c65dcd1242757866fc68b59 100644 (file)
@@ -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
index 0eaa1f244f31f5ef17210f829074c0b6aaeacfdb..b8715902c353cee0b34c35d484cc8b13d04838fb 100644 (file)
    && !(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")
    && !(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")
   [(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")))]