brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · 80aa112 Raw
90 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "PPCSelectionDAGInfo.h"10#include "llvm/CodeGen/SelectionDAG.h"11 12#define GET_SDNODE_DESC13#include "PPCGenSDNodeInfo.inc"14 15using namespace llvm;16 17PPCSelectionDAGInfo::PPCSelectionDAGInfo()18    : SelectionDAGGenTargetInfo(PPCGenSDNodeInfo) {}19 20PPCSelectionDAGInfo::~PPCSelectionDAGInfo() = default;21 22const char *PPCSelectionDAGInfo::getTargetNodeName(unsigned Opcode) const {23  switch (static_cast<PPCISD::NodeType>(Opcode)) {24  case PPCISD::GlobalBaseReg:25    return "PPCISD::GlobalBaseReg";26  case PPCISD::SRA_ADDZE:27    return "PPCISD::SRA_ADDZE";28  case PPCISD::READ_TIME_BASE:29    return "PPCISD::READ_TIME_BASE";30  case PPCISD::MFOCRF:31    return "PPCISD::MFOCRF";32  case PPCISD::ANDI_rec_1_EQ_BIT:33    return "PPCISD::ANDI_rec_1_EQ_BIT";34  case PPCISD::ANDI_rec_1_GT_BIT:35    return "PPCISD::ANDI_rec_1_GT_BIT";36  case PPCISD::BDNZ:37    return "PPCISD::BDNZ";38  case PPCISD::BDZ:39    return "PPCISD::BDZ";40  case PPCISD::PPC32_PICGOT:41    return "PPCISD::PPC32_PICGOT";42  case PPCISD::VADD_SPLAT:43    return "PPCISD::VADD_SPLAT";44  }45 46  return SelectionDAGGenTargetInfo::getTargetNodeName(Opcode);47}48 49void PPCSelectionDAGInfo::verifyTargetNode(const SelectionDAG &DAG,50                                           const SDNode *N) const {51  switch (N->getOpcode()) {52  default:53    break;54  case PPCISD::DYNAREAOFFSET:55    // invalid number of results; expected 2, got 156  case PPCISD::TOC_ENTRY:57    // invalid number of results; expected 1, got 258  case PPCISD::STORE_COND:59    // invalid number of results; expected 2, got 360  case PPCISD::LD_SPLAT:61  case PPCISD::SEXT_LD_SPLAT:62  case PPCISD::ZEXT_LD_SPLAT:63    // invalid number of operands; expected 2, got 364  case PPCISD::ST_VSR_SCAL_INT:65    // invalid number of operands; expected 4, got 566  case PPCISD::XXPERM:67    // operand #1 must have type v2f64, but has type v16i868  case PPCISD::ACC_BUILD:69    // operand #3 must have type v4i32, but has type v16i870  case PPCISD::PAIR_BUILD:71    // operand #1 must have type v4i32, but has type v16i872    return;73  }74 75  SelectionDAGGenTargetInfo::verifyTargetNode(DAG, N);76}77 78std::pair<SDValue, SDValue> PPCSelectionDAGInfo::EmitTargetCodeForMemcmp(79    SelectionDAG &DAG, const SDLoc &dl, SDValue Chain, SDValue Op1, SDValue Op2,80    SDValue Op3, const CallInst *CI) const {81  return DAG.getMemcmp(Chain, dl, Op1, Op2, Op3, CI);82}83 84std::pair<SDValue, SDValue>85PPCSelectionDAGInfo::EmitTargetCodeForStrlen(SelectionDAG &DAG, const SDLoc &DL,86                                             SDValue Chain, SDValue Src,87                                             const CallInst *CI) const {88  return DAG.getStrlen(Chain, DL, Src, CI);89}90