• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
MipsLegalizerInfo(const MipsSubtarget & ST)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