new file mode 100644
@@ -0,0 +1,44 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.20
+ * [end config]
+ *
+ * From page 19 (page 25 of the PDF) of the GLSL 1.20 spec:
+ *
+ * "All basic types and structures can be formed into arrays."
+ */
+#version 120
+#extension GL_ARB_arrays_of_arrays: enable
+
+uniform float array01[1][1];
+uniform int array02[1][1];
+uniform bool array03[1][1];
+uniform vec2 array04[1][1];
+uniform vec3 array05[1][1];
+uniform vec4 array06[1][1];
+uniform ivec2 array07[1][1];
+uniform ivec3 array08[1][1];
+uniform ivec4 array09[1][1];
+uniform bvec2 array10[1][1];
+uniform bvec3 array11[1][1];
+uniform bvec4 array12[1][1];
+uniform mat2 array13[1][1];
+uniform mat2x2 array14[1][1];
+uniform mat2x3 array15[1][1];
+uniform mat2x4 array16[1][1];
+uniform mat3 array17[1][1];
+uniform mat3x2 array18[1][1];
+uniform mat3x3 array19[1][1];
+uniform mat3x4 array20[1][1];
+uniform mat4 array21[1][1];
+uniform mat4x2 array22[1][1];
+uniform mat4x3 array23[1][1];
+uniform mat4x4 array24[1][1];
+uniform sampler1D array25[1][1];
+uniform sampler2D array26[1][1];
+uniform sampler3D array27[1][1];
+uniform samplerCube array28[1][1];
+uniform sampler1DShadow array29[1][1];
+uniform sampler2DShadow array30[1][1];
+
+void main() { gl_Position = vec4(0.0); }
new file mode 100644
@@ -0,0 +1,31 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.30
+ * [end config]
+ *
+ * Test the basic types added in glsl 1.30
+ */
+#version 130
+#extension GL_ARB_arrays_of_arrays: enable
+
+uniform uint array01[1][1];
+uniform uvec2 array02[1][1];
+uniform uvec3 array03[1][1];
+uniform uvec4 array04[1][1];
+uniform samplerCubeShadow array05[1][1];
+uniform sampler1DArray array06[1][1];
+uniform sampler2DArray array07[1][1];
+uniform isampler1D array08[1][1];
+uniform isampler2D array09[1][1];
+uniform isampler3D array10[1][1];
+uniform isamplerCube array11[1][1];
+uniform isampler1DArray array12[1][1];
+uniform isampler2DArray array13[1][1];
+uniform usampler1D array14[1][1];
+uniform usampler2D array15[1][1];
+uniform usampler3D array16[1][1];
+uniform usamplerCube array17[1][1];
+uniform usampler1DArray array18[1][1];
+uniform usampler2DArray array19[1][1];
+
+void main() { gl_Position = vec4(0.0); }
new file mode 100644
@@ -0,0 +1,19 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.40
+ * [end config]
+ *
+ * Test the basic types added in glsl 1.40
+ */
+#version 140
+#extension GL_ARB_arrays_of_arrays: enable
+
+uniform sampler2DRect array01[1][1];
+uniform isampler2DRect array02[1][1];
+uniform usampler2DRect array03[1][1];
+uniform sampler2DRectShadow array04[1][1];
+uniform samplerBuffer array05[1][1];
+uniform isamplerBuffer array06[1][1];
+uniform usamplerBuffer array07[1][1];
+
+void main() { gl_Position = vec4(0.0); }
new file mode 100644
@@ -0,0 +1,18 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.50
+ * [end config]
+ *
+ * Test the basic types added in glsl 1.50
+ */
+#version 150
+#extension GL_ARB_arrays_of_arrays: enable
+
+uniform sampler2DMS array01[1][1];
+uniform isampler2DMS array02[1][1];
+uniform usampler2DMS array03[1][1];
+uniform sampler2DMSArray array04[1][1];
+uniform isampler2DMSArray array05[1][1];
+uniform usampler2DMSArray array06[1][1];
+
+void main() { gl_Position = vec4(0.0); }
new file mode 100644
@@ -0,0 +1,32 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 4.00
+ * [end config]
+ *
+ * Test the basic types added in glsl 4.00
+ */
+#version 400
+#extension GL_ARB_arrays_of_arrays: enable
+
+uniform double array01[1][1];
+uniform dvec2 array02[1][1];
+uniform dvec3 array03[1][1];
+uniform dvec4 array04[1][1];
+uniform dmat2 array05[1][1];
+uniform dmat2x2 array06[1][1];
+uniform dmat2x3 array07[1][1];
+uniform dmat2x4 array08[1][1];
+uniform dmat3 array09[1][1];
+uniform dmat3x2 array10[1][1];
+uniform dmat3x3 array11[1][1];
+uniform dmat3x4 array12[1][1];
+uniform dmat4 array13[1][1];
+uniform dmat4x2 array14[1][1];
+uniform dmat4x3 array15[1][1];
+uniform dmat4x4 array16[1][1];
+uniform samplerCubeArray array17[1][1];
+uniform isamplerCubeArray array18[1][1];
+uniform usamplerCubeArray array19[1][1];
+uniform samplerCubeArrayShadow array20[1][1];
+
+void main() { gl_Position = vec4(0.0); }
new file mode 100644
@@ -0,0 +1,46 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 4.20
+ * [end config]
+ *
+ * Test the basic types added in glsl 4.20
+ */
+#version 420
+#extension GL_ARB_arrays_of_arrays: enable
+
+uniform atomic_uint array01[1][1];
+writeonly uniform image1D array02[1][1];
+writeonly uniform iimage1D array03[1][1];
+writeonly uniform uimage1D array04[1][1];
+writeonly uniform image2D array05[1][1];
+writeonly uniform iimage2D array06[1][1];
+writeonly uniform uimage2D array07[1][1];
+writeonly uniform image3D array08[1][1];
+writeonly uniform iimage3D array09[1][1];
+writeonly uniform uimage3D array10[1][1];
+writeonly uniform image2DRect array11[1][1];
+writeonly uniform iimage2DRect array12[1][1];
+writeonly uniform uimage2DRect array13[1][1];
+writeonly uniform imageCube array14[1][1];
+writeonly uniform iimageCube array15[1][1];
+writeonly uniform uimageCube array16[1][1];
+writeonly uniform imageBuffer array17[1][1];
+writeonly uniform iimageBuffer array18[1][1];
+writeonly uniform uimageBuffer array19[1][1];
+writeonly uniform image1DArray array20[1][1];
+writeonly uniform iimage1DArray array21[1][1];
+writeonly uniform uimage1DArray array22[1][1];
+writeonly uniform image2DArray array23[1][1];
+writeonly uniform iimage2DArray array24[1][1];
+writeonly uniform uimage2DArray array25[1][1];
+writeonly uniform imageCubeArray array26[1][1];
+writeonly uniform iimageCubeArray array27[1][1];
+writeonly uniform uimageCubeArray array28[1][1];
+writeonly uniform image2DMS array29[1][1];
+writeonly uniform iimage2DMS array30[1][1];
+writeonly uniform uimage2DMS array31[1][1];
+writeonly uniform image2DMSArray array32[1][1];
+writeonly uniform iimage2DMSArray array33[1][1];
+writeonly uniform uimage2DMSArray array34[1][1];
+
+void main() { gl_FragColor = vec4(0.0); }