ILang Tiramisu MLIR Halide TVM BYOC bring your own codegen

esolang VM - C compiler to simple virtual machine for compiling to esolangs

Loop invariant code motion - aka hoisting. Move stuff that doesn’t change out of the loop

instruction level parallelism Alex Aiken Utpal Banerjee Arun Kejariwal Alexandru Nicolau

Reassociate to lessen tree height - less dependencies Expand expressions with care - less dependencies

Polyhedral model Foundations of Fine Grain Parallelism. Recurrence equations. Analyze them granulairty

Polyhedral Compilation as a Design Pattern for Compilers PLISS

isl and presburger arithmetic. A relative of omega? Tutorial: Creating an LLVM Backend for the Cpu0 Architecture - interesting links more links LLVM IR tutorial <> static program analysis

modules - global symbols, function declaration, function definitions, target information program analysis resources. Big long list. SSA bookv

Dataflow analysis Must/May and intersection vs union. Least fixed point vs greatest Is datalog actually a good fit - hmm sppoofax - souffle - reps Engler 96

Man souffle does seem cool

It’s surprisingly difficult to find a cogent explanation of all the stuff one might need. It’s useful to call C or be called from C

<code>	.globl compute_42
    movq    %rdi, %rax # move argument into rax
	addq	$32, %rax # add 32 

#include <stdio.h>
#include <stdint.h>

extern uint64_t compute_42(uint64_t a);

int main()
    printf("result is %ld \n", compute_42(4));
    return 0;

Making a simple garbage collector

The boehm garbage collector sweems easy to use. Also you can just malloc and never free.

sjklsfkjl x86 cheatsheet

alignment is for serious. It really does screw you if you don’t do function alls with stack on 16byte boundaries modern c book free online

%rdi, %rsi, %rdx, %rcx, %r8, and %r9 as first 6 arguments

pushq %rbx is usually first instruction inside function

subq somethign rsp usually happens to allocate on the stack introduction to computer systems

Bryant and OHallaran book. CMU course

gdb. Compile with -g flag. break main. step next print. tui enabe cheatsheet

objdump -d -S -l

valgrind and core dumps.


llvm-mca - static analysis of performance of code