From 9461fc1cec1750db8c2bb94a414da1c7673a4fb9 Mon Sep 17 00:00:00 2001 From: Maneesh Gupta Date: Sun, 4 Sep 2016 16:20:49 +0530 Subject: [PATCH] hipgenisa.sh improvements - hipgenisa now unmangles kernel names - hipgenisa now uses a random temporary directory Change-Id: I1d0204336bd8042dcf3f39c8f905fcceebd6b785 [ROCm/clr commit: 2c11ce3515ae4d0466d3745675733730c434d520] --- projects/clr/hipamd/bin/hipgenisa.sh | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/projects/clr/hipamd/bin/hipgenisa.sh b/projects/clr/hipamd/bin/hipgenisa.sh index aba3d48e8c..f52b1c5f4e 100755 --- a/projects/clr/hipamd/bin/hipgenisa.sh +++ b/projects/clr/hipamd/bin/hipgenisa.sh @@ -21,17 +21,22 @@ HIP_PATH="$( command cd -P "$( dirname "$SOURCE" )/.." && pwd )" export KMDUMPISA=1 export KMDUMPLLVM=1 -mkdir /tmp/hipgenisa -#cp $FILE_NAMES $FILE_NAMES.kernel.tmp.cpp +hipgenisa_dir=`mktemp -d --tmpdir=/tmp hip.XXXXXXXX`; sed 's/extern \+"C" \+//g' $FILE_NAMES > $FILE_NAMES.kernel.tmp.cpp echo " int main(){} " >> $FILE_NAMES.kernel.tmp.cpp -$HIP_PATH/bin/hipcc $FILE_NAMES.kernel.tmp.cpp -o /tmp/hipgenisa/a.out -mv dump.* /tmp/hipgenisa/ -$ROCM_PATH/hcc-lc/bin/llvm-mc -arch=amdgcn -mcpu=$TARGET -filetype=obj /tmp/hipgenisa/dump.isa -o /tmp/hipgenisa/dump.o -$ROCM_PATH/llvm/bin/clang -target amdgcn--amdhsa /tmp/hipgenisa/dump.o -o $OUTPUT_FILE +$HIP_PATH/bin/hipcc $FILE_NAMES.kernel.tmp.cpp -o $hipgenisa_dir/a.out +mv dump.* $hipgenisa_dir +$ROCM_PATH/hcc-lc/bin/llvm-mc -arch=amdgcn -mcpu=$TARGET -filetype=obj $hipgenisa_dir/dump.isa -o $hipgenisa_dir/dump.o +$ROCM_PATH/llvm/bin/clang -target amdgcn--amdhsa $hipgenisa_dir/dump.o -o $hipgenisa_dir/dump.co +map_sym="" +kernels=$(objdump -t $hipgenisa_dir/dump.co | grep grid_launch_parm | sed 's/ \+/ /g; s/\t/ /g' | cut -d" " -f6) +for mangled_sym in $kernels +do + real_sym=$(c++filt $(c++filt _$mangled_sym | cut -d: -f3 | sed 's/_functor//g') | cut -d\( -f1) + map_sym="--redefine-sym $mangled_sym=$real_sym $map_sym" +done +objcopy -F elf64-little $map_sym $hipgenisa_dir/dump.co $OUTPUT_FILE rm $FILE_NAMES.kernel.tmp.cpp -rm -r /tmp/hipgenisa -export KMDUMPISA=0 -export KMDUMPLLVM=0 +rm -r $hipgenisa_dir