Index: pnacl-llvm/include/llvm/Bitcode/NaCl/NaClBitcodeDecoders.h |
diff --git a/pnacl-llvm/include/llvm/Bitcode/NaCl/NaClBitcodeDecoders.h b/pnacl-llvm/include/llvm/Bitcode/NaCl/NaClBitcodeDecoders.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a3250e0c2219a7a787b2fb757872cfc137516454 |
--- /dev/null |
+++ b/pnacl-llvm/include/llvm/Bitcode/NaCl/NaClBitcodeDecoders.h |
@@ -0,0 +1,74 @@ |
+//===- NaClBitcodeDecoders.h -------------------------------------*- C++ -*-===// |
+// Functions used to decode values in PNaCl bitcode files. |
+// |
+// The LLVM Compiler Infrastructure |
+// |
+// This file is distributed under the University of Illinois Open Source |
+// License. See LICENSE.TXT for details. |
+// |
+//===----------------------------------------------------------------------===// |
+// |
+// This header file provides a public API for value decoders defined in |
+// the PNaCl bitcode reader. |
+// |
+//===----------------------------------------------------------------------===// |
+ |
+#ifndef LLVM_BITCODE_NACL_NACLBITCODEDECODERS_H |
+#define LLVM_BITCODE_NACL_NACLBITCODEDECODERS_H |
+ |
+#include "llvm/IR/CallingConv.h" |
+#include "llvm/IR/GlobalValue.h" |
+#include "llvm/IR/InstrTypes.h" |
+#include "llvm/IR/Instruction.h" |
+#include "llvm/Bitcode/NaCl/NaClLLVMBitCodes.h" |
+ |
+namespace llvm { |
+namespace naclbitc { |
+ |
+/// Converts the NaCl (bitcode file) cast opcode to the corresponding |
+/// LLVM cast opcode. Returns true if the conversion |
+/// succeeds. Otherwise sets LLVMOpcode to Instruction::BitCast and |
+/// returns false. |
+bool DecodeCastOpcode(uint64_t NaClOpcode, |
+ Instruction::CastOps &LLVMOpcode); |
+ |
+/// Converts the NaCl (bitcode file) linkage type to the corresponding |
+/// LLVM linkage type. Returns true if the conversion |
+/// succeeds. Otherwise sets LLVMLinkage to |
+/// GlobalValue::InternalLinkage and returns false. |
+bool DecodeLinkage(uint64_t NaClLinkage, |
+ GlobalValue::LinkageTypes &LLVMLinkage); |
+ |
+/// Converts the NaCl (bitcode file) binary opcode to the |
+/// corresponding LLVM binary opcode, assuming that the operator |
+/// operates on OpType. Returns true if the conversion |
+/// succeeds. Otherwise sets LLVMOpcode to Instruction::Add and |
+/// returns false. |
+bool DecodeBinaryOpcode(uint64_t NaClOpcode, Type *OpType, |
+ Instruction::BinaryOps &LLVMOpcode); |
+ |
+/// Converts the NaCl (bitcode file) calling convention value to the |
+/// corresponding LLVM calling conventions. Returns true if the |
+/// conversion succeeds. Otherwise sets LLVMCallingConv to |
+/// CallingConv::C and returns false. |
+bool DecodeCallingConv(uint64_t NaClCallingConv, |
+ CallingConv::ID &LLVMCallingConv); |
+ |
+/// Converts the NaCl (bitcode file) float comparison predicate to the |
+/// corresponding LLVM float comparison predicate. Returns true if the |
+/// conversion succeeds. Otherwise sets LLVMPredicate to |
+/// CmpInst::FCMP_FALSE and returns false. |
+bool DecodeFcmpPredicate(uint64_t NaClPredicate, |
+ CmpInst::Predicate &LLVMPredicate); |
+ |
+/// Converts the NaCl (bitcode file) integer comparison predicate to |
+/// the corresponding LLVM integer comparison predicate. Returns true |
+/// if the conversion succeeds. Otherwise sets LLVMPredicate to |
+/// CmpInst::ICMP_EQ and returns false. |
+bool DecodeIcmpPredicate(uint64_t NaClPredicate, |
+ CmpInst::Predicate &LLVMPredicate); |
+ |
+} |
+} |
+ |
+#endif |