github.com/johnnyeven/libtools@v0.0.0-20191126065708-61829c1adf46/third_party/mlir/utils/spirv/define_inst.sh (about) 1 #!/bin/bash 2 3 # Copyright 2019 The MLIR Authors. 4 # 5 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 17 # Script for defining a new op using SPIR-V spec from the Internet. 18 # 19 # Run as: 20 # ./define_inst.sh <inst_category> (<opname>)* 21 22 # <inst_category> is required. It can be one of 23 # (Op|ArithmeticOp|LogicalOp|ControlFlowOp|StructureOp). Based on the 24 # inst_category the file SPIRV<inst_category>s.td is updated with the 25 # instruction definition. If <opname> is missing, this script updates existing 26 # ones in SPIRV<inst_category>s.td 27 28 # For example: 29 # ./define_inst.sh ArithmeticOp OpIAdd 30 # ./define_inst.sh LogicalOp OpFOrdEqual 31 set -e 32 33 inst_category=$1 34 35 case $inst_category in 36 Op | ArithmeticOp | LogicalOp | ControlFlowOp | StructureOp) 37 ;; 38 *) 39 echo "Usage : " $0 " <inst_category> (<opname>)*" 40 echo "<inst_category> must be one of " \ 41 "(Op|ArithmeticOp|LogicalOp|ControlFlowOp|StructureOp)" 42 exit 1; 43 ;; 44 esac 45 46 shift 47 48 current_file="$(readlink -f "$0")" 49 current_dir="$(dirname "$current_file")" 50 51 python3 ${current_dir}/gen_spirv_dialect.py \ 52 --op-td-path \ 53 ${current_dir}/../../include/mlir/Dialect/SPIRV/SPIRV${inst_category}s.td \ 54 --inst-category $inst_category --new-inst "$@"