summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMInstrFormats.td
diff options
context:
space:
mode:
authorJohnny Chen <johnny.chen@apple.com>2010-03-25 17:01:27 +0000
committerJohnny Chen <johnny.chen@apple.com>2010-03-25 17:01:27 +0000
commit45ab3f3ccfb86d6d783fca6233b2d3a9eba15dd9 (patch)
treef846cbe7336840129623c13900ea2d89c461f826 /llvm/lib/Target/ARM/ARMInstrFormats.td
parenta5736bde2e47e64ed4733b119b4369071765f24e (diff)
downloadbcm5719-llvm-45ab3f3ccfb86d6d783fca6233b2d3a9eba15dd9.tar.gz
bcm5719-llvm-45ab3f3ccfb86d6d783fca6233b2d3a9eba15dd9.zip
Added a new instruction class NVDupLane to be inherited by VDUPLND and VDUPLNQ,
instead of the current N2V. Format of NVDupLane instances are set to NEONFrm currently. llvm-svn: 99518
Diffstat (limited to 'llvm/lib/Target/ARM/ARMInstrFormats.td')
-rw-r--r--llvm/lib/Target/ARM/ARMInstrFormats.td13
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrFormats.td b/llvm/lib/Target/ARM/ARMInstrFormats.td
index 08ead22dc07..971bc158f1b 100644
--- a/llvm/lib/Target/ARM/ARMInstrFormats.td
+++ b/llvm/lib/Target/ARM/ARMInstrFormats.td
@@ -1666,6 +1666,19 @@ class NVDup<bits<8> opcod1, bits<4> opcod2, bits<2> opcod3,
: NVLaneOp<opcod1, opcod2, opcod3, oops, iops, NEONDupFrm, itin,
opc, dt, asm, pattern>;
+// Vector Duplicate Lane (from scalar to all elements)
+class NVDupLane<bits<4> op19_16, bit op6, dag oops, dag iops,
+ InstrItinClass itin, string opc, string dt, string asm,
+ list<dag> pattern>
+ : NDataI<oops, iops, NEONFrm, itin, opc, dt, asm, "", pattern> {
+ let Inst{24-23} = 0b11;
+ let Inst{21-20} = 0b11;
+ let Inst{19-16} = op19_16;
+ let Inst{11-7} = 0b11000;
+ let Inst{6} = op6;
+ let Inst{4} = 0;
+}
+
// NEONFPPat - Same as Pat<>, but requires that the compiler be using NEON
// for single-precision FP.
class NEONFPPat<dag pattern, dag result> : Pat<pattern, result> {
OpenPOWER on IntegriCloud