1*31f4b329Squic-areg //===-- HexagonAttributeParser.cpp - Hexagon Attribute Parser -------------===//
2*31f4b329Squic-areg //
3*31f4b329Squic-areg // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*31f4b329Squic-areg // See https://llvm.org/LICENSE.txt for license information.
5*31f4b329Squic-areg // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*31f4b329Squic-areg //
7*31f4b329Squic-areg //===----------------------------------------------------------------------===//
8*31f4b329Squic-areg
9*31f4b329Squic-areg #include "llvm/Support/HexagonAttributeParser.h"
10*31f4b329Squic-areg
11*31f4b329Squic-areg using namespace llvm;
12*31f4b329Squic-areg
13*31f4b329Squic-areg const HexagonAttributeParser::DisplayHandler
14*31f4b329Squic-areg HexagonAttributeParser::DisplayRoutines[] = {
15*31f4b329Squic-areg {
16*31f4b329Squic-areg HexagonAttrs::ARCH,
17*31f4b329Squic-areg &ELFAttributeParser::integerAttribute,
18*31f4b329Squic-areg },
19*31f4b329Squic-areg {
20*31f4b329Squic-areg HexagonAttrs::HVXARCH,
21*31f4b329Squic-areg &ELFAttributeParser::integerAttribute,
22*31f4b329Squic-areg },
23*31f4b329Squic-areg {
24*31f4b329Squic-areg HexagonAttrs::HVXIEEEFP,
25*31f4b329Squic-areg &ELFAttributeParser::integerAttribute,
26*31f4b329Squic-areg },
27*31f4b329Squic-areg {
28*31f4b329Squic-areg HexagonAttrs::HVXQFLOAT,
29*31f4b329Squic-areg &ELFAttributeParser::integerAttribute,
30*31f4b329Squic-areg },
31*31f4b329Squic-areg {
32*31f4b329Squic-areg HexagonAttrs::ZREG,
33*31f4b329Squic-areg &ELFAttributeParser::integerAttribute,
34*31f4b329Squic-areg },
35*31f4b329Squic-areg {
36*31f4b329Squic-areg HexagonAttrs::AUDIO,
37*31f4b329Squic-areg &ELFAttributeParser::integerAttribute,
38*31f4b329Squic-areg },
39*31f4b329Squic-areg {
40*31f4b329Squic-areg HexagonAttrs::CABAC,
41*31f4b329Squic-areg &ELFAttributeParser::integerAttribute,
42*31f4b329Squic-areg }};
43*31f4b329Squic-areg
handler(uint64_t Tag,bool & Handled)44*31f4b329Squic-areg Error HexagonAttributeParser::handler(uint64_t Tag, bool &Handled) {
45*31f4b329Squic-areg Handled = false;
46*31f4b329Squic-areg for (const auto &R : DisplayRoutines) {
47*31f4b329Squic-areg if (uint64_t(R.Attribute) == Tag) {
48*31f4b329Squic-areg if (Error E = (this->*R.Routine)(Tag))
49*31f4b329Squic-areg return E;
50*31f4b329Squic-areg Handled = true;
51*31f4b329Squic-areg break;
52*31f4b329Squic-areg }
53*31f4b329Squic-areg }
54*31f4b329Squic-areg return Error::success();
55*31f4b329Squic-areg }
56