aco: run nir_lower_int64() before nir_lower_idiv()
authorRhys Perry <pendingchaos02@gmail.com>
Tue, 24 Sep 2019 14:15:26 +0000 (15:15 +0100)
committerRhys Perry <pendingchaos02@gmail.com>
Wed, 25 Sep 2019 15:27:48 +0000 (15:27 +0000)
nir_lower_idiv() asserts on 64-bit integers.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
src/amd/compiler/aco_instruction_selection_setup.cpp

index 6c4c408e65966301ed91410209e034bbe06f0df0..f77d12d23648a0cae66dfaedb14e32cfe157be7f 100644 (file)
@@ -1307,9 +1307,6 @@ setup_isel_context(Program* program,
          nir_lower_pack(nir);
 
       /* lower ALU operations */
-      nir_opt_idiv_const(nir, 32);
-      nir_lower_idiv(nir); // TODO: use the LLVM path once !1239 is merged
-
       // TODO: implement logic64 in aco, it's more effective for sgprs
       nir_lower_int64(nir, (nir_lower_int64_options) (nir_lower_imul64 |
                                                       nir_lower_imul_high64 |
@@ -1320,6 +1317,9 @@ setup_isel_context(Program* program,
                                                       nir_lower_iabs64 |
                                                       nir_lower_ineg64));
 
+      nir_opt_idiv_const(nir, 32);
+      nir_lower_idiv(nir); // TODO: use the LLVM path once !1239 is merged
+
       /* optimize the lowered ALU operations */
       nir_copy_prop(nir);
       nir_opt_constant_folding(nir);