16749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni#!/bin/bash
26749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni
36749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# Copyright 2016, The Android Open Source Project
46749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni#
56749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# Licensed under the Apache License, Version 2.0 (the "License");
66749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# you may not use this file except in compliance with the License.
76749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# You may obtain a copy of the License at
86749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni#
96749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni#     http://www.apache.org/licenses/LICENSE-2.0
106749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni#
116749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# Unless required by applicable law or agreed to in writing, software
126749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# distributed under the License is distributed on an "AS IS" BASIS,
136749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
146749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# See the License for the specific language governing permissions and
156749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# limitations under the License.
166749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni
176749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# TODO: Consider rewriting as a native binary instead of shell script.
186749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni
196749f541c20e86f5deb6fd421ed5849ef43c275cYang Niif [ $# -lt 1 ]; then
206749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni  echo 1>&2 "$0: not enough arguments"
216749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni  echo 1>&2 $#
226749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni  exit 2
236749f541c20e86f5deb6fd421ed5849ef43c275cYang Nifi
246749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni
256749f541c20e86f5deb6fd421ed5849ef43c275cYang Niscript_path="$1"
266749f541c20e86f5deb6fd421ed5849ef43c275cYang Niscript_name=$(basename $script_path)
276749f541c20e86f5deb6fd421ed5849ef43c275cYang Niscript=${script_name%.*} # Remove extension.
286749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni
296749f541c20e86f5deb6fd421ed5849ef43c275cYang Nioutput_folder="driver_out"
306749f541c20e86f5deb6fd421ed5849ef43c275cYang Nimkdir -p $output_folder
316749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni
325802e6279a13949aec3f0e12c0a00a2aed170f0fDavid Grosseval llvm-as "$script_path" -o "$output_folder/$script.bc" &&
33bf22a8ab4f46a98ee37f95fc0402744132cc3ed2Yang Nieval rs2spirv "$output_folder/$script.bc" -o "$output_folder/$script.spv" &&
34bf22a8ab4f46a98ee37f95fc0402744132cc3ed2Yang Nieval spirv-val "$output_folder/$script.spv"
35bf22a8ab4f46a98ee37f95fc0402744132cc3ed2Yang Ni
36bf22a8ab4f46a98ee37f95fc0402744132cc3ed2Yang Niif [ $? -ne 0 ]; then
37bf22a8ab4f46a98ee37f95fc0402744132cc3ed2Yang Ni  echo 1>&2 "Generated SPIR-V failed validation"
38bf22a8ab4f46a98ee37f95fc0402744132cc3ed2Yang Ni  exit -1
39bf22a8ab4f46a98ee37f95fc0402744132cc3ed2Yang Nifi
40bf22a8ab4f46a98ee37f95fc0402744132cc3ed2Yang Ni
41bf22a8ab4f46a98ee37f95fc0402744132cc3ed2Yang Nieval spirv-dis "$output_folder/$script.spv"
426749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni
435802e6279a13949aec3f0e12c0a00a2aed170f0fDavid GrossRET=$?
445802e6279a13949aec3f0e12c0a00a2aed170f0fDavid Gross
45bf22a8ab4f46a98ee37f95fc0402744132cc3ed2Yang Ni#eval rm "$output_folder/$script.*"
465802e6279a13949aec3f0e12c0a00a2aed170f0fDavid Gross
475802e6279a13949aec3f0e12c0a00a2aed170f0fDavid Grossexit $RET
48