diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2023-11-15 16:11:30 +0100 |
---|---|---|
committer | Uros Bizjak <ubizjak@gmail.com> | 2023-11-15 16:11:30 +0100 |
commit | deff85c1e490c5594eb626697b8052a4e555e51b (patch) | |
tree | 92835267990866490de5e170565a6e7febf0dd01 | |
parent | 4450984d0a18cd4e352d396231ba2c457d20feea (diff) | |
download | gcc-deff85c1e490c5594eb626697b8052a4e555e51b.zip gcc-deff85c1e490c5594eb626697b8052a4e555e51b.tar.gz gcc-deff85c1e490c5594eb626697b8052a4e555e51b.tar.bz2 |
i386: Fix strict_low_part QImode insn with high input register patterns [PR112540]
PR target/112540
gcc/ChangeLog:
* config/i386/i386.md (*addqi_ext<mode>_1_slp):
Correct operand numbers in split pattern. Replace !Q constraint
of operand 1 with !qm. Add insn constrain.
(*subqi_ext<mode>_1_slp): Ditto.
(*<any_logic:code>qi_ext<mode>_1_slp): Ditto.
-rw-r--r-- | gcc/config/i386/i386.md | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 6136e46..29ec942 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -6624,9 +6624,9 @@ [(match_operand 2 "int248_register_operand" "Q,Q") (const_int 8) (const_int 8)]) 0) - (match_operand:QI 1 "nonimmediate_operand" "0,!Q"))) + (match_operand:QI 1 "nonimmediate_operand" "0,!qm"))) (clobber (reg:CC FLAGS_REG))] - "" + "!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun)" "@ add{b}\t{%h2, %0|%0, %h2} #" @@ -6638,8 +6638,8 @@ (plus:QI (subreg:QI (match_op_dup 3 - [(match_dup 0) (const_int 8) (const_int 8)]) 0) - (match_dup 1))) + [(match_dup 2) (const_int 8) (const_int 8)]) 0) + (match_dup 0))) (clobber (reg:CC FLAGS_REG))])] "" [(set_attr "type" "alu") @@ -7662,14 +7662,14 @@ (define_insn_and_split "*subqi_ext<mode>_1_slp" [(set (strict_low_part (match_operand:QI 0 "register_operand" "+Q,&Q")) (minus:QI - (match_operand:QI 1 "nonimmediate_operand" "0,!Q") + (match_operand:QI 1 "nonimmediate_operand" "0,!qm") (subreg:QI (match_operator:SWI248 3 "extract_operator" [(match_operand 2 "int248_register_operand" "Q,Q") (const_int 8) (const_int 8)]) 0))) (clobber (reg:CC FLAGS_REG))] - "" + "!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun)" "@ sub{b}\t{%h2, %0|%0, %h2} #" @@ -7679,10 +7679,10 @@ (parallel [(set (strict_low_part (match_dup 0)) (minus:QI - (match_dup 1) + (match_dup 0) (subreg:QI (match_op_dup 3 - [(match_dup 0) (const_int 8) (const_int 8)]) 0))) + [(match_dup 2) (const_int 8) (const_int 8)]) 0))) (clobber (reg:CC FLAGS_REG))])] "" [(set_attr "type" "alu") @@ -11492,9 +11492,9 @@ [(match_operand 2 "int248_register_operand" "Q,Q") (const_int 8) (const_int 8)]) 0) - (match_operand:QI 1 "nonimmediate_operand" "0,!Q"))) + (match_operand:QI 1 "nonimmediate_operand" "0,!qm"))) (clobber (reg:CC FLAGS_REG))] - "" + "!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun)" "@ <logic>{b}\t{%h2, %0|%0, %h2} #" @@ -11504,10 +11504,10 @@ (parallel [(set (strict_low_part (match_dup 0)) (any_logic:QI - (match_dup 1) (subreg:QI (match_op_dup 3 - [(match_dup 0) (const_int 8) (const_int 8)]) 0))) + [(match_dup 2) (const_int 8) (const_int 8)]) 0))) + (match_dup 0) (clobber (reg:CC FLAGS_REG))])] "" [(set_attr "type" "alu") |