| //===- 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 |