diff options
Diffstat (limited to 'gcc/config/i386/i386.md')
-rw-r--r-- | gcc/config/i386/i386.md | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 33000174fca..16cee7a9dbe 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -2690,7 +2690,11 @@ (const_int 8)) (match_operand:SWI48x 1 "nonmemory_operand" "Qn"))] "TARGET_64BIT" - "mov{b}\t{%b1, %h0|%h0, %b1}" +{ + if (CONST_INT_P (operands[1])) + operands[1] = simplify_gen_subreg (QImode, operands[1], <MODE>mode, 0); + return "mov{b}\t{%b1, %h0|%h0, %b1}"; +} [(set_attr "type" "imov") (set_attr "mode" "QI")]) @@ -2700,7 +2704,11 @@ (const_int 8)) (match_operand:SI 1 "general_operand" "Qmn"))] "!TARGET_64BIT" - "mov{b}\t{%b1, %h0|%h0, %b1}" +{ + if (CONST_INT_P (operands[1])) + operands[1] = simplify_gen_subreg (QImode, operands[1], SImode, 0); + return "mov{b}\t{%b1, %h0|%h0, %b1}"; +} [(set_attr "type" "imov") (set_attr "mode" "QI")]) |