/* * Copyright (c) 2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // opcode keywords #define OPCODE(X, Y, Z, S) KEYWORD(X) #include "opcodes.def" #undef OPCODE // primitive types #define LOAD_ALGO_PRIMARY_TYPE #define PRIMTYPE(P) KEYWORD(P) #include "prim_types.def" #undef PRIMTYPE // intrinsic names #undef DEF_MIR_INTRINSIC #define DEF_MIR_INTRINSIC(X, NAME, INTRN_CLASS, RETURN_TYPE, ...) KEYWORD(X) #include "intrinsics.def" #undef DEF_MIR_INTRINSIC KEYWORD(else) // declaration keywords KEYWORD(var) KEYWORD(tempvar) KEYWORD(reg) KEYWORD(type) KEYWORD(func) KEYWORD(struct) KEYWORD(structincomplete) KEYWORD(union) KEYWORD(class) KEYWORD(classincomplete) KEYWORD(interfaceincomplete) // type attribute keywords #define FUNC_ATTR #define TYPE_ATTR #define FIELD_ATTR #define ATTR(X) KEYWORD(X) #include "all_attributes.def" #undef ATTR #undef FUNC_ATTR #undef TYPE_ATTR #undef FIELD_ATTR KEYWORD(align) // per-function declaration keywords KEYWORD(framesize) KEYWORD(upformalsize) KEYWORD(moduleid) KEYWORD(funcsize) KEYWORD(funcid) KEYWORD(formalwordstypetagged) KEYWORD(localwordstypetagged) KEYWORD(formalwordsrefcounted) KEYWORD(localwordsrefcounted) // per-module declaration keywords KEYWORD(flavor) KEYWORD(srclang) KEYWORD(globalmemsize) KEYWORD(globalmemmap) KEYWORD(globalwordstypetagged) KEYWORD(globalwordsrefcounted) KEYWORD(id) KEYWORD(numfuncs) KEYWORD(entryfunc) // file related declaration keywords KEYWORD(fileinfo) KEYWORD(filedata) KEYWORD(srcfileinfo) KEYWORD(funcinfo) // special float constants KEYWORD(nanf) KEYWORD(nan) KEYWORD(inff) KEYWORD(inf) // pragma KEYWORD(pragma) KEYWORD(param) KEYWORD(func_ex) KEYWORD(func_var) // staticvalue KEYWORD(staticvalue) // import KEYWORD(import) KEYWORD(importpath) // source position information KEYWORD(LOC) // scope and source var to mpl var mapping KEYWORD(SCOPE) KEYWORD(ALIAS) // storage class KEYWORD(pstatic) KEYWORD(fstatic) // file-scope asm KEYWORD(asmdecl)