aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNagaraju Mekala <nagaraju.mekala@xilinx.com>2014-02-11 01:52:54 +0000
committerMichael Eager <eager@gcc.gnu.org>2014-02-11 01:52:54 +0000
commitd63f13116fae7379c1645582bdc6c2e7c02cd56c (patch)
tree9dfd830478595ed1f0fe14d8b5a5cba0f71ef375 /gcc
parented8b71cc56709133186faad24a65c4926de73bcc (diff)
downloadgcc-d63f13116fae7379c1645582bdc6c2e7c02cd56c.zip
gcc-d63f13116fae7379c1645582bdc6c2e7c02cd56c.tar.gz
gcc-d63f13116fae7379c1645582bdc6c2e7c02cd56c.tar.bz2
Added the lwr/swr instructions pattern.
lwr and swr instructions will load/store the data with opposite endianness. Changelog 2014-02-10 Nagaraju Mekala <nagaraju.mekala@xilinx.com> * gcc/config/microblaze/microblaze.md: Add movsi4_rev insn pattern. * gcc/config/microblaze/predicates.md: Add reg_or_mem_operand predicate. From-SVN: r207683
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/microblaze/microblaze.md12
-rw-r--r--gcc/config/microblaze/predicates.md4
3 files changed, 22 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8198a5f..1a61595 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,9 @@
-2013-11-26 Nagaraju Mekala <nagaraju.mekala@xilinx.com>
+2014-02-10 Nagaraju Mekala <nagaraju.mekala@xilinx.com>
+
+ * config/microblaze/microblaze.md: Add movsi4_rev insn pattern.
+ * config/microblaze/predicates.md: Add reg_or_mem_operand predicate.
+
+2014-02-10 Nagaraju Mekala <nagaraju.mekala@xilinx.com>
* config/microblaze/microblaze.c: Extend mcpu version format
diff --git a/gcc/config/microblaze/microblaze.md b/gcc/config/microblaze/microblaze.md
index 8431f2d..01c49e0 100644
--- a/gcc/config/microblaze/microblaze.md
+++ b/gcc/config/microblaze/microblaze.md
@@ -1119,6 +1119,18 @@
}
)
+;;Load and store reverse
+(define_insn "movsi4_rev"
+ [(set (match_operand:SI 0 "reg_or_mem_operand" "=r,Q")
+ (bswap:SI (match_operand:SF 1 "reg_or_mem_operand" "Q,r")))]
+ "TARGET_REORDER"
+ "@
+ lwr\t%0,%y1,r0
+ swr\t%1,%y0,r0"
+ [(set_attr "type" "load,store")
+ (set_attr "mode" "SI")
+ (set_attr "length" "4,4")])
+
;; 32-bit floating point moves
(define_expand "movsf"
diff --git a/gcc/config/microblaze/predicates.md b/gcc/config/microblaze/predicates.md
index 83e8e79..f34453c 100644
--- a/gcc/config/microblaze/predicates.md
+++ b/gcc/config/microblaze/predicates.md
@@ -85,6 +85,10 @@
(ior (match_operand 0 "const_0_operand")
(match_operand 0 "register_operand")))
+(define_predicate "reg_or_mem_operand"
+ (ior (match_operand 0 "memory_operand")
+ (match_operand 0 "register_operand")))
+
;; Return if the operand is either the PC or a label_ref.
(define_special_predicate "pc_or_label_operand"
(ior (match_code "pc,label_ref")