Petar Jovanovic | fac93e2 | 2018-02-23 11:06:40 +0000 | [diff] [blame] | 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" |
Roman Tereshin | f34d7ec | 2018-05-31 16:16:49 +0000 | [diff] [blame] | 15 | #include "MipsTargetMachine.h" |
Petar Jovanovic | fac93e2 | 2018-02-23 11:06:40 +0000 | [diff] [blame] | 16 | |
| 17 | using namespace llvm; |
| 18 | |
| 19 | MipsLegalizerInfo::MipsLegalizerInfo(const MipsSubtarget &ST) { |
Petar Jovanovic | 366857a | 2018-04-11 15:12:32 +0000 | [diff] [blame] | 20 | using namespace TargetOpcode; |
| 21 | |
| 22 | const LLT s32 = LLT::scalar(32); |
Petar Jovanovic | 021e4c8 | 2018-07-16 13:29:32 +0000 | [diff] [blame] | 23 | const LLT p0 = LLT::pointer(0, 32); |
Petar Jovanovic | 366857a | 2018-04-11 15:12:32 +0000 | [diff] [blame] | 24 | |
| 25 | getActionDefinitionsBuilder(G_ADD).legalFor({s32}); |
| 26 | |
Petar Jovanovic | 021e4c8 | 2018-07-16 13:29:32 +0000 | [diff] [blame] | 27 | getActionDefinitionsBuilder({G_LOAD, G_STORE}) |
Petar Jovanovic | 58c0210 | 2018-07-25 12:35:01 +0000 | [diff] [blame] | 28 | .legalForCartesianProduct({p0, s32}, {p0}); |
Petar Jovanovic | 021e4c8 | 2018-07-16 13:29:32 +0000 | [diff] [blame] | 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 | |
Petar Jovanovic | 64c10ba | 2018-08-01 09:03:23 +0000 | [diff] [blame^] | 39 | getActionDefinitionsBuilder(G_GLOBAL_VALUE) |
| 40 | .legalFor({p0}); |
| 41 | |
Petar Jovanovic | fac93e2 | 2018-02-23 11:06:40 +0000 | [diff] [blame] | 42 | computeTables(); |
Roman Tereshin | f34d7ec | 2018-05-31 16:16:49 +0000 | [diff] [blame] | 43 | verify(*ST.getInstrInfo()); |
Petar Jovanovic | fac93e2 | 2018-02-23 11:06:40 +0000 | [diff] [blame] | 44 | } |