gallivm: remove optimization workaround when not having sse 4.1
authorRoland Scheidegger <sroland@vmware.com>
Thu, 15 May 2014 15:01:40 +0000 (17:01 +0200)
committerRoland Scheidegger <sroland@vmware.com>
Thu, 15 May 2014 23:09:34 +0000 (01:09 +0200)
This workaround doesn't list any llvm version, but it was introduced
2010-06-10 (e277d5c1f6b2c5a6d202561e67d2b6821a69ecc4). It is unlikely
this bug is still present in llvm versions we support (3.1+).
There's no specific test listed, but I ran lp_test_arit (which uses
the mentioned functions) on llvm 3.1 and 3.3 with sse41 disabled and
this pass enabled without issues.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
src/gallium/auxiliary/gallivm/lp_bld_init.c

index 4ad5797a193c3802b1ef40a27fcc116702a84160..83ffad9a838499ba9404fd41df3fc1e92566a3aa 100644 (file)
@@ -149,14 +149,7 @@ create_pass_manager(struct gallivm_state *gallivm)
       LLVMAddReassociatePass(gallivm->passmgr);
       LLVMAddPromoteMemoryToRegisterPass(gallivm->passmgr);
       LLVMAddConstantPropagationPass(gallivm->passmgr);
-
-      if (util_cpu_caps.has_sse4_1) {
-         /* FIXME: There is a bug in this pass, whereby the combination
-          * of fptosi and sitofp (necessary for trunc/floor/ceil/round
-          * implementation) somehow becomes invalid code.
-          */
-         LLVMAddInstructionCombiningPass(gallivm->passmgr);
-      }
+      LLVMAddInstructionCombiningPass(gallivm->passmgr);
       LLVMAddGVNPass(gallivm->passmgr);
    }
    else {