Add missed mem-mem move patterns
authorAnton Korobeynikov <asl@math.spbu.ru>
Sun, 11 Oct 2009 23:03:53 +0000 (23:03 +0000)
committerAnton Korobeynikov <asl@math.spbu.ru>
Sun, 11 Oct 2009 23:03:53 +0000 (23:03 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83812 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/MSP430/MSP430InstrInfo.td
test/CodeGen/MSP430/Inst16mm.ll
test/CodeGen/MSP430/Inst8mm.ll

index 37a949209daeaa9dc529ecaf44a8166f3e7b1b36..f7e0d2bad6382b41b419b615afd32a37e513869f 100644 (file)
@@ -243,6 +243,13 @@ def MOV16mr : Pseudo<(outs), (ins memdst:$dst, GR16:$src),
                 "mov.w\t{$src, $dst}",
                 [(store GR16:$src, addr:$dst)]>;
 
+def MOV8mm  : Pseudo<(outs), (ins memdst:$dst, memsrc:$src),
+                "mov.b\t{$src, $dst}",
+                [(store (i8 (load addr:$src)), addr:$dst)]>;
+def MOV16mm : Pseudo<(outs), (ins memdst:$dst, memsrc:$src),
+                "mov.w\t{$src, $dst}",
+                [(store (i16 (load addr:$src)), addr:$dst)]>;
+
 //===----------------------------------------------------------------------===//
 // Arithmetic Instructions
 
index dd4b570f8a1fa0ad71e74b95223c283a7cc56d51..5f492bbf0c0a0cd4a08e85f1f4cde2718b0d694e 100644 (file)
@@ -4,6 +4,14 @@ target triple = "msp430-generic-generic"
 @foo = common global i16 0, align 2
 @bar = common global i16 0, align 2
 
+define void @mov() nounwind {
+; CHECK: mov:
+; CHECK: mov.w &bar, &foo
+        %1 = load i16* @bar
+        store i16 %1, i16* @foo
+        ret void
+}
+
 define void @add() nounwind {
 ; CHECK: add:
 ; CHECK: add.w &bar, &foo
index 5a128c5ed604d2350344d65707df393d0e26c8b9..7e237a2817d46f1a647e80a4a92901308afdc461 100644 (file)
@@ -5,6 +5,14 @@ target triple = "msp430-generic-generic"
 @foo = common global i8 0, align 1
 @bar = common global i8 0, align 1
 
+define void @mov() nounwind {
+; CHECK: mov:
+; CHECK: mov.b &bar, &foo
+        %1 = load i8* @bar
+        store i8 %1, i8* @foo
+        ret void
+}
+
 define void @add() nounwind {
 ; CHECK: add:
 ; CHECK: add.b &bar, &foo