amd/common: split out ac_parse_ib_chunk from ac_parse_ib
[mesa.git] / src / amd / common / ac_llvm_util.c
index 4f32d4bb974122dec160da13008a596270cb76e8..675926ea679bf64580a38d0e65417713d0a32b82 100644 (file)
@@ -40,21 +40,23 @@ static void ac_init_llvm_target()
        LLVMInitializeAMDGPUTargetMC();
        LLVMInitializeAMDGPUAsmPrinter();
 
-       /*
-        * Workaround for bug in llvm 4.0 that causes image intrinsics
+       /* For inline assembly. */
+       LLVMInitializeAMDGPUAsmParser();
+
+       /* Workaround for bug in llvm 4.0 that causes image intrinsics
         * to disappear.
         * https://reviews.llvm.org/D26348
         */
-#if HAVE_LLVM >= 0x0400
-       const char *argv[2] = {"mesa", "-simplifycfg-sink-common=false"};
-       LLVMParseCommandLineOptions(2, argv, NULL);
-#endif
-
+       if (HAVE_LLVM >= 0x0400) {
+               /* "mesa" is the prefix for error messages */
+               const char *argv[2] = { "mesa", "-simplifycfg-sink-common=false" };
+               LLVMParseCommandLineOptions(2, argv, NULL);
+       }
 }
 
 static once_flag ac_init_llvm_target_once_flag = ONCE_FLAG_INIT;
 
-static LLVMTargetRef ac_get_llvm_target(const char *triple)
+LLVMTargetRef ac_get_llvm_target(const char *triple)
 {
        LLVMTargetRef target = NULL;
        char *err_message = NULL;
@@ -126,7 +128,9 @@ LLVMTargetMachineRef ac_create_target_machine(enum radeon_family family, enum ac
        LLVMTargetRef target = ac_get_llvm_target(triple);
 
        snprintf(features, sizeof(features),
-                "+DumpCode,+vgpr-spilling,-fp32-denormals,-xnack");
+                "+DumpCode,+vgpr-spilling,-fp32-denormals%s",
+                tm_options & AC_TM_SISCHED ? ",+si-scheduler" : "");
+       
        LLVMTargetMachineRef tm = LLVMCreateTargetMachine(
                                     target,
                                     triple,