diff options
| -rw-r--r-- | Makefile | 14 |
1 files changed, 8 insertions, 6 deletions
@@ -41,13 +41,15 @@ $(BUILD)/obj/%.o: %.c $(HEADERS) # The lists' searches count a node's keys and positions whole, and move # items in a leaf column by column: -O3 makes vector instructions of them # (docs/design/020: 8% of a breadth first search). -# Their loops start each at a 64-byte line: else a change anywhere in the -# file moves them, and the batch executor's hot loops ran 6% apart with the -# same instructions (knapsack 8.26, 8.74, 8.20 ms; docs/research/138). -LIST_OPTIMIZE ?= -O3 -falign-loops=64 +LIST_OPTIMIZE ?= -O3 $(BUILD)/obj/core/module-list.o: CFLAGS += $(LIST_OPTIMIZE) -# A batch's instructions are loops over its lanes: vector instructions too (docs/design/024). -$(BUILD)/obj/core/module-batch.o: CFLAGS += $(LIST_OPTIMIZE) +# A batch's instructions are loops over its lanes: vector instructions too +# (docs/design/024), each loop at the start of a 64-byte line: else a change +# anywhere in the file moves them, and its hot loops ran 6% apart with the +# same instructions (knapsack 8.26, 8.74, 8.20 ms; docs/research/138). (The +# lists' loops so aligned cost the bank's queries 1-2% more instructions.) +BATCH_OPTIMIZE ?= $(LIST_OPTIMIZE) -falign-loops=64 +$(BUILD)/obj/core/module-batch.o: CFLAGS += $(BATCH_OPTIMIZE) # The links know nothing of the core: they build without its headers. $(BUILD)/obj/link/%.o: link/%.c $(wildcard link/*.h) |
