CC=clang -Wall -Os CCRETPOL=clang -Wall -Os -mretpoline all: dispatch dispatch-retpol @ for i in "dispatch 0 6" "dispatch 2 6" "dispatch-retpol 0 6" "dispatch-retpol 2 6" "dispatch-retpol 1 0" "dispatch-retpol 1 1" "dispatch-retpol 1 2" "dispatch-retpol 1 3" "dispatch-retpol 1 4" "dispatch-retpol 1 5" "dispatch-retpol 1 6"; do perf stat -e cycles ./$$i 2>&1 | awk -v d="$$i" '/cycles/ {printf("%5.2f %s\n",$$1/100000000.0,d);}'; done @ for i in 0 1 2 3 4 5 6 7; do perf stat -e cycles ./dispatch-retpol 4 $$i 2>&1 | awk -v d="dispatch-retpol 4 $$i" '/cycles/ {printf("%5.2f %s\n",$$1/100000000.0,d);}'; done @ for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72; do perf stat -e cycles ./dispatch-retpol 3 $$i 2>&1 | awk -v d="dispatch-retpol 3 $$i" '/cycles/ {printf("%5.2f %s\n",$$1/100000000.0,d);}'; done dispatch: main.o dispatch.o dis-btree.o $(CC) main.o dispatch.o dis-btree.o -o $@ dispatch-retpol: main-retpol.o dispatch-retpol.o dis-btree.o $(CCRETPOL) main-retpol.o dispatch-retpol.o dis-btree.o -o $@ main.o: main.c $(CC) -c $< dispatch.o: dispatch.c $(CC) -c $< dis-btree.o: dis-btree.s $(CC) -c $< main-retpol.o: main.c $(CCRETPOL) -c $< -o $@ dispatch-retpol.o: dispatch.c $(CCRETPOL) -c $< -o $@