diff mbox series

[committed] : i386: Use offsettable address constraint for double-word memory operands

Message ID CAFULd4Zck_FN5h02qX0BJFCs3isO3JxGD4dNSaAVM8mgiLM-3g@mail.gmail.com
State New
Headers show
Series [committed] : i386: Use offsettable address constraint for double-word memory operands | expand

Commit Message

Uros Bizjak Sept. 9, 2024, 8:36 p.m. UTC
Double-word memory operands are accessed as their high and low parts, so the
memory location has to be offsettable.  Use "o" constraint instead of "m"
for double-word memory operands.

gcc/ChangeLog:

    * config/i386/i386.md (*insvdi_lowpart_1): Use "o" constraint
    instead of "m" for double-word mode memory operands.
    (*add<dwi>3_doubleword_zext): Ditto.
    (*addv<dwi>4_doubleword_1): Use "jO" constraint instead of "jM"
    for double-word mode memory operands.

Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}.

Uros.
diff mbox series

Patch

diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 0fae3c1eb87..8d269feee83 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -3707,7 +3707,7 @@  (define_insn_and_split "*insvdi_lowpart_1"
   [(set (match_operand:DI 0 "nonimmediate_operand" "=ro,r,r,&r")
 	(any_or_plus:DI
 	  (and:DI
-	    (match_operand:DI 1 "nonimmediate_operand" "r,m,r,m")
+	    (match_operand:DI 1 "nonimmediate_operand" "r,o,r,o")
 	    (match_operand:DI 3 "const_int_operand" "n,n,n,n"))
 	  (zero_extend:DI
 	    (match_operand:SI 2 "nonimmediate_operand" "r,r,m,m"))))]
@@ -6461,7 +6461,7 @@  (define_insn_and_split "*add<dwi>3_doubleword_zext"
 	(plus:<DWI>
 	  (zero_extend:<DWI>
 	    (match_operand:DWIH 2 "nonimmediate_operand" "rm,r,rm,r"))
-	  (match_operand:<DWI> 1 "nonimmediate_operand" "0,0,r,m")))
+	  (match_operand:<DWI> 1 "nonimmediate_operand" "0,0,r,o")))
    (clobber (reg:CC FLAGS_REG))]
   "ix86_binary_operator_ok (UNKNOWN, <DWI>mode, operands, TARGET_APX_NDD)"
   "#"
@@ -7703,7 +7703,7 @@  (define_insn_and_split "*addv<dwi>4_doubleword_1"
 	(eq:CCO
 	  (plus:<QPWI>
 	    (sign_extend:<QPWI>
-	      (match_operand:<DWI> 1 "nonimmediate_operand" "%0,rjM"))
+	      (match_operand:<DWI> 1 "nonimmediate_operand" "%0,rjO"))
 	    (match_operand:<QPWI> 3 "const_scalar_int_operand" "n,n"))
 	  (sign_extend:<QPWI>
 	    (plus:<DWI>