Add double-pumped AVX target (i.e., run 16-wide). Not yet tested.

This commit is contained in:
Matt Pharr
2011-08-20 11:28:22 +01:00
parent f841b775c3
commit 7756265503
8 changed files with 1178 additions and 203 deletions

View File

@@ -92,7 +92,7 @@ static void usage(int ret) {
printf(" disable-uniform-memory-optimizations\tDisable uniform-based coherent memory access\n");
printf(" disable-masked-store-optimizations\tDisable lowering to regular stores when possible\n");
#if defined(LLVM_3_0) || defined(LLVM_3_0svn)
printf(" [--target={sse2,sse4,sse4x2,avx}] Select target ISA (SSE4 is default unless compiling for atom; then SSE2 is.)\n");
printf(" [--target={sse2,sse4,sse4x2,avx,avx-x2}] Select target ISA (SSE4 is default unless compiling for atom; then SSE2 is.)\n");
#else
printf(" [--target={sse2,sse4,sse4x2}] Select target ISA (SSE4 is default unless compiling for atom; then SSE2 is.)\n");
#endif // LLVM 3.0
@@ -128,6 +128,11 @@ static void lDoTarget(const char *target) {
g->target.nativeVectorWidth = 8;
g->target.vectorWidth = 8;
}
else if (!strcasecmp(target, "avx-x2")) {
g->target.isa = Target::AVX;
g->target.nativeVectorWidth = 8;
g->target.vectorWidth = 16;
}
#endif // LLVM 3.0
else
usage(1);