[LLVMdev] -fplugin-arg-dragonegg-enable-gcc-optzns status
Rotem, Nadav
nadav.rotem at intel.com
Wed Jun 8 22:58:41 PDT 2011
Hi,
Here's a quick update regarding the vector-select. I started committing my vector-select patch[1] little by little. The general approach is to implement Integer-Promotions legalization on vectors (rather than vector-widening). This enables the widening of <4 x i1> masks into <4 x i32> masks, which are used by the SIMD instruction set.
I started with some type-legalization refactoring. Next, I added a new flag to enable the new kind of type-legalization and a few tests. After that, I added the LegalizeTypes implementation of PromoteInteger for the new vector SDNodes (buildvector, extract, etc) and the changes to copyFromParts/copyToParts (needed for argument passing and inter basicblock variables). I added some tests for arithmetic vector code.
My next patch is going to be augmenting the load/store code for saving and storing of the modified vectors. A <4 x i8> vector is promoted to <4 x i32> in registers, but still needs to be saved as <4 x i8> in memory. After this patch goes it, we can do two things. First, we can consider removing the special flag and enabling the new legalization strategy for all code. Second, we can implement the vector select. The vector select part would be easy. I am not sure how long it would take me to finish this patch, because I am only working on this in the late evenings.
Cheers,
Nadav
[1] - http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20110502/120445.html
-----Original Message-----
From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On Behalf Of Jack Howarth
Sent: Thursday, June 09, 2011 08:13
To: llvmdev at cs.uiuc.edu
Subject: [LLVMdev] -fplugin-arg-dragonegg-enable-gcc-optzns status
Current dragonegg svn has all of the -fplugin-arg-dragonegg-enable-gcc-optzns bugs for
usage with -ffast-math -O3 addressed except for those related to PR2314. Using the -fno-tree-vectorize
option, we can evaluate the current state of -fplugin-arg-dragonegg-enable-gcc-optzns with
the Polyhedron 2005 benchmarks compared to stock dragonegg and stock gcc 4.5.4. The runtime
benchmarks below show that we average slightly faster than stock gcc 4.5.4 and significantly
faster than stock dragonegg through the use of -fplugin-arg-dragonegg-enable-gcc-optzns.
x86_64 darwin
A) gcc 4.5.4svn using -msse3 -ffast-math -O3 -fno-tree-vectorize
B) gcc 4.5.4svn/dragonegg using -msse3 -ffast-math -O3 -fno-tree-vectorize -fplugin-arg-dragonegg-enable-gcc-optzns
C) gcc 4.5.4svn/dragonegg using -msse3 -ffast-math -O3 -fno-tree-vectorize
Benchmark A) stock B) gcc 4.5.4/ C) gcc 4.5.4/
gcc 4.5.4 dragonegg/optzns dragonegg
ac 9.58 9.13 12.30
aermod 20.88 16.10 17.62
air 6.16 6.59 7.70
capacita 35.68 39.94 46.22
channel 2.03 2.04 1.96
doduc 28.28 28.43 30.41
fatigue 8.13 7.19 10.40
gas_dyn 10.10 9.83 11.73
induct 20.17 20.76 48.76
linpk 15.42 15.65 15.69
mdbx 11.42 11.73 12.07
nf 27.99 28.60 29.39
protein 38.36 39.08 39.98
rnflow 27.28 28.19 31.90
test_fpu 11.43 11.17 11.50
tfft 1.91 1.95 2.16
Mean 12.72 12.62 14.71
Once vector_select() is implemented we can retest without -fno-tree-vectorize.
_______________________________________________
LLVM Developers mailing list
LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
---------------------------------------------------------------------
Intel Israel (74) Limited
This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
More information about the llvm-dev
mailing list