101e04c3fSmrg# Copyright © 2017 Intel Corporation
201e04c3fSmrg
301e04c3fSmrg# Permission is hereby granted, free of charge, to any person obtaining a copy
401e04c3fSmrg# of this software and associated documentation files (the "Software"), to deal
501e04c3fSmrg# in the Software without restriction, including without limitation the rights
601e04c3fSmrg# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
701e04c3fSmrg# copies of the Software, and to permit persons to whom the Software is
801e04c3fSmrg# furnished to do so, subject to the following conditions:
901e04c3fSmrg
1001e04c3fSmrg# The above copyright notice and this permission notice shall be included in
1101e04c3fSmrg# all copies or substantial portions of the Software.
1201e04c3fSmrg
1301e04c3fSmrg# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1401e04c3fSmrg# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1501e04c3fSmrg# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1601e04c3fSmrg# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1701e04c3fSmrg# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1801e04c3fSmrg# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1901e04c3fSmrg# SOFTWARE.
2001e04c3fSmrg
2101e04c3fSmrgnir_depends = files('nir_opcodes.py', 'nir_intrinsics.py')
2201e04c3fSmrg
237ec681f3Smrgnir_algebraic_depends = files('nir_opcodes.py', 'nir_algebraic.py')
247ec681f3Smrg
2501e04c3fSmrgnir_builder_opcodes_h = custom_target(
2601e04c3fSmrg  'nir_builder_opcodes.h',
2701e04c3fSmrg  input : 'nir_builder_opcodes_h.py',
2801e04c3fSmrg  output : 'nir_builder_opcodes.h',
2901e04c3fSmrg  command : [prog_python, '@INPUT@'],
3001e04c3fSmrg  capture : true,
3101e04c3fSmrg  depend_files : nir_depends,
3201e04c3fSmrg)
3301e04c3fSmrg
3401e04c3fSmrgnir_constant_expressions_c = custom_target(
3501e04c3fSmrg  'nir_constant_expressions.c',
3601e04c3fSmrg  input : 'nir_constant_expressions.py',
3701e04c3fSmrg  output : 'nir_constant_expressions.c',
3801e04c3fSmrg  command : [prog_python, '@INPUT@'],
3901e04c3fSmrg  capture : true,
4001e04c3fSmrg  depend_files : nir_depends,
4101e04c3fSmrg)
4201e04c3fSmrg
4301e04c3fSmrgnir_opcodes_h = custom_target(
4401e04c3fSmrg  'nir_opcodes.h',
4501e04c3fSmrg  input : 'nir_opcodes_h.py',
4601e04c3fSmrg  output : 'nir_opcodes.h',
4701e04c3fSmrg  command : [prog_python, '@INPUT@'],
4801e04c3fSmrg  capture : true,
4901e04c3fSmrg  depend_files : nir_depends,
5001e04c3fSmrg)
5101e04c3fSmrg
5201e04c3fSmrgnir_opcodes_c = custom_target(
5301e04c3fSmrg  'nir_opcodes.c',
5401e04c3fSmrg  input : 'nir_opcodes_c.py',
5501e04c3fSmrg  output : 'nir_opcodes.c',
5601e04c3fSmrg  command : [prog_python, '@INPUT@'],
5701e04c3fSmrg  capture : true,
5801e04c3fSmrg  depend_files : nir_depends,
5901e04c3fSmrg)
6001e04c3fSmrg
6101e04c3fSmrgnir_opt_algebraic_c = custom_target(
6201e04c3fSmrg  'nir_opt_algebraic.c',
6301e04c3fSmrg  input : 'nir_opt_algebraic.py',
6401e04c3fSmrg  output : 'nir_opt_algebraic.c',
6501e04c3fSmrg  command : [prog_python, '@INPUT@'],
6601e04c3fSmrg  capture : true,
677ec681f3Smrg  depend_files : nir_algebraic_depends,
6801e04c3fSmrg)
6901e04c3fSmrg
7001e04c3fSmrgnir_intrinsics_h = custom_target(
7101e04c3fSmrg  'nir_intrinsics.h',
7201e04c3fSmrg  input : 'nir_intrinsics_h.py',
7301e04c3fSmrg  output : 'nir_intrinsics.h',
7401e04c3fSmrg  command : [prog_python, '@INPUT@', '--outdir', meson.current_build_dir()],
7501e04c3fSmrg  capture : false,
7601e04c3fSmrg  depend_files : files('nir_intrinsics.py'),
7701e04c3fSmrg)
7801e04c3fSmrg
797ec681f3Smrgnir_intrinsics_indices_h = custom_target(
807ec681f3Smrg  'nir_intrinsics_indices.h',
817ec681f3Smrg  input : 'nir_intrinsics_indices_h.py',
827ec681f3Smrg  output : 'nir_intrinsics_indices.h',
837ec681f3Smrg  command : [prog_python, '@INPUT@', '--outdir', meson.current_build_dir()],
847ec681f3Smrg  capture : false,
857ec681f3Smrg  depend_files : files('nir_intrinsics.py'),
867ec681f3Smrg)
877ec681f3Smrg
8801e04c3fSmrgnir_intrinsics_c = custom_target(
8901e04c3fSmrg  'nir_intrinsic.c',
9001e04c3fSmrg  input : 'nir_intrinsics_c.py',
9101e04c3fSmrg  output : 'nir_intrinsics.c',
9201e04c3fSmrg  command : [prog_python, '@INPUT@', '--outdir', meson.current_build_dir()],
9301e04c3fSmrg  capture: false,
9401e04c3fSmrg  depend_files : files('nir_intrinsics.py'),
9501e04c3fSmrg)
9601e04c3fSmrg
9701e04c3fSmrgfiles_libnir = files(
9801e04c3fSmrg  'nir.c',
9901e04c3fSmrg  'nir.h',
10001e04c3fSmrg  'nir_builder.h',
10101e04c3fSmrg  'nir_builtin_builder.c',
10201e04c3fSmrg  'nir_builtin_builder.h',
1037ec681f3Smrg  'nir_conversion_builder.h',
10401e04c3fSmrg  'nir_clone.c',
10501e04c3fSmrg  'nir_constant_expressions.h',
10601e04c3fSmrg  'nir_control_flow.c',
10701e04c3fSmrg  'nir_control_flow.h',
10801e04c3fSmrg  'nir_control_flow_private.h',
1097ec681f3Smrg  'nir_convert_ycbcr.c',
11001e04c3fSmrg  'nir_deref.c',
11101e04c3fSmrg  'nir_deref.h',
1127ec681f3Smrg  'nir_divergence_analysis.c',
11301e04c3fSmrg  'nir_dominance.c',
11401e04c3fSmrg  'nir_format_convert.h',
11501e04c3fSmrg  'nir_from_ssa.c',
11601e04c3fSmrg  'nir_gather_info.c',
1177e102996Smaya  'nir_gather_ssa_types.c',
11801e04c3fSmrg  'nir_gather_xfb_info.c',
11901e04c3fSmrg  'nir_gs_count_vertices.c',
12001e04c3fSmrg  'nir_inline_functions.c',
1217ec681f3Smrg  'nir_inline_uniforms.c',
12201e04c3fSmrg  'nir_instr_set.c',
12301e04c3fSmrg  'nir_instr_set.h',
12401e04c3fSmrg  'nir_linking_helpers.c',
12501e04c3fSmrg  'nir_liveness.c',
12601e04c3fSmrg  'nir_loop_analyze.c',
12701e04c3fSmrg  'nir_loop_analyze.h',
12801e04c3fSmrg  'nir_lower_alu.c',
12901e04c3fSmrg  'nir_lower_alu_to_scalar.c',
13001e04c3fSmrg  'nir_lower_alpha_test.c',
1317ec681f3Smrg  'nir_lower_amul.c',
1327e102996Smaya  'nir_lower_array_deref_of_vec.c',
13301e04c3fSmrg  'nir_lower_atomics_to_ssbo.c',
13401e04c3fSmrg  'nir_lower_bitmap.c',
1357ec681f3Smrg  'nir_lower_blend.c',
1367ec681f3Smrg  'nir_lower_bool_to_bitsize.c',
1377e102996Smaya  'nir_lower_bool_to_float.c',
1387e102996Smaya  'nir_lower_bool_to_int32.c',
13901e04c3fSmrg  'nir_lower_clamp_color_outputs.c',
14001e04c3fSmrg  'nir_lower_clip.c',
14101e04c3fSmrg  'nir_lower_clip_cull_distance_arrays.c',
1427ec681f3Smrg  'nir_lower_clip_disable.c',
1437ec681f3Smrg  'nir_lower_clip_halfz.c',
1447ec681f3Smrg  'nir_lower_convert_alu_types.c',
1457ec681f3Smrg  'nir_lower_variable_initializers.c',
1467ec681f3Smrg  'nir_lower_discard_or_demote.c',
14701e04c3fSmrg  'nir_lower_double_ops.c',
14801e04c3fSmrg  'nir_lower_drawpixels.c',
1497e102996Smaya  'nir_lower_fb_read.c',
1507ec681f3Smrg  'nir_lower_flatshade.c',
1517ec681f3Smrg  'nir_lower_flrp.c',
1527ec681f3Smrg  'nir_lower_fp16_conv.c',
1537e102996Smaya  'nir_lower_fragcoord_wtrans.c',
1547ec681f3Smrg  'nir_lower_fragcolor.c',
1557e102996Smaya  'nir_lower_frexp.c',
15601e04c3fSmrg  'nir_lower_global_vars_to_local.c',
1577ec681f3Smrg  'nir_lower_goto_ifs.c',
15801e04c3fSmrg  'nir_lower_gs_intrinsics.c',
15901e04c3fSmrg  'nir_lower_load_const_to_scalar.c',
16001e04c3fSmrg  'nir_lower_locals_to_regs.c',
16101e04c3fSmrg  'nir_lower_idiv.c',
1627ec681f3Smrg  'nir_lower_image.c',
16301e04c3fSmrg  'nir_lower_indirect_derefs.c',
1647ec681f3Smrg  'nir_lower_input_attachments.c',
16501e04c3fSmrg  'nir_lower_int64.c',
1667ec681f3Smrg  'nir_lower_interpolation.c',
1677ec681f3Smrg  'nir_lower_int_to_float.c',
16801e04c3fSmrg  'nir_lower_io.c',
16901e04c3fSmrg  'nir_lower_io_arrays_to_elements.c',
17001e04c3fSmrg  'nir_lower_io_to_temporaries.c',
17101e04c3fSmrg  'nir_lower_io_to_scalar.c',
1727e102996Smaya  'nir_lower_io_to_vector.c',
1737ec681f3Smrg  'nir_lower_is_helper_invocation.c',
1747ec681f3Smrg  'nir_lower_multiview.c',
1757ec681f3Smrg  'nir_lower_mediump.c',
1767ec681f3Smrg  'nir_lower_memcpy.c',
1777ec681f3Smrg  'nir_lower_memory_model.c',
1787e102996Smaya  'nir_lower_non_uniform_access.c',
17901e04c3fSmrg  'nir_lower_packing.c',
18001e04c3fSmrg  'nir_lower_passthrough_edgeflags.c',
18101e04c3fSmrg  'nir_lower_patch_vertices.c',
18201e04c3fSmrg  'nir_lower_phis_to_scalar.c',
1837ec681f3Smrg  'nir_lower_pntc_ytransform.c',
1847ec681f3Smrg  'nir_lower_point_size.c',
1857ec681f3Smrg  'nir_lower_point_size_mov.c',
1867ec681f3Smrg  'nir_lower_printf.c',
18701e04c3fSmrg  'nir_lower_regs_to_ssa.c',
1887ec681f3Smrg  'nir_lower_readonly_images_to_tex.c',
18901e04c3fSmrg  'nir_lower_returns.c',
1907ec681f3Smrg  'nir_lower_samplers.c',
1917e102996Smaya  'nir_lower_scratch.c',
1927ec681f3Smrg  'nir_lower_shader_calls.c',
1937ec681f3Smrg  'nir_lower_ssbo.c',
19401e04c3fSmrg  'nir_lower_subgroups.c',
19501e04c3fSmrg  'nir_lower_system_values.c',
19601e04c3fSmrg  'nir_lower_tex.c',
1977ec681f3Smrg  'nir_lower_texcoord_replace.c',
19801e04c3fSmrg  'nir_lower_to_source_mods.c',
19901e04c3fSmrg  'nir_lower_two_sided_color.c',
2007ec681f3Smrg  'nir_lower_undef_to_zero.c',
20101e04c3fSmrg  'nir_lower_vars_to_ssa.c',
20201e04c3fSmrg  'nir_lower_var_copies.c',
20301e04c3fSmrg  'nir_lower_vec_to_movs.c',
2047ec681f3Smrg  'nir_lower_vec3_to_vec4.c',
2057e102996Smaya  'nir_lower_viewport_transform.c',
20601e04c3fSmrg  'nir_lower_wpos_center.c',
20701e04c3fSmrg  'nir_lower_wpos_ytransform.c',
2087ec681f3Smrg  'nir_lower_wrmasks.c',
20901e04c3fSmrg  'nir_lower_bit_size.c',
2107ec681f3Smrg  'nir_lower_ubo_vec4.c',
2117e102996Smaya  'nir_lower_uniforms_to_ubo.c',
2127ec681f3Smrg  'nir_lower_sysvals_to_varyings.c',
21301e04c3fSmrg  'nir_metadata.c',
21401e04c3fSmrg  'nir_move_vec_src_uses_to_dest.c',
21501e04c3fSmrg  'nir_normalize_cubemap_coords.c',
2167ec681f3Smrg  'nir_opt_access.c',
2177ec681f3Smrg  'nir_opt_barriers.c',
2187e102996Smaya  'nir_opt_combine_stores.c',
2197e102996Smaya  'nir_opt_comparison_pre.c',
22001e04c3fSmrg  'nir_opt_conditional_discard.c',
22101e04c3fSmrg  'nir_opt_constant_folding.c',
22201e04c3fSmrg  'nir_opt_copy_prop_vars.c',
22301e04c3fSmrg  'nir_opt_copy_propagate.c',
22401e04c3fSmrg  'nir_opt_cse.c',
22501e04c3fSmrg  'nir_opt_dce.c',
22601e04c3fSmrg  'nir_opt_dead_cf.c',
22701e04c3fSmrg  'nir_opt_dead_write_vars.c',
22801e04c3fSmrg  'nir_opt_find_array_copies.c',
2297ec681f3Smrg  'nir_opt_fragdepth.c',
23001e04c3fSmrg  'nir_opt_gcm.c',
2317e102996Smaya  'nir_opt_idiv_const.c',
23201e04c3fSmrg  'nir_opt_if.c',
23301e04c3fSmrg  'nir_opt_intrinsics.c',
23401e04c3fSmrg  'nir_opt_large_constants.c',
2357ec681f3Smrg  'nir_opt_load_store_vectorize.c',
23601e04c3fSmrg  'nir_opt_loop_unroll.c',
2377ec681f3Smrg  'nir_opt_memcpy.c',
2387ec681f3Smrg  'nir_opt_move.c',
2397ec681f3Smrg  'nir_opt_move_discards_to_top.c',
2407ec681f3Smrg  'nir_opt_offsets.c',
24101e04c3fSmrg  'nir_opt_peephole_select.c',
2427ec681f3Smrg  'nir_opt_phi_precision.c',
2437ec681f3Smrg  'nir_opt_rematerialize_compares.c',
24401e04c3fSmrg  'nir_opt_remove_phis.c',
2457ec681f3Smrg  'nir_opt_shrink_vectors.c',
2467ec681f3Smrg  'nir_opt_sink.c',
24701e04c3fSmrg  'nir_opt_trivial_continues.c',
24801e04c3fSmrg  'nir_opt_undef.c',
2497ec681f3Smrg  'nir_opt_uniform_atomics.c',
2507ec681f3Smrg  'nir_opt_vectorize.c',
25101e04c3fSmrg  'nir_phi_builder.c',
25201e04c3fSmrg  'nir_phi_builder.h',
25301e04c3fSmrg  'nir_print.c',
25401e04c3fSmrg  'nir_propagate_invariant.c',
2557ec681f3Smrg  'nir_range_analysis.c',
2567ec681f3Smrg  'nir_range_analysis.h',
25701e04c3fSmrg  'nir_remove_dead_variables.c',
25801e04c3fSmrg  'nir_repair_ssa.c',
2597ec681f3Smrg  'nir_schedule.c',
2607ec681f3Smrg  'nir_schedule.h',
26101e04c3fSmrg  'nir_search.c',
26201e04c3fSmrg  'nir_search.h',
26301e04c3fSmrg  'nir_search_helpers.h',
26401e04c3fSmrg  'nir_serialize.c',
26501e04c3fSmrg  'nir_serialize.h',
26601e04c3fSmrg  'nir_split_per_member_structs.c',
26701e04c3fSmrg  'nir_split_var_copies.c',
26801e04c3fSmrg  'nir_split_vars.c',
26901e04c3fSmrg  'nir_sweep.c',
27001e04c3fSmrg  'nir_to_lcssa.c',
27101e04c3fSmrg  'nir_validate.c',
27201e04c3fSmrg  'nir_vla.h',
2737ec681f3Smrg  'nir_vulkan.h',
27401e04c3fSmrg  'nir_worklist.c',
27501e04c3fSmrg  'nir_worklist.h',
27601e04c3fSmrg  'nir_xfb_info.h',
27701e04c3fSmrg  '../spirv/GLSL.ext.AMD.h',
27801e04c3fSmrg  '../spirv/GLSL.std.450.h',
27901e04c3fSmrg  '../spirv/gl_spirv.c',
2807ec681f3Smrg  '../spirv/nir_load_libclc.c',
2817ec681f3Smrg  '../spirv/nir_lower_libclc.c',
28201e04c3fSmrg  '../spirv/nir_spirv.h',
2837e102996Smaya  '../spirv/OpenCL.std.h',
28401e04c3fSmrg  '../spirv/spirv.h',
28501e04c3fSmrg  '../spirv/spirv_info.h',
28601e04c3fSmrg  '../spirv/spirv_to_nir.c',
28701e04c3fSmrg  '../spirv/vtn_alu.c',
28801e04c3fSmrg  '../spirv/vtn_amd.c',
28901e04c3fSmrg  '../spirv/vtn_cfg.c',
29001e04c3fSmrg  '../spirv/vtn_glsl450.c',
2917e102996Smaya  '../spirv/vtn_opencl.c',
29201e04c3fSmrg  '../spirv/vtn_private.h',
29301e04c3fSmrg  '../spirv/vtn_subgroup.c',
29401e04c3fSmrg  '../spirv/vtn_variables.c',
29501e04c3fSmrg)
29601e04c3fSmrg
2977ec681f3Smrg_libnir_args = []
2987ec681f3Smrgif dep_clc.found()
2997ec681f3Smrg  _basedir = dep_clc.get_variable(pkgconfig : 'libexecdir')
3007ec681f3Smrg
3017ec681f3Smrg  _static_libclc = get_option('static-libclc')
3027ec681f3Smrg  if _static_libclc.length() > 0
3037ec681f3Smrg    if _static_libclc.contains('all')
3047ec681f3Smrg      _static_libclc = ['spirv', 'spirv64']
3057ec681f3Smrg    endif
3067ec681f3Smrg
3077ec681f3Smrg    prog_zstd = find_program('zstd', required : false)
3087ec681f3Smrg    _zstd_static_libclc = dep_zstd.found() and prog_zstd.found()
3097ec681f3Smrg    if _zstd_static_libclc
3107ec681f3Smrg      _libnir_args += '-DHAVE_STATIC_LIBCLC_ZSTD'
3117ec681f3Smrg    endif
3127ec681f3Smrg
3137ec681f3Smrg    foreach s : _static_libclc
3147ec681f3Smrg      _libnir_args += '-DHAVE_STATIC_LIBCLC_@0@'.format(s.to_upper())
3157ec681f3Smrg      f = '@0@-mesa3d-.spv'.format(s)
3167ec681f3Smrg      _libclc_file = _basedir / f
3177ec681f3Smrg
3187ec681f3Smrg      if _zstd_static_libclc
3197ec681f3Smrg        _libclc_file = custom_target(
3207ec681f3Smrg          '@0@.zstd'.format(f),
3217ec681f3Smrg          command : [prog_zstd, '-f', '@INPUT@', '-o', '@OUTPUT@'],
3227ec681f3Smrg          input : [_libclc_file],
3237ec681f3Smrg          output : '@0@.zstd'.format(f),
3247ec681f3Smrg        )
3257ec681f3Smrg      endif
3267ec681f3Smrg
3277ec681f3Smrg      files_libnir += custom_target(
3287ec681f3Smrg        '@0@.h'.format(f),
3297ec681f3Smrg        command : [
3307ec681f3Smrg          prog_python, files_xxd, '-b', '@INPUT@', '@OUTPUT@',
3317ec681f3Smrg          '-n', 'libclc_@0@_mesa3d_spv'.format(s),
3327ec681f3Smrg        ],
3337ec681f3Smrg        input : [_libclc_file],
3347ec681f3Smrg        output : '@0@.h'.format(f),
3357ec681f3Smrg        depend_files : files_xxd,
3367ec681f3Smrg      )
3377ec681f3Smrg    endforeach
3387ec681f3Smrg  else
3397ec681f3Smrg    _libnir_args += ['-DDYNAMIC_LIBCLC_PATH="@0@/"'.format(_basedir)]
3407ec681f3Smrg    if not cc.has_function('mmap')
3417ec681f3Smrg      error('mmap required for dynamic libCLC loading')
3427ec681f3Smrg    endif
3437ec681f3Smrg  endif
3447ec681f3Smrgendif
3457ec681f3Smrg
3467ec681f3Smrg_libnir = static_library(
34701e04c3fSmrg  'nir',
34801e04c3fSmrg  [files_libnir, spirv_info_c, nir_opt_algebraic_c, nir_opcodes_c,
34901e04c3fSmrg   nir_opcodes_h, nir_constant_expressions_c, nir_builder_opcodes_h,
3507ec681f3Smrg   vtn_gather_types_c, nir_intrinsics_c, nir_intrinsics_h, nir_intrinsics_indices_h, vtn_generator_ids_h],
3517ec681f3Smrg  include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_compiler, include_directories('../spirv')],
3527ec681f3Smrg  c_args : [c_msvc_compat_args, no_override_init_args, _libnir_args],
3537ec681f3Smrg  gnu_symbol_visibility : 'hidden',
3547ec681f3Smrg  dependencies : dep_valgrind,
35501e04c3fSmrg  link_with : libcompiler,
35601e04c3fSmrg  build_by_default : false,
35701e04c3fSmrg)
35801e04c3fSmrg
35901e04c3fSmrg# Headers-only dependency
36001e04c3fSmrgidep_nir_headers = declare_dependency(
3617ec681f3Smrg  sources : [nir_opcodes_h, nir_builder_opcodes_h, nir_intrinsics_h, nir_intrinsics_indices_h],
36201e04c3fSmrg  include_directories : include_directories('.'),
36301e04c3fSmrg)
36401e04c3fSmrg
36501e04c3fSmrg# Also link with nir
36601e04c3fSmrgidep_nir = declare_dependency(
3677ec681f3Smrg  dependencies : [idep_nir_headers, idep_mesautil],
3687ec681f3Smrg  link_with : _libnir,
36901e04c3fSmrg)
37001e04c3fSmrg
37101e04c3fSmrgif with_tests
3727ec681f3Smrg  test(
3737ec681f3Smrg    'nir_builder',
3747ec681f3Smrg    executable(
3757ec681f3Smrg      'nir_builder_test',
3767ec681f3Smrg      files('tests/builder_tests.cpp'),
3777ec681f3Smrg      cpp_args : [cpp_msvc_compat_args],
3787ec681f3Smrg      gnu_symbol_visibility : 'hidden',
3797ec681f3Smrg      include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
3807ec681f3Smrg      dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],
3817ec681f3Smrg    ),
3827ec681f3Smrg    suite : ['compiler', 'nir'],
3837ec681f3Smrg  )
3847ec681f3Smrg
38501e04c3fSmrg  test(
38601e04c3fSmrg    'nir_control_flow',
38701e04c3fSmrg    executable(
38801e04c3fSmrg      'nir_control_flow_test',
38901e04c3fSmrg      files('tests/control_flow_tests.cpp'),
3907ec681f3Smrg      cpp_args : [cpp_msvc_compat_args],
3917ec681f3Smrg      gnu_symbol_visibility : 'hidden',
3927ec681f3Smrg      include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
3937ec681f3Smrg      dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],
3947ec681f3Smrg    ),
3957ec681f3Smrg    suite : ['compiler', 'nir'],
3967ec681f3Smrg  )
3977ec681f3Smrg
3987ec681f3Smrg  test(
3997ec681f3Smrg    'nir_core',
4007ec681f3Smrg    executable(
4017ec681f3Smrg      'nir_core_test',
4027ec681f3Smrg      files('tests/core_tests.cpp'),
4037ec681f3Smrg      cpp_args : [cpp_msvc_compat_args],
4047ec681f3Smrg      gnu_symbol_visibility : 'hidden',
4057ec681f3Smrg      include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
4067ec681f3Smrg      dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],
4077ec681f3Smrg    ),
4087e102996Smaya    suite : ['compiler', 'nir'],
40901e04c3fSmrg  )
4107e102996Smaya
41101e04c3fSmrg  test(
41201e04c3fSmrg    'nir_vars',
41301e04c3fSmrg    executable(
41401e04c3fSmrg      'nir_vars_test',
41501e04c3fSmrg      files('tests/vars_tests.cpp'),
4167ec681f3Smrg      cpp_args : [cpp_msvc_compat_args],
4177ec681f3Smrg      gnu_symbol_visibility : 'hidden',
4187ec681f3Smrg      include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
4197ec681f3Smrg      dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],
4207e102996Smaya    ),
4217e102996Smaya    suite : ['compiler', 'nir'],
4227e102996Smaya  )
4237ec681f3Smrg
4247e102996Smaya  test(
4257e102996Smaya    'nir_algebraic_parser',
4267e102996Smaya    prog_python,
4277e102996Smaya    args : [
4287e102996Smaya      join_paths(meson.current_source_dir(), 'tests/algebraic_parser_test.py')
4297e102996Smaya    ],
4307e102996Smaya    suite : ['compiler', 'nir'],
4317e102996Smaya  )
4327e102996Smaya
4337e102996Smaya  test(
4347e102996Smaya    'negative_equal',
4357e102996Smaya    executable(
4367e102996Smaya      'negative_equal',
4377e102996Smaya      files('tests/negative_equal_tests.cpp'),
4387ec681f3Smrg      c_args : [c_msvc_compat_args, no_override_init_args],
4397ec681f3Smrg      gnu_symbol_visibility : 'hidden',
4407ec681f3Smrg      include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
4417ec681f3Smrg      dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],
4427ec681f3Smrg    ),
4437ec681f3Smrg    suite : ['compiler', 'nir'],
4447e102996Smaya  )
4457e102996Smaya
4467e102996Smaya  test(
4477e102996Smaya    'comparison_pre',
4487e102996Smaya    executable(
4497e102996Smaya      'comparison_pre',
4507e102996Smaya      files('tests/comparison_pre_tests.cpp'),
4517ec681f3Smrg      c_args : [c_msvc_compat_args, no_override_init_args],
4527ec681f3Smrg      gnu_symbol_visibility : 'hidden',
4537ec681f3Smrg      include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
4547ec681f3Smrg      dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],
4557ec681f3Smrg    ),
4567ec681f3Smrg    suite : ['compiler', 'nir'],
4577ec681f3Smrg  )
4587ec681f3Smrg
4597ec681f3Smrg  test(
4607ec681f3Smrg    'load_store_vectorizer',
4617ec681f3Smrg    executable(
4627ec681f3Smrg      'load_store_vectorizer',
4637ec681f3Smrg      files('tests/load_store_vectorizer_tests.cpp'),
4647ec681f3Smrg      cpp_args : [cpp_msvc_compat_args],
4657ec681f3Smrg      gnu_symbol_visibility : 'hidden',
4667ec681f3Smrg      include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
4677ec681f3Smrg      dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],
4687ec681f3Smrg    ),
4697ec681f3Smrg    suite : ['compiler', 'nir'],
4707ec681f3Smrg    should_fail : meson.get_cross_property('xfail', '').contains('load_store_vectorizer'),
4717ec681f3Smrg  )
4727ec681f3Smrg
4737ec681f3Smrg  test(
4747ec681f3Smrg    'nir_serialize_test',
4757ec681f3Smrg    executable(
4767ec681f3Smrg      'nir_serialize_test',
4777ec681f3Smrg      files('tests/serialize_tests.cpp'),
4787ec681f3Smrg      cpp_args : [cpp_msvc_compat_args],
4797ec681f3Smrg      gnu_symbol_visibility : 'hidden',
4807ec681f3Smrg      include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
4817ec681f3Smrg      dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],
4827ec681f3Smrg    ),
4837ec681f3Smrg    suite : ['compiler', 'nir'],
4847ec681f3Smrg  )
4857ec681f3Smrg
4867ec681f3Smrg  test(
4877ec681f3Smrg    'nir_opt_if',
4887ec681f3Smrg    executable(
4897ec681f3Smrg      'nir_opt_if_tests',
4907ec681f3Smrg      files('tests/opt_if_tests.cpp'),
4917ec681f3Smrg      cpp_args : [cpp_msvc_compat_args],
4927ec681f3Smrg      gnu_symbol_visibility : 'hidden',
4937ec681f3Smrg      include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
4947ec681f3Smrg      dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],
4957ec681f3Smrg    ),
4967ec681f3Smrg    suite : ['compiler', 'nir'],
4977ec681f3Smrg  )
4987ec681f3Smrg
4997ec681f3Smrg  test(
5007ec681f3Smrg    'nir_lower_returns',
5017ec681f3Smrg    executable(
5027ec681f3Smrg      'nir_lower_returns_tests',
5037ec681f3Smrg      files('tests/lower_returns_tests.cpp'),
5047ec681f3Smrg      cpp_args : [cpp_msvc_compat_args],
5057ec681f3Smrg      gnu_symbol_visibility : 'hidden',
5067ec681f3Smrg      include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
5077ec681f3Smrg      dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],
5087ec681f3Smrg    ),
5097ec681f3Smrg    suite : ['compiler', 'nir'],
5107ec681f3Smrg  )
5117ec681f3Smrg
5127ec681f3Smrg  test(
5137ec681f3Smrg    'ssa_def_bits_used',
5147ec681f3Smrg    executable(
5157ec681f3Smrg      'ssa_def_bits_used',
5167ec681f3Smrg      files('tests/ssa_def_bits_used_tests.cpp'),
5177ec681f3Smrg      c_args : [c_msvc_compat_args, no_override_init_args],
5187ec681f3Smrg      gnu_symbol_visibility : 'hidden',
5197ec681f3Smrg      include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
5207ec681f3Smrg      dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],
5217ec681f3Smrg    ),
5227ec681f3Smrg    suite : ['compiler', 'nir'],
5237ec681f3Smrg  )
5247ec681f3Smrg
5257ec681f3Smrg  test(
5267ec681f3Smrg    'algebraic',
5277ec681f3Smrg    executable(
5287ec681f3Smrg      'algebraic',
5297ec681f3Smrg      files('tests/algebraic_tests.cpp'),
5307ec681f3Smrg      c_args : [c_msvc_compat_args, no_override_init_args],
5317ec681f3Smrg      gnu_symbol_visibility : 'hidden',
5327ec681f3Smrg      include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
5337ec681f3Smrg      dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],
5347ec681f3Smrg    ),
5357ec681f3Smrg    suite : ['compiler', 'nir'],
53601e04c3fSmrg  )
53701e04c3fSmrgendif
538