OBJS := test.o stringNo.o stringMMX.o stringSSE.o stringSSE2.o stringSSE3.o stringSSSE3.o stringSSE4.o stringSSE41.o stringSSE42.o stringAVX.o
OUTPUT := test

all:	$(OUTPUT)

$(OUTPUT):	$(OBJS)
	gcc $(OBJS) -o $@ -O3

stringNo.o:
	gcc -m64 -O3 -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 -mno-avx stringNo.c -o $@ -c -std=c99
	
stringMMX.o:
	gcc -m64 -O3 -mmmx -mno-sse -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 -mno-avx stringMMX.c -o $@ -c -std=c99

stringSSE.o:
	gcc -m64 -O3 -mmmx -msse -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 -mno-avx stringSSE.c -o $@ -c -std=c99

stringSSE2.o:
	gcc -m64 -O3 -mmmx -msse -msse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 -mno-avx stringSSE2.c -o $@ -c -std=c99

stringSSE3.o:
	gcc -m64 -O3 -mmmx -msse -msse2 -msse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 -mno-avx stringSSE3.c -o $@ -c -std=c99

stringSSSE3.o:
	gcc -m64 -O3 -mmmx -msse -msse2 -msse3 -mssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 -mno-avx stringSSSE3.c -o $@ -c -std=c99

stringSSE4.o:
	gcc -m64 -O3 -mmmx -msse -msse2 -msse3 -mssse3 -msse4 -mno-sse4.1 -mno-sse4.2 -mno-avx stringSSE4.c -o $@ -c -std=c99

stringSSE41.o:
	gcc -m64 -O3 -mmmx -msse -msse2 -msse3 -mssse3 -msse4 -msse4.1 -mno-sse4.2 -mno-avx stringSSE41.c -o $@ -c -std=c99

stringSSE42.o:
	gcc -m64 -O3 -mmmx -msse -msse2 -msse3 -mssse3 -msse4 -msse4.1 -msse4.2 -mno-avx stringSSE42.c -o $@ -c -std=c99

stringAVX.o:
	gcc -m64 -O3 -mmmx -msse -msse2 -msse3 -mssse3 -msse4 -msse4.1 -msse4.2 -mavx stringAVX.c -o $@ -c -std=c99

test.o:
	gcc -m64 -O3 test.c -o $@ -c -std=c99
	
clean:
	rm -f $(OBJS) $(OUTPUT)
	
