#!/bin/bash

cat << EOF > lto_clang.c

#include <stdio.h>
#include <omp.h>

int main(void) {
  int isHost = 1;

#pragma omp target map(tofrom: isHost)
  {
    isHost = omp_is_initial_device();
    printf("Hello world. %d\n", 100);
    for (int i =0; i<5; i++) {
      printf("Hello world. iteration %d\n", i);
    }
  }

  printf("Target region executed on the %s\n", isHost ? "host" : "device");

  return isHost;
}

EOF
#export PATH=$PATH:/opt/rocm/llvm/bin
export PATH=$ROCM_INSTALL_PATH/bin:$PATH
export MYGPU=${MYGPU-gfx906}
set -x
which clang
ls $ROCM_INSTALL_PATH/bin
ls $ROCM_INSTALL_PATH/amdgcn/bitcode
ls $ROCM_INSTALL_PATH/llvm/lib/libdevice
ls $OUT_DIR/bin
ls $OUT_DIR/amdgcn/bitcode
ls $OUT_DIR/llvm/lib/libdevice

clang -famd-opt -mcode-object-version=3 --rocm-device-lib-path=$ROCM_INSTALL_PATH/amdgcn/bitcode -###  -O2  -target x86_64-pc-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=$MYGPU  lto_clang.c -o lto_clang 2>&1 | grep -q '../alt/bin/ld.lld'
if [ $? ] ; then
  echo Found alt/bin/ll.lld
else
  echo failed to invoke alt ld.lld
fi
clang -famd-opt --rocm-device-lib-path=$ROCM_INSTALL_PATH/amdgcn/bitcode -mcode-object-version=3 -###  -O2  -target x86_64-pc-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=$MYGPU   lto_clang.c -o lto_clang 2>&1 | grep -q '../alt/bin/clang-13' 
if [ $? ] ; then
  echo Found alt/bin/clang-13
else
  echo failed to invoke alt clang-13
fi

clang --rocm-device-lib-path=$ROCM_INSTALL_PATH/amdgcn/bitcode  -print-rocm-search-dirs -famd-opt -mcode-object-version=3 -O2  -target x86_64-pc-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=$MYGPU   lto_clang.c -o lto_clang
clang --rocm-device-lib-path=$ROCM_INSTALL_PATH/amdgcn/bitcode  -print-rocm-search-dirs -mcode-object-version=3 -O2  -target x86_64-pc-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=$MYGPU   lto_clang.c -o lto_clang
clang -print-rocm-search-dirs -mcode-object-version=3 -O2  -target x86_64-pc-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=$MYGPU   lto_clang.c -o lto_clang
ls -l lto_clang
#./lto_clang
#rm -f lto_clang.c lto_clang
