• yas's avatar
    7st · e73862f4
    yas authored
    e73862f4
Forked from 汪汪队立大功队 / wwdldg
Source project has a limited visibility.
ircond.h 2.82 KiB
#ifndef IR_COND_H
#define IR_COND_H
#include "../IR/llvm.h"
#include "lir.h"
std::map<ICmpInst::ICmpOp, LIRInstruction::LIRCondTy> _ICmpOp2LIRCondTy_ = 
{{ICmpInst::ICmpOp::ICMP_EQ, LIRInstruction::LIRCondTy::LCondEQ}, 
{ICmpInst::ICmpOp::ICMP_NE, LIRInstruction::LIRCondTy::LCondNE}, 
{ICmpInst::ICmpOp::ICMP_UGT, LIRInstruction::LIRCondTy::LCondHI}, 
{ICmpInst::ICmpOp::ICMP_UGE, LIRInstruction::LIRCondTy::LCondCS}, 
{ICmpInst::ICmpOp::ICMP_ULT, LIRInstruction::LIRCondTy::LCondCC}, 
{ICmpInst::ICmpOp::ICMP_ULE, LIRInstruction::LIRCondTy::LCondLS}, 
{ICmpInst::ICmpOp::ICMP_SGT, LIRInstruction::LIRCondTy::LCondGT},
 {ICmpInst::ICmpOp::ICMP_SGE, LIRInstruction::LIRCondTy::LCondGE},
  {ICmpInst::ICmpOp::ICMP_SLT, LIRInstruction::LIRCondTy::LCondLT}, 
  {ICmpInst::ICmpOp::ICMP_SLE, LIRInstruction::LIRCondTy::LCondLE}};
std::map<FCmpInst::FCmpOp, LIRInstruction::LIRCondTy> _FCmpOp2LIRCondTy_ = 
{{FCmpInst::FCmpOp::FCMP_OEQ, LIRInstruction::LIRCondTy::LCondEQ},
 {FCmpInst::FCmpOp::FCMP_OGT, LIRInstruction::LIRCondTy::LCondGT},
{FCmpInst::FCmpOp::FCMP_OGE, LIRInstruction::LIRCondTy::LCondGE}, 
{FCmpInst::FCmpOp::FCMP_OLT, LIRInstruction::LIRCondTy::LCondCC}, 
{FCmpInst::FCmpOp::FCMP_OLE, LIRInstruction::LIRCondTy::LCondLS},
{FCmpInst::FCmpOp::FCMP_ONE, LIRInstruction::LIRCondTy::LCondNE}, 
{FCmpInst::FCmpOp::FCMP_ORD, LIRInstruction::LIRCondTy::LCondVC}, 
{FCmpInst::FCmpOp::FCMP_UNO, LIRInstruction::LIRCondTy::LCondVS},
{FCmpInst::FCmpOp::FCMP_UEQ, LIRInstruction::LIRCondTy::LCondEQ},
{FCmpInst::FCmpOp::FCMP_UGT, LIRInstruction::LIRCondTy::LCondHI}, 
{FCmpInst::FCmpOp::FCMP_UGE, LIRInstruction::LIRCondTy::LCondCS}, 
{FCmpInst::FCmpOp::FCMP_ULT, LIRInstruction::LIRCondTy::LCondLT}, 
{FCmpInst::FCmpOp::FCMP_ULE, LIRInstruction::LIRCondTy::LCondLE},
{FCmpInst::FCmpOp::FCMP_UNE, LIRInstruction::LIRCondTy::LCondNE},
{FCmpInst::FCmpOp::FCMP_TRUE, LIRInstruction::LIRCondTy::LCondNone}};
std::map<LIRInstruction::LIRCondTy, LIRInstruction::LIRCondTy> _LIRCondTyInverse_ =
{{LIRInstruction::LIRCondTy::LCondEQ, LIRInstruction::LIRCondTy::LCondEQ}, 
{LIRInstruction::LIRCondTy::LCondNE, LIRInstruction::LIRCondTy::LCondNE}, 
{LIRInstruction::LIRCondTy::LCondGT, LIRInstruction::LIRCondTy::LCondLT}, 
{LIRInstruction::LIRCondTy::LCondGE, LIRInstruction::LIRCondTy::LCondLE},
 {LIRInstruction::LIRCondTy::LCondLT, LIRInstruction::LIRCondTy::LCondGT}, 
 {LIRInstruction::LIRCondTy::LCondLE, LIRInstruction::LIRCondTy::LCondGE}, 
 {LIRInstruction::LIRCondTy::LCondHI, LIRInstruction::LIRCondTy::LCondCC},
  {LIRInstruction::LIRCondTy::LCondCS, LIRInstruction::LIRCondTy::LCondLS}, 
  {LIRInstruction::LIRCondTy::LCondCC, LIRInstruction::LIRCondTy::LCondHI},
  {LIRInstruction::LIRCondTy::LCondLS, LIRInstruction::LIRCondTy::LCondCS}};
std::map<Value*, unsigned int> var_offset;
std::map<Value*, unsigned int> var_type;
std::map<BasicBlock*, std::string> bb_label_name;
#endif