| //===- 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/Bitcode/NaCl/NaClLLVMBitCodes.h" | |
| #include "llvm/IR/CallingConv.h" | |
| #include "llvm/IR/GlobalValue.h" | |
| #include "llvm/IR/InstrTypes.h" | |
| #include "llvm/IR/Instruction.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); | |
| } // namespace naclbitc | |
| } // namespace llvm | |
| #endif |