llvm/llvm/lib/Target/VE/VE.h

//===-- VE.h - Top-level interface for VE representation --------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// This file contains the entry points for global functions defined in the LLVM
// VE back-end.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_LIB_TARGET_VE_VE_H
#define LLVM_LIB_TARGET_VE_VE_H

#include "MCTargetDesc/VEMCTargetDesc.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Target/TargetMachine.h"

namespace llvm {
class AsmPrinter;
class FunctionPass;
class MCInst;
class MachineInstr;
class PassRegistry;
class VETargetMachine;

FunctionPass *createVEISelDag(VETargetMachine &TM);
FunctionPass *createLVLGenPass();
void initializeVEDAGToDAGISelLegacyPass(PassRegistry &);

void LowerVEMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI,
                                 AsmPrinter &AP);
} // namespace llvm

namespace llvm {
// Enums corresponding to VE condition codes, both icc's and fcc's.  These
// values must be kept in sync with the ones in the .td file.
namespace VECC {
enum CondCode {};
}
// Enums corresponding to VE Rounding Mode.  These values must be kept in
// sync with the ones in the .td file.
namespace VERD {
enum RoundingMode {};
}

inline static const char *VECondCodeToString(VECC::CondCode CC) {}

inline static VECC::CondCode stringToVEICondCode(StringRef S) {}

inline static VECC::CondCode stringToVEFCondCode(StringRef S) {}

inline static bool isIntVECondCode(VECC::CondCode CC) {}

inline static unsigned VECondCodeToVal(VECC::CondCode CC) {}

inline static VECC::CondCode VEValToCondCode(unsigned Val, bool IsInteger) {}

inline static const char *VERDToString(VERD::RoundingMode R) {}

inline static VERD::RoundingMode stringToVERD(StringRef S) {}

inline static unsigned VERDToVal(VERD::RoundingMode R) {}

inline static VERD::RoundingMode VEValToRD(unsigned Val) {}

// MImm - Special immediate value of sequential bit stream of 0 or 1.
//   See VEInstrInfo.td for details.
inline static bool isMImmVal(uint64_t Val) {}

inline static bool isMImm32Val(uint32_t Val) {}

/// val2MImm - Convert an integer immediate value to target MImm immediate.
inline static uint64_t val2MImm(uint64_t Val) {}

/// mimm2Val - Convert a target MImm immediate to an integer immediate value.
inline static uint64_t mimm2Val(uint64_t Val) {}

inline unsigned M0(unsigned Val) {}
inline unsigned M1(unsigned Val) {}

static const unsigned StandardVectorWidth =;
static const unsigned PackedVectorWidth =;

} // namespace llvm
#endif