diff options
| author | Anton Korobeynikov <asl@math.spbu.ru> | 2009-10-11 23:03:53 +0000 | 
|---|---|---|
| committer | Anton Korobeynikov <asl@math.spbu.ru> | 2009-10-11 23:03:53 +0000 | 
| commit | 4b38ce9f25b602a6cf5da100194caac364fd10df (patch) | |
| tree | 4eb8bea6c1e0aabbd836a79f475421894dba8338 | |
| parent | 415c3dc501212ea990273430ba6bd4e5d963aa81 (diff) | |
| download | bcm5719-llvm-4b38ce9f25b602a6cf5da100194caac364fd10df.tar.gz bcm5719-llvm-4b38ce9f25b602a6cf5da100194caac364fd10df.zip | |
Add missed mem-mem move patterns
llvm-svn: 83812
| -rw-r--r-- | llvm/lib/Target/MSP430/MSP430InstrInfo.td | 7 | ||||
| -rw-r--r-- | llvm/test/CodeGen/MSP430/Inst16mm.ll | 8 | ||||
| -rw-r--r-- | llvm/test/CodeGen/MSP430/Inst8mm.ll | 8 | 
3 files changed, 23 insertions, 0 deletions
| diff --git a/llvm/lib/Target/MSP430/MSP430InstrInfo.td b/llvm/lib/Target/MSP430/MSP430InstrInfo.td index 37a949209da..f7e0d2bad63 100644 --- a/llvm/lib/Target/MSP430/MSP430InstrInfo.td +++ b/llvm/lib/Target/MSP430/MSP430InstrInfo.td @@ -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 diff --git a/llvm/test/CodeGen/MSP430/Inst16mm.ll b/llvm/test/CodeGen/MSP430/Inst16mm.ll index dd4b570f8a1..5f492bbf0c0 100644 --- a/llvm/test/CodeGen/MSP430/Inst16mm.ll +++ b/llvm/test/CodeGen/MSP430/Inst16mm.ll @@ -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 diff --git a/llvm/test/CodeGen/MSP430/Inst8mm.ll b/llvm/test/CodeGen/MSP430/Inst8mm.ll index 5a128c5ed60..7e237a2817d 100644 --- a/llvm/test/CodeGen/MSP430/Inst8mm.ll +++ b/llvm/test/CodeGen/MSP430/Inst8mm.ll @@ -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 | 

