Skip to content

Commit a8dbc91

Browse files
committed
Optimize code using spirv-opt.
1 parent 235ec99 commit a8dbc91

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

src/spirv.jl

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -81,21 +81,26 @@ optimization_params(@nospecialize(job::CompilerJob{SPIRVCompilerTarget})) =
8181
flush(input_io)
8282

8383
# compile to SPIR-V
84-
mktemp() do output, output_io
84+
mktemp() do translated, translated_io
8585
SPIRV_LLVM_Translator_jll.llvm_spirv() do translator
86-
cmd = `$translator`
87-
if format == LLVM.API.LLVMAssemblyFile
88-
cmd = `$cmd -spirv-text`
89-
end
90-
cmd = `$cmd --spirv-debug-info-version=ocl-100 -o $output $input`
91-
run(cmd)
86+
run(`$translator --spirv-debug-info-version=ocl-100 -o $translated $input`)
9287
end
9388

94-
# read back the file
95-
if format == LLVM.API.LLVMAssemblyFile
96-
read(output_io, String)
97-
else
98-
read(output_io)
89+
# optimize
90+
# XXX: make this parameterizable?
91+
mktemp() do optimized, optimized_io
92+
SPIRV_Tools_jll.spirv_opt() do optimizer
93+
run(`$optimizer -O $translated -o $optimized`)
94+
end
95+
96+
if format == LLVM.API.LLVMObjectFile
97+
read(optimized)
98+
else
99+
# disassemble
100+
SPIRV_Tools_jll.spirv_dis() do disassembler
101+
read(`$disassembler $optimized`, String)
102+
end
103+
end
99104
end
100105
end
101106
end

0 commit comments

Comments
 (0)