summaryrefslogtreecommitdiff
path: root/reference
diff options
context:
space:
mode:
authorRob Clark <robdclark@gmail.com>2015-01-04 09:05:50 -0500
committerRob Clark <robdclark@gmail.com>2015-01-05 16:04:41 -0500
commita6799180ce0c1fdf4d2ab02e3d8cfc9a1a52aafd (patch)
treee859dc635eae16fde5e226ed18204354a236747e /reference
parent345d693f24a5eb240b76cb1da4ed8f4880470028 (diff)
test updates
Drop duplicate chrome shader, add a handful of shaders extracted from piglit tests.
Diffstat (limited to 'reference')
-rw-r--r--reference/chrome-bad.asm121
-rw-r--r--reference/cp-fail-vert.asm38
-rw-r--r--reference/piglit-arb_framebuffer_srgb-blit-frag1.asm31
-rw-r--r--reference/piglit-arb_framebuffer_srgb-blit-frag2.asm20
-rw-r--r--reference/piglit-fs-varying-array-mat4-index-col-row-rd.asm184
-rw-r--r--reference/piglit-glsl-fs-varying-array.asm77
-rw-r--r--reference/piglit-tex-miplevel-selection-1d-shadow.asm40
-rw-r--r--reference/piglit-vs-temp-array-mat3-index-col-rd.asm202
-rw-r--r--reference/piglit-vs-varying-array-mat2-index-rd.asm213
-rw-r--r--reference/piglit-vs-varying-array-mat4-index-rd.asm325
10 files changed, 1130 insertions, 121 deletions
diff --git a/reference/chrome-bad.asm b/reference/chrome-bad.asm
deleted file mode 100644
index 386d1c8..0000000
--- a/reference/chrome-bad.asm
+++ /dev/null
@@ -1,121 +0,0 @@
-; options:
-; VERT: new compiler
-@in(r0.x) in0
-@in(r0.y) in1
-@in(r0.z) in2
-@in(r0.w) in3
-@in(r1.x) in4
-@in(r1.y) in5
-@in(r1.z) in8
-@out(r0.x) out0
-@out(r0.y) out1
-@out(r0.z) out2
-@out(r0.w) out3
-@out(r1.x) out4
-@out(r1.y) out5
-@out(r1.z) out6
-@out(r1.w) out7
-(sy)(ss)mul.f r1.z, r1.z, c40.x
-(rpt2)nop
-trunc.f r1.z, r1.z
-(rpt2)nop
-mov.f32f32 r1.z, r1.z
-(rpt2)nop
-max.f r1.w, r1.z, c40.y
-max.f r2.x, r1.z, c40.y
-max.f r2.y, r1.z, c40.y
-max.f r2.z, r1.z, c40.y
-min.f r1.w, r1.w, c40.z
-mov.f32f32 r2.x, r2.x
-min.f r2.y, r2.y, c40.z
-min.f r2.z, r2.z, c40.z
-mov.f32f32 r1.w, r1.w
-min.f r2.x, r2.x, c40.z
-mov.f32f32 r2.y, r2.y
-mov.f32f32 r2.z, r2.z
-trunc.f r1.w, r1.w
-mov.f32f32 r2.x, r2.x
-trunc.f r2.y, r2.y
-trunc.f r2.z, r2.z
-mov.f32f32 r1.w, r1.w
-trunc.f r2.x, r2.x
-mov.f32f32 r2.y, r2.y
-mov.f32f32 r2.z, r2.z
-mul.f r1.w, r1.w, c40.w
-mov.f32f32 r2.x, r2.x
-mul.f r2.y, r2.y, c40.w
-mul.f r2.z, r2.z, c40.w
-mov.f32f32 r1.w, r1.w
-cov.f32s16 hr0.x, r2.x
-mov.f32f32 r2.x, r2.y
-mov.f32f32 r2.y, r2.z
-cov.f32s16 hr0.y, r1.w
-shl.b hr0.x, hr0.x, 2
-cov.f32s16 hr0.z, r2.x
-cov.f32s16 hr0.w, r2.y
-shl.b hr0.y, hr0.y, 2
-mova a0.x, hr0.x
-shl.b hr0.x, hr0.z, 2
-shl.b hr0.z, hr0.w, 2
-max.f r2.x, r1.z, c40.y
-(rpt2)nop
-mov.f32f32 r1.z, c<a0.x + 129>
-mov.f32f32 r1.w, c<a0.x + 131>
-mov.f32f32 r2.y, c<a0.x + 128>
-(ul)mov.f32f32 r2.z, c<a0.x + 130>
-mova a0.x, hr0.y
-mad.f32 r1.y, r1.y, r1.w, r1.z
-mov.f32f32 r1.w, r1.w
-mov.f32f32 r1.z, r2.z
-mad.f32 r1.x, r1.x, r2.z, r2.y
-min.f r2.x, r2.x, c40.z
-nop
-mul.f r2.y, c<a0.x>, r0.x
-mul.f r2.z, c<a0.x>, r0.x
-mul.f r2.w, c<a0.x>, r0.x
-(ul)mul.f r0.x, c<a0.x>, r0.x
-mova a0.x, hr0.x
-mov.f32f32 r1.y, r1.y
-mov.f32f32 r1.x, r1.x
-mov.f32f32 r2.x, r2.x
-(rpt2)nop
-mad.f32 r2.y, c<a0.x + 4>, r0.y, r2.y
-mad.f32 r2.z, c<a0.x + 4>, r0.y, r2.z
-mad.f32 r2.w, c<a0.x + 4>, r0.y, r2.w
-(ul)mad.f32 r0.x, c<a0.x + 4>, r0.y, r0.x
-mova a0.x, hr0.z
-mov.f32f32 r1.y, r1.y
-mov.f32f32 r1.x, r1.x
-trunc.f r0.y, r2.x
-(rpt2)nop
-mad.f32 r2.x, c<a0.x + 8>, r0.z, r2.y
-mov.f32f32 r0.y, r0.y
-mad.f32 r2.y, c<a0.x + 8>, r0.z, r2.z
-mad.f32 r2.z, c<a0.x + 8>, r0.z, r2.w
-(ul)mad.f32 r0.x, c<a0.x + 8>, r0.z, r0.x
-mul.f r0.y, r0.y, c40.w
-(rpt2)nop
-mov.f32f32 r0.y, r0.y
-(rpt2)nop
-cov.f32s16 hr0.x, r0.y
-(rpt2)nop
-shl.b hr0.x, hr0.x, 2
-(rpt2)nop
-mova a0.x, hr0.x
-(rpt5)nop
-mad.f32 r0.y, c<a0.x + 12>, r0.w, r2.x
-mad.f32 r0.z, c<a0.x + 12>, r0.w, r2.y
-mad.f32 r2.x, c<a0.x + 12>, r0.w, r2.z
-(ul)mad.f32 r0.x, c<a0.x + 12>, r0.w, r0.x
-mov.f32f32 r0.w, r0.y
-mov.f32f32 r0.z, r0.z
-mov.f32f32 r0.y, r2.x
-mov.f32f32 r0.x, r0.x
-end
-nop
-nop
-nop
-; VERT: outputs: r0.x (0:0) r1.x (5:20)
-; VERT: inputs: r0.x (0:0,cm=f,il=8,b=0) r1.x (0:0,cm=3,il=12,b=0) r1.z (0:0,cm=1,il=16,b=0)
-; VERT: 122 instructions, 1 half, 3 full
-
diff --git a/reference/cp-fail-vert.asm b/reference/cp-fail-vert.asm
new file mode 100644
index 0000000..72f55b9
--- /dev/null
+++ b/reference/cp-fail-vert.asm
@@ -0,0 +1,38 @@
+; options:
+; VERT: new compiler
+@in(r1.x) in0
+@in(r1.y) in1
+@in(r1.z) in2
+@in(r1.w) in3
+@out(r0.x) out0
+@out(r0.y) out1
+@out(r0.z) out2
+@out(r0.w) out3
+@out(r1.x) out4
+@out(r1.y) out5
+@out(r1.z) out6
+@out(r1.w) out7
+(sy)(ss)mul.f r0.x, c0.w, r1.x
+mul.f r0.y, c0.z, r1.x
+mad.f32 r0.x, c1.w, r1.y, r0.x
+mad.f32 r0.y, c1.z, r1.y, r0.y
+mad.f32 r0.x, c2.w, r1.z, r0.x
+mad.f32 r0.y, c2.z, r1.z, r0.y
+mad.f32 r0.w, c3.w, r1.w, r0.x
+mad.f32 r0.z, c3.z, r1.w, r0.y
+mul.f r0.x, c0.y, r1.x
+mul.f r0.y, c0.x, r1.x
+mad.f32 r0.x, c1.y, r1.y, r0.x
+mad.f32 r0.y, c1.x, r1.y, r0.y
+mad.f32 r0.x, c2.y, r1.z, r0.x
+mad.f32 r1.z, c2.x, r1.z, r0.y
+mad.f32 r0.y, c3.y, r1.w, r0.x
+mad.f32 r0.x, c3.x, r1.w, r1.z
+mov.f32f32 r1.w, (0.000000)
+mov.f32f32 r1.z, (0.000000)
+end
+nop
+; VERT: outputs: r0.x (0:0) r1.x (5:9)
+; VERT: inputs: r1.x (0:0,cm=f,il=8,b=0)
+; VERT: 19 instructions, 0 half, 2 full
+
diff --git a/reference/piglit-arb_framebuffer_srgb-blit-frag1.asm b/reference/piglit-arb_framebuffer_srgb-blit-frag1.asm
new file mode 100644
index 0000000..8c430d0
--- /dev/null
+++ b/reference/piglit-arb_framebuffer_srgb-blit-frag1.asm
@@ -0,0 +1,31 @@
+; options:
+; FRAG: new compiler
+@in(r0.x) in0
+@out(r2.x) out0
+@out(r2.y) out1
+@out(r2.z) out2
+@out(r2.w) out3
+(sy)(ss)add.s r0.x, r0.x, -8
+(rpt2)nop
+shr.b r0.x, r0.x, 4
+(rpt2)nop
+cov.u32f32 r0.x, r0.x
+(rpt2)nop
+add.f r0.x, r0.x, c1.x
+(rpt2)nop
+add.f r0.x, r0.x, c1.z
+(rpt2)nop
+mul.f r2.x, r0.x, c1.w
+(rpt2)nop
+mov.f32f32 r2.y, r2.x
+(rpt2)nop
+mov.f32f32 r2.w, r2.y
+mov.f32f32 r2.z, r2.y
+end
+nop
+nop
+nop
+; FRAG: outputs: r2.x (1:0)
+; FRAG: inputs: r0.x (0:0,cm=f,il=8,b=0)
+; FRAG: 31 instructions, 0 half, 3 full
+
diff --git a/reference/piglit-arb_framebuffer_srgb-blit-frag2.asm b/reference/piglit-arb_framebuffer_srgb-blit-frag2.asm
new file mode 100644
index 0000000..46a2696
--- /dev/null
+++ b/reference/piglit-arb_framebuffer_srgb-blit-frag2.asm
@@ -0,0 +1,20 @@
+; options:
+; FRAG: new compiler
+@in(r0.x) in0
+@in(r0.y) in1
+@out(r1.x) out0
+@out(r1.y) out1
+@out(r1.z) out2
+@out(r1.w) out3
+(sy)(ss)bary.f r0.z, 0, r0.x
+bary.f (ei)r0.w, 1, r0.x
+(rpt5)nop
+sam (f32)(xyzw)r1.x, r0.z, s#0, t#0
+end
+nop
+nop
+nop
+; FRAG: outputs: r1.x (1:0)
+; FRAG: inputs: r0.x (5:0,cm=f,il=8,b=1)
+; FRAG: 10 instructions, 0 half, 2 full
+
diff --git a/reference/piglit-fs-varying-array-mat4-index-col-row-rd.asm b/reference/piglit-fs-varying-array-mat4-index-col-row-rd.asm
new file mode 100644
index 0000000..e15b70f
--- /dev/null
+++ b/reference/piglit-fs-varying-array-mat4-index-col-row-rd.asm
@@ -0,0 +1,184 @@
+; options:
+; FRAG: old compiler
+@in(r0.x) in0
+@in(r0.y) in1
+@out(r13.x) out0
+@out(r13.y) out1
+@out(r13.z) out2
+@out(r13.w) out3
+(sy)(ss)bary.f r1.x, 0, r0.x
+bary.f r1.y, 1, r0.x
+bary.f r1.z, 2, r0.x
+bary.f r1.w, 3, r0.x
+bary.f r2.x, 4, r0.x
+bary.f r2.y, 5, r0.x
+bary.f r2.z, 6, r0.x
+bary.f r2.w, 7, r0.x
+bary.f r3.x, 8, r0.x
+bary.f r3.y, 9, r0.x
+bary.f r3.z, 10, r0.x
+bary.f r3.w, 11, r0.x
+bary.f r4.x, 12, r0.x
+bary.f r4.y, 13, r0.x
+bary.f r4.z, 14, r0.x
+bary.f r4.w, 15, r0.x
+bary.f r5.x, 16, r0.x
+bary.f r5.y, 17, r0.x
+bary.f r5.z, 18, r0.x
+bary.f r5.w, 19, r0.x
+bary.f r6.x, 20, r0.x
+bary.f r6.y, 21, r0.x
+bary.f r6.z, 22, r0.x
+bary.f r6.w, 23, r0.x
+bary.f r7.x, 24, r0.x
+bary.f r7.y, 25, r0.x
+bary.f r7.z, 26, r0.x
+bary.f r7.w, 27, r0.x
+bary.f r8.x, 28, r0.x
+bary.f r8.y, 29, r0.x
+bary.f r8.z, 30, r0.x
+bary.f r8.w, 31, r0.x
+bary.f r9.x, 32, r0.x
+bary.f r9.y, 33, r0.x
+bary.f r9.z, 34, r0.x
+bary.f r9.w, 35, r0.x
+bary.f r10.x, 36, r0.x
+bary.f r10.y, 37, r0.x
+bary.f r10.z, 38, r0.x
+bary.f r10.w, 39, r0.x
+bary.f r11.x, 40, r0.x
+bary.f r11.y, 41, r0.x
+bary.f r11.z, 42, r0.x
+bary.f r11.w, 43, r0.x
+bary.f r12.x, 44, r0.x
+bary.f r12.y, 45, r0.x
+bary.f r12.z, 46, r0.x
+bary.f (ei)r12.w, 47, r0.x
+nop
+nop
+nop
+nop
+nop
+nop
+mov.f32f32 r17.x, c0.x
+mov.f32f32 r17.y, c0.x
+mov.f32f32 r17.z, c0.x
+mov.f32f32 r17.w, c0.x
+mul.f r14.x, r17.x, c4.x
+nop
+nop
+nop
+add.f r17.x, c1.x, r14.x
+nop
+nop
+nop
+mov.f32f32 r14.x, r17.x
+nop
+nop
+nop
+cov.f32s16 hr14.x, r14.x
+nop
+nop
+nop
+shl.b hr14.x, hr14.x, 2
+nop
+nop
+nop
+mova a0.x, hr14.x
+nop
+nop
+nop
+nop
+nop
+nop
+mov.f32f32 r14.x, r<a0.x + 4>
+mov.f32f32 r14.y, r<a0.x + 5>
+mov.f32f32 r14.z, r<a0.x + 6>
+(ul)mov.f32f32 r14.w, r<a0.x + 7>
+mov.f32f32 r18.x, c5.x
+mov.f32f32 r18.y, c5.y
+mov.f32f32 r18.z, c5.z
+mov.f32f32 r18.w, c5.w
+cmps.f.eq r17.x, r18.x, c2.x
+cmps.f.eq r17.y, r18.y, c2.x
+cmps.f.eq r17.z, r18.z, c2.x
+cmps.f.eq r17.w, r18.w, c2.x
+cov.u32f32 r15.y, r17.y
+cov.u32f32 r15.z, r17.z
+cov.u32f32 r15.w, r17.w
+nop
+cmps.f.ge r17.x, (neg)r15.y, c4.y
+cmps.f.ge r17.y, (neg)r15.y, c4.y
+cmps.f.ge r17.z, (neg)r15.y, c4.y
+cmps.f.ge r17.w, (neg)r15.y, c4.y
+add.s r17.x, r17.x, -1
+add.s r17.y, r17.y, -1
+add.s r17.z, r17.z, -1
+add.s r17.w, r17.w, -1
+sel.f32 r16.x, r14.x, r17.x, r14.y
+nop
+nop
+nop
+cmps.f.ge r18.x, (neg)r15.z, c4.y
+cmps.f.ge r18.y, (neg)r15.z, c4.y
+cmps.f.ge r18.z, (neg)r15.z, c4.y
+cmps.f.ge r18.w, (neg)r15.z, c4.y
+add.s r18.x, r18.x, -1
+add.s r18.y, r18.y, -1
+add.s r18.z, r18.z, -1
+add.s r18.w, r18.w, -1
+sel.f32 r17.x, r16.x, r18.x, r14.z
+nop
+nop
+nop
+mov.f32f32 r16.x, r17.x
+nop
+nop
+nop
+cmps.f.ge r18.x, (neg)r15.w, c4.y
+cmps.f.ge r18.y, (neg)r15.w, c4.y
+cmps.f.ge r18.z, (neg)r15.w, c4.y
+cmps.f.ge r18.w, (neg)r15.w, c4.y
+add.s r18.x, r18.x, -1
+add.s r18.y, r18.y, -1
+add.s r18.z, r18.z, -1
+add.s r18.w, r18.w, -1
+sel.f32 r17.x, r16.x, r18.x, r14.w
+nop
+nop
+nop
+mov.f32f32 r16.x, r17.x
+nop
+nop
+nop
+cmps.f.eq r17.x, c3.x, r16.x
+cmps.f.eq r17.y, c3.x, r16.x
+cmps.f.eq r17.z, c3.x, r16.x
+cmps.f.eq r17.w, c3.x, r16.x
+cov.u32f32 r14.x, r17.x
+nop
+nop
+nop
+cmps.f.eq p0.x, r14.x, c4.y
+br p0.x, #6
+mov.f32f32 r14.x, c4.y
+mov.f32f32 r14.y, c4.z
+mov.f32f32 r14.z, c4.y
+mov.f32f32 r14.w, c4.z
+jump #6
+(jp)nop
+mov.f32f32 r14.x, c4.z
+mov.f32f32 r14.y, c4.y
+mov.f32f32 r14.z, c4.y
+mov.f32f32 r14.w, c4.z
+(jp)nop
+mov.f32f32 r13.x, r14.x
+mov.f32f32 r13.y, r14.y
+mov.f32f32 r13.z, r14.z
+mov.f32f32 r13.w, r14.w
+end
+nop
+; FRAG: outputs: r13.x (1:0)
+; FRAG: inputs: r1.x (5:9,cm=f,il=8,b=1) r2.x (5:10,cm=f,il=12,b=1) r3.x (5:11,cm=f,il=16,b=1) r4.x (5:12,cm=f,il=20,b=1) r5.x (5:13,cm=f,il=24,b=1) r6.x (5:14,cm=f,il=28,b=1) r7.x (5:15,cm=f,il=32,b=1) r8.x (5:16,cm=f,il=36,b=1) r9.x (5:17,cm=f,il=40,b=1) r10.x (5:18,cm=f,il=44,b=1) r11.x (5:19,cm=f,il=48,b=1) r12.x (5:20,cm=f,il=52,b=1)
+; FRAG: 171 instructions, 15 half, 19 full
+
diff --git a/reference/piglit-glsl-fs-varying-array.asm b/reference/piglit-glsl-fs-varying-array.asm
new file mode 100644
index 0000000..a9862ea
--- /dev/null
+++ b/reference/piglit-glsl-fs-varying-array.asm
@@ -0,0 +1,77 @@
+; options:
+ir3/ir3_cmdline.c:168:reset_variant: error: new compiler failed, trying without copy propagation!
+ir3/ir3_cmdline.c:168:reset_variant: error: new compiler failed, trying fallback!
+
+; FRAG: old compiler
+@in(r1.x) in0
+@in(r1.y) in0
+@in(r1.z) in0
+@in(r1.w) in0
+@in(r2.x) in1
+@in(r2.y) in1
+@in(r2.z) in1
+@in(r2.w) in1
+@in(r3.x) in2
+@in(r3.y) in2
+@in(r3.z) in2
+@in(r3.w) in2
+@in(r4.x) in3
+@in(r4.y) in3
+@in(r4.z) in3
+@in(r4.w) in3
+@out(r5.x) out0
+@out(r5.y) out0
+@out(r5.z) out0
+@out(r5.w) out0
+(sy)(ss)bary.f r1.x, 0, r0.x
+bary.f r1.y, 1, r0.x
+bary.f r1.z, 2, r0.x
+bary.f r1.w, 3, r0.x
+bary.f r2.x, 4, r0.x
+bary.f r2.y, 5, r0.x
+bary.f r2.z, 6, r0.x
+bary.f r2.w, 7, r0.x
+bary.f r3.x, 8, r0.x
+bary.f r3.y, 9, r0.x
+bary.f r3.z, 10, r0.x
+bary.f r3.w, 11, r0.x
+bary.f r4.x, 12, r0.x
+bary.f r4.y, 13, r0.x
+bary.f r4.z, 14, r0.x
+bary.f (ei)r4.w, 15, r0.x
+nop
+nop
+nop
+nop
+nop
+nop
+cov.f32s16 hr6.x, c0.x
+nop
+nop
+nop
+shl.b hr6.x, hr6.x, 2
+nop
+nop
+nop
+mova a0.x, hr6.x
+nop
+nop
+nop
+nop
+nop
+nop
+mov.f32f32 r6.x, r<a0.x + 4>
+mov.f32f32 r6.y, r<a0.x + 5>
+mov.f32f32 r6.z, r<a0.x + 6>
+(ul)mov.f32f32 r6.w, r<a0.x + 7>
+mov.f32f32 r5.x, r6.x
+mov.f32f32 r5.y, r6.y
+mov.f32f32 r5.z, r6.z
+mov.f32f32 r5.w, r6.w
+end
+nop
+nop
+; FRAG: outputs: r5.x (1:0)
+; FRAG: inputs: r1.x (5:9,cm=f,il=8,b=1) r2.x (5:10,cm=f,il=12,b=1) r3.x (5:11,cm=f,il=16,b=1) r4.x (5:12,cm=f,il=20,b=1)
+; FRAG: 46 instructions, 7 half, 7 full
+
diff --git a/reference/piglit-tex-miplevel-selection-1d-shadow.asm b/reference/piglit-tex-miplevel-selection-1d-shadow.asm
new file mode 100644
index 0000000..73d2804
--- /dev/null
+++ b/reference/piglit-tex-miplevel-selection-1d-shadow.asm
@@ -0,0 +1,40 @@
+; options:
+; FRAG: new compiler
+@in(r0.x) in0
+@in(r0.y) in1
+@out(r1.x) out0
+@out(r1.y) out1
+@out(r1.z) out2
+@out(r1.w) out3
+(sy)(ss)bary.f r0.z, 0, r0.x
+bary.f (ei)r0.x, 2, r0.x
+mov.f32f32 r2.z, (0.000000)
+mov.f32f32 r2.y, c3.x
+add.f r2.w, r0.z, c4.x
+add.f r3.y, r0.x, c4.y
+mov.f32f32 r3.x, (0.500000)
+mov.f32f32 r3.z, (0.000000)
+mov.f32f32 r3.w, c2.x
+mov.f32f32 r4.x, (0.000000)
+mov.f32f32 r4.y, c3.x
+mov.f32f32 r4.z, (0.000000)
+add.f r0.w, r0.z, c4.z
+add.f r1.y, r0.x, c4.w
+mov.f32f32 r1.x, (0.500000)
+mov.f32f32 r1.z, (0.000000)
+mov.f32f32 r1.w, c2.x
+mov.f32f32 r2.x, (0.000000)
+samgq.s (f32)(xyzw)r2.w, r2.w, s#0, t#0
+(rpt5)nop
+samgq.s (f32)(xyzw)r0.x, r0.w, s#1, t#1
+(sy)(ss)mul.f r1.w, r3.z, r0.w
+mul.f r1.z, r3.y, r0.z
+mul.f r1.y, r3.x, r0.y
+mul.f r1.x, r2.w, r0.x
+end
+nop
+nop
+; FRAG: outputs: r1.x (1:0)
+; FRAG: inputs: r0.x (5:0,cm=f,il=8,b=1)
+; FRAG: 31 instructions, 0 half, 5 full
+
diff --git a/reference/piglit-vs-temp-array-mat3-index-col-rd.asm b/reference/piglit-vs-temp-array-mat3-index-col-rd.asm
new file mode 100644
index 0000000..213c70d
--- /dev/null
+++ b/reference/piglit-vs-temp-array-mat3-index-col-rd.asm
@@ -0,0 +1,202 @@
+; options:
+; VERT: old compiler
+@in(r0.x) in0
+@in(r0.y) in1
+@in(r0.z) in2
+@in(r0.w) in3
+@out(r1.x) out0
+@out(r1.y) out1
+@out(r1.z) out2
+@out(r1.w) out3
+@out(r2.x) out4
+@out(r2.y) out5
+@out(r2.z) out6
+@out(r2.w) out7
+(sy)(ss)mul.f r3.x, c3.x, r0.x
+mul.f r3.y, c3.y, r0.x
+mul.f r3.z, c3.z, r0.x
+mul.f r3.w, c3.w, r0.x
+mad.f32 r3.x, c4.x, r0.y, r3.x
+mad.f32 r3.y, c4.y, r0.y, r3.y
+mad.f32 r3.z, c4.z, r0.y, r3.z
+mad.f32 r3.w, c4.w, r0.y, r3.w
+mad.f32 r3.x, c5.x, r0.z, r3.x
+mad.f32 r3.y, c5.y, r0.z, r3.y
+mad.f32 r3.z, c5.z, r0.z, r3.z
+mad.f32 r3.w, c5.w, r0.z, r3.w
+mad.f32 r3.x, c6.x, r0.w, r3.x
+mad.f32 r3.y, c6.y, r0.w, r3.y
+mad.f32 r3.z, c6.z, r0.w, r3.z
+mad.f32 r3.w, c6.w, r0.w, r3.w
+mov.f32f32 r4.x, c7.x
+mov.f32f32 r4.y, c7.y
+mov.f32f32 r4.z, c7.z
+mov.f32f32 r4.w, c7.x
+mov.f32f32 r5.x, c8.x
+mov.f32f32 r5.y, c8.y
+mov.f32f32 r5.z, c8.z
+mov.f32f32 r5.w, c8.x
+mov.f32f32 r6.x, c9.x
+mov.f32f32 r6.y, c9.y
+mov.f32f32 r6.z, c9.z
+mov.f32f32 r6.w, c9.x
+mov.f32f32 r7.x, r4.x
+mov.f32f32 r7.y, r4.y
+mov.f32f32 r7.z, r4.z
+mov.f32f32 r7.w, r4.z
+mov.f32f32 r8.x, r5.x
+mov.f32f32 r8.y, r5.y
+mov.f32f32 r8.z, r5.z
+mov.f32f32 r8.w, r5.z
+mov.f32f32 r9.x, r6.x
+mov.f32f32 r9.y, r6.y
+mov.f32f32 r9.z, r6.z
+mov.f32f32 r9.w, r6.z
+mov.f32f32 r16.x, c10.x
+mov.f32f32 r16.y, c10.y
+mov.f32f32 r16.z, c10.z
+mov.f32f32 r16.w, c10.x
+mov.f32f32 r17.x, c11.x
+mov.f32f32 r17.y, c11.y
+mov.f32f32 r17.z, c11.z
+mov.f32f32 r17.w, c11.x
+mov.f32f32 r18.x, c12.x
+mov.f32f32 r18.y, c12.y
+mov.f32f32 r18.z, c12.z
+mov.f32f32 r18.w, c12.x
+mov.f32f32 r10.x, r16.x
+mov.f32f32 r10.y, r16.y
+mov.f32f32 r10.z, r16.z
+mov.f32f32 r10.w, r16.z
+mov.f32f32 r11.x, r17.x
+mov.f32f32 r11.y, r17.y
+mov.f32f32 r11.z, r17.z
+mov.f32f32 r11.w, r17.z
+mov.f32f32 r12.x, r18.x
+mov.f32f32 r12.y, r18.y
+mov.f32f32 r12.z, r18.z
+mov.f32f32 r12.w, r18.z
+mov.f32f32 r19.x, c13.x
+mov.f32f32 r19.y, c13.y
+mov.f32f32 r19.z, c13.z
+mov.f32f32 r19.w, c13.x
+mov.f32f32 r20.x, c14.x
+mov.f32f32 r20.y, c14.y
+mov.f32f32 r20.z, c14.z
+mov.f32f32 r20.w, c14.x
+mov.f32f32 r21.x, c15.x
+mov.f32f32 r21.y, c15.y
+mov.f32f32 r21.z, c15.z
+mov.f32f32 r21.w, c15.x
+mov.f32f32 r13.x, r19.x
+mov.f32f32 r13.y, r19.y
+mov.f32f32 r13.z, r19.z
+mov.f32f32 r13.w, r19.z
+mov.f32f32 r14.x, r20.x
+mov.f32f32 r14.y, r20.y
+mov.f32f32 r14.z, r20.z
+mov.f32f32 r14.w, r20.z
+mov.f32f32 r15.x, r21.x
+mov.f32f32 r15.y, r21.y
+mov.f32f32 r15.z, r21.z
+mov.f32f32 r15.w, r21.z
+mov.f32f32 r25.x, c0.x
+mov.f32f32 r25.y, c0.x
+mov.f32f32 r25.z, c0.x
+mov.f32f32 r25.w, c0.x
+mul.f r22.x, r25.x, c7.z
+nop
+nop
+nop
+add.f r25.x, c1.x, r22.x
+nop
+nop
+nop
+mov.f32f32 r22.x, r25.x
+nop
+nop
+nop
+cov.f32s16 hr3.x, r22.x
+nop
+nop
+nop
+shl.b hr3.x, hr3.x, 2
+nop
+nop
+nop
+mova a0.x, hr3.x
+nop
+nop
+nop
+nop
+nop
+nop
+cmps.f.eq r25.x, c2.x, r<a0.x + 28>
+cmps.f.eq r25.y, c2.y, r<a0.x + 29>
+cmps.f.eq r25.z, c2.z, r<a0.x + 30>
+(ul)cmps.f.eq r25.w, c2.z, r<a0.x + 30>
+add.s r25.x, r25.x, -1
+add.s r25.y, r25.y, -1
+add.s r25.z, r25.z, -1
+add.s r25.w, r25.w, -1
+sel.f32 r23.x, c7.w, r25.x, c7.x
+sel.f32 r23.y, c7.w, r25.y, c7.x
+sel.f32 r23.z, c7.w, r25.z, c7.x
+sel.f32 r23.w, c7.w, r25.w, c7.x
+mul.f r24.x, r23.x, r23.x
+nop
+nop
+nop
+mad.f32 r25.x, r23.y, r23.y, r24.x
+nop
+nop
+nop
+mov.f32f32 r24.x, r25.x
+nop
+nop
+nop
+mad.f32 r22.x, r23.z, r23.z, r24.x
+nop
+nop
+nop
+cmps.f.ge r26.x, (neg)r22.x, c7.w
+cmps.f.ge r26.y, (neg)r22.x, c7.w
+cmps.f.ge r26.z, (neg)r22.x, c7.w
+cmps.f.ge r26.w, (neg)r22.x, c7.w
+cov.u32f32 r25.x, r26.x
+nop
+nop
+nop
+mov.f32f32 r22.x, r25.x
+nop
+nop
+nop
+cmps.f.eq p0.x, r22.x, c7.w
+br p0.x, #6
+mov.f32f32 r22.x, c7.w
+mov.f32f32 r22.y, c7.x
+mov.f32f32 r22.z, c7.w
+mov.f32f32 r22.w, c7.x
+jump #6
+(jp)nop
+mov.f32f32 r22.x, c7.x
+mov.f32f32 r22.y, c7.w
+mov.f32f32 r22.z, c7.w
+mov.f32f32 r22.w, c7.x
+(jp)nop
+mov.f32f32 r2.x, r22.x
+mov.f32f32 r2.y, r22.y
+mov.f32f32 r2.z, r22.z
+mov.f32f32 r2.w, r22.w
+mov.f32f32 r1.x, r3.x
+mov.f32f32 r1.y, r3.y
+mov.f32f32 r1.z, r3.z
+mov.f32f32 r1.w, r3.w
+end
+nop
+nop
+nop
+; VERT: outputs: r1.x (0:0) r2.x (5:9)
+; VERT: inputs: r0.x (0:0,cm=f,il=8,b=1)
+; VERT: 181 instructions, 4 half, 27 full
+
diff --git a/reference/piglit-vs-varying-array-mat2-index-rd.asm b/reference/piglit-vs-varying-array-mat2-index-rd.asm
new file mode 100644
index 0000000..46ff3a2
--- /dev/null
+++ b/reference/piglit-vs-varying-array-mat2-index-rd.asm
@@ -0,0 +1,213 @@
+; options:
+ir3/ir3_cmdline.c:168:reset_variant: error: new compiler failed, trying without copy propagation!
+ir3/ir3_cmdline.c:168:reset_variant: error: new compiler failed, trying fallback!
+
+; VERT: old compiler
+@in(r0.x) in0
+@in(r0.y) in0
+@in(r0.z) in0
+@in(r0.w) in0
+@out(r1.x) out0
+@out(r1.y) out0
+@out(r1.z) out0
+@out(r1.w) out0
+@out(r2.x) out1
+@out(r2.y) out1
+@out(r2.z) out1
+@out(r2.w) out1
+@out(r3.x) out2
+@out(r3.y) out2
+@out(r3.z) out2
+@out(r3.w) out2
+@out(r4.x) out3
+@out(r4.y) out3
+@out(r4.z) out3
+@out(r4.w) out3
+@out(r5.x) out4
+@out(r5.y) out4
+@out(r5.z) out4
+@out(r5.w) out4
+(sy)(ss)mul.f r6.x, c2.x, r0.x
+mul.f r6.y, c2.y, r0.x
+mul.f r6.z, c2.z, r0.x
+mul.f r6.w, c2.w, r0.x
+mad.f32 r6.x, c3.x, r0.y, r6.x
+mad.f32 r6.y, c3.y, r0.y, r6.y
+mad.f32 r6.z, c3.z, r0.y, r6.z
+mad.f32 r6.w, c3.w, r0.y, r6.w
+mad.f32 r6.x, c4.x, r0.z, r6.x
+mad.f32 r6.y, c4.y, r0.z, r6.y
+mad.f32 r6.z, c4.z, r0.z, r6.z
+mad.f32 r6.w, c4.w, r0.z, r6.w
+mad.f32 r6.x, c5.x, r0.w, r6.x
+mad.f32 r6.y, c5.y, r0.w, r6.y
+mad.f32 r6.z, c5.z, r0.w, r6.z
+mad.f32 r6.w, c5.w, r0.w, r6.w
+mov.f32f32 r7.x, c6.x
+mov.f32f32 r7.y, c6.y
+mov.f32f32 r7.z, c6.x
+mov.f32f32 r7.w, c6.x
+mov.f32f32 r8.x, c6.z
+mov.f32f32 r8.y, c6.w
+mov.f32f32 r8.z, c6.z
+mov.f32f32 r8.w, c6.z
+mov.f32f32 r9.x, r7.x
+mov.f32f32 r9.y, r7.y
+mov.f32f32 r9.z, r7.y
+mov.f32f32 r9.w, r7.y
+mov.f32f32 r10.x, r8.x
+mov.f32f32 r10.y, r8.y
+mov.f32f32 r10.z, r8.y
+mov.f32f32 r10.w, r8.y
+mov.f32f32 r15.x, c7.x
+mov.f32f32 r15.y, c7.y
+mov.f32f32 r15.z, c7.x
+mov.f32f32 r15.w, c7.x
+mov.f32f32 r16.x, c7.z
+mov.f32f32 r16.y, c7.w
+mov.f32f32 r16.z, c7.z
+mov.f32f32 r16.w, c7.z
+mov.f32f32 r11.x, r15.x
+mov.f32f32 r11.y, r15.y
+mov.f32f32 r11.z, r15.y
+mov.f32f32 r11.w, r15.y
+mov.f32f32 r12.x, r16.x
+mov.f32f32 r12.y, r16.y
+mov.f32f32 r12.z, r16.y
+mov.f32f32 r12.w, r16.y
+mov.f32f32 r17.x, c8.x
+mov.f32f32 r17.y, c8.y
+mov.f32f32 r17.z, c8.x
+mov.f32f32 r17.w, c8.x
+mov.f32f32 r18.x, c8.z
+mov.f32f32 r18.y, c8.w
+mov.f32f32 r18.z, c8.z
+mov.f32f32 r18.w, c8.z
+mov.f32f32 r13.x, r17.x
+mov.f32f32 r13.y, r17.y
+mov.f32f32 r13.z, r17.y
+mov.f32f32 r13.w, r17.y
+mov.f32f32 r14.x, r18.x
+mov.f32f32 r14.y, r18.y
+mov.f32f32 r14.z, r18.y
+mov.f32f32 r14.w, r18.y
+mov.f32f32 r24.x, c0.x
+mov.f32f32 r24.y, c0.x
+mov.f32f32 r24.z, c0.x
+mov.f32f32 r24.w, c0.x
+mul.f r19.x, r24.x, c6.y
+nop
+nop
+nop
+cov.f32s16 hr6.x, r19.x
+nop
+nop
+nop
+shl.b hr6.x, hr6.x, 2
+nop
+nop
+nop
+mova a0.x, hr6.x
+nop
+nop
+nop
+nop
+nop
+nop
+cmps.f.eq r24.x, c1.x, r<a0.x + 40>
+cmps.f.eq r24.y, c1.y, r<a0.x + 41>
+cmps.f.eq r24.z, c1.y, r<a0.x + 41>
+(ul)cmps.f.eq r24.w, c1.y, r<a0.x + 41>
+add.s r24.x, r24.x, -1
+add.s r24.y, r24.y, -1
+add.s r24.z, r24.z, -1
+add.s r24.w, r24.w, -1
+sel.f32 r20.x, c9.x, r24.x, c6.x
+sel.f32 r20.y, c9.x, r24.y, c6.x
+sel.f32 r20.z, c9.x, r24.z, c6.x
+sel.f32 r20.w, c9.x, r24.w, c6.x
+mul.f r23.x, r20.x, r20.x
+nop
+nop
+nop
+mad.f32 r19.x, r20.y, r20.y, r23.x
+nop
+nop
+nop
+cmps.f.ge r25.x, (neg)r19.x, c9.x
+cmps.f.ge r25.y, (neg)r19.x, c9.x
+cmps.f.ge r25.z, (neg)r19.x, c9.x
+cmps.f.ge r25.w, (neg)r19.x, c9.x
+cov.u32f32 r24.x, r25.x
+nop
+nop
+nop
+mov.f32f32 r19.x, r24.x
+nop
+nop
+nop
+cmps.f.eq p0.x, r19.x, c9.x
+br p0.x, #6
+mov.f32f32 r19.x, c9.x
+mov.f32f32 r19.y, c9.y
+mov.f32f32 r19.z, c9.x
+mov.f32f32 r19.w, c9.y
+jump #6
+(jp)nop
+mov.f32f32 r19.x, c9.y
+mov.f32f32 r19.y, c9.x
+mov.f32f32 r19.z, c9.x
+mov.f32f32 r19.w, c9.y
+(jp)nop
+mov.f32f32 r20.x, r9.x
+mov.f32f32 r20.y, r9.y
+nop
+nop
+nop
+nop
+mov.f32f32 r20.z, r10.x
+mov.f32f32 r20.w, r10.y
+mov.f32f32 r21.x, r11.x
+mov.f32f32 r21.y, r11.y
+nop
+nop
+nop
+nop
+mov.f32f32 r21.z, r12.x
+mov.f32f32 r21.w, r12.y
+mov.f32f32 r22.x, r13.x
+mov.f32f32 r22.y, r13.y
+nop
+nop
+nop
+nop
+mov.f32f32 r22.z, r14.x
+mov.f32f32 r22.w, r14.y
+mov.f32f32 r4.x, r21.x
+mov.f32f32 r4.y, r21.y
+mov.f32f32 r4.z, r21.z
+mov.f32f32 r4.w, r21.w
+mov.f32f32 r5.x, r22.x
+mov.f32f32 r5.y, r22.y
+mov.f32f32 r5.z, r22.z
+mov.f32f32 r5.w, r22.w
+mov.f32f32 r2.x, r19.x
+mov.f32f32 r2.y, r19.y
+mov.f32f32 r2.z, r19.z
+mov.f32f32 r2.w, r19.w
+mov.f32f32 r1.x, r6.x
+mov.f32f32 r1.y, r6.y
+mov.f32f32 r1.z, r6.z
+mov.f32f32 r1.w, r6.w
+mov.f32f32 r3.x, r20.x
+mov.f32f32 r3.y, r20.y
+mov.f32f32 r3.z, r20.z
+mov.f32f32 r3.w, r20.w
+end
+nop
+nop
+nop
+; VERT: outputs: r1.x (0:0) r2.x (5:9) r3.x (5:10) r4.x (5:11) r5.x (5:12)
+; VERT: inputs: r0.x (0:0,cm=f,il=8,b=1)
+; VERT: 177 instructions, 7 half, 26 full
+
diff --git a/reference/piglit-vs-varying-array-mat4-index-rd.asm b/reference/piglit-vs-varying-array-mat4-index-rd.asm
new file mode 100644
index 0000000..0242f7f
--- /dev/null
+++ b/reference/piglit-vs-varying-array-mat4-index-rd.asm
@@ -0,0 +1,325 @@
+; options:
+ir3/ir3_cmdline.c:168:reset_variant: error: new compiler failed, trying without copy propagation!
+ir3/ir3_cmdline.c:168:reset_variant: error: new compiler failed, trying fallback!
+
+; VERT: old compiler
+@in(r0.x) in0
+@in(r0.y) in0
+@in(r0.z) in0
+@in(r0.w) in0
+@out(r1.x) out0
+@out(r1.y) out0
+@out(r1.z) out0
+@out(r1.w) out0
+@out(r2.x) out1
+@out(r2.y) out1
+@out(r2.z) out1
+@out(r2.w) out1
+@out(r3.x) out2
+@out(r3.y) out2
+@out(r3.z) out2
+@out(r3.w) out2
+@out(r4.x) out3
+@out(r4.y) out3
+@out(r4.z) out3
+@out(r4.w) out3
+@out(r5.x) out4
+@out(r5.y) out4
+@out(r5.z) out4
+@out(r5.w) out4
+@out(r6.x) out5
+@out(r6.y) out5
+@out(r6.z) out5
+@out(r6.w) out5
+@out(r7.x) out6
+@out(r7.y) out6
+@out(r7.z) out6
+@out(r7.w) out6
+@out(r8.x) out7
+@out(r8.y) out7
+@out(r8.z) out7
+@out(r8.w) out7
+@out(r9.x) out8
+@out(r9.y) out8
+@out(r9.z) out8
+@out(r9.w) out8
+@out(r10.x) out9
+@out(r10.y) out9
+@out(r10.z) out9
+@out(r10.w) out9
+@out(r11.x) out10
+@out(r11.y) out10
+@out(r11.z) out10
+@out(r11.w) out10
+@out(r12.x) out11
+@out(r12.y) out11
+@out(r12.z) out11
+@out(r12.w) out11
+@out(r13.x) out12
+@out(r13.y) out12
+@out(r13.z) out12
+@out(r13.w) out12
+@out(r14.x) out13
+@out(r14.y) out13
+@out(r14.z) out13
+@out(r14.w) out13
+(sy)(ss)mul.f r15.x, c2.x, r0.x
+mul.f r15.y, c2.y, r0.x
+mul.f r15.z, c2.z, r0.x
+mul.f r15.w, c2.w, r0.x
+mad.f32 r15.x, c3.x, r0.y, r15.x
+mad.f32 r15.y, c3.y, r0.y, r15.y
+mad.f32 r15.z, c3.z, r0.y, r15.z
+mad.f32 r15.w, c3.w, r0.y, r15.w
+mad.f32 r15.x, c4.x, r0.z, r15.x
+mad.f32 r15.y, c4.y, r0.z, r15.y
+mad.f32 r15.z, c4.z, r0.z, r15.z
+mad.f32 r15.w, c4.w, r0.z, r15.w
+mad.f32 r15.x, c5.x, r0.w, r15.x
+mad.f32 r15.y, c5.y, r0.w, r15.y
+mad.f32 r15.z, c5.z, r0.w, r15.z
+mad.f32 r15.w, c5.w, r0.w, r15.w
+mov.f32f32 r16.x, c6.x
+mov.f32f32 r16.y, c6.y
+mov.f32f32 r16.z, c6.z
+mov.f32f32 r16.w, c6.w
+mov.f32f32 r17.x, c7.x
+mov.f32f32 r17.y, c7.y
+mov.f32f32 r17.z, c7.z
+mov.f32f32 r17.w, c7.w
+mov.f32f32 r18.x, c8.x
+mov.f32f32 r18.y, c8.y
+mov.f32f32 r18.z, c8.z
+mov.f32f32 r18.w, c8.w
+mov.f32f32 r19.x, c9.x
+mov.f32f32 r19.y, c9.y
+mov.f32f32 r19.z, c9.z
+mov.f32f32 r19.w, c9.w
+mov.f32f32 r20.x, r16.x
+mov.f32f32 r20.y, r16.y
+mov.f32f32 r20.z, r16.z
+mov.f32f32 r20.w, r16.w
+mov.f32f32 r21.x, r17.x
+mov.f32f32 r21.y, r17.y
+mov.f32f32 r21.z, r17.z
+mov.f32f32 r21.w, r17.w
+mov.f32f32 r22.x, r18.x
+mov.f32f32 r22.y, r18.y
+mov.f32f32 r22.z, r18.z
+mov.f32f32 r22.w, r18.w
+mov.f32f32 r23.x, r19.x
+mov.f32f32 r23.y, r19.y
+mov.f32f32 r23.z, r19.z
+mov.f32f32 r23.w, r19.w
+mov.f32f32 r32.x, c10.x
+mov.f32f32 r32.y, c10.y
+mov.f32f32 r32.z, c10.z
+mov.f32f32 r32.w, c10.w
+mov.f32f32 r33.x, c11.x
+mov.f32f32 r33.y, c11.y
+mov.f32f32 r33.z, c11.z
+mov.f32f32 r33.w, c11.w
+mov.f32f32 r34.x, c12.x
+mov.f32f32 r34.y, c12.y
+mov.f32f32 r34.z, c12.z
+mov.f32f32 r34.w, c12.w
+mov.f32f32 r35.x, c13.x
+mov.f32f32 r35.y, c13.y
+mov.f32f32 r35.z, c13.z
+mov.f32f32 r35.w, c13.w
+mov.f32f32 r24.x, r32.x
+mov.f32f32 r24.y, r32.y
+mov.f32f32 r24.z, r32.z
+mov.f32f32 r24.w, r32.w
+mov.f32f32 r25.x, r33.x
+mov.f32f32 r25.y, r33.y
+mov.f32f32 r25.z, r33.z
+mov.f32f32 r25.w, r33.w
+mov.f32f32 r26.x, r34.x
+mov.f32f32 r26.y, r34.y
+mov.f32f32 r26.z, r34.z
+mov.f32f32 r26.w, r34.w
+mov.f32f32 r27.x, r35.x
+mov.f32f32 r27.y, r35.y
+mov.f32f32 r27.z, r35.z
+mov.f32f32 r27.w, r35.w
+mov.f32f32 r36.x, c14.x
+mov.f32f32 r36.y, c14.y
+mov.f32f32 r36.z, c14.z
+mov.f32f32 r36.w, c14.w
+mov.f32f32 r37.x, c15.x
+mov.f32f32 r37.y, c15.y
+mov.f32f32 r37.z, c15.z
+mov.f32f32 r37.w, c15.w
+mov.f32f32 r38.x, c16.x
+mov.f32f32 r38.y, c16.y
+mov.f32f32 r38.z, c16.z
+mov.f32f32 r38.w, c16.w
+mov.f32f32 r39.x, c17.x
+mov.f32f32 r39.y, c17.y
+mov.f32f32 r39.z, c17.z
+mov.f32f32 r39.w, c17.w
+mov.f32f32 r28.x, r36.x
+mov.f32f32 r28.y, r36.y
+mov.f32f32 r28.z, r36.z
+mov.f32f32 r28.w, r36.w
+mov.f32f32 r29.x, r37.x
+mov.f32f32 r29.y, r37.y
+mov.f32f32 r29.z, r37.z
+mov.f32f32 r29.w, r37.w
+mov.f32f32 r30.x, r38.x
+mov.f32f32 r30.y, r38.y
+mov.f32f32 r30.z, r38.z
+mov.f32f32 r30.w, r38.w
+mov.f32f32 r31.x, r39.x
+mov.f32f32 r31.y, r39.y
+mov.f32f32 r31.z, r39.z
+mov.f32f32 r31.w, r39.w
+mov.f32f32 r43.x, c0.x
+mov.f32f32 r43.y, c0.x
+mov.f32f32 r43.z, c0.x
+mov.f32f32 r43.w, c0.x
+mul.f r40.x, r43.x, c6.w
+nop
+nop
+nop
+cov.f32s16 hr15.x, r40.x
+nop
+nop
+nop
+shl.b hr15.x, hr15.x, 2
+nop
+nop
+nop
+mova a0.x, hr15.x
+nop
+nop
+nop
+nop
+nop
+nop
+cmps.f.eq r43.x, c1.x, r<a0.x + 84>
+cmps.f.eq r43.y, c1.y, r<a0.x + 85>
+cmps.f.eq r43.z, c1.z, r<a0.x + 86>
+(ul)cmps.f.eq r43.w, c1.w, r<a0.x + 87>
+add.s r43.x, r43.x, -1
+add.s r43.y, r43.y, -1
+add.s r43.z, r43.z, -1
+add.s r43.w, r43.w, -1
+sel.f32 r41.x, c18.x, r43.x, c6.x
+sel.f32 r41.y, c18.x, r43.y, c6.x
+sel.f32 r41.z, c18.x, r43.z, c6.x
+sel.f32 r41.w, c18.x, r43.w, c6.x
+mul.f r42.x, r41.x, r41.x
+nop
+nop
+nop
+mad.f32 r43.x, r41.y, r41.y, r42.x
+nop
+nop
+nop
+mov.f32f32 r42.x, r43.x
+nop
+nop
+nop
+mad.f32 r43.x, r41.z, r41.z, r42.x
+nop
+nop
+nop
+mov.f32f32 r42.x, r43.x
+nop
+nop
+nop
+mad.f32 r40.x, r41.w, r41.w, r42.x
+nop
+nop
+nop
+cmps.f.ge r44.x, (neg)r40.x, c18.x
+cmps.f.ge r44.y, (neg)r40.x, c18.x
+cmps.f.ge r44.z, (neg)r40.x, c18.x
+cmps.f.ge r44.w, (neg)r40.x, c18.x
+cov.u32f32 r43.x, r44.x
+nop
+nop
+nop
+mov.f32f32 r40.x, r43.x
+nop
+nop
+nop
+cmps.f.eq p0.x, r40.x, c18.x
+br p0.x, #6
+mov.f32f32 r40.x, c18.x
+mov.f32f32 r40.y, c18.y
+mov.f32f32 r40.z, c18.x
+mov.f32f32 r40.w, c18.y
+jump #6
+(jp)nop
+mov.f32f32 r40.x, c18.y
+mov.f32f32 r40.y, c18.x
+mov.f32f32 r40.z, c18.x
+mov.f32f32 r40.w, c18.y
+(jp)nop
+mov.f32f32 r3.x, r20.x
+mov.f32f32 r3.y, r20.y
+mov.f32f32 r3.z, r20.z
+mov.f32f32 r3.w, r20.w
+mov.f32f32 r4.x, r21.x
+mov.f32f32 r4.y, r21.y
+mov.f32f32 r4.z, r21.z
+mov.f32f32 r4.w, r21.w
+mov.f32f32 r5.x, r22.x
+mov.f32f32 r5.y, r22.y
+mov.f32f32 r5.z, r22.z
+mov.f32f32 r5.w, r22.w
+mov.f32f32 r6.x, r23.x
+mov.f32f32 r6.y, r23.y
+mov.f32f32 r6.z, r23.z
+mov.f32f32 r6.w, r23.w
+mov.f32f32 r7.x, r24.x
+mov.f32f32 r7.y, r24.y
+mov.f32f32 r7.z, r24.z
+mov.f32f32 r7.w, r24.w
+mov.f32f32 r8.x, r25.x
+mov.f32f32 r8.y, r25.y
+mov.f32f32 r8.z, r25.z
+mov.f32f32 r8.w, r25.w
+mov.f32f32 r9.x, r26.x
+mov.f32f32 r9.y, r26.y
+mov.f32f32 r9.z, r26.z
+mov.f32f32 r9.w, r26.w
+mov.f32f32 r10.x, r27.x
+mov.f32f32 r10.y, r27.y
+mov.f32f32 r10.z, r27.z
+mov.f32f32 r10.w, r27.w
+mov.f32f32 r11.x, r28.x
+mov.f32f32 r11.y, r28.y
+mov.f32f32 r11.z, r28.z
+mov.f32f32 r11.w, r28.w
+mov.f32f32 r12.x, r29.x
+mov.f32f32 r12.y, r29.y
+mov.f32f32 r12.z, r29.z
+mov.f32f32 r12.w, r29.w
+mov.f32f32 r13.x, r30.x
+mov.f32f32 r13.y, r30.y
+mov.f32f32 r13.z, r30.z
+mov.f32f32 r13.w, r30.w
+mov.f32f32 r14.x, r31.x
+mov.f32f32 r14.y, r31.y
+mov.f32f32 r14.z, r31.z
+mov.f32f32 r14.w, r31.w
+mov.f32f32 r2.x, r40.x
+mov.f32f32 r2.y, r40.y
+mov.f32f32 r2.z, r40.z
+mov.f32f32 r2.w, r40.w
+mov.f32f32 r1.x, r15.x
+mov.f32f32 r1.y, r15.y
+mov.f32f32 r1.z, r15.z
+mov.f32f32 r1.w, r15.w
+end
+nop
+nop
+nop
+; VERT: outputs: r1.x (0:0) r2.x (5:9) r3.x (5:10) r4.x (5:11) r5.x (5:12) r6.x (5:13) r7.x (5:14) r8.x (5:15) r9.x (5:16) r10.x (5:17) r11.x (5:18) r12.x (5:19) r13.x (5:20) r14.x (5:21)
+; VERT: inputs: r0.x (0:0,cm=f,il=8,b=1)
+; VERT: 253 instructions, 16 half, 45 full
+