summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatheus Almeida <matheus.almeida@imgtec.com>2013-10-21 12:43:54 +0000
committerMatheus Almeida <matheus.almeida@imgtec.com>2013-10-21 12:43:54 +0000
commitf6d4cff9b1cf1e3b57592d6a0e40f0026813aa7c (patch)
tree7a4c266da3ef203f6675b76147a51194c080ba43
parent006cff8d7b60ddf632f8642f01693dace7827d8b (diff)
downloadllvm-f6d4cff9b1cf1e3b57592d6a0e40f0026813aa7c.tar.gz
llvm-f6d4cff9b1cf1e3b57592d6a0e40f0026813aa7c.tar.bz2
llvm-f6d4cff9b1cf1e3b57592d6a0e40f0026813aa7c.tar.xz
[mips][msa] Direct Object Emission support for MOVE.v.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193080 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/Mips/MipsMSAInstrFormats.td5
-rw-r--r--lib/Target/Mips/MipsMSAInstrInfo.td4
-rw-r--r--test/MC/Mips/msa/test_elm.s3
3 files changed, 10 insertions, 2 deletions
diff --git a/lib/Target/Mips/MipsMSAInstrFormats.td b/lib/Target/Mips/MipsMSAInstrFormats.td
index 8fe4dbca56..6e5a5eaf31 100644
--- a/lib/Target/Mips/MipsMSAInstrFormats.td
+++ b/lib/Target/Mips/MipsMSAInstrFormats.td
@@ -146,7 +146,12 @@ class MSA_3R_INDEX_FMT<bits<3> major, bits<2> df, bits<6> minor>: MSAInst {
}
class MSA_ELM_FMT<bits<10> major, bits<6> minor>: MSAInst {
+ bits<5> ws;
+ bits<5> wd;
+
let Inst{25-16} = major;
+ let Inst{15-11} = ws;
+ let Inst{10-6} = wd;
let Inst{5-0} = minor;
}
diff --git a/lib/Target/Mips/MipsMSAInstrInfo.td b/lib/Target/Mips/MipsMSAInstrInfo.td
index 09c06bcd8a..b4d05f7438 100644
--- a/lib/Target/Mips/MipsMSAInstrInfo.td
+++ b/lib/Target/Mips/MipsMSAInstrInfo.td
@@ -2158,8 +2158,8 @@ class MOD_U_W_DESC : MSA_3R_DESC_BASE<"mod_u.w", urem, MSA128WOpnd>;
class MOD_U_D_DESC : MSA_3R_DESC_BASE<"mod_u.d", urem, MSA128DOpnd>;
class MOVE_V_DESC {
- dag OutOperandList = (outs MSA128B:$wd);
- dag InOperandList = (ins MSA128B:$ws);
+ dag OutOperandList = (outs MSA128BOpnd:$wd);
+ dag InOperandList = (ins MSA128BOpnd:$ws);
string AsmString = "move.v\t$wd, $ws";
list<dag> Pattern = [];
InstrItinClass Itinerary = NoItinerary;
diff --git a/test/MC/Mips/msa/test_elm.s b/test/MC/Mips/msa/test_elm.s
index 6b46707730..1d0483826a 100644
--- a/test/MC/Mips/msa/test_elm.s
+++ b/test/MC/Mips/msa/test_elm.s
@@ -16,6 +16,7 @@
# CHECK: splati.h $w24, $w28[1] # encoding: [0x78,0x61,0xe6,0x19]
# CHECK: splati.w $w13, $w18[0] # encoding: [0x78,0x70,0x93,0x59]
# CHECK: splati.d $w28, $w1[0] # encoding: [0x78,0x78,0x0f,0x19]
+# CHECK: move.v $w23, $w24 # encoding: [0x78,0xbe,0xc5,0xd9]
# CHECKOBJDUMP: copy_s.b $13, $w8[2]
# CHECKOBJDUMP: copy_s.h $1, $w25[0]
@@ -31,6 +32,7 @@
# CHECKOBJDUMP: splati.h $w24, $w28[1]
# CHECKOBJDUMP: splati.w $w13, $w18[0]
# CHECKOBJDUMP: splati.d $w28, $w1[0]
+# CHECKOBJDUMP: move.v $w23, $w24
copy_s.b $13, $w8[2]
copy_s.h $1, $w25[0]
@@ -46,3 +48,4 @@
splati.h $w24, $w28[1]
splati.w $w13, $w18[0]
splati.d $w28, $w1[0]
+ move.v $w23, $w24