| //===- MipsLegalizerInfo.cpp ------------------------------------*- C++ -*-===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| /// \file | |
| /// This file implements the targeting of the Machinelegalizer class for Mips. | |
| /// \todo This should be generated by TableGen. | |
| //===----------------------------------------------------------------------===// | |
| #include "MipsLegalizerInfo.h" | |
| #include "MipsTargetMachine.h" | |
| using namespace llvm; | |
| MipsLegalizerInfo::MipsLegalizerInfo(const MipsSubtarget &ST) { | |
| using namespace TargetOpcode; | |
| const LLT s32 = LLT::scalar(32); | |
| const LLT p0 = LLT::pointer(0, 32); | |
| getActionDefinitionsBuilder(G_ADD).legalFor({s32}); | |
| getActionDefinitionsBuilder({G_LOAD, G_STORE}) | |
| .legalForCartesianProduct({p0, s32}, {p0}); | |
| getActionDefinitionsBuilder(G_CONSTANT) | |
| .legalFor({s32}); | |
| getActionDefinitionsBuilder(G_GEP) | |
| .legalFor({{p0, s32}}); | |
| getActionDefinitionsBuilder(G_FRAME_INDEX) | |
| .legalFor({p0}); | |
| getActionDefinitionsBuilder(G_GLOBAL_VALUE) | |
| .legalFor({p0}); | |
| computeTables(); | |
| verify(*ST.getInstrInfo()); | |
| } |