| //===-- HexagonAttributeParser.cpp - Hexagon Attribute Parser -------------===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "llvm/Support/HexagonAttributeParser.h" |
| |
| using namespace llvm; |
| |
| const HexagonAttributeParser::DisplayHandler |
| HexagonAttributeParser::DisplayRoutines[] = { |
| { |
| HexagonAttrs::ARCH, |
| &ELFAttributeParser::integerAttribute, |
| }, |
| { |
| HexagonAttrs::HVXARCH, |
| &ELFAttributeParser::integerAttribute, |
| }, |
| { |
| HexagonAttrs::HVXIEEEFP, |
| &ELFAttributeParser::integerAttribute, |
| }, |
| { |
| HexagonAttrs::HVXQFLOAT, |
| &ELFAttributeParser::integerAttribute, |
| }, |
| { |
| HexagonAttrs::ZREG, |
| &ELFAttributeParser::integerAttribute, |
| }, |
| { |
| HexagonAttrs::AUDIO, |
| &ELFAttributeParser::integerAttribute, |
| }, |
| { |
| HexagonAttrs::CABAC, |
| &ELFAttributeParser::integerAttribute, |
| }}; |
| |
| Error HexagonAttributeParser::handler(uint64_t Tag, bool &Handled) { |
| Handled = false; |
| for (const auto &R : DisplayRoutines) { |
| if (uint64_t(R.Attribute) == Tag) { |
| if (Error E = (this->*R.Routine)(Tag)) |
| return E; |
| Handled = true; |
| break; |
| } |
| } |
| return Error::success(); |
| } |