+ifeq (HBM,$(ADJ_LIST_MEM_TYPE))
+ #MEMKIND is required for this!
+ MEMKIND = on
+ C_FLAGS += -DALLOC_ADJ_LIST_IN_HBM=1
+else
+ C_FLAGS += -DALLOC_ADJ_LIST_IN_HBM=0
+endif
+
+ifeq (HBM,$(PDF_MEM_TYPE))
+ #MEMKIND is required for this!
+ MEMKIND = on
+ C_FLAGS += -DALLOC_PDF_IN_HBM=1
+else
+ C_FLAGS += -DALLOC_PDF_IN_HBM=0
+endif
+
+ifeq (on, $(MEMKIND))
+ C_FLAGS += -DHAVE_MEMKIND
+ LD_FLAGS += -lmemkind
+endif
+
+# Prefetch settings
+SOFTWARE_PREFETCH_LOOKAHEAD_L2 ?= 0
+SOFTWARE_PREFETCH_LOOKAHEAD_L1 ?= 0
+C_FLAGS += -DSOFTWARE_PREFETCH_LOOKAHEAD_L2=$(SOFTWARE_PREFETCH_LOOKAHEAD_L2) -DSOFTWARE_PREFETCH_LOOKAHEAD_L1=$(SOFTWARE_PREFETCH_LOOKAHEAD_L1)
+
+
+ifeq (dp,$(PRECISION))
+ PP_FLAGS += $(D)PRECISION_DP
+ PREC=-dp
+else
+ifeq (sp,$(PRECISION))
+ PP_FLAGS += $(D)PRECISION_SP
+ PREC=-sp
+else
+ $(error PRECISION is only be allowed to be sp (single precision) or dp (doble precision))
+endif
+endif
+
+# Use AVX512 intrinsic kernels only when ISA=avx512 and we have double
+# precision support.
+ifeq (avx512,$(ISA))
+ ifeq (dp,$(PRECISION))
+ OBJ_C += $(OBJ_C_ISA_AVX_512)
+ endif
+endif
+