summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Weigand <ulrich.weigand@de.ibm.com>2013-07-03 18:29:47 +0000
committerUlrich Weigand <ulrich.weigand@de.ibm.com>2013-07-03 18:29:47 +0000
commit51f558c9aed3bf74c2e8f3ff3bf365c94637ecdf (patch)
treeaaf737aa9c84706bd2ae54f250a7f4ddc359e73d
parent33efedc0481c4b0d9866ff526eb1161372b5919f (diff)
downloadllvm-51f558c9aed3bf74c2e8f3ff3bf365c94637ecdf.tar.gz
llvm-51f558c9aed3bf74c2e8f3ff3bf365c94637ecdf.tar.bz2
llvm-51f558c9aed3bf74c2e8f3ff3bf365c94637ecdf.tar.xz
[PowerPC] Support lmw/stmw in the asm parser
This adds support for the load/store multiple instructions, currently used by the asm parser only. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185564 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/PowerPC/PPCInstrInfo.td8
-rw-r--r--test/MC/PowerPC/ppc64-encoding.s7
2 files changed, 14 insertions, 1 deletions
diff --git a/lib/Target/PowerPC/PPCInstrInfo.td b/lib/Target/PowerPC/PPCInstrInfo.td
index 9a8e33b79d..022c15179b 100644
--- a/lib/Target/PowerPC/PPCInstrInfo.td
+++ b/lib/Target/PowerPC/PPCInstrInfo.td
@@ -1378,6 +1378,10 @@ def LFIWZX : XForm_25<31, 887, (outs f8rc:$frD), (ins memrr:$src),
[(set f64:$frD, (PPClfiwzx xoaddr:$src))]>;
}
+// Load Multiple
+def LMW : DForm_1<46, (outs gprc:$rD), (ins memri:$src),
+ "lmw $rD, $src", LdStLMW, []>;
+
//===----------------------------------------------------------------------===//
// PPC32 Store Instructions.
//
@@ -1508,6 +1512,10 @@ def : Pat<(pre_store f32:$rS, iPTR:$ptrreg, iPTR:$ptroff),
def : Pat<(pre_store f64:$rS, iPTR:$ptrreg, iPTR:$ptroff),
(STFDUX $rS, $ptrreg, $ptroff)>;
+// Store Multiple
+def STMW : DForm_1<47, (outs), (ins gprc:$rS, memri:$dst),
+ "stmw $rS, $dst", LdStLMW, []>;
+
def SYNC : XForm_24_sync<31, 598, (outs), (ins i32imm:$L),
"sync $L", LdStSync, []>;
def : Pat<(int_ppc_sync), (SYNC 0)>;
diff --git a/test/MC/PowerPC/ppc64-encoding.s b/test/MC/PowerPC/ppc64-encoding.s
index 03d513ccc4..002bb517cb 100644
--- a/test/MC/PowerPC/ppc64-encoding.s
+++ b/test/MC/PowerPC/ppc64-encoding.s
@@ -177,7 +177,12 @@
# CHECK: stdbrx 2, 3, 4 # encoding: [0x7c,0x43,0x25,0x28]
stdbrx 2, 3, 4
-# FIXME: Fixed-point load and store multiple instructions
+# Fixed-point load and store multiple instructions
+
+# CHECK: lmw 2, 128(1) # encoding: [0xb8,0x41,0x00,0x80]
+ lmw 2, 128(1)
+# CHECK: stmw 2, 128(1) # encoding: [0xbc,0x41,0x00,0x80]
+ stmw 2, 128(1)
# FIXME: Fixed-point move assist instructions