1/*
2 * Copyright © 2010 Intel Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice (including the next
12 * paragraph) shall be included in all copies or substantial portions of the
13 * Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21 * IN THE SOFTWARE.
22 *
23 */
24
25/*
26 * Fragment to compute src u/v values
27 */
28include(`exa_wm.g4i')
29
30define(`u',     `mask_u')
31define(`ul',    `mask_u')
32define(`uh',    `m9')
33define(`v',     `mask_v')
34define(`vl',    `mask_v')
35define(`vh',    `m11')
36define(`w',     `mask_w')
37define(`wl',    `mask_w_0')
38define(`wh',    `mask_w_1')
39
40define(`bl',    `g2.0<8,8,1>F')
41define(`bh',    `g4.0<8,8,1>F')
42
43define(`a0_a_x',`g8.0<0,1,0>F')
44define(`a0_a_y',`g8.16<0,1,0>F')
45define(`a0_a_z',`g9.0<0,1,0>F')
46
47/* W */
48pln (8) temp_x_0<1>F a0_a_z bl { align1 }; /* pixel 0-7 */
49pln (8) temp_x_1<1>F a0_a_z bh { align1 }; /* pixel 8-15 */
50math (8) wl<1>F temp_x_0<8,8,1>F null inv { align1 };
51math (8) wh<1>F temp_x_1<8,8,1>F null inv { align1 };
52
53/* U */
54pln (8) temp_x_0<1>F a0_a_x bl { align1 }; /* pixel 0-7 */
55pln (8) temp_x_1<1>F a0_a_x bh { align1 }; /* pixel 8-15 */
56mul (8) ul<1>F temp_x_0<8,8,1>F wl<8,8,1>F { align1 };
57mul (8) uh<1>F temp_x_1<8,8,1>F wh<8,8,1>F { align1 };
58
59/* V */
60pln (8) temp_x_0<1>F a0_a_y bl { align1 }; /* pixel 0-7 */
61pln (8) temp_x_1<1>F a0_a_y bh { align1 }; /* pixel 8-15 */
62mul (8) vl<1>F temp_x_0<8,8,1>F wl<8,8,1>F { align1 };
63mul (8) vh<1>F temp_x_1<8,8,1>F wh<8,8,1>F { align1 };
64