/** * Copyright (c) 2021-2022 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. */ <%= $HEADER %> // NOLINTNEXTLINE(cppcoreguidelines-macro-usage) #define OPCODE_LIST(DEF) \ % IR::instructions.each do |inst| % flags = inst.flags.empty? ? ['none'] : inst.flags % flags << 'pseudo_dst' if !inst.operands.empty? && inst.operands.first.has('pseudo') % flags << 'no_dst' if inst.operands.empty? || !inst.operands.first.is_dst? DEF( <%= inst.opcode.ljust(20) %>, <%= inst.base.ljust(20) %>, <%= flags.map{|x| x.upcase }.join('|') %> ) \ % end // NOLINTNEXTLINE(cppcoreguidelines-macro-usage) #define OPCODE_CLASS_LIST(DEF) \ % IR::instructions.map { |x| x.base }.uniq.each do |base| DEF(<%= base %>) \ % end DEF(DynamicInputsInst) \ // NOLINTNEXTLINE(cppcoreguidelines-macro-usage) #define FLAGS_LIST(DEF) \ % IR::flags.each_pair do |flag, v| DEF(<%= flag.upcase %>) \ % end #ifndef NDEBUG // NOLINTNEXTLINE(cppcoreguidelines-macro-usage) #define INST_MODES_LIST \ % IR::instructions.each do |inst| <%= inst.modes.map{|x| x.upcase }.join('|') %>, \ % end // NOLINTNEXTLINE(cppcoreguidelines-macro-usage) #define MODES_LIST(DEF) \ % IR::modes.each_pair do |mode, v| DEF(<%= mode.upcase %>) \ % end #endif