Do not consider MMX_MOVD64rr a move instructions. The source register is in GR32...
[oota-llvm.git] / lib / Target / PIC16 / PIC16TargetAsmInfo.cpp
index 4dcd41a99f495c7b15194f1eef5bbd1c4a5f0a54..d40f2065b828df1308a7a751d574dde3a5782ddf 100644 (file)
@@ -13,6 +13,7 @@
 
 #include "PIC16TargetAsmInfo.h"
 #include "PIC16TargetMachine.h"
+#include "llvm/GlobalValue.h"
 
 using namespace llvm;
 
@@ -21,11 +22,39 @@ PIC16TargetAsmInfo(const PIC16TargetMachine &TM)
   : TargetAsmInfo(TM) {
   CommentString = ";";
   Data8bitsDirective = " db ";
-  Data16bitsDirective = " db ";
-  Data32bitsDirective = " db ";
-  DataSectionStartSuffix = " IDATA ";
-  UDataSectionStartSuffix = " UDATA ";
-  TextSectionStartSuffix = " CODE ";
-  RomDataSectionStartSuffix = " ROMDATA ";
+  Data16bitsDirective = " dw ";
+  Data32bitsDirective = " dl ";
+  RomData8bitsDirective = " dw ";
+  RomData16bitsDirective = " rom_di ";
+  RomData32bitsDirective = " rom_dl ";
   ZeroDirective = NULL;
+  AsciiDirective = " dt ";
+  AscizDirective = NULL;
+  BSSSection_  = getNamedSection("udata.# UDATA",
+                              SectionFlags::Writeable | SectionFlags::BSS);
+  ReadOnlySection = getNamedSection("romdata.# ROMDATA", SectionFlags::None);
+  DataSection = getNamedSection("idata.# IDATA", SectionFlags::Writeable);
+  SwitchToSectionDirective = "";
 }
+
+const char *PIC16TargetAsmInfo::getRomDirective(unsigned size) const
+{
+  if (size == 8)
+    return RomData8bitsDirective;
+  else if (size == 16)
+    return RomData16bitsDirective;
+  else if (size == 32)
+    return RomData32bitsDirective;
+  else
+    return NULL;
+}
+
+
+const char *PIC16TargetAsmInfo::getASDirective(unsigned size, 
+                                               unsigned AS) const {
+  if (AS == PIC16ISD::ROM_SPACE)
+    return getRomDirective(size);
+  else
+    return NULL;
+}
+