56 lines · cpp
1//===-- HexagonAttributeParser.cpp - Hexagon Attribute Parser -------------===//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 "llvm/Support/HexagonAttributeParser.h"10 11using namespace llvm;12 13const HexagonAttributeParser::DisplayHandler14 HexagonAttributeParser::DisplayRoutines[] = {15 {16 HexagonAttrs::ARCH,17 &ELFCompactAttrParser::integerAttribute,18 },19 {20 HexagonAttrs::HVXARCH,21 &ELFCompactAttrParser::integerAttribute,22 },23 {24 HexagonAttrs::HVXIEEEFP,25 &ELFCompactAttrParser::integerAttribute,26 },27 {28 HexagonAttrs::HVXQFLOAT,29 &ELFCompactAttrParser::integerAttribute,30 },31 {32 HexagonAttrs::ZREG,33 &ELFCompactAttrParser::integerAttribute,34 },35 {36 HexagonAttrs::AUDIO,37 &ELFCompactAttrParser::integerAttribute,38 },39 {40 HexagonAttrs::CABAC,41 &ELFCompactAttrParser::integerAttribute,42 }};43 44Error HexagonAttributeParser::handler(uint64_t Tag, bool &Handled) {45 Handled = false;46 for (const auto &R : DisplayRoutines) {47 if (uint64_t(R.Attribute) == Tag) {48 if (Error E = (this->*R.Routine)(Tag))49 return E;50 Handled = true;51 break;52 }53 }54 return Error::success();55}56