#!/bin/bash

IFN=$1
SFN=${IFN##*/}
FN=${SFN%.*}

OPT="-O3 -mavx2"
SUF="-O3-mavx2"
#OPT="-O3 -mno-sse"
#SUF="-O3-mno-sse"

FN=${FN}${SUF}

# LLVM IR
clang ${OPT} -c -emit-llvm -o ${FN}.bc ${IFN}
llvm-dis -o=${FN}.ll ${FN}.bc 

# instructions through passes
clang ${OPT} -c -mllvm --print-machineinstrs ${IFN} 2> ${FN}.instrs

# assembler {Intel syntax}
clang ${OPT} -S -mllvm --x86-asm-syntax=intel -o ${FN}.asm ${IFN}

# assembler {GCC syntax}
clang ${OPT} -S -o ${FN}.s ${IFN}
