NIR (SSA form) for fragment shader: shader: MESA_SHADER_FRAGMENT name: GLSL394 inputs: 4 outputs: 0 uniforms: 0 decl_var uniform INTERP_QUALIFIER_NONE sampler2DMS tex1 (0, 0) decl_var shader_in INTERP_QUALIFIER_NONE vec4 gl_FragCoord (VARYING_SLOT_POS, 0) decl_overload main returning void impl main { block block_0: /* preds: */ vec1 ssa_0 = load_const (0x00000000 /* 0.000000 */) vec1 ssa_1 = load_const (0x3c008081 /* 0.007843 */) vec1 ssa_2 = load_const (0xbf000000 /* -0.500000 */) vec1 ssa_3 = load_const (0x00000003 /* 0.000000 */) vec1 ssa_4 = load_const (0x00000002 /* 0.000000 */) vec1 ssa_5 = load_const (0x00000001 /* 0.000000 */) vec1 ssa_6 = load_const (0x3f75dcc7 /* 0.960400 */) vec4 ssa_7 = intrinsic load_input () () (0) /* gl_FragCoord */ vec1 ssa_8 = f2i ssa_7 vec1 ssa_9 = f2i ssa_7.y vec2 ssa_10 = vec2 ssa_8, ssa_9 vec1 ssa_11 = samples_identical ssa_10 (coord), 0 (sampler) /* succs: block_1 block_2 */ if ssa_11 { block block_1: /* preds: block_0 */ intrinsic discard () () () /* succs: block_18 */ } else { block block_2: /* preds: block_0 */ vec4 ssa_12 = txf_ms ssa_10 (coord), ssa_0 (ms_index), 0 (sampler) vec1 ssa_13 = fadd ssa_12, ssa_2 vec1 ssa_14 = fadd ssa_12.y, ssa_2 vec1 ssa_15 = fadd ssa_12.z, ssa_2 vec1 ssa_16 = fmul ssa_13, ssa_13 vec1 ssa_17 = ffma ssa_14, ssa_14, ssa_16 vec1 ssa_18 = ffma ssa_15, ssa_15, ssa_17 vec1 ssa_19 = fmul ssa_6, ssa_18 vec4 ssa_20 = txf_ms ssa_10 (coord), ssa_5 (ms_index), 0 (sampler) vec1 ssa_21 = fadd ssa_20, ssa_2 vec1 ssa_22 = fadd ssa_20.y, ssa_2 vec1 ssa_23 = fadd ssa_20.z, ssa_2 vec1 ssa_24 = fadd ssa_12.w, -ssa_20.w vec1 ssa_25 = fge ssa_1, abs(ssa_24) /* succs: block_3 block_4 */ if ssa_25 { block block_3: /* preds: block_2 */ vec1 ssa_26 = fmul ssa_21, ssa_13 vec1 ssa_27 = ffma ssa_22, ssa_14, ssa_26 vec1 ssa_28 = ffma ssa_23, ssa_15, ssa_27 vec1 ssa_29 = fmul ssa_28, ssa_28 vec1 ssa_30 = fmul ssa_21, ssa_21 vec1 ssa_31 = ffma ssa_22, ssa_22, ssa_30 vec1 ssa_32 = ffma ssa_23, ssa_23, ssa_31 vec1 ssa_33 = fmul ssa_19, ssa_32 vec1 ssa_34 = fge ssa_29, ssa_33 /* succs: block_5 */ } else { block block_4: /* preds: block_2 */ /* succs: block_5 */ } block block_5: /* preds: block_3 block_4 */ vec1 ssa_35 = phi block_3: ssa_34, block_4: ssa_0 /* succs: block_6 block_16 */ if ssa_35 { block block_6: /* preds: block_5 */ vec4 ssa_36 = txf_ms ssa_10 (coord), ssa_4 (ms_index), 0 (sampler) vec1 ssa_37 = fadd ssa_36, ssa_2 vec1 ssa_38 = fadd ssa_36.y, ssa_2 vec1 ssa_39 = fadd ssa_36.z, ssa_2 vec1 ssa_40 = fadd ssa_12.w, -ssa_36.w vec1 ssa_41 = fge ssa_1, abs(ssa_40) /* succs: block_7 block_8 */ if ssa_41 { block block_7: /* preds: block_6 */ vec1 ssa_42 = fmul ssa_37, ssa_13 vec1 ssa_43 = ffma ssa_38, ssa_14, ssa_42 vec1 ssa_44 = ffma ssa_39, ssa_15, ssa_43 vec1 ssa_45 = fmul ssa_44, ssa_44 vec1 ssa_46 = fmul ssa_37, ssa_37 vec1 ssa_47 = ffma ssa_38, ssa_38, ssa_46 vec1 ssa_48 = ffma ssa_39, ssa_39, ssa_47 vec1 ssa_49 = fmul ssa_19, ssa_48 vec1 ssa_50 = fge ssa_45, ssa_49 /* succs: block_9 */ } else { block block_8: /* preds: block_6 */ /* succs: block_9 */ } block block_9: /* preds: block_7 block_8 */ vec1 ssa_51 = phi block_7: ssa_50, block_8: ssa_0 /* succs: block_10 block_14 */ if ssa_51 { block block_10: /* preds: block_9 */ vec4 ssa_52 = txf_ms ssa_10 (coord), ssa_3 (ms_index), 0 (sampler) vec1 ssa_53 = fadd ssa_52, ssa_2 vec1 ssa_54 = fadd ssa_52.y, ssa_2 vec1 ssa_55 = fadd ssa_52.z, ssa_2 vec1 ssa_56 = fadd ssa_12.w, -ssa_52.w vec1 ssa_57 = fge ssa_1, abs(ssa_56) /* succs: block_11 block_12 */ if ssa_57 { block block_11: /* preds: block_10 */ vec1 ssa_58 = fmul ssa_53, ssa_13 vec1 ssa_59 = ffma ssa_54, ssa_14, ssa_58 vec1 ssa_60 = ffma ssa_55, ssa_15, ssa_59 vec1 ssa_61 = fmul ssa_60, ssa_60 vec1 ssa_62 = fmul ssa_53, ssa_53 vec1 ssa_63 = ffma ssa_54, ssa_54, ssa_62 vec1 ssa_64 = ffma ssa_55, ssa_55, ssa_63 vec1 ssa_65 = fmul ssa_19, ssa_64 vec1 ssa_66 = fge ssa_61, ssa_65 /* succs: block_13 */ } else { block block_12: /* preds: block_10 */ /* succs: block_13 */ } block block_13: /* preds: block_11 block_12 */ vec1 ssa_67 = phi block_11: ssa_66, block_12: ssa_0 intrinsic discard_if (ssa_67) () () /* succs: block_15 */ } else { block block_14: /* preds: block_9 */ /* succs: block_15 */ } block block_15: /* preds: block_13 block_14 */ /* succs: block_17 */ } else { block block_16: /* preds: block_5 */ /* succs: block_17 */ } block block_17: /* preds: block_15 block_16 */ /* succs: block_18 */ } block block_18: /* preds: block_1 block_17 */ /* succs: block_19 */ block block_19: } NIR (final form) for fragment shader: shader: MESA_SHADER_FRAGMENT name: GLSL394 inputs: 4 outputs: 0 uniforms: 0 decl_var uniform INTERP_QUALIFIER_NONE sampler2DMS tex1 (0, 0) decl_var shader_in INTERP_QUALIFIER_NONE vec4 gl_FragCoord (VARYING_SLOT_POS, 0) decl_overload main returning void impl main { decl_reg vec1 r0 decl_reg vec1 r1 decl_reg vec1 r2 block block_0: /* preds: */ vec1 ssa_0 = load_const (0x00000000 /* 0.000000 */) vec1 ssa_1 = load_const (0x3c008081 /* 0.007843 */) vec1 ssa_2 = load_const (0xbf000000 /* -0.500000 */) vec1 ssa_3 = load_const (0x00000003 /* 0.000000 */) vec1 ssa_4 = load_const (0x00000002 /* 0.000000 */) vec1 ssa_5 = load_const (0x00000001 /* 0.000000 */) vec1 ssa_6 = load_const (0x3f75dcc7 /* 0.960400 */) vec4 ssa_7 = intrinsic load_input () () (0) /* gl_FragCoord */ vec1 ssa_8 = f2i ssa_7 vec1 ssa_9 = f2i ssa_7.y vec2 ssa_10 = vec2 ssa_8, ssa_9 vec1 ssa_11 = samples_identical ssa_10 (coord), 0 (sampler) /* succs: block_1 block_2 */ if ssa_11 { block block_1: /* preds: block_0 */ intrinsic discard () () () /* succs: block_18 */ } else { block block_2: /* preds: block_0 */ vec4 ssa_12 = txf_ms ssa_10 (coord), ssa_0 (ms_index), 0 (sampler) vec1 ssa_13 = fadd ssa_12, ssa_2 vec1 ssa_14 = fadd ssa_12.y, ssa_2 vec1 ssa_15 = fadd ssa_12.z, ssa_2 vec1 ssa_16 = fmul ssa_13, ssa_13 vec1 ssa_17 = ffma ssa_14, ssa_14, ssa_16 vec1 ssa_18 = ffma ssa_15, ssa_15, ssa_17 vec1 ssa_19 = fmul ssa_6, ssa_18 vec4 ssa_20 = txf_ms ssa_10 (coord), ssa_5 (ms_index), 0 (sampler) vec1 ssa_21 = fadd ssa_20, ssa_2 vec1 ssa_22 = fadd ssa_20.y, ssa_2 vec1 ssa_23 = fadd ssa_20.z, ssa_2 vec1 ssa_24 = fadd ssa_12.w, -ssa_20.w vec1 ssa_25 = fge ssa_1, abs(ssa_24) /* succs: block_3 block_4 */ if ssa_25 { block block_3: /* preds: block_2 */ vec1 ssa_26 = fmul ssa_21, ssa_13 vec1 ssa_27 = ffma ssa_22, ssa_14, ssa_26 vec1 ssa_28 = ffma ssa_23, ssa_15, ssa_27 vec1 ssa_29 = fmul ssa_28, ssa_28 vec1 ssa_30 = fmul ssa_21, ssa_21 vec1 ssa_31 = ffma ssa_22, ssa_22, ssa_30 vec1 ssa_32 = ffma ssa_23, ssa_23, ssa_31 vec1 ssa_33 = fmul ssa_19, ssa_32 r0 = fge ssa_29, ssa_33 /* succs: block_5 */ } else { block block_4: /* preds: block_2 */ r0 = imov ssa_0 /* succs: block_5 */ } block block_5: /* preds: block_3 block_4 */ /* succs: block_6 block_16 */ if r0 { block block_6: /* preds: block_5 */ vec4 ssa_36 = txf_ms ssa_10 (coord), ssa_4 (ms_index), 0 (sampler) vec1 ssa_37 = fadd ssa_36, ssa_2 vec1 ssa_38 = fadd ssa_36.y, ssa_2 vec1 ssa_39 = fadd ssa_36.z, ssa_2 vec1 ssa_40 = fadd ssa_12.w, -ssa_36.w vec1 ssa_41 = fge ssa_1, abs(ssa_40) /* succs: block_7 block_8 */ if ssa_41 { block block_7: /* preds: block_6 */ vec1 ssa_42 = fmul ssa_37, ssa_13 vec1 ssa_43 = ffma ssa_38, ssa_14, ssa_42 vec1 ssa_44 = ffma ssa_39, ssa_15, ssa_43 vec1 ssa_45 = fmul ssa_44, ssa_44 vec1 ssa_46 = fmul ssa_37, ssa_37 vec1 ssa_47 = ffma ssa_38, ssa_38, ssa_46 vec1 ssa_48 = ffma ssa_39, ssa_39, ssa_47 vec1 ssa_49 = fmul ssa_19, ssa_48 r1 = fge ssa_45, ssa_49 /* succs: block_9 */ } else { block block_8: /* preds: block_6 */ r1 = imov ssa_0 /* succs: block_9 */ } block block_9: /* preds: block_7 block_8 */ /* succs: block_10 block_14 */ if r1 { block block_10: /* preds: block_9 */ vec4 ssa_52 = txf_ms ssa_10 (coord), ssa_3 (ms_index), 0 (sampler) vec1 ssa_53 = fadd ssa_52, ssa_2 vec1 ssa_54 = fadd ssa_52.y, ssa_2 vec1 ssa_55 = fadd ssa_52.z, ssa_2 vec1 ssa_56 = fadd ssa_12.w, -ssa_52.w vec1 ssa_57 = fge ssa_1, abs(ssa_56) /* succs: block_11 block_12 */ if ssa_57 { block block_11: /* preds: block_10 */ vec1 ssa_58 = fmul ssa_53, ssa_13 vec1 ssa_59 = ffma ssa_54, ssa_14, ssa_58 vec1 ssa_60 = ffma ssa_55, ssa_15, ssa_59 vec1 ssa_61 = fmul ssa_60, ssa_60 vec1 ssa_62 = fmul ssa_53, ssa_53 vec1 ssa_63 = ffma ssa_54, ssa_54, ssa_62 vec1 ssa_64 = ffma ssa_55, ssa_55, ssa_63 vec1 ssa_65 = fmul ssa_19, ssa_64 r2 = fge ssa_61, ssa_65 /* succs: block_13 */ } else { block block_12: /* preds: block_10 */ r2 = imov ssa_0 /* succs: block_13 */ } block block_13: /* preds: block_11 block_12 */ intrinsic discard_if (r2) () () /* succs: block_15 */ } else { block block_14: /* preds: block_9 */ /* succs: block_15 */ } block block_15: /* preds: block_13 block_14 */ /* succs: block_17 */ } else { block block_16: /* preds: block_5 */ /* succs: block_17 */ } block block_17: /* preds: block_15 block_16 */ /* succs: block_18 */ } block block_18: /* preds: block_1 block_17 */ /* succs: block_19 */ block block_19: } GLSL IR for native fragment shader 394: ( (declare (location=0 shader_in ) vec4 gl_FragCoord) (declare (location=0 uniform ) sampler2DMS tex1) ( function main (signature void (parameters ) ( (declare (temporary ) ivec2 compiler_temp) (assign (x) (var_ref compiler_temp) (expression int f2i (swiz x (var_ref gl_FragCoord) )) ) (assign (y) (var_ref compiler_temp) (expression int f2i (swiz y (var_ref gl_FragCoord) )) ) (if (samples_identical (var_ref tex1) (var_ref compiler_temp) )( (discard ) ) ( (declare (temporary ) float compiler_temp@10567) (declare (temporary ) float compiler_temp@10568) (declare (temporary ) float compiler_temp@10569) (declare () float maxdiff) (declare (temporary ) float compiler_temp@10570) (declare (temporary ) float compiler_temp@10571) (declare (temporary ) float compiler_temp@10572) (declare (temporary ) vec4 compiler_temp@10573) (declare (temporary ) ivec2 compiler_temp@10574) (assign (x) (var_ref compiler_temp@10574) (expression int f2i (swiz x (var_ref gl_FragCoord) )) ) (assign (y) (var_ref compiler_temp@10574) (expression int f2i (swiz y (var_ref gl_FragCoord) )) ) (assign (xyzw) (var_ref compiler_temp@10573) (txf_ms vec4 (var_ref tex1) (var_ref compiler_temp@10574) 0 (constant int (0)) )) (assign (x) (var_ref compiler_temp@10570) (expression float + (swiz x (var_ref compiler_temp@10573) )(constant float (-0.500000)) ) ) (assign (x) (var_ref compiler_temp@10571) (expression float + (swiz y (var_ref compiler_temp@10573) )(constant float (-0.500000)) ) ) (assign (x) (var_ref compiler_temp@10572) (expression float + (swiz z (var_ref compiler_temp@10573) )(constant float (-0.500000)) ) ) (assign (x) (var_ref maxdiff) (expression float * (constant float (0.960400)) (expression float + (expression float * (var_ref compiler_temp@10572) (var_ref compiler_temp@10572) ) (expression float + (expression float * (var_ref compiler_temp@10571) (var_ref compiler_temp@10571) ) (expression float * (var_ref compiler_temp@10570) (var_ref compiler_temp@10570) ) ) ) ) ) (declare (temporary ) vec4 compiler_temp@10575) (declare (temporary ) ivec2 compiler_temp@10576) (assign (x) (var_ref compiler_temp@10576) (expression int f2i (swiz x (var_ref gl_FragCoord) )) ) (assign (y) (var_ref compiler_temp@10576) (expression int f2i (swiz y (var_ref gl_FragCoord) )) ) (assign (xyzw) (var_ref compiler_temp@10575) (txf_ms vec4 (var_ref tex1) (var_ref compiler_temp@10576) 0 (constant int (1)) )) (assign (x) (var_ref compiler_temp@10567) (expression float + (swiz x (var_ref compiler_temp@10575) )(constant float (-0.500000)) ) ) (assign (x) (var_ref compiler_temp@10568) (expression float + (swiz y (var_ref compiler_temp@10575) )(constant float (-0.500000)) ) ) (assign (x) (var_ref compiler_temp@10569) (expression float + (swiz z (var_ref compiler_temp@10575) )(constant float (-0.500000)) ) ) (declare (temporary ) float compiler_temp@10577) (assign (x) (var_ref compiler_temp@10577) (expression float abs (expression float + (swiz w (var_ref compiler_temp@10573) )(expression float neg (swiz w (var_ref compiler_temp@10575) )) ) ) ) (declare (temporary ) bool compiler_temp@10578) (if (expression bool <= (var_ref compiler_temp@10577) (constant float (0.007843)) ) ( (declare (temporary ) float compiler_temp@10579) (assign (x) (var_ref compiler_temp@10579) (expression float + (expression float * (var_ref compiler_temp@10569) (var_ref compiler_temp@10572) ) (expression float + (expression float * (var_ref compiler_temp@10568) (var_ref compiler_temp@10571) ) (expression float * (var_ref compiler_temp@10567) (var_ref compiler_temp@10570) ) ) ) ) (assign (x) (var_ref compiler_temp@10578) (expression bool >= (expression float * (var_ref compiler_temp@10579) (var_ref compiler_temp@10579) ) (expression float * (var_ref maxdiff) (expression float + (expression float * (var_ref compiler_temp@10569) (var_ref compiler_temp@10569) ) (expression float + (expression float * (var_ref compiler_temp@10568) (var_ref compiler_temp@10568) ) (expression float * (var_ref compiler_temp@10567) (var_ref compiler_temp@10567) ) ) ) ) ) ) ) ( (assign (x) (var_ref compiler_temp@10578) (constant bool (0)) ) )) (if (var_ref compiler_temp@10578) ( (declare (temporary ) float compiler_temp@10580) (declare (temporary ) float compiler_temp@10581) (declare (temporary ) float compiler_temp@10582) (declare (temporary ) vec4 compiler_temp@10583) (declare (temporary ) ivec2 compiler_temp@10584) (assign (x) (var_ref compiler_temp@10584) (expression int f2i (swiz x (var_ref gl_FragCoord) )) ) (assign (y) (var_ref compiler_temp@10584) (expression int f2i (swiz y (var_ref gl_FragCoord) )) ) (assign (xyzw) (var_ref compiler_temp@10583) (txf_ms vec4 (var_ref tex1) (var_ref compiler_temp@10584) 0 (constant int (2)) )) (assign (x) (var_ref compiler_temp@10580) (expression float + (swiz x (var_ref compiler_temp@10583) )(constant float (-0.500000)) ) ) (assign (x) (var_ref compiler_temp@10581) (expression float + (swiz y (var_ref compiler_temp@10583) )(constant float (-0.500000)) ) ) (assign (x) (var_ref compiler_temp@10582) (expression float + (swiz z (var_ref compiler_temp@10583) )(constant float (-0.500000)) ) ) (declare (temporary ) float compiler_temp@10585) (assign (x) (var_ref compiler_temp@10585) (expression float abs (expression float + (swiz w (var_ref compiler_temp@10573) )(expression float neg (swiz w (var_ref compiler_temp@10583) )) ) ) ) (declare (temporary ) bool compiler_temp@10586) (if (expression bool <= (var_ref compiler_temp@10585) (constant float (0.007843)) ) ( (declare (temporary ) float compiler_temp@10587) (assign (x) (var_ref compiler_temp@10587) (expression float + (expression float * (var_ref compiler_temp@10582) (var_ref compiler_temp@10572) ) (expression float + (expression float * (var_ref compiler_temp@10581) (var_ref compiler_temp@10571) ) (expression float * (var_ref compiler_temp@10580) (var_ref compiler_temp@10570) ) ) ) ) (assign (x) (var_ref compiler_temp@10586) (expression bool >= (expression float * (var_ref compiler_temp@10587) (var_ref compiler_temp@10587) ) (expression float * (var_ref maxdiff) (expression float + (expression float * (var_ref compiler_temp@10582) (var_ref compiler_temp@10582) ) (expression float + (expression float * (var_ref compiler_temp@10581) (var_ref compiler_temp@10581) ) (expression float * (var_ref compiler_temp@10580) (var_ref compiler_temp@10580) ) ) ) ) ) ) ) ( (assign (x) (var_ref compiler_temp@10586) (constant bool (0)) ) )) (if (var_ref compiler_temp@10586) ( (declare (temporary ) float compiler_temp@10588) (declare (temporary ) float compiler_temp@10589) (declare (temporary ) float compiler_temp@10590) (declare (temporary ) vec4 compiler_temp@10591) (declare (temporary ) ivec2 compiler_temp@10592) (assign (x) (var_ref compiler_temp@10592) (expression int f2i (swiz x (var_ref gl_FragCoord) )) ) (assign (y) (var_ref compiler_temp@10592) (expression int f2i (swiz y (var_ref gl_FragCoord) )) ) (assign (xyzw) (var_ref compiler_temp@10591) (txf_ms vec4 (var_ref tex1) (var_ref compiler_temp@10592) 0 (constant int (3)) )) (assign (x) (var_ref compiler_temp@10588) (expression float + (swiz x (var_ref compiler_temp@10591) )(constant float (-0.500000)) ) ) (assign (x) (var_ref compiler_temp@10589) (expression float + (swiz y (var_ref compiler_temp@10591) )(constant float (-0.500000)) ) ) (assign (x) (var_ref compiler_temp@10590) (expression float + (swiz z (var_ref compiler_temp@10591) )(constant float (-0.500000)) ) ) (declare (temporary ) float compiler_temp@10593) (assign (x) (var_ref compiler_temp@10593) (expression float abs (expression float + (swiz w (var_ref compiler_temp@10573) )(expression float neg (swiz w (var_ref compiler_temp@10591) )) ) ) ) (declare (temporary ) bool compiler_temp@10594) (if (expression bool <= (var_ref compiler_temp@10593) (constant float (0.007843)) ) ( (declare (temporary ) float compiler_temp@10595) (assign (x) (var_ref compiler_temp@10595) (expression float + (expression float * (var_ref compiler_temp@10590) (var_ref compiler_temp@10572) ) (expression float + (expression float * (var_ref compiler_temp@10589) (var_ref compiler_temp@10571) ) (expression float * (var_ref compiler_temp@10588) (var_ref compiler_temp@10570) ) ) ) ) (assign (x) (var_ref compiler_temp@10594) (expression bool >= (expression float * (var_ref compiler_temp@10595) (var_ref compiler_temp@10595) ) (expression float * (var_ref maxdiff) (expression float + (expression float * (var_ref compiler_temp@10590) (var_ref compiler_temp@10590) ) (expression float + (expression float * (var_ref compiler_temp@10589) (var_ref compiler_temp@10589) ) (expression float * (var_ref compiler_temp@10588) (var_ref compiler_temp@10588) ) ) ) ) ) ) ) ( (assign (x) (var_ref compiler_temp@10594) (constant bool (0)) ) )) (discard (var_ref compiler_temp@10594) ) ) ()) ) ()) )) )) ) ) FS8 estimated execution time: 4 cycles FS16 estimated execution time: 8 cycles Native code for unnamed fragment shader GLSL394 SIMD8 shader: 107 instructions. 0 loops. 562 cycles. 0:0 spills:fills. Promoted 2 constants. Compacted 1712 to 1296 bytes (24%) START B0 add(16) g2<1>UW g1.4<1,4,0>UW 0x11001010V { align1 WE_all 1H }; mov(1) f0.1<1>UW g1.14<0,1,0>UW { align1 WE_all }; mov(1) g29<1>F 0.5F { align1 WE_all }; mov(8) g3<1>F g2<8,4,1>UW { align1 1Q }; mov(8) g4<1>F g2.4<8,4,1>UW { align1 1Q }; add(8) g27<1>F g3<8,8,1>F g29<0,1,0>F { align1 1Q compacted }; add(8) g28<1>F -g4<8,8,1>F 1079.5F { align1 1Q }; mov(8) g4<1>D g27<8,8,1>F { align1 1Q compacted }; mov(8) g5<1>D g28<8,8,1>F { align1 1Q compacted }; mov.nz.f0(8) null<1>UD 0x00000000UD { align1 1Q }; (+f0) if(8) JIP: 8 UIP: 136 { align1 1Q }; END B0 ->B1 ->B2 START B1 <-B0 (+f0.1) cmp.nz.f0.1(8) null<1>UW g0<8,8,1>UW g0<8,8,1>UW { align1 1Q switch }; (-f0.1.any8h) halt(8) JIP: 2 UIP: 136 { align1 WE_all 1Q }; else(8) JIP: 130 { align1 1Q }; END B1 ->B16 START B2 <-B0 mov(1) g29.1<1>F [0F, 0F, 0F, 0F]VF { align1 WE_all }; mov(8) g14<1>F g4<8,8,1>F { align1 1Q compacted }; mov(8) g15<1>F g5<8,8,1>F { align1 1Q compacted }; mov(8) g2<1>F g29.1<0,1,0>F { align1 1Q compacted }; mov(8) g3<1>F g29.1<0,1,0>F { align1 1Q compacted }; mov(8) g12<1>F g29.1<0,1,0>F { align1 1Q compacted }; mov(8) g13<1>F g29.1<0,1,0>F { align1 1Q compacted }; send(8) g8<1>UW g2<8,8,1>F sampler ld2dms SIMD8 Surface = 1 Sampler = 0 mlen 4 rlen 4 { align1 1Q }; send(8) g15<1>UW g12<8,8,1>F sampler ld2dms SIMD8 Surface = 1 Sampler = 0 mlen 4 rlen 4 { align1 1Q }; add(8) g12<1>F g8<8,8,1>F -g29<0,1,0>F { align1 1Q compacted }; add(8) g13<1>F g9<8,8,1>F -g29<0,1,0>F { align1 1Q compacted }; add(8) g14<1>F g10<8,8,1>F -g29<0,1,0>F { align1 1Q compacted }; add(8) g6<1>F g15<8,8,1>F -g29<0,1,0>F { align1 1Q compacted }; add(8) g7<1>F g16<8,8,1>F -g29<0,1,0>F { align1 1Q compacted }; add(8) g19<1>F g17<8,8,1>F -g29<0,1,0>F { align1 1Q compacted }; add(8) g20<1>F g11<8,8,1>F -g18<8,8,1>F { align1 1Q compacted }; mul(8) g15<1>F g12<8,8,1>F g12<8,8,1>F { align1 1Q compacted }; mad(8) g16<1>F g15<4,4,1>F g13<4,4,1>F g13<4,4,1>F { align16 1Q }; mad(8) g17<1>F g16<4,4,1>F g14<4,4,1>F g14<4,4,1>F { align16 1Q }; mul(8) g18<1>F g17<8,8,1>F 0.9604F { align1 1Q }; cmp.le.f0(8) null<1>F (abs)g20<8,8,1>F 0.00784314F { align1 1Q switch }; (+f0) if(8) JIP: 17 UIP: 18 { align1 1Q }; END B2 ->B3 ->B4 START B3 <-B2 mul(8) g21<1>F g6<8,8,1>F g12<8,8,1>F { align1 1Q compacted }; mul(8) g25<1>F g6<8,8,1>F g6<8,8,1>F { align1 1Q compacted }; mad(8) g22<1>F g21<4,4,1>F g13<4,4,1>F g7<4,4,1>F { align16 1Q }; mad(8) g26<1>F g25<4,4,1>F g7<4,4,1>F g7<4,4,1>F { align16 1Q }; mad(8) g23<1>F g22<4,4,1>F g14<4,4,1>F g19<4,4,1>F { align16 1Q }; mad(8) g27<1>F g26<4,4,1>F g19<4,4,1>F g19<4,4,1>F { align16 1Q }; mul(8) g24<1>F g23<8,8,1>F g23<8,8,1>F { align1 1Q compacted }; mul(8) g28<1>F g18<8,8,1>F g27<8,8,1>F { align1 1Q compacted }; cmp.ge.f0(8) g6<1>F g24<8,8,1>F g28<8,8,1>F { align1 1Q compacted }; else(8) JIP: 3 { align1 1Q }; END B3 ->B5 START B4 <-B2 mov(8) g6<1>UD 0x00000000UD { align1 1Q compacted }; END B4 ->B5 START B5 <-B4 <-B3 endif(8) JIP: 33 { align1 1Q }; mov.nz.f0(8) null<1>D g6<8,8,1>D { align1 1Q }; (+f0) if(8) JIP: 76 UIP: 76 { align1 1Q }; END B5 ->B6 ->B15 START B6 <-B5 mov(8) g19<1>F g29.1<0,1,0>F { align1 1Q compacted }; mov(8) g20<1>F g29.1<0,1,0>F { align1 1Q compacted }; mov(8) g21<1>F g4<8,8,1>F { align1 1Q compacted }; mov(8) g22<1>F g5<8,8,1>F { align1 1Q compacted }; send(8) g19<1>UW g19<8,8,1>F sampler ld2dms SIMD8 Surface = 1 Sampler = 0 mlen 4 rlen 4 { align1 1Q }; add(8) g6<1>F g19<8,8,1>F -g29<0,1,0>F { align1 1Q compacted }; add(8) g7<1>F g20<8,8,1>F -g29<0,1,0>F { align1 1Q compacted }; add(8) g15<1>F g21<8,8,1>F -g29<0,1,0>F { align1 1Q compacted }; add(8) g16<1>F g11<8,8,1>F -g22<8,8,1>F { align1 1Q compacted }; cmp.le.f0(8) null<1>F (abs)g16<8,8,1>F 0.00784314F { align1 1Q switch }; (+f0) if(8) JIP: 17 UIP: 18 { align1 1Q }; END B6 ->B7 ->B8 START B7 <-B6 mul(8) g17<1>F g6<8,8,1>F g12<8,8,1>F { align1 1Q compacted }; mul(8) g22<1>F g6<8,8,1>F g6<8,8,1>F { align1 1Q compacted }; mad(8) g19<1>F g17<4,4,1>F g13<4,4,1>F g7<4,4,1>F { align16 1Q }; mad(8) g23<1>F g22<4,4,1>F g7<4,4,1>F g7<4,4,1>F { align16 1Q }; mad(8) g20<1>F g19<4,4,1>F g14<4,4,1>F g15<4,4,1>F { align16 1Q }; mad(8) g24<1>F g23<4,4,1>F g15<4,4,1>F g15<4,4,1>F { align16 1Q }; mul(8) g21<1>F g20<8,8,1>F g20<8,8,1>F { align1 1Q compacted }; mul(8) g25<1>F g18<8,8,1>F g24<8,8,1>F { align1 1Q compacted }; cmp.ge.f0(8) g7<1>F g21<8,8,1>F g25<8,8,1>F { align1 1Q compacted }; else(8) JIP: 3 { align1 1Q }; END B7 ->B9 START B8 <-B6 mov(8) g7<1>UD 0x00000000UD { align1 1Q compacted }; END B8 ->B9 START B9 <-B8 <-B7 endif(8) JIP: 33 { align1 1Q }; mov.nz.f0(8) null<1>D g7<8,8,1>D { align1 1Q }; (+f0) if(8) JIP: 38 UIP: 38 { align1 1Q }; END B9 ->B10 ->B14 START B10 <-B9 mov(8) g20<1>F g29.1<0,1,0>F { align1 1Q compacted }; mov(8) g21<1>F g29.1<0,1,0>F { align1 1Q compacted }; mov(8) g22<1>F g4<8,8,1>F { align1 1Q compacted }; mov(8) g23<1>F g5<8,8,1>F { align1 1Q compacted }; send(8) g2<1>UW g20<8,8,1>F sampler ld2dms SIMD8 Surface = 1 Sampler = 0 mlen 4 rlen 4 { align1 1Q }; add(8) g6<1>F g2<8,8,1>F -g29<0,1,0>F { align1 1Q compacted }; add(8) g7<1>F g3<8,8,1>F -g29<0,1,0>F { align1 1Q compacted }; add(8) g15<1>F g4<8,8,1>F -g29<0,1,0>F { align1 1Q compacted }; add(8) g16<1>F g11<8,8,1>F -g5<8,8,1>F { align1 1Q compacted }; cmp.le.f0(8) null<1>F (abs)g16<8,8,1>F 0.00784314F { align1 1Q switch }; (+f0) if(8) JIP: 17 UIP: 18 { align1 1Q }; END B10 ->B11 ->B12 START B11 <-B10 mul(8) g17<1>F g6<8,8,1>F g12<8,8,1>F { align1 1Q compacted }; mul(8) g22<1>F g6<8,8,1>F g6<8,8,1>F { align1 1Q compacted }; mad(8) g19<1>F g17<4,4,1>F g13<4,4,1>F g7<4,4,1>F { align16 1Q }; mad(8) g23<1>F g22<4,4,1>F g7<4,4,1>F g7<4,4,1>F { align16 1Q }; mad(8) g20<1>F g19<4,4,1>F g14<4,4,1>F g15<4,4,1>F { align16 1Q }; mad(8) g24<1>F g23<4,4,1>F g15<4,4,1>F g15<4,4,1>F { align16 1Q }; mul(8) g21<1>F g20<8,8,1>F g20<8,8,1>F { align1 1Q compacted }; mul(8) g25<1>F g18<8,8,1>F g24<8,8,1>F { align1 1Q compacted }; cmp.ge.f0(8) g8<1>F g21<8,8,1>F g25<8,8,1>F { align1 1Q compacted }; else(8) JIP: 3 { align1 1Q }; END B11 ->B13 START B12 <-B10 mov(8) g8<1>UD 0x00000000UD { align1 1Q compacted }; END B12 ->B13 START B13 <-B12 <-B11 endif(8) JIP: 4 { align1 1Q }; (+f0.1) cmp.z.f0.1(8) null<1>D g8<8,8,1>D 0D { align1 1Q switch }; (-f0.1.any8h) halt(8) JIP: 2 UIP: 10 { align1 WE_all 1Q }; END B13 ->B14 START B14 <-B9 <-B13 endif(8) JIP: 2 { align1 1Q }; END B14 ->B15 START B15 <-B5 <-B14 endif(8) JIP: 2 { align1 1Q }; END B15 ->B16 START B16 <-B15 <-B1 endif(8) JIP: 2 { align1 1Q }; halt(8) JIP: 2 UIP: 2 { align1 1Q }; mov(1) g1.14<1>UW f0.1<0,1,0>UW { align1 WE_all }; mov(16) g122<1>UD g0<8,8,1>UD { align1 WE_all 1H compacted }; (+f0.1) sendc(8) null<1>UW g122<8,8,1>F render RT write SIMD8 LastRT Surface = 0 mlen 6 rlen 0 { align1 1Q EOT }; END B16 Native code for unnamed fragment shader GLSL394 SIMD16 shader: 108 instructions. 0 loops. 692 cycles. 0:0 spills:fills. Promoted 2 constants. Compacted 1728 to 1312 bytes (24%) START B0 add(16) g2<1>UW g1.4<2,4,0>UW 0x10101010V { align1 1H }; add(16) g3<1>UW g1.5<2,4,0>UW 0x11001100V { align1 1H }; mov(1) f0.1<1>UW g1.14<0,1,0>UW { align1 WE_all }; mov(1) g27<1>F 0.5F { align1 WE_all }; mov(16) g29<1>F g2<8,8,1>UW { align1 1H }; mov(16) g31<1>F g3<8,8,1>UW { align1 1H }; add(16) g2<1>F g29<8,8,1>F g27<0,1,0>F { align1 1H compacted }; add(16) g4<1>F -g31<8,8,1>F 1079.5F { align1 1H }; mov(16) g14<1>D g2<8,8,1>F { align1 1H compacted }; mov(16) g16<1>D g4<8,8,1>F { align1 1H compacted }; mov.nz.f0(16) null<1>UD 0x00000000UD { align1 1H }; (+f0) if(16) JIP: 8 UIP: 136 { align1 1H }; END B0 ->B1 ->B2 START B1 <-B0 (+f0.1) cmp.nz.f0.1(16) null<1>UW g0<8,8,1>UW g0<8,8,1>UW { align1 1H switch }; (-f0.1.any16h) halt(16) JIP: 2 UIP: 136 { align1 WE_all 1H }; else(16) JIP: 130 { align1 1H }; END B1 ->B16 START B2 <-B0 mov(1) g27.1<1>F [0F, 0F, 0F, 0F]VF { align1 WE_all }; mov(16) g22<1>F g14<8,8,1>F { align1 1H compacted }; mov(16) g24<1>F g16<8,8,1>F { align1 1H compacted }; mov(16) g10<1>F g27.1<0,1,0>F { align1 1H compacted }; mov(16) g12<1>F g27.1<0,1,0>F { align1 1H compacted }; mov(16) g18<1>F g27.1<0,1,0>F { align1 1H compacted }; mov(16) g20<1>F g27.1<0,1,0>F { align1 1H compacted }; send(16) g35<1>UW g10<8,8,1>F sampler ld2dms SIMD16 Surface = 1 Sampler = 0 mlen 8 rlen 8 { align1 1H }; send(16) g2<1>UW g18<8,8,1>F sampler ld2dms SIMD16 Surface = 1 Sampler = 0 mlen 8 rlen 8 { align1 1H }; add(16) g29<1>F g35<8,8,1>F -g27<0,1,0>F { align1 1H compacted }; add(16) g43<1>F g37<8,8,1>F -g27<0,1,0>F { align1 1H compacted }; add(16) g45<1>F g39<8,8,1>F -g27<0,1,0>F { align1 1H compacted }; add(16) g18<1>F g2<8,8,1>F -g27<0,1,0>F { align1 1H compacted }; add(16) g20<1>F g4<8,8,1>F -g27<0,1,0>F { align1 1H compacted }; add(16) g22<1>F g6<8,8,1>F -g27<0,1,0>F { align1 1H compacted }; add(16) g24<1>F g41<8,8,1>F -g8<8,8,1>F { align1 1H compacted }; mul(16) g47<1>F g29<8,8,1>F g29<8,8,1>F { align1 1H compacted }; mad(16) g49<1>F g47<4,4,1>F g43<4,4,1>F g43<4,4,1>F { align16 1H }; mad(16) g51<1>F g49<4,4,1>F g45<4,4,1>F g45<4,4,1>F { align16 1H }; mul(16) g53<1>F g51<8,8,1>F 0.9604F { align1 1H }; cmp.le.f0(16) null<1>F (abs)g24<8,8,1>F 0.00784314F { align1 1H switch }; (+f0) if(16) JIP: 17 UIP: 18 { align1 1H }; END B2 ->B3 ->B4 START B3 <-B2 mul(16) g25<1>F g18<8,8,1>F g29<8,8,1>F { align1 1H compacted }; mul(16) g48<1>F g18<8,8,1>F g18<8,8,1>F { align1 1H compacted }; mad(16) g31<1>F g25<4,4,1>F g43<4,4,1>F g20<4,4,1>F { align16 1H }; mad(16) g50<1>F g48<4,4,1>F g20<4,4,1>F g20<4,4,1>F { align16 1H }; mad(16) g33<1>F g31<4,4,1>F g45<4,4,1>F g22<4,4,1>F { align16 1H }; mad(16) g55<1>F g50<4,4,1>F g22<4,4,1>F g22<4,4,1>F { align16 1H }; mul(16) g47<1>F g33<8,8,1>F g33<8,8,1>F { align1 1H compacted }; mul(16) g57<1>F g53<8,8,1>F g55<8,8,1>F { align1 1H compacted }; cmp.ge.f0(16) g32<1>F g47<8,8,1>F g57<8,8,1>F { align1 1H compacted }; else(16) JIP: 3 { align1 1H }; END B3 ->B5 START B4 <-B2 mov(16) g32<1>UD 0x00000000UD { align1 1H compacted }; END B4 ->B5 START B5 <-B4 <-B3 endif(16) JIP: 33 { align1 1H }; mov.nz.f0(16) null<1>D g32<8,8,1>D { align1 1H }; (+f0) if(16) JIP: 76 UIP: 76 { align1 1H }; END B5 ->B6 ->B15 START B6 <-B5 mov(16) g18<1>F g27.1<0,1,0>F { align1 1H compacted }; mov(16) g20<1>F g27.1<0,1,0>F { align1 1H compacted }; mov(16) g22<1>F g14<8,8,1>F { align1 1H compacted }; mov(16) g24<1>F g16<8,8,1>F { align1 1H compacted }; send(16) g2<1>UW g18<8,8,1>F sampler ld2dms SIMD16 Surface = 1 Sampler = 0 mlen 8 rlen 8 { align1 1H }; add(16) g58<1>F g2<8,8,1>F -g27<0,1,0>F { align1 1H compacted }; add(16) g60<1>F g4<8,8,1>F -g27<0,1,0>F { align1 1H compacted }; add(16) g62<1>F g6<8,8,1>F -g27<0,1,0>F { align1 1H compacted }; add(16) g64<1>F g41<8,8,1>F -g8<8,8,1>F { align1 1H compacted }; cmp.le.f0(16) null<1>F (abs)g64<8,8,1>F 0.00784314F { align1 1H switch }; (+f0) if(16) JIP: 17 UIP: 18 { align1 1H }; END B6 ->B7 ->B8 START B7 <-B6 mul(16) g65<1>F g58<8,8,1>F g29<8,8,1>F { align1 1H compacted }; mul(16) g72<1>F g58<8,8,1>F g58<8,8,1>F { align1 1H compacted }; mad(16) g67<1>F g65<4,4,1>F g43<4,4,1>F g60<4,4,1>F { align16 1H }; mad(16) g74<1>F g72<4,4,1>F g60<4,4,1>F g60<4,4,1>F { align16 1H }; mad(16) g69<1>F g67<4,4,1>F g45<4,4,1>F g62<4,4,1>F { align16 1H }; mad(16) g76<1>F g74<4,4,1>F g62<4,4,1>F g62<4,4,1>F { align16 1H }; mul(16) g71<1>F g69<8,8,1>F g69<8,8,1>F { align1 1H compacted }; mul(16) g78<1>F g53<8,8,1>F g76<8,8,1>F { align1 1H compacted }; cmp.ge.f0(16) g33<1>F g71<8,8,1>F g78<8,8,1>F { align1 1H compacted }; else(16) JIP: 3 { align1 1H }; END B7 ->B9 START B8 <-B6 mov(16) g33<1>UD 0x00000000UD { align1 1H compacted }; END B8 ->B9 START B9 <-B8 <-B7 endif(16) JIP: 33 { align1 1H }; mov.nz.f0(16) null<1>D g33<8,8,1>D { align1 1H }; (+f0) if(16) JIP: 38 UIP: 38 { align1 1H }; END B9 ->B10 ->B14 START B10 <-B9 mov(16) g19<1>F g27.1<0,1,0>F { align1 1H compacted }; mov(16) g21<1>F g27.1<0,1,0>F { align1 1H compacted }; mov(16) g23<1>F g14<8,8,1>F { align1 1H compacted }; mov(16) g25<1>F g16<8,8,1>F { align1 1H compacted }; send(16) g2<1>UW g19<8,8,1>F sampler ld2dms SIMD16 Surface = 1 Sampler = 0 mlen 8 rlen 8 { align1 1H }; add(16) g10<1>F g2<8,8,1>F -g27<0,1,0>F { align1 1H compacted }; add(16) g12<1>F g4<8,8,1>F -g27<0,1,0>F { align1 1H compacted }; add(16) g14<1>F g6<8,8,1>F -g27<0,1,0>F { align1 1H compacted }; add(16) g16<1>F g41<8,8,1>F -g8<8,8,1>F { align1 1H compacted }; cmp.le.f0(16) null<1>F (abs)g16<8,8,1>F 0.00784314F { align1 1H switch }; (+f0) if(16) JIP: 17 UIP: 18 { align1 1H }; END B10 ->B11 ->B12 START B11 <-B10 mul(16) g17<1>F g10<8,8,1>F g29<8,8,1>F { align1 1H compacted }; mul(16) g24<1>F g10<8,8,1>F g10<8,8,1>F { align1 1H compacted }; mad(16) g19<1>F g17<4,4,1>F g43<4,4,1>F g12<4,4,1>F { align16 1H }; mad(16) g26<1>F g24<4,4,1>F g12<4,4,1>F g12<4,4,1>F { align16 1H }; mad(16) g21<1>F g19<4,4,1>F g45<4,4,1>F g14<4,4,1>F { align16 1H }; mad(16) g28<1>F g26<4,4,1>F g14<4,4,1>F g14<4,4,1>F { align16 1H }; mul(16) g23<1>F g21<8,8,1>F g21<8,8,1>F { align1 1H compacted }; mul(16) g30<1>F g53<8,8,1>F g28<8,8,1>F { align1 1H compacted }; cmp.ge.f0(16) g34<1>F g23<8,8,1>F g30<8,8,1>F { align1 1H compacted }; else(16) JIP: 3 { align1 1H }; END B11 ->B13 START B12 <-B10 mov(16) g34<1>UD 0x00000000UD { align1 1H compacted }; END B12 ->B13 START B13 <-B12 <-B11 endif(16) JIP: 4 { align1 1H }; (+f0.1) cmp.z.f0.1(16) null<1>D g34<8,8,1>D 0D { align1 1H switch }; (-f0.1.any16h) halt(16) JIP: 2 UIP: 10 { align1 WE_all 1H }; END B13 ->B14 START B14 <-B9 <-B13 endif(16) JIP: 2 { align1 1H }; END B14 ->B15 START B15 <-B5 <-B14 endif(16) JIP: 2 { align1 1H }; END B15 ->B16 START B16 <-B15 <-B1 endif(16) JIP: 2 { align1 1H }; halt(16) JIP: 2 UIP: 2 { align1 1H }; mov(1) g1.14<1>UW f0.1<0,1,0>UW { align1 WE_all }; mov(16) g118<1>UD g0<8,8,1>UD { align1 WE_all 1H compacted }; (+f0.1) sendc(16) null<1>UW g118<8,8,1>F render RT write SIMD16 LastRT Surface = 0 mlen 10 rlen 0 { align1 1H EOT }; END B16