[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