# i386 cross compile notes

I386_SRC=$(SRC_PATH)/tests/tcg/i386

# Set search path for all sources
VPATH 		+= $(I386_SRC)

config-cc.mak: Makefile
	$(quiet-@)( \
          $(call cc-option,-fno-pie, CROSS_CC_HAS_I386_NOPIE)) 3> config-cc.mak

-include config-cc.mak

I386_SRCS=$(notdir $(wildcard $(I386_SRC)/*.c))
ALL_X86_TESTS=$(I386_SRCS:.c=)
SKIP_I386_TESTS=test-i386-ssse3 test-avx test-3dnow test-mmx test-flags
X86_64_TESTS:=$(filter test-i386-adcox test-i386-bmi2 $(SKIP_I386_TESTS), $(ALL_X86_TESTS))

test-i386-sse-exceptions: CFLAGS += -msse4.1 -mfpmath=sse
run-test-i386-sse-exceptions: QEMU_OPTS += -cpu max

test-i386-pcmpistri: CFLAGS += -msse4.2
run-test-i386-pcmpistri: QEMU_OPTS += -cpu max

test-i386-bmi2: CFLAGS=-O2
run-test-i386-bmi2: QEMU_OPTS += -cpu max

test-i386-adcox: CFLAGS=-O2
run-test-i386-adcox: QEMU_OPTS += -cpu max

test-aes: CFLAGS += -O -msse2 -maes
test-aes: test-aes-main.c.inc
run-test-aes: QEMU_OPTS += -cpu max

#
# hello-i386 is a barebones app
#
hello-i386: CFLAGS+=-ffreestanding -fno-stack-protector
hello-i386: LDFLAGS+=-nostdlib

# test-386 includes a couple of additional objects that need to be
# linked together, we also need a no-pie capable compiler due to the
# non-pic calls into 16-bit mode
ifneq ($(CROSS_CC_HAS_I386_NOPIE),)
test-i386: CFLAGS += -fno-pie

test-i386: test-i386.c test-i386-code16.S test-i386-vm86.S test-i386.h test-i386-shift.h test-i386-muldiv.h
	$(CC) $(CFLAGS) $(LDFLAGS) $(EXTRA_CFLAGS) -o $@ \
	   $(<D)/test-i386.c $(<D)/test-i386-code16.S $(<D)/test-i386-vm86.S -lm
else
test-i386:
	$(call skip-test, "BUILD of $@", "missing -no-pie compiler support")
run-test-i386:
	$(call skip-test, "RUN of test-i386", "not built")
endif

ifeq ($(SPEED), slow)

test-i386-fprem.ref: test-i386-fprem
	$(call quiet-command, ./$< > $@,"GENREF","generating $@")

run-test-i386-fprem: TIMEOUT=60
run-test-i386-fprem: test-i386-fprem test-i386-fprem.ref
	$(call run-test,test-i386-fprem, $(QEMU) $<)
	$(call diff-out,test-i386-fprem, test-i386-fprem.ref)
else
SKIP_I386_TESTS+=test-i386-fprem
endif

# Update TESTS
I386_TESTS:=$(filter-out $(SKIP_I386_TESTS), $(ALL_X86_TESTS))
TESTS=$(MULTIARCH_TESTS) $(I386_TESTS)

# On i386 and x86_64 Linux only supports 4k pages (large pages are a different hack)
EXTRA_RUNS+=run-test-mmap-4096

sha512-sse: CFLAGS=-msse4.1 -O3
sha512-sse: sha512.c
	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)

run-sha512-sse: QEMU_OPTS+=-cpu max

TESTS+=sha512-sse

CLEANFILES += test-avx.h test-mmx.h test-3dnow.h
test-3dnow.h: test-mmx.py x86.csv
	$(PYTHON) $(I386_SRC)/test-mmx.py $(I386_SRC)/x86.csv $@ 3DNOW

test-mmx.h: test-mmx.py x86.csv
	$(PYTHON) $(I386_SRC)/test-mmx.py $(I386_SRC)/x86.csv $@ MMX SSE SSE2 SSE3 SSSE3

test-avx.h: test-avx.py x86.csv
	$(PYTHON) $(I386_SRC)/test-avx.py $(I386_SRC)/x86.csv $@

test-3dnow: CFLAGS += -masm=intel -O -I.
run-test-3dnow: QEMU_OPTS += -cpu max
test-3dnow: test-3dnow.h

test-mmx: CFLAGS += -masm=intel -O -I.
run-test-mmx: QEMU_OPTS += -cpu max
test-mmx: test-mmx.h

test-avx: CFLAGS += -mavx -masm=intel -O -I.
run-test-avx: QEMU_OPTS += -cpu max
test-avx: test-avx.h
