summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Mips/MipsMSAInstrFormats.td
diff options
context:
space:
mode:
authorMatheus Almeida <matheus.almeida@imgtec.com>2014-01-29 14:05:28 +0000
committerMatheus Almeida <matheus.almeida@imgtec.com>2014-01-29 14:05:28 +0000
commit74070327b23b2ff8efc3722d60c4584cb6a2ee2d (patch)
treeb9fe7255f4a199fe50c80891b6fad8a3682afd7a /llvm/lib/Target/Mips/MipsMSAInstrFormats.td
parentce0f2175d78b5dc33cab8d04746d90099a9f49ad (diff)
downloadbcm5719-llvm-74070327b23b2ff8efc3722d60c4584cb6a2ee2d.tar.gz
bcm5719-llvm-74070327b23b2ff8efc3722d60c4584cb6a2ee2d.zip
[mips][msa] Add copy_{u,s}.d.
These instructions are only available on Mips64 cores that implement the MSA ASE. llvm-svn: 200398
Diffstat (limited to 'llvm/lib/Target/Mips/MipsMSAInstrFormats.td')
-rw-r--r--llvm/lib/Target/Mips/MipsMSAInstrFormats.td17
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/lib/Target/Mips/MipsMSAInstrFormats.td b/llvm/lib/Target/Mips/MipsMSAInstrFormats.td
index 27f0bde766c..d463d60354c 100644
--- a/llvm/lib/Target/Mips/MipsMSAInstrFormats.td
+++ b/llvm/lib/Target/Mips/MipsMSAInstrFormats.td
@@ -15,6 +15,10 @@ class MSAInst : MipsInst<(outs), (ins), "", [], NoItinerary, FrmOther> {
let Inst{31-26} = 0b011110;
}
+class MSA64Inst : MSAInst {
+ let Predicates = [HasMSA, HasMips64];
+}
+
class MSACBranch : MSAInst {
let Inst{31-26} = 0b010001;
}
@@ -274,6 +278,19 @@ class MSA_ELM_COPY_W_FMT<bits<4> major, bits<6> minor>: MSAInst {
let Inst{5-0} = minor;
}
+class MSA_ELM_COPY_D_FMT<bits<4> major, bits<6> minor>: MSA64Inst {
+ bits<4> n;
+ bits<5> ws;
+ bits<5> rd;
+
+ let Inst{25-22} = major;
+ let Inst{21-17} = 0b11100;
+ let Inst{16} = n{0};
+ let Inst{15-11} = ws;
+ let Inst{10-6} = rd;
+ let Inst{5-0} = minor;
+}
+
class MSA_ELM_INSERT_B_FMT<bits<4> major, bits<6> minor>: MSAInst {
bits<6> n;
bits<5> rs;
OpenPOWER on IntegriCloud