Home | History | Annotate | Download | only in Mips
      1 //===- MipsLegalizerInfo.cpp ------------------------------------*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 /// \file
     10 /// This file implements the targeting of the Machinelegalizer class for Mips.
     11 /// \todo This should be generated by TableGen.
     12 //===----------------------------------------------------------------------===//
     13 
     14 #include "MipsLegalizerInfo.h"
     15 #include "MipsTargetMachine.h"
     16 
     17 using namespace llvm;
     18 
     19 MipsLegalizerInfo::MipsLegalizerInfo(const MipsSubtarget &ST) {
     20   using namespace TargetOpcode;
     21 
     22   const LLT s32 = LLT::scalar(32);
     23   const LLT p0 = LLT::pointer(0, 32);
     24 
     25   getActionDefinitionsBuilder(G_ADD).legalFor({s32});
     26 
     27   getActionDefinitionsBuilder({G_LOAD, G_STORE})
     28       .legalForCartesianProduct({p0, s32}, {p0});
     29 
     30   getActionDefinitionsBuilder(G_CONSTANT)
     31       .legalFor({s32});
     32 
     33   getActionDefinitionsBuilder(G_GEP)
     34       .legalFor({{p0, s32}});
     35 
     36   getActionDefinitionsBuilder(G_FRAME_INDEX)
     37       .legalFor({p0});
     38 
     39   getActionDefinitionsBuilder(G_GLOBAL_VALUE)
     40       .legalFor({p0});
     41 
     42   computeTables();
     43   verify(*ST.getInstrInfo());
     44 }
     45