Sparc-specific code shared between local files.
authorVikram S. Adve <vadve@cs.uiuc.edu>
Thu, 18 Oct 2001 00:03:20 +0000 (00:03 +0000)
committerVikram S. Adve <vadve@cs.uiuc.edu>
Thu, 18 Oct 2001 00:03:20 +0000 (00:03 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@864 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/SparcV9/SparcV9InstrSelectionSupport.h [new file with mode: 0644]

diff --git a/lib/Target/SparcV9/SparcV9InstrSelectionSupport.h b/lib/Target/SparcV9/SparcV9InstrSelectionSupport.h
new file mode 100644 (file)
index 0000000..f62457c
--- /dev/null
@@ -0,0 +1,61 @@
+// $Id$ -*-c++-*-
+//***************************************************************************
+// File:
+//     SparcInstrSelectionSupport.h
+// 
+// Purpose:
+// 
+// History:
+//     10/17/01         -  Vikram Adve  -  Created
+//**************************************************************************/
+
+#ifndef SPARC_INSTR_SELECTION_SUPPORT_h
+#define SPARC_INSTR_SELECTION_SUPPORT_h
+
+
+inline MachineOpCode
+ChooseLoadInstruction(const Type *DestTy)
+{
+  switch (DestTy->getPrimitiveID()) {
+  case Type::BoolTyID:
+  case Type::UByteTyID:   return LDUB;
+  case Type::SByteTyID:   return LDSB;
+  case Type::UShortTyID:  return LDUH;
+  case Type::ShortTyID:   return LDSH;
+  case Type::UIntTyID:    return LDUW;
+  case Type::IntTyID:     return LDSW;
+  case Type::PointerTyID:
+  case Type::ULongTyID:
+  case Type::LongTyID:    return LDX;
+  case Type::FloatTyID:   return LD;
+  case Type::DoubleTyID:  return LDD;
+  default: assert(0 && "Invalid type for Load instruction");
+  }
+  
+  return 0;
+}
+
+
+inline MachineOpCode
+ChooseStoreInstruction(const Type *DestTy)
+{
+  switch (DestTy->getPrimitiveID()) {
+  case Type::BoolTyID:
+  case Type::UByteTyID:
+  case Type::SByteTyID:   return STB;
+  case Type::UShortTyID:
+  case Type::ShortTyID:   return STH;
+  case Type::UIntTyID:
+  case Type::IntTyID:     return STW;
+  case Type::PointerTyID:
+  case Type::ULongTyID:
+  case Type::LongTyID:    return STX;
+  case Type::FloatTyID:   return ST;
+  case Type::DoubleTyID:  return STD;
+  default: assert(0 && "Invalid type for Store instruction");
+  }
+  
+  return 0;
+}
+
+#endif SPARC_INSTR_SELECTION_SUPPORT_h