draw/llvm: Add additional llvm optimization passes
authorStéphane Marchesin <marcheu@chromium.org>
Sun, 5 May 2013 11:34:40 +0000 (04:34 -0700)
committerStéphane Marchesin <marcheu@chromium.org>
Thu, 9 May 2013 05:05:54 +0000 (22:05 -0700)
It helps a bit with vertex shader performance on i915g
(a couple percent faster with openarena).

I have tried most other passes, and they weren't showing
any measurable improvement. Note that my vertex shaders
didn't have loops, so maybe the loop optimizations could
still be useful in the future.

Reviewed-by: Brian Paul <brianp@vmware.com>
src/gallium/auxiliary/gallivm/lp_bld_init.c

index 673c16e67623fc51ebd774efecc32744442e9567..4a428ee02ade6432e5eb1c698135715982d77417 100644 (file)
@@ -147,7 +147,10 @@ create_pass_manager(struct gallivm_state *gallivm)
        * but there are more on SVN.
        * TODO: Add more passes.
        */
+      LLVMAddScalarReplAggregatesPass(gallivm->passmgr);
+      LLVMAddLICMPass(gallivm->passmgr);
       LLVMAddCFGSimplificationPass(gallivm->passmgr);
+      LLVMAddReassociatePass(gallivm->passmgr);
 
       if (HAVE_LLVM >= 0x207 && sizeof(void*) == 4) {
          /* For LLVM >= 2.7 and 32-bit build, use this order of passes to