1//===- SparcASITags.td -------------------------------------*- tablegen -*-===// 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// This file defines the symbolic operands permitted for various kinds of 10// SPARCv9 ASI. 11// 12//===----------------------------------------------------------------------===// 13 14include "llvm/TableGen/SearchableTable.td" 15 16class ASITag<string name, string alt_name, bits<8> op> { 17 string Name = name; 18 // A maximum of one alias is supported right now. 19 string AltName = alt_name; 20 bits<8> Encoding = op; 21} 22 23def ASITagsList : GenericTable { 24 let FilterClass = "ASITag"; 25 let Fields = ["Name", "AltName", "Encoding"]; 26 27 let PrimaryKey = [ "Encoding" ]; 28 let PrimaryKeyName = "lookupASITagByEncoding"; 29} 30 31def lookupASITagByName : SearchIndex { 32 let Table = ASITagsList; 33 let Key = [ "Name" ]; 34} 35 36def lookupASITagByAltName : SearchIndex { 37 let Table = ASITagsList; 38 let Key = [ "AltName" ]; 39} 40 41def : ASITag<"ASI_N", "ASI_NUCLEUS", 0x4>; 42def : ASITag<"ASI_N_L", "ASI_NUCLEUS_LITTLE", 0xC>; 43def : ASITag<"ASI_AIUP", "ASI_AS_IF_USER_PRIMARY", 0x10>; 44def : ASITag<"ASI_AIUS", "ASI_AS_IF_USER_SECONDARY", 0x11>; 45def : ASITag<"ASI_AIUP_L", "ASI_AS_IF_USER_PRIMARY_LITTLE", 0x18>; 46def : ASITag<"ASI_AIUS_L", "ASI_AS_IF_USER_SECONDARY_LITTLE", 0x19>; 47def : ASITag<"ASI_P", "ASI_PRIMARY", 0x80>; 48def : ASITag<"ASI_S", "ASI_SECONDARY", 0x81>; 49def : ASITag<"ASI_PNF", "ASI_PRIMARY_NOFAULT", 0x82>; 50def : ASITag<"ASI_SNF", "ASI_SECONDARY_NOFAULT", 0x83>; 51def : ASITag<"ASI_P_L", "ASI_PRIMARY_LITTLE", 0x88>; 52def : ASITag<"ASI_S_L", "ASI_SECONDARY_LITTLE", 0x89>; 53def : ASITag<"ASI_PNF_L", "ASI_PRIMARY_NOFAULT_LITTLE", 0x8A>; 54def : ASITag<"ASI_SNF_L", "ASI_SECONDARY_NOFAULT_LITTLE", 0x8B>; 55