[Mesa-dev] [PATCH 8/9] nir: move to compiler

Emil Velikov emil.l.velikov at gmail.com
Wed Nov 25 13:32:02 PST 2015


From: Emil Velikov <emil.velikov at collabora.com>

Signed-off-by: Emil Velikov <emil.velikov at collabora.com>
---
 Android.mk                                         |   1 +
 configure.ac                                       |   1 +
 src/Makefile.am                                    |   1 +
 src/{glsl => compiler}/nir/.gitignore              |   0
 src/compiler/nir/Android.gen.mk                    |  83 +++++++++++++++++
 src/compiler/nir/Android.mk                        |  52 +++++++++++
 src/compiler/nir/Makefile.am                       | 100 +++++++++++++++++++++
 src/compiler/nir/Makefile.sources                  |  71 +++++++++++++++
 src/{glsl => compiler}/nir/README                  |   0
 src/{glsl => compiler}/nir/glsl_to_nir.cpp         |   8 +-
 src/{glsl => compiler}/nir/glsl_to_nir.h           |   2 +-
 src/{glsl => compiler}/nir/nir.c                   |   0
 src/{glsl => compiler}/nir/nir.h                   |   2 +-
 src/{glsl => compiler}/nir/nir_algebraic.py        |   0
 src/{glsl => compiler}/nir/nir_array.h             |   0
 src/{glsl => compiler}/nir/nir_builder.h           |   0
 .../nir/nir_builder_opcodes_h.py                   |   0
 src/{glsl => compiler}/nir/nir_clone.c             |   0
 .../nir/nir_constant_expressions.h                 |   0
 .../nir/nir_constant_expressions.py                |   0
 src/{glsl => compiler}/nir/nir_control_flow.c      |   0
 src/{glsl => compiler}/nir/nir_control_flow.h      |   0
 .../nir/nir_control_flow_private.h                 |   0
 src/{glsl => compiler}/nir/nir_dominance.c         |   0
 src/{glsl => compiler}/nir/nir_from_ssa.c          |   0
 src/{glsl => compiler}/nir/nir_gs_count_vertices.c |   0
 src/{glsl => compiler}/nir/nir_instr_set.c         |   0
 src/{glsl => compiler}/nir/nir_instr_set.h         |   0
 src/{glsl => compiler}/nir/nir_intrinsics.c        |   0
 src/{glsl => compiler}/nir/nir_intrinsics.h        |   0
 src/{glsl => compiler}/nir/nir_liveness.c          |   0
 .../nir/nir_lower_alu_to_scalar.c                  |   0
 src/{glsl => compiler}/nir/nir_lower_atomics.c     |   6 +-
 src/{glsl => compiler}/nir/nir_lower_clip.c        |   0
 .../nir/nir_lower_global_vars_to_local.c           |   0
 .../nir/nir_lower_gs_intrinsics.c                  |   0
 src/{glsl => compiler}/nir/nir_lower_idiv.c        |   0
 src/{glsl => compiler}/nir/nir_lower_io.c          |   0
 .../nir/nir_lower_load_const_to_scalar.c           |   0
 .../nir/nir_lower_locals_to_regs.c                 |   0
 .../nir/nir_lower_outputs_to_temporaries.c         |   0
 .../nir/nir_lower_phis_to_scalar.c                 |   0
 src/{glsl => compiler}/nir/nir_lower_samplers.c    |  10 +--
 .../nir/nir_lower_system_values.c                  |   0
 src/{glsl => compiler}/nir/nir_lower_tex.c         |   0
 .../nir/nir_lower_to_source_mods.c                 |   0
 .../nir/nir_lower_two_sided_color.c                |   0
 src/{glsl => compiler}/nir/nir_lower_var_copies.c  |   0
 src/{glsl => compiler}/nir/nir_lower_vars_to_ssa.c |   0
 src/{glsl => compiler}/nir/nir_lower_vec_to_movs.c |   0
 src/{glsl => compiler}/nir/nir_metadata.c          |   0
 .../nir/nir_move_vec_src_uses_to_dest.c            |   0
 .../nir/nir_normalize_cubemap_coords.c             |   0
 src/{glsl => compiler}/nir/nir_opcodes.py          |   0
 src/{glsl => compiler}/nir/nir_opcodes_c.py        |   0
 src/{glsl => compiler}/nir/nir_opcodes_h.py        |   0
 src/{glsl => compiler}/nir/nir_opt_algebraic.py    |   0
 .../nir/nir_opt_constant_folding.c                 |   0
 .../nir/nir_opt_copy_propagate.c                   |   0
 src/{glsl => compiler}/nir/nir_opt_cse.c           |   0
 src/{glsl => compiler}/nir/nir_opt_dce.c           |   0
 src/{glsl => compiler}/nir/nir_opt_dead_cf.c       |   0
 src/{glsl => compiler}/nir/nir_opt_gcm.c           |   0
 .../nir/nir_opt_global_to_local.c                  |   0
 .../nir/nir_opt_peephole_select.c                  |   0
 src/{glsl => compiler}/nir/nir_opt_remove_phis.c   |   0
 src/{glsl => compiler}/nir/nir_opt_undef.c         |   0
 src/{glsl => compiler}/nir/nir_print.c             |   0
 .../nir/nir_remove_dead_variables.c                |   0
 src/{glsl => compiler}/nir/nir_search.c            |   0
 src/{glsl => compiler}/nir/nir_search.h            |   0
 src/{glsl => compiler}/nir/nir_split_var_copies.c  |   0
 src/{glsl => compiler}/nir/nir_sweep.c             |   0
 src/{glsl => compiler}/nir/nir_to_ssa.c            |   0
 src/{glsl => compiler}/nir/nir_validate.c          |   0
 src/{glsl => compiler}/nir/nir_vla.h               |   0
 src/{glsl => compiler}/nir/nir_worklist.c          |   0
 src/{glsl => compiler}/nir/nir_worklist.h          |   0
 .../nir/tests/control_flow_tests.cpp               |   0
 src/gallium/auxiliary/Makefile.am                  |   2 +-
 src/gallium/auxiliary/nir/tgsi_to_nir.c            |   6 +-
 src/gallium/auxiliary/nir/tgsi_to_nir.h            |   2 +-
 src/gallium/drivers/freedreno/Makefile.am          |   4 +-
 src/gallium/drivers/freedreno/ir3/ir3_nir.h        |   2 +-
 .../drivers/freedreno/ir3/ir3_nir_lower_if_else.c  |   4 +-
 src/gallium/drivers/vc4/Makefile.am                |   2 +-
 src/gallium/drivers/vc4/vc4_nir_lower_blend.c      |   5 +-
 src/gallium/drivers/vc4/vc4_nir_lower_io.c         |   5 +-
 src/gallium/drivers/vc4/vc4_program.c              |   5 +-
 src/gallium/drivers/vc4/vc4_qir.h                  |   2 +-
 src/gallium/targets/pipe-loader/Makefile.am        |   2 +-
 src/gallium/targets/xa/Makefile.am                 |   2 +-
 src/glsl/Android.gen.mk                            |  56 +-----------
 src/glsl/Android.mk                                |   5 +-
 src/glsl/Makefile.am                               |  62 +------------
 src/glsl/Makefile.sources                          |  71 ---------------
 src/glsl/ir_hierarchical_visitor.h                 |   2 +
 src/glsl/ir_visitor.h                              |   2 +
 src/mesa/Android.libmesa_dricore.mk                |   1 -
 src/mesa/Android.libmesa_glsl_utils.mk             |   2 -
 src/mesa/Android.libmesa_st_mesa.mk                |   1 -
 src/mesa/Makefile.sources                          |   2 -
 src/mesa/drivers/dri/i965/Makefile.am              |   3 +-
 src/mesa/drivers/dri/i965/brw_fs.h                 |   2 +-
 src/mesa/drivers/dri/i965/brw_nir.c                |   2 +-
 src/mesa/drivers/dri/i965/brw_nir.h                |   2 +-
 src/mesa/drivers/dri/i965/brw_vec4.h               |   3 +-
 src/mesa/drivers/dri/i965/intel_asm_annotation.c   |   2 +-
 src/mesa/drivers/dri/i965/intel_screen.c           |   2 +-
 src/mesa/program/Android.mk                        |   1 -
 src/mesa/program/prog_to_nir.c                     |   4 +-
 111 files changed, 367 insertions(+), 238 deletions(-)
 rename src/{glsl => compiler}/nir/.gitignore (100%)
 create mode 100644 src/compiler/nir/Android.gen.mk
 create mode 100644 src/compiler/nir/Android.mk
 create mode 100644 src/compiler/nir/Makefile.am
 create mode 100644 src/compiler/nir/Makefile.sources
 rename src/{glsl => compiler}/nir/README (100%)
 rename src/{glsl => compiler}/nir/glsl_to_nir.cpp (99%)
 rename src/{glsl => compiler}/nir/glsl_to_nir.h (97%)
 rename src/{glsl => compiler}/nir/nir.c (100%)
 rename src/{glsl => compiler}/nir/nir.h (99%)
 rename src/{glsl => compiler}/nir/nir_algebraic.py (100%)
 rename src/{glsl => compiler}/nir/nir_array.h (100%)
 rename src/{glsl => compiler}/nir/nir_builder.h (100%)
 rename src/{glsl => compiler}/nir/nir_builder_opcodes_h.py (100%)
 rename src/{glsl => compiler}/nir/nir_clone.c (100%)
 rename src/{glsl => compiler}/nir/nir_constant_expressions.h (100%)
 rename src/{glsl => compiler}/nir/nir_constant_expressions.py (100%)
 rename src/{glsl => compiler}/nir/nir_control_flow.c (100%)
 rename src/{glsl => compiler}/nir/nir_control_flow.h (100%)
 rename src/{glsl => compiler}/nir/nir_control_flow_private.h (100%)
 rename src/{glsl => compiler}/nir/nir_dominance.c (100%)
 rename src/{glsl => compiler}/nir/nir_from_ssa.c (100%)
 rename src/{glsl => compiler}/nir/nir_gs_count_vertices.c (100%)
 rename src/{glsl => compiler}/nir/nir_instr_set.c (100%)
 rename src/{glsl => compiler}/nir/nir_instr_set.h (100%)
 rename src/{glsl => compiler}/nir/nir_intrinsics.c (100%)
 rename src/{glsl => compiler}/nir/nir_intrinsics.h (100%)
 rename src/{glsl => compiler}/nir/nir_liveness.c (100%)
 rename src/{glsl => compiler}/nir/nir_lower_alu_to_scalar.c (100%)
 rename src/{glsl => compiler}/nir/nir_lower_atomics.c (99%)
 rename src/{glsl => compiler}/nir/nir_lower_clip.c (100%)
 rename src/{glsl => compiler}/nir/nir_lower_global_vars_to_local.c (100%)
 rename src/{glsl => compiler}/nir/nir_lower_gs_intrinsics.c (100%)
 rename src/{glsl => compiler}/nir/nir_lower_idiv.c (100%)
 rename src/{glsl => compiler}/nir/nir_lower_io.c (100%)
 rename src/{glsl => compiler}/nir/nir_lower_load_const_to_scalar.c (100%)
 rename src/{glsl => compiler}/nir/nir_lower_locals_to_regs.c (100%)
 rename src/{glsl => compiler}/nir/nir_lower_outputs_to_temporaries.c (100%)
 rename src/{glsl => compiler}/nir/nir_lower_phis_to_scalar.c (100%)
 rename src/{glsl => compiler}/nir/nir_lower_samplers.c (99%)
 rename src/{glsl => compiler}/nir/nir_lower_system_values.c (100%)
 rename src/{glsl => compiler}/nir/nir_lower_tex.c (100%)
 rename src/{glsl => compiler}/nir/nir_lower_to_source_mods.c (100%)
 rename src/{glsl => compiler}/nir/nir_lower_two_sided_color.c (100%)
 rename src/{glsl => compiler}/nir/nir_lower_var_copies.c (100%)
 rename src/{glsl => compiler}/nir/nir_lower_vars_to_ssa.c (100%)
 rename src/{glsl => compiler}/nir/nir_lower_vec_to_movs.c (100%)
 rename src/{glsl => compiler}/nir/nir_metadata.c (100%)
 rename src/{glsl => compiler}/nir/nir_move_vec_src_uses_to_dest.c (100%)
 rename src/{glsl => compiler}/nir/nir_normalize_cubemap_coords.c (100%)
 rename src/{glsl => compiler}/nir/nir_opcodes.py (100%)
 rename src/{glsl => compiler}/nir/nir_opcodes_c.py (100%)
 rename src/{glsl => compiler}/nir/nir_opcodes_h.py (100%)
 rename src/{glsl => compiler}/nir/nir_opt_algebraic.py (100%)
 rename src/{glsl => compiler}/nir/nir_opt_constant_folding.c (100%)
 rename src/{glsl => compiler}/nir/nir_opt_copy_propagate.c (100%)
 rename src/{glsl => compiler}/nir/nir_opt_cse.c (100%)
 rename src/{glsl => compiler}/nir/nir_opt_dce.c (100%)
 rename src/{glsl => compiler}/nir/nir_opt_dead_cf.c (100%)
 rename src/{glsl => compiler}/nir/nir_opt_gcm.c (100%)
 rename src/{glsl => compiler}/nir/nir_opt_global_to_local.c (100%)
 rename src/{glsl => compiler}/nir/nir_opt_peephole_select.c (100%)
 rename src/{glsl => compiler}/nir/nir_opt_remove_phis.c (100%)
 rename src/{glsl => compiler}/nir/nir_opt_undef.c (100%)
 rename src/{glsl => compiler}/nir/nir_print.c (100%)
 rename src/{glsl => compiler}/nir/nir_remove_dead_variables.c (100%)
 rename src/{glsl => compiler}/nir/nir_search.c (100%)
 rename src/{glsl => compiler}/nir/nir_search.h (100%)
 rename src/{glsl => compiler}/nir/nir_split_var_copies.c (100%)
 rename src/{glsl => compiler}/nir/nir_sweep.c (100%)
 rename src/{glsl => compiler}/nir/nir_to_ssa.c (100%)
 rename src/{glsl => compiler}/nir/nir_validate.c (100%)
 rename src/{glsl => compiler}/nir/nir_vla.h (100%)
 rename src/{glsl => compiler}/nir/nir_worklist.c (100%)
 rename src/{glsl => compiler}/nir/nir_worklist.h (100%)
 rename src/{glsl => compiler}/nir/tests/control_flow_tests.cpp (100%)

diff --git a/Android.mk b/Android.mk
index 9b140a7..9b0d7bf 100644
--- a/Android.mk
+++ b/Android.mk
@@ -87,6 +87,7 @@ SUBDIRS := \
 	src/loader \
 	src/mapi \
 	src/compiler \
+	src/compiler/nir \
 	src/glsl \
 	src/mesa \
 	src/util \
diff --git a/configure.ac b/configure.ac
index fcffc19..266d9b6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2347,6 +2347,7 @@ dnl Substitute the config
 AC_CONFIG_FILES([Makefile
 		src/Makefile
 		src/compiler/Makefile
+		src/compiler/nir/Makefile
 		src/egl/Makefile
 		src/egl/main/egl.pc
 		src/egl/wayland/wayland-drm/Makefile
diff --git a/src/Makefile.am b/src/Makefile.am
index 6357d10..c7f274a 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -23,6 +23,7 @@ SUBDIRS = . gtest util mapi/glapi/gen mapi
 
 # XXX: conditionally include
 SUBDIRS += compiler
+SUBDIRS += compiler/nir
 
 if NEED_OPENGL_COMMON
 SUBDIRS += glsl mesa
diff --git a/src/glsl/nir/.gitignore b/src/compiler/nir/.gitignore
similarity index 100%
rename from src/glsl/nir/.gitignore
rename to src/compiler/nir/.gitignore
diff --git a/src/compiler/nir/Android.gen.mk b/src/compiler/nir/Android.gen.mk
new file mode 100644
index 0000000..b229776
--- /dev/null
+++ b/src/compiler/nir/Android.gen.mk
@@ -0,0 +1,83 @@
+# Mesa 3-D graphics library
+#
+# Copyright (C) 2010-2011 Chia-I Wu <olvaffe at gmail.com>
+# Copyright (C) 2010-2011 LunarG Inc.
+# Copyright (C) 2015 Intel Corporation
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+
+ifeq ($(LOCAL_MODULE_CLASS),)
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+endif
+
+intermediates := $(call local-generated-sources-dir)
+
+LOCAL_SRC_FILES := $(LOCAL_SRC_FILES)
+
+LOCAL_EXPORT_C_INCLUDE_DIRS += $(intermediates)
+
+LOCAL_GENERATED_SOURCES += $(addprefix $(intermediates)/, \
+	$(NIR_GENERATED_FILES))
+
+nir_builder_opcodes_gen := $(LOCAL_PATH)/nir_builder_opcodes_h.py
+nir_builder_opcodes_deps := \
+	$(LOCAL_PATH)/nir_opcodes.py \
+	$(LOCAL_PATH)/nir_builder_opcodes_h.py
+
+$(intermediates)/nir_builder_opcodes.h: $(nir_builder_opcodes_deps)
+	@mkdir -p $(dir $@)
+	$(hide) $(MESA_PYTHON2) $(nir_builder_opcodes_gen) $< > $@
+
+nir_constant_expressions_gen := $(LOCAL_PATH)/nir_constant_expressions.py
+nir_constant_expressions_deps := \
+	$(LOCAL_PATH)/nir_opcodes.py \
+	$(LOCAL_PATH)/nir_constant_expressions.py
+
+$(intermediates)/nir_constant_expressions.c: $(nir_constant_expressions_deps)
+	@mkdir -p $(dir $@)
+	$(hide) $(MESA_PYTHON2) $(nir_constant_expressions_gen) $< > $@
+
+nir_opcodes_h_gen := $(LOCAL_PATH)/nir_opcodes_h.py
+nir_opcodes_h_deps := \
+	$(LOCAL_PATH)/nir_opcodes.py \
+	$(LOCAL_PATH)/nir_opcodes_h.py
+
+$(intermediates)/nir_opcodes.h: $(nir_opcodes_h_deps)
+	@mkdir -p $(dir $@)
+	$(hide) $(MESA_PYTHON2) $(nir_opcodes_h_gen) $< > $@
+
+$(LOCAL_PATH)/nir.h: $(intermediates)/nir_opcodes.h
+
+nir_opcodes_c_gen := $(LOCAL_PATH)/nir_opcodes_c.py
+nir_opcodes_c_deps := \
+	$(LOCAL_PATH)/nir_opcodes.py \
+	$(LOCAL_PATH)/nir_opcodes_c.py
+
+$(intermediates)/nir_opcodes.c: $(nir_opcodes_c_deps)
+	@mkdir -p $(dir $@)
+	$(hide) $(MESA_PYTHON2) $(nir_opcodes_c_gen) $< > $@
+
+nir_opt_algebraic_gen := $(LOCAL_PATH)/nir_opt_algebraic.py
+nir_opt_algebraic_deps := \
+	$(LOCAL_PATH)/nir_opt_algebraic.py \
+	$(LOCAL_PATH)/nir_algebraic.py
+
+$(intermediates)/nir_opt_algebraic.c: $(nir_opt_algebraic_deps)
+	@mkdir -p $(dir $@)
+	$(hide) $(MESA_PYTHON2) $(nir_opt_algebraic_gen) $< > $@
diff --git a/src/compiler/nir/Android.mk b/src/compiler/nir/Android.mk
new file mode 100644
index 0000000..e5f8046
--- /dev/null
+++ b/src/compiler/nir/Android.mk
@@ -0,0 +1,52 @@
+# Mesa 3-D graphics library
+#
+# Copyright (C) 2010-2011 Chia-I Wu <olvaffe at gmail.com>
+# Copyright (C) 2010-2011 LunarG Inc.
+# Copyright (C) 2015 Intel Corporation
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+
+# Android.mk for nir
+
+LOCAL_PATH := $(call my-dir)
+
+include $(LOCAL_PATH)/Makefile.sources
+
+# ---------------------------------------
+# Build libmesa_nir
+# ---------------------------------------
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+	$(NIR_FILES)
+
+LOCAL_C_INCLUDES := \
+	$(MESA_TOP)/src/mapi \
+	$(MESA_TOP)/src/mesa \
+	$(MESA_TOP)/src/gallium/include \
+	$(MESA_TOP)/src/gallium/auxiliary
+
+LOCAL_STATIC_LIBRARIES := libmesa_compiler
+
+LOCAL_MODULE := libmesa_nir
+
+include $(LOCAL_PATH)/Android.gen.mk
+include $(MESA_COMMON_MK)
+include $(BUILD_STATIC_LIBRARY)
diff --git a/src/compiler/nir/Makefile.am b/src/compiler/nir/Makefile.am
new file mode 100644
index 0000000..fbcbf08
--- /dev/null
+++ b/src/compiler/nir/Makefile.am
@@ -0,0 +1,100 @@
+# Copyright © 2012 Jon TURNEY
+# Copyright (C) 2015 Intel Corporation
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+
+include Makefile.sources
+
+AM_CPPFLAGS = \
+	-I$(top_srcdir)/include \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/mapi \
+	-I$(top_srcdir)/src/mesa/ \
+	-I$(top_srcdir)/src/gallium/include \
+	-I$(top_srcdir)/src/gallium/auxiliary \
+	-I$(top_srcdir)/src/gtest/include \
+	$(DEFINES)
+
+AM_CFLAGS = \
+	$(VISIBILITY_CFLAGS) \
+	$(MSVC2013_COMPAT_CFLAGS)
+
+AM_CXXFLAGS = \
+	$(VISIBILITY_CXXFLAGS) \
+	$(MSVC2013_COMPAT_CXXFLAGS)
+
+noinst_LTLIBRARIES = libnir.la
+
+libnir_la_SOURCES = \
+	$(NIR_FILES) \
+	$(NIR_GENERATED_FILES)
+
+libnir_la_LIBADD = $(top_builddir)/src/compiler/libcompiler.la
+
+
+check_PROGRAMS = tests/control_flow_tests
+TESTS = $(check_PROGRAMS)
+
+tests_control_flow_tests_SOURCES = tests/control_flow_tests.cpp
+tests_control_flow_tests_CFLAGS = $(PTHREAD_CFLAGS)
+tests_control_flow_tests_LDADD = \
+	libnir.la \
+	$(top_builddir)/src/gtest/libgtest.la \
+	$(top_builddir)/src/util/libmesautil.la \
+	$(PTHREAD_LIBS)
+
+
+BUILT_SOURCES = $(NIR_GENERATED_FILES)
+CLEANFILES = $(BUILT_SOURCES)
+
+
+MKDIR_GEN = $(AM_V_at)$(MKDIR_P) $(@D)
+PYTHON_GEN = $(AM_V_GEN)$(PYTHON2) $(PYTHON_FLAGS)
+
+nir_builder_opcodes.h: nir_opcodes.py nir_builder_opcodes_h.py
+	$(MKDIR_GEN)
+	$(PYTHON_GEN) $(srcdir)/nir_builder_opcodes_h.py > $@
+
+nir_constant_expressions.c: nir_opcodes.py nir_constant_expressions.py
+	$(MKDIR_GEN)
+	$(PYTHON_GEN) $(srcdir)/nir_constant_expressions.py > $@
+
+nir_opcodes.h: nir_opcodes.py nir_opcodes_h.py
+	$(MKDIR_GEN)
+	$(PYTHON_GEN) $(srcdir)/nir_opcodes_h.py > $@
+
+nir_opcodes.c: nir_opcodes.py nir_opcodes_c.py
+	$(MKDIR_GEN)
+	$(PYTHON_GEN) $(srcdir)/nir_opcodes_c.py > $@
+
+nir_opt_algebraic.c: nir_opt_algebraic.py nir_algebraic.py
+	$(MKDIR_GEN)
+	$(PYTHON_GEN) $(srcdir)/nir_opt_algebraic.py > $@
+
+
+EXTRA_DIST = \
+	nir_algebraic.py \
+	nir_builder_opcodes_h.py \
+	nir_constant_expressions.py \
+	nir_opcodes.py \
+	nir_opcodes_c.py \
+	nir_opcodes_h.py \
+	nir_opt_algebraic.py \
+	tests
diff --git a/src/compiler/nir/Makefile.sources b/src/compiler/nir/Makefile.sources
new file mode 100644
index 0000000..0755a10
--- /dev/null
+++ b/src/compiler/nir/Makefile.sources
@@ -0,0 +1,71 @@
+NIR_GENERATED_FILES = \
+	nir_builder_opcodes.h \
+	nir_constant_expressions.c \
+	nir_opcodes.c \
+	nir_opcodes.h \
+	nir_opt_algebraic.c
+
+NIR_FILES = \
+	glsl_to_nir.cpp \
+	glsl_to_nir.h \
+	nir.c \
+	nir.h \
+	nir_array.h \
+	nir_builder.h \
+	nir_clone.c \
+	nir_constant_expressions.h \
+	nir_control_flow.c \
+	nir_control_flow.h \
+	nir_control_flow_private.h \
+	nir_dominance.c \
+	nir_from_ssa.c \
+	nir_gs_count_vertices.c \
+	nir_intrinsics.c \
+	nir_intrinsics.h \
+	nir_instr_set.c \
+	nir_instr_set.h \
+	nir_liveness.c \
+	nir_lower_alu_to_scalar.c \
+	nir_lower_atomics.c \
+	nir_lower_clip.c \
+	nir_lower_global_vars_to_local.c \
+	nir_lower_gs_intrinsics.c \
+	nir_lower_load_const_to_scalar.c \
+	nir_lower_locals_to_regs.c \
+	nir_lower_idiv.c \
+	nir_lower_io.c \
+	nir_lower_outputs_to_temporaries.c \
+	nir_lower_phis_to_scalar.c \
+	nir_lower_samplers.c \
+	nir_lower_system_values.c \
+	nir_lower_tex.c \
+	nir_lower_to_source_mods.c \
+	nir_lower_two_sided_color.c \
+	nir_lower_vars_to_ssa.c \
+	nir_lower_var_copies.c \
+	nir_lower_vec_to_movs.c \
+	nir_metadata.c \
+	nir_move_vec_src_uses_to_dest.c \
+	nir_normalize_cubemap_coords.c \
+	nir_opt_constant_folding.c \
+	nir_opt_copy_propagate.c \
+	nir_opt_cse.c \
+	nir_opt_dce.c \
+	nir_opt_dead_cf.c \
+	nir_opt_gcm.c \
+	nir_opt_global_to_local.c \
+	nir_opt_peephole_select.c \
+	nir_opt_remove_phis.c \
+	nir_opt_undef.c \
+	nir_print.c \
+	nir_remove_dead_variables.c \
+	nir_search.c \
+	nir_search.h \
+	nir_split_var_copies.c \
+	nir_sweep.c \
+	nir_to_ssa.c \
+	nir_validate.c \
+	nir_vla.h \
+	nir_worklist.c \
+	nir_worklist.h
+
diff --git a/src/glsl/nir/README b/src/compiler/nir/README
similarity index 100%
rename from src/glsl/nir/README
rename to src/compiler/nir/README
diff --git a/src/glsl/nir/glsl_to_nir.cpp b/src/compiler/nir/glsl_to_nir.cpp
similarity index 99%
rename from src/glsl/nir/glsl_to_nir.cpp
rename to src/compiler/nir/glsl_to_nir.cpp
index 45d045c..f5c5d50 100644
--- a/src/glsl/nir/glsl_to_nir.cpp
+++ b/src/compiler/nir/glsl_to_nir.cpp
@@ -25,13 +25,13 @@
  *
  */
 
+#include "glsl/ir_visitor.h"
+#include "glsl/ir_hierarchical_visitor.h"
+#include "glsl/ir.h"
 #include "glsl_to_nir.h"
+#include "main/imports.h"
 #include "nir_control_flow.h"
 #include "nir_builder.h"
-#include "ir_visitor.h"
-#include "ir_hierarchical_visitor.h"
-#include "ir.h"
-#include "main/imports.h"
 
 /*
  * pass to lower GLSL IR to NIR
diff --git a/src/glsl/nir/glsl_to_nir.h b/src/compiler/nir/glsl_to_nir.h
similarity index 97%
rename from src/glsl/nir/glsl_to_nir.h
rename to src/compiler/nir/glsl_to_nir.h
index 29badcd..c900d11 100644
--- a/src/glsl/nir/glsl_to_nir.h
+++ b/src/compiler/nir/glsl_to_nir.h
@@ -25,8 +25,8 @@
  *
  */
 
+#include "glsl/glsl_parser_extras.h"
 #include "nir.h"
-#include "../glsl_parser_extras.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/src/glsl/nir/nir.c b/src/compiler/nir/nir.c
similarity index 100%
rename from src/glsl/nir/nir.c
rename to src/compiler/nir/nir.c
diff --git a/src/glsl/nir/nir.h b/src/compiler/nir/nir.h
similarity index 99%
rename from src/glsl/nir/nir.h
rename to src/compiler/nir/nir.h
index 7e99a7b..2122144 100644
--- a/src/glsl/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -28,7 +28,7 @@
 #pragma once
 
 #include "util/hash_table.h"
-#include "../list.h"
+#include "glsl/list.h"
 #include "GL/gl.h" /* GLenum */
 #include "util/list.h"
 #include "util/ralloc.h"
diff --git a/src/glsl/nir/nir_algebraic.py b/src/compiler/nir/nir_algebraic.py
similarity index 100%
rename from src/glsl/nir/nir_algebraic.py
rename to src/compiler/nir/nir_algebraic.py
diff --git a/src/glsl/nir/nir_array.h b/src/compiler/nir/nir_array.h
similarity index 100%
rename from src/glsl/nir/nir_array.h
rename to src/compiler/nir/nir_array.h
diff --git a/src/glsl/nir/nir_builder.h b/src/compiler/nir/nir_builder.h
similarity index 100%
rename from src/glsl/nir/nir_builder.h
rename to src/compiler/nir/nir_builder.h
diff --git a/src/glsl/nir/nir_builder_opcodes_h.py b/src/compiler/nir/nir_builder_opcodes_h.py
similarity index 100%
rename from src/glsl/nir/nir_builder_opcodes_h.py
rename to src/compiler/nir/nir_builder_opcodes_h.py
diff --git a/src/glsl/nir/nir_clone.c b/src/compiler/nir/nir_clone.c
similarity index 100%
rename from src/glsl/nir/nir_clone.c
rename to src/compiler/nir/nir_clone.c
diff --git a/src/glsl/nir/nir_constant_expressions.h b/src/compiler/nir/nir_constant_expressions.h
similarity index 100%
rename from src/glsl/nir/nir_constant_expressions.h
rename to src/compiler/nir/nir_constant_expressions.h
diff --git a/src/glsl/nir/nir_constant_expressions.py b/src/compiler/nir/nir_constant_expressions.py
similarity index 100%
rename from src/glsl/nir/nir_constant_expressions.py
rename to src/compiler/nir/nir_constant_expressions.py
diff --git a/src/glsl/nir/nir_control_flow.c b/src/compiler/nir/nir_control_flow.c
similarity index 100%
rename from src/glsl/nir/nir_control_flow.c
rename to src/compiler/nir/nir_control_flow.c
diff --git a/src/glsl/nir/nir_control_flow.h b/src/compiler/nir/nir_control_flow.h
similarity index 100%
rename from src/glsl/nir/nir_control_flow.h
rename to src/compiler/nir/nir_control_flow.h
diff --git a/src/glsl/nir/nir_control_flow_private.h b/src/compiler/nir/nir_control_flow_private.h
similarity index 100%
rename from src/glsl/nir/nir_control_flow_private.h
rename to src/compiler/nir/nir_control_flow_private.h
diff --git a/src/glsl/nir/nir_dominance.c b/src/compiler/nir/nir_dominance.c
similarity index 100%
rename from src/glsl/nir/nir_dominance.c
rename to src/compiler/nir/nir_dominance.c
diff --git a/src/glsl/nir/nir_from_ssa.c b/src/compiler/nir/nir_from_ssa.c
similarity index 100%
rename from src/glsl/nir/nir_from_ssa.c
rename to src/compiler/nir/nir_from_ssa.c
diff --git a/src/glsl/nir/nir_gs_count_vertices.c b/src/compiler/nir/nir_gs_count_vertices.c
similarity index 100%
rename from src/glsl/nir/nir_gs_count_vertices.c
rename to src/compiler/nir/nir_gs_count_vertices.c
diff --git a/src/glsl/nir/nir_instr_set.c b/src/compiler/nir/nir_instr_set.c
similarity index 100%
rename from src/glsl/nir/nir_instr_set.c
rename to src/compiler/nir/nir_instr_set.c
diff --git a/src/glsl/nir/nir_instr_set.h b/src/compiler/nir/nir_instr_set.h
similarity index 100%
rename from src/glsl/nir/nir_instr_set.h
rename to src/compiler/nir/nir_instr_set.h
diff --git a/src/glsl/nir/nir_intrinsics.c b/src/compiler/nir/nir_intrinsics.c
similarity index 100%
rename from src/glsl/nir/nir_intrinsics.c
rename to src/compiler/nir/nir_intrinsics.c
diff --git a/src/glsl/nir/nir_intrinsics.h b/src/compiler/nir/nir_intrinsics.h
similarity index 100%
rename from src/glsl/nir/nir_intrinsics.h
rename to src/compiler/nir/nir_intrinsics.h
diff --git a/src/glsl/nir/nir_liveness.c b/src/compiler/nir/nir_liveness.c
similarity index 100%
rename from src/glsl/nir/nir_liveness.c
rename to src/compiler/nir/nir_liveness.c
diff --git a/src/glsl/nir/nir_lower_alu_to_scalar.c b/src/compiler/nir/nir_lower_alu_to_scalar.c
similarity index 100%
rename from src/glsl/nir/nir_lower_alu_to_scalar.c
rename to src/compiler/nir/nir_lower_alu_to_scalar.c
diff --git a/src/glsl/nir/nir_lower_atomics.c b/src/compiler/nir/nir_lower_atomics.c
similarity index 99%
rename from src/glsl/nir/nir_lower_atomics.c
rename to src/compiler/nir/nir_lower_atomics.c
index 40ca3de..581498e 100644
--- a/src/glsl/nir/nir_lower_atomics.c
+++ b/src/compiler/nir/nir_lower_atomics.c
@@ -25,10 +25,10 @@
  *
  */
 
-#include "ir_uniform.h"
-#include "nir.h"
-#include "main/config.h"
 #include <assert.h>
+#include "glsl/ir_uniform.h"
+#include "main/config.h"
+#include "nir.h"
 
 typedef struct {
    const struct gl_shader_program *shader_program;
diff --git a/src/glsl/nir/nir_lower_clip.c b/src/compiler/nir/nir_lower_clip.c
similarity index 100%
rename from src/glsl/nir/nir_lower_clip.c
rename to src/compiler/nir/nir_lower_clip.c
diff --git a/src/glsl/nir/nir_lower_global_vars_to_local.c b/src/compiler/nir/nir_lower_global_vars_to_local.c
similarity index 100%
rename from src/glsl/nir/nir_lower_global_vars_to_local.c
rename to src/compiler/nir/nir_lower_global_vars_to_local.c
diff --git a/src/glsl/nir/nir_lower_gs_intrinsics.c b/src/compiler/nir/nir_lower_gs_intrinsics.c
similarity index 100%
rename from src/glsl/nir/nir_lower_gs_intrinsics.c
rename to src/compiler/nir/nir_lower_gs_intrinsics.c
diff --git a/src/glsl/nir/nir_lower_idiv.c b/src/compiler/nir/nir_lower_idiv.c
similarity index 100%
rename from src/glsl/nir/nir_lower_idiv.c
rename to src/compiler/nir/nir_lower_idiv.c
diff --git a/src/glsl/nir/nir_lower_io.c b/src/compiler/nir/nir_lower_io.c
similarity index 100%
rename from src/glsl/nir/nir_lower_io.c
rename to src/compiler/nir/nir_lower_io.c
diff --git a/src/glsl/nir/nir_lower_load_const_to_scalar.c b/src/compiler/nir/nir_lower_load_const_to_scalar.c
similarity index 100%
rename from src/glsl/nir/nir_lower_load_const_to_scalar.c
rename to src/compiler/nir/nir_lower_load_const_to_scalar.c
diff --git a/src/glsl/nir/nir_lower_locals_to_regs.c b/src/compiler/nir/nir_lower_locals_to_regs.c
similarity index 100%
rename from src/glsl/nir/nir_lower_locals_to_regs.c
rename to src/compiler/nir/nir_lower_locals_to_regs.c
diff --git a/src/glsl/nir/nir_lower_outputs_to_temporaries.c b/src/compiler/nir/nir_lower_outputs_to_temporaries.c
similarity index 100%
rename from src/glsl/nir/nir_lower_outputs_to_temporaries.c
rename to src/compiler/nir/nir_lower_outputs_to_temporaries.c
diff --git a/src/glsl/nir/nir_lower_phis_to_scalar.c b/src/compiler/nir/nir_lower_phis_to_scalar.c
similarity index 100%
rename from src/glsl/nir/nir_lower_phis_to_scalar.c
rename to src/compiler/nir/nir_lower_phis_to_scalar.c
diff --git a/src/glsl/nir/nir_lower_samplers.c b/src/compiler/nir/nir_lower_samplers.c
similarity index 99%
rename from src/glsl/nir/nir_lower_samplers.c
rename to src/compiler/nir/nir_lower_samplers.c
index 2aab305..43ed635 100644
--- a/src/glsl/nir/nir_lower_samplers.c
+++ b/src/compiler/nir/nir_lower_samplers.c
@@ -23,15 +23,15 @@
  * DEALINGS IN THE SOFTWARE.
  */
 
-#include "nir.h"
-#include "nir_builder.h"
-#include "program/hash_table.h"
-#include "ir_uniform.h"
-
+#include "glsl/ir_uniform.h"
 #include "main/compiler.h"
 #include "main/mtypes.h"
 #include "program/prog_parameter.h"
 #include "program/program.h"
+#include "program/hash_table.h"
+
+#include "nir.h"
+#include "nir_builder.h"
 
 /* Calculate the sampler index based on array indicies and also
  * calculate the base uniform location for struct members.
diff --git a/src/glsl/nir/nir_lower_system_values.c b/src/compiler/nir/nir_lower_system_values.c
similarity index 100%
rename from src/glsl/nir/nir_lower_system_values.c
rename to src/compiler/nir/nir_lower_system_values.c
diff --git a/src/glsl/nir/nir_lower_tex.c b/src/compiler/nir/nir_lower_tex.c
similarity index 100%
rename from src/glsl/nir/nir_lower_tex.c
rename to src/compiler/nir/nir_lower_tex.c
diff --git a/src/glsl/nir/nir_lower_to_source_mods.c b/src/compiler/nir/nir_lower_to_source_mods.c
similarity index 100%
rename from src/glsl/nir/nir_lower_to_source_mods.c
rename to src/compiler/nir/nir_lower_to_source_mods.c
diff --git a/src/glsl/nir/nir_lower_two_sided_color.c b/src/compiler/nir/nir_lower_two_sided_color.c
similarity index 100%
rename from src/glsl/nir/nir_lower_two_sided_color.c
rename to src/compiler/nir/nir_lower_two_sided_color.c
diff --git a/src/glsl/nir/nir_lower_var_copies.c b/src/compiler/nir/nir_lower_var_copies.c
similarity index 100%
rename from src/glsl/nir/nir_lower_var_copies.c
rename to src/compiler/nir/nir_lower_var_copies.c
diff --git a/src/glsl/nir/nir_lower_vars_to_ssa.c b/src/compiler/nir/nir_lower_vars_to_ssa.c
similarity index 100%
rename from src/glsl/nir/nir_lower_vars_to_ssa.c
rename to src/compiler/nir/nir_lower_vars_to_ssa.c
diff --git a/src/glsl/nir/nir_lower_vec_to_movs.c b/src/compiler/nir/nir_lower_vec_to_movs.c
similarity index 100%
rename from src/glsl/nir/nir_lower_vec_to_movs.c
rename to src/compiler/nir/nir_lower_vec_to_movs.c
diff --git a/src/glsl/nir/nir_metadata.c b/src/compiler/nir/nir_metadata.c
similarity index 100%
rename from src/glsl/nir/nir_metadata.c
rename to src/compiler/nir/nir_metadata.c
diff --git a/src/glsl/nir/nir_move_vec_src_uses_to_dest.c b/src/compiler/nir/nir_move_vec_src_uses_to_dest.c
similarity index 100%
rename from src/glsl/nir/nir_move_vec_src_uses_to_dest.c
rename to src/compiler/nir/nir_move_vec_src_uses_to_dest.c
diff --git a/src/glsl/nir/nir_normalize_cubemap_coords.c b/src/compiler/nir/nir_normalize_cubemap_coords.c
similarity index 100%
rename from src/glsl/nir/nir_normalize_cubemap_coords.c
rename to src/compiler/nir/nir_normalize_cubemap_coords.c
diff --git a/src/glsl/nir/nir_opcodes.py b/src/compiler/nir/nir_opcodes.py
similarity index 100%
rename from src/glsl/nir/nir_opcodes.py
rename to src/compiler/nir/nir_opcodes.py
diff --git a/src/glsl/nir/nir_opcodes_c.py b/src/compiler/nir/nir_opcodes_c.py
similarity index 100%
rename from src/glsl/nir/nir_opcodes_c.py
rename to src/compiler/nir/nir_opcodes_c.py
diff --git a/src/glsl/nir/nir_opcodes_h.py b/src/compiler/nir/nir_opcodes_h.py
similarity index 100%
rename from src/glsl/nir/nir_opcodes_h.py
rename to src/compiler/nir/nir_opcodes_h.py
diff --git a/src/glsl/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py
similarity index 100%
rename from src/glsl/nir/nir_opt_algebraic.py
rename to src/compiler/nir/nir_opt_algebraic.py
diff --git a/src/glsl/nir/nir_opt_constant_folding.c b/src/compiler/nir/nir_opt_constant_folding.c
similarity index 100%
rename from src/glsl/nir/nir_opt_constant_folding.c
rename to src/compiler/nir/nir_opt_constant_folding.c
diff --git a/src/glsl/nir/nir_opt_copy_propagate.c b/src/compiler/nir/nir_opt_copy_propagate.c
similarity index 100%
rename from src/glsl/nir/nir_opt_copy_propagate.c
rename to src/compiler/nir/nir_opt_copy_propagate.c
diff --git a/src/glsl/nir/nir_opt_cse.c b/src/compiler/nir/nir_opt_cse.c
similarity index 100%
rename from src/glsl/nir/nir_opt_cse.c
rename to src/compiler/nir/nir_opt_cse.c
diff --git a/src/glsl/nir/nir_opt_dce.c b/src/compiler/nir/nir_opt_dce.c
similarity index 100%
rename from src/glsl/nir/nir_opt_dce.c
rename to src/compiler/nir/nir_opt_dce.c
diff --git a/src/glsl/nir/nir_opt_dead_cf.c b/src/compiler/nir/nir_opt_dead_cf.c
similarity index 100%
rename from src/glsl/nir/nir_opt_dead_cf.c
rename to src/compiler/nir/nir_opt_dead_cf.c
diff --git a/src/glsl/nir/nir_opt_gcm.c b/src/compiler/nir/nir_opt_gcm.c
similarity index 100%
rename from src/glsl/nir/nir_opt_gcm.c
rename to src/compiler/nir/nir_opt_gcm.c
diff --git a/src/glsl/nir/nir_opt_global_to_local.c b/src/compiler/nir/nir_opt_global_to_local.c
similarity index 100%
rename from src/glsl/nir/nir_opt_global_to_local.c
rename to src/compiler/nir/nir_opt_global_to_local.c
diff --git a/src/glsl/nir/nir_opt_peephole_select.c b/src/compiler/nir/nir_opt_peephole_select.c
similarity index 100%
rename from src/glsl/nir/nir_opt_peephole_select.c
rename to src/compiler/nir/nir_opt_peephole_select.c
diff --git a/src/glsl/nir/nir_opt_remove_phis.c b/src/compiler/nir/nir_opt_remove_phis.c
similarity index 100%
rename from src/glsl/nir/nir_opt_remove_phis.c
rename to src/compiler/nir/nir_opt_remove_phis.c
diff --git a/src/glsl/nir/nir_opt_undef.c b/src/compiler/nir/nir_opt_undef.c
similarity index 100%
rename from src/glsl/nir/nir_opt_undef.c
rename to src/compiler/nir/nir_opt_undef.c
diff --git a/src/glsl/nir/nir_print.c b/src/compiler/nir/nir_print.c
similarity index 100%
rename from src/glsl/nir/nir_print.c
rename to src/compiler/nir/nir_print.c
diff --git a/src/glsl/nir/nir_remove_dead_variables.c b/src/compiler/nir/nir_remove_dead_variables.c
similarity index 100%
rename from src/glsl/nir/nir_remove_dead_variables.c
rename to src/compiler/nir/nir_remove_dead_variables.c
diff --git a/src/glsl/nir/nir_search.c b/src/compiler/nir/nir_search.c
similarity index 100%
rename from src/glsl/nir/nir_search.c
rename to src/compiler/nir/nir_search.c
diff --git a/src/glsl/nir/nir_search.h b/src/compiler/nir/nir_search.h
similarity index 100%
rename from src/glsl/nir/nir_search.h
rename to src/compiler/nir/nir_search.h
diff --git a/src/glsl/nir/nir_split_var_copies.c b/src/compiler/nir/nir_split_var_copies.c
similarity index 100%
rename from src/glsl/nir/nir_split_var_copies.c
rename to src/compiler/nir/nir_split_var_copies.c
diff --git a/src/glsl/nir/nir_sweep.c b/src/compiler/nir/nir_sweep.c
similarity index 100%
rename from src/glsl/nir/nir_sweep.c
rename to src/compiler/nir/nir_sweep.c
diff --git a/src/glsl/nir/nir_to_ssa.c b/src/compiler/nir/nir_to_ssa.c
similarity index 100%
rename from src/glsl/nir/nir_to_ssa.c
rename to src/compiler/nir/nir_to_ssa.c
diff --git a/src/glsl/nir/nir_validate.c b/src/compiler/nir/nir_validate.c
similarity index 100%
rename from src/glsl/nir/nir_validate.c
rename to src/compiler/nir/nir_validate.c
diff --git a/src/glsl/nir/nir_vla.h b/src/compiler/nir/nir_vla.h
similarity index 100%
rename from src/glsl/nir/nir_vla.h
rename to src/compiler/nir/nir_vla.h
diff --git a/src/glsl/nir/nir_worklist.c b/src/compiler/nir/nir_worklist.c
similarity index 100%
rename from src/glsl/nir/nir_worklist.c
rename to src/compiler/nir/nir_worklist.c
diff --git a/src/glsl/nir/nir_worklist.h b/src/compiler/nir/nir_worklist.h
similarity index 100%
rename from src/glsl/nir/nir_worklist.h
rename to src/compiler/nir/nir_worklist.h
diff --git a/src/glsl/nir/tests/control_flow_tests.cpp b/src/compiler/nir/tests/control_flow_tests.cpp
similarity index 100%
rename from src/glsl/nir/tests/control_flow_tests.cpp
rename to src/compiler/nir/tests/control_flow_tests.cpp
diff --git a/src/gallium/auxiliary/Makefile.am b/src/gallium/auxiliary/Makefile.am
index ee296ce..8e53ca9 100644
--- a/src/gallium/auxiliary/Makefile.am
+++ b/src/gallium/auxiliary/Makefile.am
@@ -5,7 +5,7 @@ noinst_LTLIBRARIES = libgallium.la
 
 AM_CFLAGS = \
 	-I$(top_srcdir)/src/loader \
-	-I$(top_builddir)/src/glsl/nir \
+	-I$(top_builddir)/src/compiler/nir \
 	-I$(top_srcdir)/src/gallium/auxiliary/util \
 	$(GALLIUM_CFLAGS) \
 	$(VISIBILITY_CFLAGS) \
diff --git a/src/gallium/auxiliary/nir/tgsi_to_nir.c b/src/gallium/auxiliary/nir/tgsi_to_nir.c
index 3301175..4dd16b1 100644
--- a/src/gallium/auxiliary/nir/tgsi_to_nir.c
+++ b/src/gallium/auxiliary/nir/tgsi_to_nir.c
@@ -23,11 +23,11 @@
  */
 
 #include "compiler/shader_enums.h"
+#include "compiler/nir/nir.h"
+#include "compiler/nir/nir_control_flow.h"
+#include "compiler/nir/nir_builder.h"
 
 #include "util/ralloc.h"
-#include "glsl/nir/nir.h"
-#include "glsl/nir/nir_control_flow.h"
-#include "glsl/nir/nir_builder.h"
 #include "glsl/list.h"
 
 #include "nir/tgsi_to_nir.h"
diff --git a/src/gallium/auxiliary/nir/tgsi_to_nir.h b/src/gallium/auxiliary/nir/tgsi_to_nir.h
index 1a185a8..0651870 100644
--- a/src/gallium/auxiliary/nir/tgsi_to_nir.h
+++ b/src/gallium/auxiliary/nir/tgsi_to_nir.h
@@ -21,7 +21,7 @@
  * IN THE SOFTWARE.
  */
 
-#include "glsl/nir/nir.h"
+#include "compiler/nir/nir.h"
 
 struct nir_shader_compiler_options *options;
 
diff --git a/src/gallium/drivers/freedreno/Makefile.am b/src/gallium/drivers/freedreno/Makefile.am
index 3de8e0f..329a420 100644
--- a/src/gallium/drivers/freedreno/Makefile.am
+++ b/src/gallium/drivers/freedreno/Makefile.am
@@ -4,7 +4,7 @@ include $(top_srcdir)/src/gallium/Automake.inc
 AM_CFLAGS = \
 	-Wno-packed-bitfield-compat \
 	-I$(top_srcdir)/src/gallium/drivers/freedreno/ir3 \
-	-I$(top_builddir)/src/glsl/nir \
+	-I$(top_builddir)/src/compiler/nir \
 	$(GALLIUM_DRIVER_CFLAGS) \
 	$(FREEDRENO_CFLAGS)
 
@@ -27,7 +27,7 @@ ir3_compiler_SOURCES = \
 ir3_compiler_LDADD = \
 	libfreedreno.la \
 	$(top_builddir)/src/gallium/auxiliary/libgallium.la \
-	$(top_builddir)/src/glsl/libnir.la \
+	$(top_builddir)/src/compiler/nir/libnir.la \
 	$(top_builddir)/src/util/libmesautil.la \
 	$(GALLIUM_COMMON_LIB_DEPS) \
 	$(FREEDRENO_LIBS)
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_nir.h b/src/gallium/drivers/freedreno/ir3/ir3_nir.h
index f3d3075..31d2532 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_nir.h
+++ b/src/gallium/drivers/freedreno/ir3/ir3_nir.h
@@ -29,7 +29,7 @@
 #ifndef IR3_NIR_H_
 #define IR3_NIR_H_
 
-#include "glsl/nir/nir.h"
+#include "compiler/nir/nir.h"
 
 bool ir3_nir_lower_if_else(nir_shader *shader);
 
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_nir_lower_if_else.c b/src/gallium/drivers/freedreno/ir3/ir3_nir_lower_if_else.c
index 4ec0e2b..c424cae 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_nir_lower_if_else.c
+++ b/src/gallium/drivers/freedreno/ir3/ir3_nir_lower_if_else.c
@@ -27,9 +27,9 @@
  *
  */
 
+#include "compiler/nir/nir_builder.h"
+#include "compiler/nir/nir_control_flow.h"
 #include "ir3_nir.h"
-#include "glsl/nir/nir_builder.h"
-#include "glsl/nir/nir_control_flow.h"
 
 /* Based on nir_opt_peephole_select, and hacked up to more aggressively
  * flatten anything that can be flattened
diff --git a/src/gallium/drivers/vc4/Makefile.am b/src/gallium/drivers/vc4/Makefile.am
index a3bf72f..caa5059 100644
--- a/src/gallium/drivers/vc4/Makefile.am
+++ b/src/gallium/drivers/vc4/Makefile.am
@@ -27,7 +27,7 @@ SIM_LDFLAGS = -lsimpenrose
 endif
 
 AM_CFLAGS = \
-	-I$(top_builddir)/src/glsl/nir \
+	-I$(top_builddir)/src/compiler/nir \
 	$(LIBDRM_CFLAGS) \
 	$(GALLIUM_DRIVER_CFLAGS) \
 	$(SIM_CFLAGS) \
diff --git a/src/gallium/drivers/vc4/vc4_nir_lower_blend.c b/src/gallium/drivers/vc4/vc4_nir_lower_blend.c
index 0672a92..40dc7b1 100644
--- a/src/gallium/drivers/vc4/vc4_nir_lower_blend.c
+++ b/src/gallium/drivers/vc4/vc4_nir_lower_blend.c
@@ -35,10 +35,11 @@
  * Lowers fixed-function blending to a load of the destination color and a
  * series of ALU operations before the store of the output.
  */
+#include "compiler/nir/nir_builder.h"
+
 #include "util/u_format.h"
-#include "vc4_qir.h"
-#include "glsl/nir/nir_builder.h"
 #include "vc4_context.h"
+#include "vc4_qir.h"
 
 /** Emits a load of the previous fragment color from the tile buffer. */
 static nir_ssa_def *
diff --git a/src/gallium/drivers/vc4/vc4_nir_lower_io.c b/src/gallium/drivers/vc4/vc4_nir_lower_io.c
index 1afe52a..00aa4a2 100644
--- a/src/gallium/drivers/vc4/vc4_nir_lower_io.c
+++ b/src/gallium/drivers/vc4/vc4_nir_lower_io.c
@@ -21,9 +21,10 @@
  * IN THE SOFTWARE.
  */
 
-#include "vc4_qir.h"
-#include "glsl/nir/nir_builder.h"
+#include "compiler/nir/nir_builder.h"
+
 #include "util/u_format.h"
+#include "vc4_qir.h"
 
 /**
  * Walks the NIR generated by TGSI-to-NIR to lower its io intrinsics into
diff --git a/src/gallium/drivers/vc4/vc4_program.c b/src/gallium/drivers/vc4/vc4_program.c
index 197577b..fd0bcc1 100644
--- a/src/gallium/drivers/vc4/vc4_program.c
+++ b/src/gallium/drivers/vc4/vc4_program.c
@@ -23,6 +23,9 @@
  */
 
 #include <inttypes.h>
+#include "compiler/nir/nir.h"
+#include "compiler/nir/nir_builder.h"
+
 #include "util/u_format.h"
 #include "util/u_hash.h"
 #include "util/u_math.h"
@@ -32,8 +35,6 @@
 #include "tgsi/tgsi_dump.h"
 #include "tgsi/tgsi_lowering.h"
 #include "tgsi/tgsi_parse.h"
-#include "glsl/nir/nir.h"
-#include "glsl/nir/nir_builder.h"
 #include "nir/tgsi_to_nir.h"
 #include "vc4_context.h"
 #include "vc4_qpu.h"
diff --git a/src/gallium/drivers/vc4/vc4_qir.h b/src/gallium/drivers/vc4/vc4_qir.h
index ddb35e4..5c82dbf 100644
--- a/src/gallium/drivers/vc4/vc4_qir.h
+++ b/src/gallium/drivers/vc4/vc4_qir.h
@@ -30,9 +30,9 @@
 #include <stdbool.h>
 #include <stdint.h>
 #include <string.h>
+#include "compiler/nir/nir.h"
 
 #include "util/macros.h"
-#include "glsl/nir/nir.h"
 #include "util/list.h"
 #include "util/u_math.h"
 
diff --git a/src/gallium/targets/pipe-loader/Makefile.am b/src/gallium/targets/pipe-loader/Makefile.am
index 4bc3b55..0b516de 100644
--- a/src/gallium/targets/pipe-loader/Makefile.am
+++ b/src/gallium/targets/pipe-loader/Makefile.am
@@ -53,7 +53,7 @@ endif
 
 PIPE_LIBS += \
 	$(top_builddir)/src/gallium/auxiliary/libgallium.la \
-	$(top_builddir)/src/glsl/libnir.la \
+	$(top_builddir)/src/compiler/nir/libnir.la \
 	$(top_builddir)/src/util/libmesautil.la \
 	$(top_builddir)/src/gallium/drivers/rbug/librbug.la \
 	$(top_builddir)/src/gallium/drivers/trace/libtrace.la \
diff --git a/src/gallium/targets/xa/Makefile.am b/src/gallium/targets/xa/Makefile.am
index a63fd69..cdd9a86 100644
--- a/src/gallium/targets/xa/Makefile.am
+++ b/src/gallium/targets/xa/Makefile.am
@@ -37,7 +37,7 @@ libxatracker_la_LIBADD = \
 	$(top_builddir)/src/gallium/state_trackers/xa/libxatracker.la \
 	$(top_builddir)/src/gallium/auxiliary/libgalliumvl_stub.la \
 	$(top_builddir)/src/gallium/auxiliary/libgallium.la \
-	$(top_builddir)/src/glsl/libnir.la \
+	$(top_builddir)/src/compiler/nir/libnir.la \
 	$(top_builddir)/src/util/libmesautil.la \
 	$(LIBDRM_LIBS) \
 	$(GALLIUM_COMMON_LIB_DEPS)
diff --git a/src/glsl/Android.gen.mk b/src/glsl/Android.gen.mk
index 59cc857..384939f 100644
--- a/src/glsl/Android.gen.mk
+++ b/src/glsl/Android.gen.mk
@@ -33,17 +33,10 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES)
 
 LOCAL_C_INCLUDES += \
 	$(intermediates)/glcpp \
-	$(intermediates)/nir \
-	$(MESA_TOP)/src/glsl/glcpp \
-	$(MESA_TOP)/src/glsl/nir
-
-LOCAL_EXPORT_C_INCLUDE_DIRS += \
-	$(intermediates)/nir \
-	$(MESA_TOP)/src/glsl/nir
+	$(MESA_TOP)/src/glsl/glcpp
 
 LOCAL_GENERATED_SOURCES += $(addprefix $(intermediates)/, \
 	$(LIBGLCPP_GENERATED_FILES) \
-	$(NIR_GENERATED_FILES) \
 	$(LIBGLSL_GENERATED_CXX_FILES))
 
 define local-l-or-ll-to-c-or-cpp
@@ -81,50 +74,3 @@ $(intermediates)/glcpp/glcpp-lex.c: $(LOCAL_PATH)/glcpp/glcpp-lex.l
 
 $(intermediates)/glcpp/glcpp-parse.c: $(LOCAL_PATH)/glcpp/glcpp-parse.y
 	$(call glsl_local-y-to-c-and-h)
-
-nir_builder_opcodes_gen := $(LOCAL_PATH)/nir/nir_builder_opcodes_h.py
-nir_builder_opcodes_deps := \
-	$(LOCAL_PATH)/nir/nir_opcodes.py \
-	$(LOCAL_PATH)/nir/nir_builder_opcodes_h.py
-
-$(intermediates)/nir/nir_builder_opcodes.h: $(nir_builder_opcodes_deps)
-	@mkdir -p $(dir $@)
-	$(hide) $(MESA_PYTHON2) $(nir_builder_opcodes_gen) $< > $@
-
-nir_constant_expressions_gen := $(LOCAL_PATH)/nir/nir_constant_expressions.py
-nir_constant_expressions_deps := \
-	$(LOCAL_PATH)/nir/nir_opcodes.py \
-	$(LOCAL_PATH)/nir/nir_constant_expressions.py
-
-$(intermediates)/nir/nir_constant_expressions.c: $(nir_constant_expressions_deps)
-	@mkdir -p $(dir $@)
-	$(hide) $(MESA_PYTHON2) $(nir_constant_expressions_gen) $< > $@
-
-nir_opcodes_h_gen := $(LOCAL_PATH)/nir/nir_opcodes_h.py
-nir_opcodes_h_deps := \
-	$(LOCAL_PATH)/nir/nir_opcodes.py \
-	$(LOCAL_PATH)/nir/nir_opcodes_h.py
-
-$(intermediates)/nir/nir_opcodes.h: $(nir_opcodes_h_deps)
-	@mkdir -p $(dir $@)
-	$(hide) $(MESA_PYTHON2) $(nir_opcodes_h_gen) $< > $@
-
-$(LOCAL_PATH)/nir/nir.h: $(intermediates)/nir/nir_opcodes.h
-
-nir_opcodes_c_gen := $(LOCAL_PATH)/nir/nir_opcodes_c.py
-nir_opcodes_c_deps := \
-	$(LOCAL_PATH)/nir/nir_opcodes.py \
-	$(LOCAL_PATH)/nir/nir_opcodes_c.py
-
-$(intermediates)/nir/nir_opcodes.c: $(nir_opcodes_c_deps)
-	@mkdir -p $(dir $@)
-	$(hide) $(MESA_PYTHON2) $(nir_opcodes_c_gen) $< > $@
-
-nir_opt_algebraic_gen := $(LOCAL_PATH)/nir/nir_opt_algebraic.py
-nir_opt_algebraic_deps := \
-	$(LOCAL_PATH)/nir/nir_opt_algebraic.py \
-	$(LOCAL_PATH)/nir/nir_algebraic.py
-
-$(intermediates)/nir/nir_opt_algebraic.c: $(nir_opt_algebraic_deps)
-	@mkdir -p $(dir $@)
-	$(hide) $(MESA_PYTHON2) $(nir_opt_algebraic_gen) $< > $@
diff --git a/src/glsl/Android.mk b/src/glsl/Android.mk
index 9cbb9a3..1e9fd87 100644
--- a/src/glsl/Android.mk
+++ b/src/glsl/Android.mk
@@ -35,8 +35,7 @@ include $(CLEAR_VARS)
 
 LOCAL_SRC_FILES := \
 	$(LIBGLCPP_FILES) \
-	$(LIBGLSL_FILES) \
-	$(NIR_FILES)
+	$(LIBGLSL_FILES)
 
 LOCAL_C_INCLUDES := \
 	$(MESA_TOP)/src/mapi \
@@ -44,7 +43,7 @@ LOCAL_C_INCLUDES := \
 	$(MESA_TOP)/src/gallium/include \
 	$(MESA_TOP)/src/gallium/auxiliary
 
-LOCAL_STATIC_LIBRARIES := libmesa_compiler
+LOCAL_STATIC_LIBRARIES := libmesa_compiler libmesa_nir
 
 LOCAL_MODULE := libmesa_glsl
 
diff --git a/src/glsl/Makefile.am b/src/glsl/Makefile.am
index 225ec27..9954b81 100644
--- a/src/glsl/Makefile.am
+++ b/src/glsl/Makefile.am
@@ -27,9 +27,7 @@ AM_CPPFLAGS = \
 	-I$(top_srcdir)/src/gallium/include \
 	-I$(top_srcdir)/src/gallium/auxiliary \
 	-I$(top_srcdir)/src/glsl/glcpp \
-	-I$(top_srcdir)/src/glsl/nir \
 	-I$(top_srcdir)/src/gtest/include \
-	-I$(top_builddir)/src/glsl/nir \
 	$(DEFINES)
 AM_CFLAGS = \
 	$(VISIBILITY_CFLAGS) \
@@ -43,21 +41,12 @@ EXTRA_DIST = tests glcpp/tests README TODO glcpp/README	\
 	glsl_parser.yy					\
 	glcpp/glcpp-lex.l				\
 	glcpp/glcpp-parse.y				\
-	nir/nir_algebraic.py				\
-	nir/nir_builder_opcodes_h.py			\
-	nir/nir_constant_expressions.py			\
-	nir/nir_opcodes.py				\
-	nir/nir_opcodes_c.py				\
-	nir/nir_opcodes_h.py				\
-	nir/nir_opt_algebraic.py			\
-	nir/tests					\
 	SConscript
 
 include Makefile.sources
 
 TESTS = glcpp/tests/glcpp-test				\
 	glcpp/tests/glcpp-test-cr-lf			\
-        nir/tests/control_flow_tests			\
 	tests/blob-test					\
 	tests/general-ir-test				\
 	tests/optimization-test				\
@@ -68,11 +57,10 @@ TESTS_ENVIRONMENT= \
 	export PYTHON2=$(PYTHON2); \
 	export PYTHON_FLAGS=$(PYTHON_FLAGS);
 
-noinst_LTLIBRARIES = libnir.la libglsl.la libglcpp.la
+noinst_LTLIBRARIES = libglsl.la libglcpp.la
 check_PROGRAMS =					\
 	glcpp/glcpp					\
 	glsl_test					\
-	nir/tests/control_flow_tests			\
 	tests/blob-test					\
 	tests/general-ir-test				\
 	tests/sampler-types-test			\
@@ -138,25 +126,16 @@ glcpp_glcpp_LDADD =					\
 	-lm
 
 libglsl_la_LIBADD = \
-	$(top_builddir)/src/compiler/libcompiler.la \
+	$(top_builddir)/src/compiler/nir/libnir.la \
 	libglcpp.la
 
 libglsl_la_SOURCES =					\
 	glsl_lexer.cpp					\
 	glsl_parser.cpp					\
 	glsl_parser.h					\
-	$(LIBGLSL_FILES)				\
-	$(NIR_FILES)					\
-	$(NIR_GENERATED_FILES)
+	$(LIBGLSL_FILES)
 
 
-libnir_la_LIBADD = \
-	$(top_builddir)/src/compiler/libcompiler.la
-
-libnir_la_SOURCES =					\
-	$(NIR_FILES)					\
-	$(NIR_GENERATED_FILES)
-
 glsl_compiler_SOURCES = \
 	$(GLSL_COMPILER_CXX_FILES)
 
@@ -235,8 +214,7 @@ BUILT_SOURCES =						\
 	glsl_parser.cpp					\
 	glsl_lexer.cpp					\
 	glcpp/glcpp-parse.c				\
-	glcpp/glcpp-lex.c				\
-	$(NIR_GENERATED_FILES)
+	glcpp/glcpp-lex.c
 CLEANFILES =						\
 	glcpp/glcpp-parse.h				\
 	glsl_parser.h					\
@@ -248,35 +226,3 @@ clean-local:
 dist-hook:
 	$(RM) glcpp/tests/*.out
 	$(RM) glcpp/tests/subtest*/*.out
-
-PYTHON_GEN = $(AM_V_GEN)$(PYTHON2) $(PYTHON_FLAGS)
-
-nir/nir_builder_opcodes.h: nir/nir_opcodes.py nir/nir_builder_opcodes_h.py
-	$(MKDIR_GEN)
-	$(PYTHON_GEN) $(srcdir)/nir/nir_builder_opcodes_h.py > $@
-
-nir/nir_constant_expressions.c: nir/nir_opcodes.py nir/nir_constant_expressions.py
-	$(MKDIR_GEN)
-	$(PYTHON_GEN) $(srcdir)/nir/nir_constant_expressions.py > $@
-
-nir/nir_opcodes.h: nir/nir_opcodes.py nir/nir_opcodes_h.py
-	$(MKDIR_GEN)
-	$(PYTHON_GEN) $(srcdir)/nir/nir_opcodes_h.py > $@
-
-nir/nir_opcodes.c: nir/nir_opcodes.py nir/nir_opcodes_c.py
-	$(MKDIR_GEN)
-	$(PYTHON_GEN) $(srcdir)/nir/nir_opcodes_c.py > $@
-
-nir/nir_opt_algebraic.c: nir/nir_opt_algebraic.py nir/nir_algebraic.py
-	$(MKDIR_GEN)
-	$(PYTHON_GEN) $(srcdir)/nir/nir_opt_algebraic.py > $@
-
-nir_tests_control_flow_tests_SOURCES =			\
-	nir/tests/control_flow_tests.cpp
-nir_tests_control_flow_tests_CFLAGS =			\
-	$(PTHREAD_CFLAGS)
-nir_tests_control_flow_tests_LDADD =			\
-	$(top_builddir)/src/gtest/libgtest.la		\
-	$(top_builddir)/src/glsl/libnir.la		\
-	$(top_builddir)/src/util/libmesautil.la		\
-	$(PTHREAD_LIBS)
diff --git a/src/glsl/Makefile.sources b/src/glsl/Makefile.sources
index 5bf6486..4f9c1c1 100644
--- a/src/glsl/Makefile.sources
+++ b/src/glsl/Makefile.sources
@@ -10,77 +10,6 @@ LIBGLCPP_GENERATED_FILES = \
 	glcpp/glcpp-lex.c \
 	glcpp/glcpp-parse.c
 
-NIR_GENERATED_FILES = \
-	nir/nir_builder_opcodes.h \
-	nir/nir_constant_expressions.c \
-	nir/nir_opcodes.c \
-	nir/nir_opcodes.h \
-	nir/nir_opt_algebraic.c
-
-NIR_FILES = \
-	nir/glsl_to_nir.cpp \
-	nir/glsl_to_nir.h \
-	nir/nir.c \
-	nir/nir.h \
-	nir/nir_array.h \
-	nir/nir_builder.h \
-	nir/nir_clone.c \
-	nir/nir_constant_expressions.h \
-	nir/nir_control_flow.c \
-	nir/nir_control_flow.h \
-	nir/nir_control_flow_private.h \
-	nir/nir_dominance.c \
-	nir/nir_from_ssa.c \
-	nir/nir_gs_count_vertices.c \
-	nir/nir_intrinsics.c \
-	nir/nir_intrinsics.h \
-	nir/nir_instr_set.c \
-	nir/nir_instr_set.h \
-	nir/nir_liveness.c \
-	nir/nir_lower_alu_to_scalar.c \
-	nir/nir_lower_atomics.c \
-	nir/nir_lower_clip.c \
-	nir/nir_lower_global_vars_to_local.c \
-	nir/nir_lower_gs_intrinsics.c \
-	nir/nir_lower_load_const_to_scalar.c \
-	nir/nir_lower_locals_to_regs.c \
-	nir/nir_lower_idiv.c \
-	nir/nir_lower_io.c \
-	nir/nir_lower_outputs_to_temporaries.c \
-	nir/nir_lower_phis_to_scalar.c \
-	nir/nir_lower_samplers.c \
-	nir/nir_lower_system_values.c \
-	nir/nir_lower_tex.c \
-	nir/nir_lower_to_source_mods.c \
-	nir/nir_lower_two_sided_color.c \
-	nir/nir_lower_vars_to_ssa.c \
-	nir/nir_lower_var_copies.c \
-	nir/nir_lower_vec_to_movs.c \
-	nir/nir_metadata.c \
-	nir/nir_move_vec_src_uses_to_dest.c \
-	nir/nir_normalize_cubemap_coords.c \
-	nir/nir_opt_constant_folding.c \
-	nir/nir_opt_copy_propagate.c \
-	nir/nir_opt_cse.c \
-	nir/nir_opt_dce.c \
-	nir/nir_opt_dead_cf.c \
-	nir/nir_opt_gcm.c \
-	nir/nir_opt_global_to_local.c \
-	nir/nir_opt_peephole_select.c \
-	nir/nir_opt_remove_phis.c \
-	nir/nir_opt_undef.c \
-	nir/nir_print.c \
-	nir/nir_remove_dead_variables.c \
-	nir/nir_search.c \
-	nir/nir_search.h \
-	nir/nir_split_var_copies.c \
-	nir/nir_sweep.c \
-	nir/nir_to_ssa.c \
-	nir/nir_validate.c \
-	nir/nir_vla.h \
-	nir/nir_worklist.c \
-	nir/nir_worklist.h
-
 # libglsl
 
 LIBGLSL_FILES = \
diff --git a/src/glsl/ir_hierarchical_visitor.h b/src/glsl/ir_hierarchical_visitor.h
index 28517b6..4e91f8c 100644
--- a/src/glsl/ir_hierarchical_visitor.h
+++ b/src/glsl/ir_hierarchical_visitor.h
@@ -26,6 +26,8 @@
 #ifndef IR_HIERARCHICAL_VISITOR_H
 #define IR_HIERARCHICAL_VISITOR_H
 
+#include <stddef.h>
+
 /**
  * Enumeration values returned by visit methods to guide processing
  */
diff --git a/src/glsl/ir_visitor.h b/src/glsl/ir_visitor.h
index 7c38481..2e576a1 100644
--- a/src/glsl/ir_visitor.h
+++ b/src/glsl/ir_visitor.h
@@ -26,6 +26,8 @@
 #ifndef IR_VISITOR_H
 #define IR_VISITOR_H
 
+#include <assert.h>
+
 #ifdef __cplusplus
 /**
  * Abstract base class of visitors of IR instruction trees
diff --git a/src/mesa/Android.libmesa_dricore.mk b/src/mesa/Android.libmesa_dricore.mk
index cd31e14..fef76c8 100644
--- a/src/mesa/Android.libmesa_dricore.mk
+++ b/src/mesa/Android.libmesa_dricore.mk
@@ -60,7 +60,6 @@ LOCAL_C_INCLUDES := \
 	$(MESA_TOP)/src/mapi \
 	$(MESA_TOP)/src/mesa/main \
 	$(MESA_TOP)/src/glsl \
-	$(MESA_TOP)/src/glsl/nir \
 	$(MESA_TOP)/src/gallium/include \
 	$(MESA_TOP)/src/gallium/auxiliary
 
diff --git a/src/mesa/Android.libmesa_glsl_utils.mk b/src/mesa/Android.libmesa_glsl_utils.mk
index 9e150ea..ed620ac 100644
--- a/src/mesa/Android.libmesa_glsl_utils.mk
+++ b/src/mesa/Android.libmesa_glsl_utils.mk
@@ -37,7 +37,6 @@ LOCAL_MODULE := libmesa_glsl_utils
 
 LOCAL_C_INCLUDES := \
 	$(MESA_TOP)/src/glsl \
-	$(MESA_TOP)/src/glsl/nir \
 	$(MESA_TOP)/src/mapi \
 	$(MESA_TOP)/src/gallium/include \
 	$(MESA_TOP)/src/gallium/auxiliary
@@ -63,7 +62,6 @@ LOCAL_CFLAGS := -D_POSIX_C_SOURCE=199309L
 
 LOCAL_C_INCLUDES := \
 	$(MESA_TOP)/src/glsl \
-	$(MESA_TOP)/src/glsl/nir \
 	$(MESA_TOP)/src/mapi \
 	$(MESA_TOP)/src/gallium/include \
 	$(MESA_TOP)/src/gallium/auxiliary
diff --git a/src/mesa/Android.libmesa_st_mesa.mk b/src/mesa/Android.libmesa_st_mesa.mk
index 427a35f..b4b7fd9 100644
--- a/src/mesa/Android.libmesa_st_mesa.mk
+++ b/src/mesa/Android.libmesa_st_mesa.mk
@@ -55,7 +55,6 @@ LOCAL_C_INCLUDES := \
 	$(MESA_TOP)/src/mapi \
 	$(MESA_TOP)/src/mesa/main \
 	$(MESA_TOP)/src/glsl \
-	$(MESA_TOP)/src/glsl/nir \
 	$(MESA_TOP)/src/gallium/auxiliary \
 	$(MESA_TOP)/src/gallium/include
 
diff --git a/src/mesa/Makefile.sources b/src/mesa/Makefile.sources
index 778b92d..2c79169 100644
--- a/src/mesa/Makefile.sources
+++ b/src/mesa/Makefile.sources
@@ -622,9 +622,7 @@ INCLUDE_DIRS = \
 	-I$(top_srcdir)/include \
 	-I$(top_srcdir)/src \
 	-I$(top_srcdir)/src/glsl \
-	-I$(top_srcdir)/src/glsl/nir \
 	-I$(top_builddir)/src/glsl \
-	-I$(top_builddir)/src/glsl/nir \
 	-I$(top_srcdir)/src/glsl/glcpp \
 	-I$(top_srcdir)/src/mesa \
 	-I$(top_builddir)/src/mesa \
diff --git a/src/mesa/drivers/dri/i965/Makefile.am b/src/mesa/drivers/dri/i965/Makefile.am
index 9d003e4..5339331 100644
--- a/src/mesa/drivers/dri/i965/Makefile.am
+++ b/src/mesa/drivers/dri/i965/Makefile.am
@@ -33,8 +33,7 @@ AM_CFLAGS = \
 	-I$(top_srcdir)/src/mesa/drivers/dri/common \
 	-I$(top_srcdir)/src/mesa/drivers/dri/intel/server \
 	-I$(top_srcdir)/src/gtest/include \
-	-I$(top_srcdir)/src/glsl/nir \
-	-I$(top_builddir)/src/glsl/nir \
+	-I$(top_builddir)/src/compiler/nir \
 	-I$(top_builddir)/src/mesa/drivers/dri/common \
 	$(DEFINES) \
 	$(VISIBILITY_CFLAGS) \
diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
index bca4589..c14ec3a 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.h
+++ b/src/mesa/drivers/dri/i965/brw_fs.h
@@ -27,11 +27,11 @@
 
 #pragma once
 
+#include "compiler/nir/nir.h"
 #include "brw_shader.h"
 #include "brw_ir_fs.h"
 #include "brw_fs_builder.h"
 #include "glsl/ir.h"
-#include "glsl/nir/nir.h"
 
 struct bblock_t;
 namespace {
diff --git a/src/mesa/drivers/dri/i965/brw_nir.c b/src/mesa/drivers/dri/i965/brw_nir.c
index f04c9f7..ae4e7c7 100644
--- a/src/mesa/drivers/dri/i965/brw_nir.c
+++ b/src/mesa/drivers/dri/i965/brw_nir.c
@@ -21,9 +21,9 @@
  * IN THE SOFTWARE.
  */
 
+#include "compiler/nir/glsl_to_nir.h"
 #include "brw_nir.h"
 #include "brw_shader.h"
-#include "glsl/nir/glsl_to_nir.h"
 #include "program/prog_to_nir.h"
 
 static bool
diff --git a/src/mesa/drivers/dri/i965/brw_nir.h b/src/mesa/drivers/dri/i965/brw_nir.h
index 0a8a5a2..095461c 100644
--- a/src/mesa/drivers/dri/i965/brw_nir.h
+++ b/src/mesa/drivers/dri/i965/brw_nir.h
@@ -23,9 +23,9 @@
 
 #pragma once
 
+#include "compiler/nir/nir.h"
 #include "brw_context.h"
 #include "brw_reg.h"
-#include "glsl/nir/nir.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h b/src/mesa/drivers/dri/i965/brw_vec4.h
index 25b1139..a006cbf 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4.h
+++ b/src/mesa/drivers/dri/i965/brw_vec4.h
@@ -24,6 +24,8 @@
 #ifndef BRW_VEC4_H
 #define BRW_VEC4_H
 
+#include "compiler/nir/nir.h"
+
 #include "brw_shader.h"
 #include "brw_program.h"
 
@@ -32,7 +34,6 @@
 #endif
 
 #include "glsl/ir.h"
-#include "glsl/nir/nir.h"
 
 
 #ifdef __cplusplus
diff --git a/src/mesa/drivers/dri/i965/intel_asm_annotation.c b/src/mesa/drivers/dri/i965/intel_asm_annotation.c
index 59cc863..baf28c3 100644
--- a/src/mesa/drivers/dri/i965/intel_asm_annotation.c
+++ b/src/mesa/drivers/dri/i965/intel_asm_annotation.c
@@ -21,11 +21,11 @@
  * IN THE SOFTWARE.
  */
 
+#include "compiler/nir/nir.h"
 #include "brw_cfg.h"
 #include "brw_eu.h"
 #include "intel_debug.h"
 #include "intel_asm_annotation.h"
-#include "glsl/nir/nir.h"
 
 void
 dump_assembly(void *assembly, int num_annotations, struct annotation *annotation,
diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c
index cc90efe..a075b0a 100644
--- a/src/mesa/drivers/dri/i965/intel_screen.c
+++ b/src/mesa/drivers/dri/i965/intel_screen.c
@@ -36,7 +36,7 @@
 #include "swrast/s_renderbuffer.h"
 #include "util/ralloc.h"
 #include "brw_shader.h"
-#include "glsl/nir/nir.h"
+#include "compiler/nir/nir.h"
 
 #include "utils.h"
 #include "xmlpool.h"
diff --git a/src/mesa/program/Android.mk b/src/mesa/program/Android.mk
index cc67f8a..ccb0fa5 100644
--- a/src/mesa/program/Android.mk
+++ b/src/mesa/program/Android.mk
@@ -75,7 +75,6 @@ LOCAL_C_INCLUDES := \
 	$(MESA_TOP)/src/mapi \
 	$(MESA_TOP)/src/mesa \
 	$(MESA_TOP)/src/glsl \
-	$(MESA_TOP)/src/glsl/nir \
 	$(MESA_TOP)/src/gallium/auxiliary \
 	$(MESA_TOP)/src/gallium/include
 
diff --git a/src/mesa/program/prog_to_nir.c b/src/mesa/program/prog_to_nir.c
index 539e3c0..6393277 100644
--- a/src/mesa/program/prog_to_nir.c
+++ b/src/mesa/program/prog_to_nir.c
@@ -23,8 +23,8 @@
  * IN THE SOFTWARE.
  */
 
-#include "nir/nir.h"
-#include "nir/nir_builder.h"
+#include "compiler/nir/nir.h"
+#include "compiler/nir/nir_builder.h"
 #include "glsl/list.h"
 #include "main/imports.h"
 #include "util/ralloc.h"
-- 
2.6.2



More information about the mesa-dev mailing list