--- /dev/null
+uniform mat4 mvp;
+
+#pragma MSP stage(vertex)
+layout(location=0) in vec4 position;
+int main()
+{
+ vec4 c0 = mvp[0]*position;
+ vec4 c1 = mvp[1]*position;
+ vec4 c2 = mvp[2]*position;
+ vec4 c3 = mvp[3]*position;
+ vec4 clip_pos;
+ clip_pos.x = c0.x+c1.x+c2.x+c3.x;
+ clip_pos.y = c0.y+c1.y+c2.y+c3.y;
+ clip_pos.z = c0.z+c1.z+c2.z+c3.z;
+ clip_pos.w = c0.w+c1.w+c2.w+c3.w;
+ gl_Position = vec4(clip_pos.xy, 0.0, 1.0);
+}
+
+/* Expected output: vertex
+layout(location=0) uniform mat4 mvp;
+layout(location=0) in vec4 position;
+int main()
+{
+ vec4 c0 = mvp[0]*position;
+ vec4 c1 = mvp[1]*position;
+ vec4 c2 = mvp[2]*position;
+ vec4 c3 = mvp[3]*position;
+ vec4 clip_pos;
+ clip_pos.x = c0.x+c1.x+c2.x+c3.x;
+ clip_pos.y = c0.y+c1.y+c2.y+c3.y;
+ gl_Position = vec4(clip_pos.xy, 0.0, 1.0);
+}
+*/