#!/bin/bash # 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 # Script for defining a new op using SPIR-V spec from the Internet. # # Run as: # ./define_inst.sh ()* # is required, which is the file name of MLIR SPIR-V op definitions # spec. # is required. It will be the direct base class the newly defined # op will drive from. # If is missing, this script updates existing ones in . # For example: # ./define_inst.sh SPIRVArithmeticOps.td ArithmeticBinaryOp OpIAdd # ./define_inst.sh SPIRVLogicalOps.td LogicalOp OpFOrdEqual set -e file_name=$1 baseclass=$2 case $baseclass in Op | ArithmeticBinaryOp | ArithmeticUnaryOp | LogicalBinaryOp | LogicalUnaryOp | CastOp | ControlFlowOp | StructureOp | AtomicUpdateOp | AtomicUpdateWithValueOp) ;; *) echo "Usage : " $0 " ()*" echo " is the file name of MLIR SPIR-V op definitions spec" echo " must be one of " \ "(Op|ArithmeticBinaryOp|ArithmeticUnaryOp|LogicalBinaryOp|LogicalUnaryOp|CastOp|ControlFlowOp|StructureOp|AtomicUpdateOp)" exit 1; ;; esac shift shift current_file="$(readlink -f "$0")" current_dir="$(dirname "$current_file")" python3 ${current_dir}/gen_spirv_dialect.py \ --op-td-path \ ${current_dir}/../../include/mlir/Dialect/SPIRV/${file_name} \ --inst-category $baseclass --new-inst "$@" ${current_dir}/define_opcodes.sh "$@"