mlir-opt -tensor-bufferize -arith-bufferize -func-bufferize -linalg-bufferize gemm.mlir -o gemm_bufferized.mlir
mlir-opt -convert-linalg-to-affine-loops gemm_bufferized.mlir -o gemm_affine.mlir
mlir-opt -affine-loop-unroll gemm_affine.mlir -o gemm_unroll.mlir
mlir-opt -lower-affine -convert-scf-to-cf -convert-cf-to-llvm -convert-arith-to-llvm -convert-func-to-llvm -finalize-memref-to-llvm -reconcile-unrealized-casts gemm_unroll.mlir -o gemm_llvm.mlir
mlir-translate --mlir-to-llvmir gemm_llvm.mlir -o llvmir.ll