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-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "llvm/Support/HexagonAttributeParser.h" 10 11 using namespace llvm; 12 13 const HexagonAttributeParser::DisplayHandler 14 HexagonAttributeParser::DisplayRoutines[] = { 15 { 16 HexagonAttrs::ARCH, 17 &ELFAttributeParser::integerAttribute, 18 }, 19 { 20 HexagonAttrs::HVXARCH, 21 &ELFAttributeParser::integerAttribute, 22 }, 23 { 24 HexagonAttrs::HVXIEEEFP, 25 &ELFAttributeParser::integerAttribute, 26 }, 27 { 28 HexagonAttrs::HVXQFLOAT, 29 &ELFAttributeParser::integerAttribute, 30 }, 31 { 32 HexagonAttrs::ZREG, 33 &ELFAttributeParser::integerAttribute, 34 }, 35 { 36 HexagonAttrs::AUDIO, 37 &ELFAttributeParser::integerAttribute, 38 }, 39 { 40 HexagonAttrs::CABAC, 41 &ELFAttributeParser::integerAttribute, 42 }}; 43 44 Error 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