&& !(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")))]