• Home
  • Raw
  • Download

Lines Matching full:ir

32 #include "ir.h"
45 * pass to lower GLSL IR to NIR
82 void create_function(ir_function_signature *ir);
86 nir_ssa_def *evaluate_rvalue(ir_rvalue *ir);
102 nir_deref_instr *evaluate_deref(ir_instruction *ir);
104 nir_constant *constant_copy(ir_constant *ir, void *mem_ctx);
109 /* whether the IR we're operating on is per-function or global */
150 virtual ir_visitor_status visit_enter(ir_function_signature *ir) in visit_enter() argument
153 if (ir->is_intrinsic()) in visit_enter()
156 foreach_in_list(ir_variable, param, &ir->parameters) { in visit_enter()
168 if (!glsl_type_is_vector_or_scalar(ir->return_type) && in visit_enter()
169 !ir->return_type->is_void()) { in visit_enter()
184 has_unsupported_function_param(exec_list *ir) in has_unsupported_function_param() argument
187 visit_list_elements(&visitor, ir); in has_unsupported_function_param()
203 * to NIR. If we find something we can't handle then we get the GLSL IR in glsl_to_nir()
206 * TODO: add missing glsl ir to nir support and remove this loop. in glsl_to_nir()
208 while (has_unsupported_function_param(sh->ir)) { in glsl_to_nir()
209 do_common_optimization(sh->ir, true, true, gl_options, in glsl_to_nir()
218 v2.run(sh->ir); in glsl_to_nir()
219 visit_exec_list(sh->ir, &v1); in glsl_to_nir()
285 nir_visitor::evaluate_deref(ir_instruction *ir) in evaluate_deref() argument
287 ir->accept(this); in evaluate_deref()
292 nir_visitor::constant_copy(ir_constant *ir, void *mem_ctx) in constant_copy() argument
294 if (ir == NULL) in constant_copy()
299 const unsigned rows = ir->type->vector_elements; in constant_copy()
300 const unsigned cols = ir->type->matrix_columns; in constant_copy()
304 switch (ir->type->base_type) { in constant_copy()
310 ret->values[r].u32 = ir->value.u[r]; in constant_copy()
319 ret->values[r].u16 = ir->value.u16[r]; in constant_copy()
327 ret->values[r].i32 = ir->value.i[r]; in constant_copy()
336 ret->values[r].i16 = ir->value.i16[r]; in constant_copy()
348 switch (ir->type->base_type) { in constant_copy()
351 col_const->values[r].f32 = ir->value.f[c * rows + r]; in constant_copy()
356 col_const->values[r].u16 = ir->value.f16[c * rows + r]; in constant_copy()
361 col_const->values[r].f64 = ir->value.d[c * rows + r]; in constant_copy()
370 switch (ir->type->base_type) { in constant_copy()
373 ret->values[r].f32 = ir->value.f[r]; in constant_copy()
378 ret->values[r].u16 = ir->value.f16[r]; in constant_copy()
383 ret->values[r].f64 = ir->value.d[r]; in constant_copy()
397 ret->values[r].u64 = ir->value.u64[r]; in constant_copy()
405 ret->values[r].i64 = ir->value.i64[r]; in constant_copy()
413 ret->values[r].b = ir->value.b[r]; in constant_copy()
420 ir->type->length); in constant_copy()
421 ret->num_elements = ir->type->length; in constant_copy()
423 for (i = 0; i < ir->type->length; i++) in constant_copy()
424 ret->elements[i] = constant_copy(ir->const_elements[i], mem_ctx); in constant_copy()
455 nir_visitor::visit(ir_variable *ir) in visit() argument
458 * now just ignore these variables as GLSL IR should have lowered them. in visit()
461 if (ir->data.mode == ir_var_shader_shared) in visit()
465 assert(ir->data.mode != ir_var_function_inout); in visit()
467 if (ir->data.mode == ir_var_function_out) in visit()
471 var->type = ir->type; in visit()
472 var->name = ralloc_strdup(var, ir->name); in visit()
474 var->data.always_active_io = ir->data.always_active_io; in visit()
475 var->data.read_only = ir->data.read_only; in visit()
476 var->data.centroid = ir->data.centroid; in visit()
477 var->data.sample = ir->data.sample; in visit()
478 var->data.patch = ir->data.patch; in visit()
479 var->data.how_declared = get_nir_how_declared(ir->data.how_declared); in visit()
480 var->data.invariant = ir->data.invariant; in visit()
481 var->data.location = ir->data.location; in visit()
482 var->data.stream = ir->data.stream; in visit()
483 if (ir->data.stream & (1u << 31)) in visit()
486 var->data.precision = ir->data.precision; in visit()
487 var->data.explicit_location = ir->data.explicit_location; in visit()
488 var->data.matrix_layout = ir->data.matrix_layout; in visit()
489 var->data.from_named_ifc_block = ir->data.from_named_ifc_block; in visit()
492 switch(ir->data.mode) { in visit()
508 ir->data.location == VARYING_SLOT_PRIMITIVE_ID) { in visit()
509 /* For whatever reason, GLSL IR makes gl_PrimitiveIDIn an input */ in visit()
516 (ir->data.location == VARYING_SLOT_TESS_LEVEL_INNER || in visit()
517 ir->data.location == VARYING_SLOT_TESS_LEVEL_OUTER)) { in visit()
518 var->data.compact = ir->type->without_array()->is_scalar(); in visit()
522 ir->data.location >= VARYING_SLOT_CLIP_DIST0 && in visit()
523 ir->data.location <= VARYING_SLOT_CULL_DIST1) { in visit()
524 var->data.compact = ir->type->without_array()->is_scalar(); in visit()
532 (ir->data.location == VARYING_SLOT_TESS_LEVEL_INNER || in visit()
533 ir->data.location == VARYING_SLOT_TESS_LEVEL_OUTER)) { in visit()
534 var->data.compact = ir->type->without_array()->is_scalar(); in visit()
538 ir->data.location >= VARYING_SLOT_CLIP_DIST0 && in visit()
539 ir->data.location <= VARYING_SLOT_CULL_DIST1) { in visit()
540 var->data.compact = ir->type->without_array()->is_scalar(); in visit()
545 if (ir->get_interface_type()) in visit()
564 if (ir->data.memory_read_only) in visit()
566 if (ir->data.memory_write_only) in visit()
568 if (ir->data.memory_coherent) in visit()
570 if (ir->data.memory_volatile) in visit()
572 if (ir->data.memory_restrict) in visit()
575 var->interface_type = ir->get_interface_type(); in visit()
580 ir->get_interface_type()->get_explicit_interface_type(supports_std430); in visit()
584 if (ir->type->without_array()->is_interface()) { in visit()
588 var->type = wrap_type_in_array(explicit_ifc_type, ir->type); in visit()
595 if (strcmp(ir->name, field->name) != 0) in visit()
617 var->data.interpolation = ir->data.interpolation; in visit()
618 var->data.location_frac = ir->data.location_frac; in visit()
620 switch (ir->data.depth_layout) { in visit()
640 var->data.index = ir->data.index; in visit()
642 var->data.binding = ir->data.binding; in visit()
643 var->data.explicit_binding = ir->data.explicit_binding; in visit()
644 var->data.bindless = ir->data.bindless; in visit()
645 var->data.offset = ir->data.offset; in visit()
649 var->data.image.format = ir->data.image_format; in visit()
651 var->data.xfb.buffer = ir->data.xfb_buffer; in visit()
652 var->data.xfb.stride = ir->data.xfb_stride; in visit()
655 var->data.fb_fetch_output = ir->data.fb_fetch_output; in visit()
656 var->data.explicit_xfb_buffer = ir->data.explicit_xfb_buffer; in visit()
657 var->data.explicit_xfb_stride = ir->data.explicit_xfb_stride; in visit()
659 var->num_state_slots = ir->get_num_state_slots(); in visit()
664 ir_state_slot *state_slots = ir->get_state_slots(); in visit()
674 var->constant_initializer = constant_copy(ir->constant_initializer, var); in visit()
681 _mesa_hash_table_insert(var_table, ir, var); in visit()
685 nir_function_visitor::visit_enter(ir_function *ir) in visit_enter() argument
687 foreach_in_list(ir_function_signature, sig, &ir->signatures) { in visit_enter()
694 nir_visitor::create_function(ir_function_signature *ir) in create_function() argument
696 if (ir->is_intrinsic()) in create_function()
699 nir_function *func = nir_function_create(shader, ir->function_name()); in create_function()
700 if (strcmp(ir->function_name(), "main") == 0) in create_function()
703 func->num_params = ir->parameters.length() + in create_function()
704 (ir->return_type != glsl_type::void_type); in create_function()
709 if (ir->return_type != glsl_type::void_type) { in create_function()
716 foreach_in_list(ir_variable, param, &ir->parameters) { in create_function()
731 _mesa_hash_table_insert(this->overload_table, ir, func); in create_function()
735 nir_visitor::visit(ir_function *ir) in visit() argument
737 foreach_in_list(ir_function_signature, sig, &ir->signatures) in visit()
742 nir_visitor::visit(ir_function_signature *ir) in visit() argument
744 if (ir->is_intrinsic()) in visit()
747 this->sig = ir; in visit()
750 _mesa_hash_table_search(this->overload_table, ir); in visit()
755 if (ir->is_defined) { in visit()
764 unsigned i = (ir->return_type != glsl_type::void_type) ? 1 : 0; in visit()
766 foreach_in_list(ir_variable, param, &ir->parameters) { in visit()
778 visit_exec_list(&ir->body, this); in visit()
787 nir_visitor::visit(ir_loop *ir) in visit() argument
790 visit_exec_list(&ir->body_instructions, this); in visit()
795 nir_visitor::visit(ir_if *ir) in visit() argument
797 nir_push_if(&b, evaluate_rvalue(ir->condition)); in visit()
798 visit_exec_list(&ir->then_instructions, this); in visit()
800 visit_exec_list(&ir->else_instructions, this); in visit()
805 nir_visitor::visit(ir_discard *ir) in visit() argument
815 if (ir->condition) { in visit()
819 nir_src_for_ssa(evaluate_rvalue(ir->condition)); in visit()
828 nir_visitor::visit(ir_demote *ir) in visit() argument
837 nir_visitor::visit(ir_emit_vertex *ir) in visit() argument
841 nir_intrinsic_set_stream_id(instr, ir->stream_id()); in visit()
846 nir_visitor::visit(ir_end_primitive *ir) in visit() argument
850 nir_intrinsic_set_stream_id(instr, ir->stream_id()); in visit()
855 nir_visitor::visit(ir_loop_jump *ir) in visit() argument
858 switch (ir->mode) { in visit()
874 nir_visitor::visit(ir_return *ir) in visit() argument
876 if (ir->value != NULL) { in visit()
879 nir_var_function_temp, ir->value->type, 0); in visit()
881 nir_ssa_def *val = evaluate_rvalue(ir->value); in visit()
937 nir_visitor::visit(ir_call *ir) in visit() argument
939 if (ir->callee->is_intrinsic()) { in visit()
942 switch (ir->callee->intrinsic_id) { in visit()
944 op = ir->return_deref->type->is_integer_32_64() in visit()
957 assert(ir->return_deref); in visit()
958 if (ir->return_deref->type == glsl_type::int_type || in visit()
959 ir->return_deref->type == glsl_type::int64_t_type) in visit()
961 else if (ir->return_deref->type == glsl_type::uint_type || in visit()
962 ir->return_deref->type == glsl_type::uint64_t_type) in visit()
964 else if (ir->return_deref->type == glsl_type::float_type) in visit()
970 assert(ir->return_deref); in visit()
971 if (ir->return_deref->type == glsl_type::int_type || in visit()
972 ir->return_deref->type == glsl_type::int64_t_type) in visit()
974 else if (ir->return_deref->type == glsl_type::uint_type || in visit()
975 ir->return_deref->type == glsl_type::uint64_t_type) in visit()
977 else if (ir->return_deref->type == glsl_type::float_type) in visit()
986 op = ir->return_deref->type->is_integer_32_64() in visit()
1030 op = ir->return_deref->type->is_integer_32_64() in visit()
1035 if (ir->return_deref->type == glsl_type::int_type) in visit()
1037 else if (ir->return_deref->type == glsl_type::uint_type) in visit()
1043 if (ir->return_deref->type == glsl_type::int_type) in visit()
1045 else if (ir->return_deref->type == glsl_type::uint_type) in visit()
1090 /* SSBO store/loads should only have been lowered in GLSL IR for in visit()
1127 op = ir->return_deref->type->is_integer_32_64() in visit()
1141 assert(ir->return_deref); in visit()
1142 if (ir->return_deref->type == glsl_type::int_type || in visit()
1143 ir->return_deref->type == glsl_type::int64_t_type) in visit()
1145 else if (ir->return_deref->type == glsl_type::uint_type || in visit()
1146 ir->return_deref->type == glsl_type::uint64_t_type) in visit()
1148 else if (ir->return_deref->type == glsl_type::float_type) in visit()
1154 assert(ir->return_deref); in visit()
1155 if (ir->return_deref->type == glsl_type::int_type || in visit()
1156 ir->return_deref->type == glsl_type::int64_t_type) in visit()
1158 else if (ir->return_deref->type == glsl_type::uint_type || in visit()
1159 ir->return_deref->type == glsl_type::uint64_t_type) in visit()
1161 else if (ir->return_deref->type == glsl_type::float_type) in visit()
1170 op = ir->return_deref->type->is_integer_32_64() in visit()
1217 int param_count = ir->actual_parameters.length(); in visit()
1221 exec_node *param = ir->actual_parameters.get_head(); in visit()
1256 assert(ir->return_deref); in visit()
1257 if (ir->return_deref->type->is_integer_64()) { in visit()
1259 ir->return_deref->type->vector_elements, 64, NULL); in visit()
1262 ir->return_deref->type->vector_elements, 32, NULL); in visit()
1279 exec_node *param = ir->actual_parameters.get_head(); in visit()
1286 if (ir->return_deref) { in visit()
1328 exec_node *param = ir->actual_parameters.get_head(); in visit()
1339 if (ir->return_deref) { in visit()
1340 unsigned num_components = ir->return_deref->type->vector_elements; in visit()
1436 exec_node *param = ir->actual_parameters.get_head(); in visit()
1464 exec_node *param = ir->actual_parameters.get_head(); in visit()
1470 const glsl_type *type = ir->return_deref->var->type; in visit()
1487 exec_node *param = ir->actual_parameters.get_head(); in visit()
1528 int param_count = ir->actual_parameters.length(); in visit()
1532 exec_node *param = ir->actual_parameters.get_head(); in visit()
1552 assert(ir->return_deref); in visit()
1553 unsigned bit_size = glsl_get_bit_size(ir->return_deref->type); in visit()
1555 ir->return_deref->type->vector_elements, in visit()
1567 ir_rvalue *value = (ir_rvalue *) ir->actual_parameters.get_head(); in visit()
1576 ir->return_deref->type->vector_elements, 64, NULL); in visit()
1577 instr->num_components = ir->return_deref->type->vector_elements; in visit()
1579 ir_rvalue *value = (ir_rvalue *) ir->actual_parameters.get_head(); in visit()
1587 ir->return_deref->type->vector_elements, 32, NULL); in visit()
1588 instr->num_components = ir->return_deref->type->vector_elements; in visit()
1590 ir_rvalue *value = (ir_rvalue *) ir->actual_parameters.get_head(); in visit()
1593 ir_rvalue *invocation = (ir_rvalue *) ir->actual_parameters.get_head()->next; in visit()
1601 ir->return_deref->type->vector_elements, 32, NULL); in visit()
1602 instr->num_components = ir->return_deref->type->vector_elements; in visit()
1604 ir_rvalue *value = (ir_rvalue *) ir->actual_parameters.get_head(); in visit()
1619 if (ir->return_deref) in visit()
1620 nir_store_deref(&b, evaluate_deref(ir->return_deref), ret, ~0); in visit()
1626 _mesa_hash_table_search(this->overload_table, ir->callee); in visit()
1634 if (ir->return_deref) { in visit()
1636 nir_local_variable_create(this->impl, ir->return_deref->type, in visit()
1642 foreach_two_lists(formal_node, &ir->callee->parameters, in visit()
1643 actual_node, &ir->actual_parameters) { in visit()
1664 if (ir->return_deref) in visit()
1665 nir_store_deref(&b, evaluate_deref(ir->return_deref), nir_load_deref(&b, ret_deref), ~0); in visit()
1669 nir_visitor::visit(ir_assignment *ir) in visit() argument
1671 unsigned num_components = ir->lhs->type->vector_elements; in visit()
1673 b.exact = ir->lhs->variable_referenced()->data.invariant || in visit()
1674 ir->lhs->variable_referenced()->data.precise; in visit()
1676 if ((ir->rhs->as_dereference() || ir->rhs->as_constant()) && in visit()
1677 (ir->write_mask == (1 << num_components) - 1 || ir->write_mask == 0)) { in visit()
1678 nir_deref_instr *lhs = evaluate_deref(ir->lhs); in visit()
1679 nir_deref_instr *rhs = evaluate_deref(ir->rhs); in visit()
1682 if (ir->condition) { in visit()
1683 nir_push_if(&b, evaluate_rvalue(ir->condition)); in visit()
1694 assert(ir->rhs->type->is_scalar() || ir->rhs->type->is_vector()); in visit()
1696 ir->lhs->accept(this); in visit()
1698 nir_ssa_def *src = evaluate_rvalue(ir->rhs); in visit()
1700 if (ir->write_mask != (1 << num_components) - 1 && ir->write_mask != 0) { in visit()
1701 /* GLSL IR will give us the input to the write-masked assignment in a in visit()
1709 swiz[i] = ir->write_mask & (1 << i) ? component++ : 0; in visit()
1715 if (ir->condition) { in visit()
1716 nir_push_if(&b, evaluate_rvalue(ir->condition)); in visit()
1717 nir_store_deref_with_access(&b, lhs_deref, src, ir->write_mask, in visit()
1721 nir_store_deref_with_access(&b, lhs_deref, src, ir->write_mask, in visit()
1780 nir_visitor::evaluate_rvalue(ir_rvalue* ir) in evaluate_rvalue() argument
1782 ir->accept(this); in evaluate_rvalue()
1783 if (ir->as_dereference() || ir->as_constant()) { in evaluate_rvalue()
1811 nir_visitor::visit(ir_expression *ir) in visit() argument
1814 switch (ir->operation) { in visit()
1818 ir_dereference *deref = ir->operands[0]->as_dereference(); in visit()
1824 swizzle = ir->operands[0]->as_swizzle(); in visit()
1834 switch (ir->operation) { in visit()
1864 intrin->src[1] = nir_src_for_ssa(evaluate_rvalue(ir->operands[1])); in visit()
1886 ir_dereference *deref = ir->operands[0]->as_dereference(); in visit()
1894 /* UBO loads should only have been lowered in GLSL IR for non-nir drivers, in visit()
1903 for (unsigned i = 0; i < ir->num_operands; i++) in visit()
1904 srcs[i] = evaluate_rvalue(ir->operands[i]); in visit()
1907 for (unsigned i = 0; i < ir->num_operands; i++) in visit()
1908 types[i] = ir->operands[i]->type->base_type; in visit()
1910 glsl_base_type out_type = ir->type->base_type; in visit()
1912 switch (ir->operation) { in visit()
2110 load->num_components = ir->type->vector_elements; in visit()
2111 load->src[0] = nir_src_for_ssa(evaluate_rvalue(ir->operands[0])); in visit()
2112 unsigned bit_size = glsl_get_bit_size(ir->type); in visit()
2113 add_instr(&load->instr, ir->type->vector_elements, bit_size); in visit()
2160 (ir->operands[0]->type->base_type == GLSL_TYPE_INT || in visit()
2161 ir->operands[1]->type->base_type == GLSL_TYPE_INT)) in visit()
2164 (ir->operands[0]->type->base_type == GLSL_TYPE_UINT || in visit()
2165 ir->operands[1]->type->base_type == GLSL_TYPE_UINT)) in visit()
2252 switch (ir->operands[0]->type->vector_elements) { in visit()
2261 switch (ir->operands[0]->type->vector_elements) { in visit()
2273 switch (ir->operands[0]->type->vector_elements) { in visit()
2282 switch (ir->operands[0]->type->vector_elements) { in visit()
2293 switch (ir->operands[0]->type->vector_elements) { in visit()
2303 for (unsigned i = 1; i < ir->operands[0]->type->vector_elements; i++) { in visit()
2326 result = ir->type->is_int_16_32() ? in visit()
2336 result = nir_vec(&b, srcs, ir->type->vector_elements); in visit()
2345 nir_visitor::visit(ir_swizzle *ir) in visit() argument
2347 unsigned swizzle[4] = { ir->mask.x, ir->mask.y, ir->mask.z, ir->mask.w }; in visit()
2348 result = nir_swizzle(&b, evaluate_rvalue(ir->val), swizzle, in visit()
2349 ir->type->vector_elements); in visit()
2353 nir_visitor::visit(ir_texture *ir) in visit() argument
2357 switch (ir->op) { in visit()
2365 op = (ir->op == ir_txb) ? nir_texop_txb : nir_texop_txl; in visit()
2376 if (ir->lod_info.lod != NULL) in visit()
2389 if (ir->lod_info.lod != NULL) in visit()
2424 if (ir->projector != NULL) in visit()
2426 if (ir->shadow_comparator != NULL) in visit()
2429 if (ir->offset != NULL && !ir->offset->type->is_array()) in visit()
2439 (glsl_sampler_dim) ir->sampler->type->sampler_dimensionality; in visit()
2440 instr->is_array = ir->sampler->type->sampler_array; in visit()
2441 instr->is_shadow = ir->sampler->type->sampler_shadow; in visit()
2443 instr->is_new_style_shadow = (ir->type->vector_elements == 1); in visit()
2444 switch (ir->type->base_type) { in visit()
2468 nir_deref_instr *sampler_deref = evaluate_deref(ir->sampler); in visit()
2487 if (ir->coordinate != NULL) { in visit()
2488 instr->coord_components = ir->coordinate->type->vector_elements; in visit()
2490 nir_src_for_ssa(evaluate_rvalue(ir->coordinate)); in visit()
2495 if (ir->projector != NULL) { in visit()
2497 nir_src_for_ssa(evaluate_rvalue(ir->projector)); in visit()
2502 if (ir->shadow_comparator != NULL) { in visit()
2504 nir_src_for_ssa(evaluate_rvalue(ir->shadow_comparator)); in visit()
2509 if (ir->offset != NULL) { in visit()
2510 if (ir->offset->type->is_array()) { in visit()
2511 for (int i = 0; i < ir->offset->type->array_size(); i++) { in visit()
2513 ir->offset->as_constant()->get_array_element(i); in visit()
2522 assert(ir->offset->type->is_vector() || ir->offset->type->is_scalar()); in visit()
2525 nir_src_for_ssa(evaluate_rvalue(ir->offset)); in visit()
2531 switch (ir->op) { in visit()
2534 nir_src_for_ssa(evaluate_rvalue(ir->lod_info.bias)); in visit()
2542 if (ir->lod_info.lod != NULL) { in visit()
2544 nir_src_for_ssa(evaluate_rvalue(ir->lod_info.lod)); in visit()
2552 nir_src_for_ssa(evaluate_rvalue(ir->lod_info.grad.dPdx)); in visit()
2556 nir_src_for_ssa(evaluate_rvalue(ir->lod_info.grad.dPdy)); in visit()
2563 nir_src_for_ssa(evaluate_rvalue(ir->lod_info.sample_index)); in visit()
2569 instr->component = ir->lod_info.component->as_constant()->value.u[0]; in visit()
2578 unsigned bit_size = glsl_get_bit_size(ir->type); in visit()
2583 nir_visitor::visit(ir_constant *ir) in visit() argument
2592 nir_local_variable_create(this->impl, ir->type, "const_temp"); in visit()
2594 var->constant_initializer = constant_copy(ir, var); in visit()
2600 nir_visitor::visit(ir_dereference_variable *ir) in visit() argument
2602 if (ir->variable_referenced()->data.mode == ir_var_function_out) { in visit()
2606 if (param == ir->variable_referenced()) { in visit()
2613 nir_var_function_temp, ir->type, 0); in visit()
2617 assert(ir->variable_referenced()->data.mode != ir_var_function_inout); in visit()
2620 _mesa_hash_table_search(this->var_table, ir->var); in visit()
2628 nir_visitor::visit(ir_dereference_record *ir) in visit() argument
2630 ir->record->accept(this); in visit()
2632 int field_index = ir->field_idx; in visit()
2639 nir_visitor::visit(ir_dereference_array *ir) in visit() argument
2641 nir_ssa_def *index = evaluate_rvalue(ir->array_index); in visit()
2643 ir->array->accept(this); in visit()
2693 v2.run(sh->ir); in glsl_float64_funcs_to_nir()
2694 visit_exec_list(sh->ir, &v1); in glsl_float64_funcs_to_nir()