glsl: Add a lowering pass for 64-bit integer division
[mesa.git] / src / compiler / glsl / lower_int64.cpp
index a12eba85c58d0759e2a17e1d260655410372114e..a0b5e1809a55081401e54f95c3af851ad21bd565 100644 (file)
@@ -368,6 +368,17 @@ lower_64bit_visitor::handle_rvalue(ir_rvalue **rvalue)
       }
       break;
 
+   case ir_binop_div:
+      if (lowering(DIV64)) {
+         if (ir->type->base_type == GLSL_TYPE_UINT64) {
+            *rvalue = handle_op(ir, "__builtin_udiv64", generate_ir::udiv64);
+         } else {
+            *rvalue = handle_op(ir, "__builtin_idiv64", generate_ir::idiv64);
+         }
+         this->progress = true;
+      }
+      break;
+
    case ir_binop_mul:
       if (lowering(MUL64)) {
          *rvalue = handle_op(ir, "__builtin_umul64", generate_ir::umul64);