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 "$@"