New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Investigate elimination of the -raise pass #1444
Comments
When this happens, we can eliminate Type::canLosslesslyBitCastTo and probably some other stuff only -Chris |
Is there anything preventing this from being eliminated now? Can we use the stats to determine how much it fires (if at all)? What pieces does it implement that might still be useful to retain? |
Nothing prevents it. We just need someone to do an llvm-test run with an without it to see if there are -Chris |
or even just run SPEC2K + SPEC2K6. -Chris |
I will set up overnight performance test run. |
I want this gone. :) |
Performance Data Spreadsheet |
Summary Of Performance Results (See the Spreadsheet) Four SPEC test suites were compared: CINT2000, CFP2000, CINT2006, and CFP2006. In general it looks positive to remove the -raise pass. The overall results
ITEM GCCAS Bytecode LLC JIT GCC CBE LLC JIT The "Delta" values shown are the difference in aggregate time between "with The "Percent" values are computed by dividing the "Delta" value by the "with To interpret this correctly, one would say: "On average, the -raise pass The only negative impact of removing -raise seems to be a 1.09% increase in the Note that these results account for only one run of the nightly tests. |
Performance Data Spreadsheet |
Chris, Please let me know if this is sufficient evidence to support removal of the Reid |
Yes, it looks like we are close to it. Things worth investigating:
-Chris |
I ran 401.bzip2 using "head" from today and compared it against the "without So, guess I get to do this again. Devang, did you run this comparison on Darwin?
I eliminated as much interference workload as I could by shutting down email,
I'll defer this until after I get new numbers. If they still look problematic, |
Makes sense. A lot has changed in a few days. I suspect the 'noise' is really measuring these changes :) -Chris |
Yes. I now have two environments that were updated at the same moment. The only |
sounds great, thanks reid! |
Olden Performance Comparison Interesting note: there is 0 difference in bytecode sizes. Perhaps -raise |
Cool. You could diff them to verify. This is a good sign -raise isn't doing anything any more. :) SPEC will give more certainty though. |
[reid@bashful llvm-test-1]$ for f in
Looks pretty identical to me. |
External Performance Comparison (Spreadsheet) |
Looking at the External test comparison, it doesn't look like -raise does much. However a few things could be investigated: 255.vortex - Why does raise eliminate 733 bytes of bytecode? |
We should generate comparisons on Darwin/PPC as well just to make sure that |
For 255.vortex, here's what I found:
Its not clear why -instcombine wouldn't do the same transform as #2. |
255.vortex difference on stripped files |
433.milc differences |
456.hmmer differences |
447.dealII differences |
For 400.perlbench: Unfortunately, my machine doesn't have enough memory to do a diff of two 2.7GB |
the 255.vortex differences aren't worth worrying about, we're good there. |
ok, go ahead and nuke it. |
Extended Description
The -raise pass was mainly around to eliminate casts from int -> uint etc through some tricky
transformations. With the recent signless work, this pass should be mostly useless. Eliminating it is good
as it reduces compile time (one fewer pass), eliminates a bunch of ugly code (the raise pass is very nasty),
and potentially eliminating the LLVMTransforms library (ExprTypeConvert.cpp, LevelRaise.cpp, and
TransformInternals.cpp).
We should do performance analysis (e.g. spec2k and 2k6) to see whether this is completely dead, and if
not, reimplement the useful pieces in other passes.
-Chris
The text was updated successfully, but these errors were encountered: