Module Name:    src
Committed By:   kalvisd
Date:           Sun Sep 29 15:38:01 UTC 2024

Modified Files:
        src/external/gpl3/gcc/dist/gcc/config/vax: vax.md

Log Message:
gcc: vax: break a load of the top half of a 64 bit indexed memory reference
    into two parts - a load into a 64 bit temporary value and then the
    load of the top half of that value.

    OK rin@


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/external/gpl3/gcc/dist/gcc/config/vax/vax.md

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/gpl3/gcc/dist/gcc/config/vax/vax.md
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.md:1.23 src/external/gpl3/gcc/dist/gcc/config/vax/vax.md:1.24
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.md:1.23	Sun Sep 29 13:13:43 2024
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.md	Sun Sep 29 15:38:01 2024
@@ -274,6 +274,28 @@
 #endif
 }")
 
+;; Split a store of the upper half of a 64 bit value in memory into
+;; two operations.
+(define_split
+  [(set (match_operand:SI 0 "nonimmediate_operand" "")
+        (subreg:SI
+	  (match_operand:DI 1 "indexed_memory_operand" "")
+	  4
+	  )
+    )
+   (clobber (match_scratch:DI 2 ""))
+   ]
+  ""
+  [
+   (set (match_dup 2)
+        (match_dup 1)
+	)
+   (set (match_dup 0)
+        (subreg:SI (match_dup 2) 4)
+	)
+  ]
+)
+
 (define_insn_and_split "movsi_2"
   [(set (match_operand:SI 0 "nonimmediate_operand" "=g")
 	(match_operand:SI 1 "nonsymbolic_operand" "nrmT"))]

Reply via email to