1428d7b3dSmrg#include "brw.h"
2428d7b3dSmrg
3428d7b3dSmrgbool brw_sf_kernel__nomask(struct brw_compile *p)
4428d7b3dSmrg{
5428d7b3dSmrg	struct brw_reg inv, v0, v1, v2, delta;
6428d7b3dSmrg
7428d7b3dSmrg	v0 = brw_vec4_grf(3, 0);
8428d7b3dSmrg	v1 = brw_vec4_grf(4, 0);
9428d7b3dSmrg	v2 = brw_vec4_grf(5, 0);
10428d7b3dSmrg	delta = brw_vec8_grf(7, 0);
11428d7b3dSmrg
12428d7b3dSmrg	inv = brw_vec4_grf(6, 0);
13428d7b3dSmrg	brw_math_invert(p, inv, brw_vec4_grf(1, 11));
14428d7b3dSmrg
15428d7b3dSmrg	brw_MOV(p, brw_message_reg(3), v0);
16428d7b3dSmrg
17428d7b3dSmrg	brw_ADD(p, delta, v1, brw_negate(v2));
18428d7b3dSmrg	brw_MUL(p, brw_message_reg(1), delta, brw_vec1_grf(6,0));
19428d7b3dSmrg
20428d7b3dSmrg	brw_ADD(p, delta, v2, brw_negate(v0));
21428d7b3dSmrg	brw_MUL(p, brw_message_reg(2), delta, brw_vec1_grf(6,2));
22428d7b3dSmrg
23428d7b3dSmrg	brw_urb_WRITE(p, brw_null_reg(), 0, brw_vec8_grf(0 ,0),
24428d7b3dSmrg		      false, true, 4, 0, true, true, 0,
25428d7b3dSmrg		      BRW_URB_SWIZZLE_TRANSPOSE);
26428d7b3dSmrg
27428d7b3dSmrg	return true;
28428d7b3dSmrg}
29428d7b3dSmrg
30428d7b3dSmrgbool brw_sf_kernel__mask(struct brw_compile *p)
31428d7b3dSmrg{
32428d7b3dSmrg	struct brw_reg inv, v0, v1, v2;
33428d7b3dSmrg
34428d7b3dSmrg	v0 = brw_vec8_grf(3, 0);
35428d7b3dSmrg	v1 = brw_vec8_grf(4, 0);
36428d7b3dSmrg	v2 = brw_vec8_grf(5, 0);
37428d7b3dSmrg
38428d7b3dSmrg	inv = brw_vec4_grf(6, 0);
39428d7b3dSmrg	brw_math_invert(p, inv, brw_vec4_grf(1, 11));
40428d7b3dSmrg
41428d7b3dSmrg	brw_MOV(p, brw_message_reg(3), v0);
42428d7b3dSmrg
43428d7b3dSmrg	brw_ADD(p, brw_vec8_grf(7, 0), v1, brw_negate(v2));
44428d7b3dSmrg	brw_MUL(p, brw_message_reg(1), brw_vec8_grf(7, 0), brw_vec1_grf(6,0));
45428d7b3dSmrg
46428d7b3dSmrg	brw_ADD(p, brw_vec8_grf(7, 0), v2, brw_negate(v0));
47428d7b3dSmrg	brw_MUL(p, brw_message_reg(2), brw_vec8_grf(7, 0), brw_vec1_grf(6,2));
48428d7b3dSmrg
49428d7b3dSmrg	brw_urb_WRITE(p, brw_null_reg(), 0, brw_vec8_grf(0 ,0),
50428d7b3dSmrg		      false, true, 4, 0, true, true, 0,
51428d7b3dSmrg		      BRW_URB_SWIZZLE_TRANSPOSE);
52428d7b3dSmrg
53428d7b3dSmrg	return true;
54428d7b3dSmrg}
55