--- /dev/null
+#pragma MSP stage(vertex)
+void main()
+{
+ int i = 0;
+ i = i-3;
+ float f = 0;
+ f = (f+i)*(f/i);
+ bool b = i<f || i>=f;
+ b = b && i==f;
+
+ int j = 1;
+ i = i|j;
+ j = j<<(i%5);
+ b = b || i!=j;
+
+ mat4x2 m1;
+ mat2x4 m2;
+ mat4 m3 = m2*m1*5;
+ vec4 v1 = vec4(1.0);
+ vec4 v2;
+ v2 = m3*v1;
+ vec2 v3;
+ v3 = v1*m2+v2.xy;
+
+ if(b)
+ ++v3;
+}
+
+/* Expected output: vertex
+void main()
+{
+ int i = 0;
+ i = i-3;
+ float f = float(0);
+ f = (f+float(i))*(f/float(i));
+ bool b = float(i)<f||float(i)>=f;
+ b = b&&float(i)==f;
+ int j = 1;
+ i = i|1;
+ j = j<<(i%5);
+ b = b||i!=j;
+ mat4x2 m1;
+ mat2x4 m2;
+ vec4 v1 = vec4(1.0);
+ vec2 v3;
+ v3 = v1*m2+(m2*m1*float(5)*v1).xy;
+ if(b)
+ ++v3;
+}
+*/