1bdd1243dSDimitry Andric //===-- RISCVLegalizerInfo.cpp ----------------------------------*- C++ -*-===// 2bdd1243dSDimitry Andric // 3bdd1243dSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4bdd1243dSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5bdd1243dSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6bdd1243dSDimitry Andric // 7bdd1243dSDimitry Andric //===----------------------------------------------------------------------===// 8bdd1243dSDimitry Andric /// \file 9*06c3fb27SDimitry Andric /// This file implements the targeting of the Machinelegalizer class for RISC-V. 10bdd1243dSDimitry Andric /// \todo This should be generated by TableGen. 11bdd1243dSDimitry Andric //===----------------------------------------------------------------------===// 12bdd1243dSDimitry Andric 13bdd1243dSDimitry Andric #include "RISCVLegalizerInfo.h" 14*06c3fb27SDimitry Andric #include "RISCVSubtarget.h" 15bdd1243dSDimitry Andric #include "llvm/CodeGen/TargetOpcodes.h" 16bdd1243dSDimitry Andric #include "llvm/CodeGen/ValueTypes.h" 17bdd1243dSDimitry Andric #include "llvm/IR/DerivedTypes.h" 18bdd1243dSDimitry Andric #include "llvm/IR/Type.h" 19bdd1243dSDimitry Andric 20bdd1243dSDimitry Andric using namespace llvm; 21bdd1243dSDimitry Andric 22bdd1243dSDimitry Andric RISCVLegalizerInfo::RISCVLegalizerInfo(const RISCVSubtarget &ST) { 23*06c3fb27SDimitry Andric const unsigned XLen = ST.getXLen(); 24*06c3fb27SDimitry Andric const LLT XLenLLT = LLT::scalar(XLen); 25*06c3fb27SDimitry Andric 26*06c3fb27SDimitry Andric using namespace TargetOpcode; 27*06c3fb27SDimitry Andric 28*06c3fb27SDimitry Andric getActionDefinitionsBuilder({G_ADD, G_SUB, G_AND, G_OR, G_XOR}) 29*06c3fb27SDimitry Andric .legalFor({XLenLLT}) 30*06c3fb27SDimitry Andric .clampScalar(0, XLenLLT, XLenLLT); 31*06c3fb27SDimitry Andric 32bdd1243dSDimitry Andric getLegacyLegalizerInfo().computeTables(); 33bdd1243dSDimitry Andric } 34