1544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin/**************************************************************************
2544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin *
3544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * Copyright 2009 VMware, Inc.  All Rights Reserved.
4544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin *
5544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * Permission is hereby granted, free of charge, to any person obtaining a
6544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * copy of this software and associated documentation files (the
7544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * "Software"), to deal in the Software without restriction, including
8544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * without limitation the rights to use, copy, modify, merge, publish,
9544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * distribute, sub license, and/or sell copies of the Software, and to
10544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * permit persons to whom the Software is furnished to do so, subject to
11544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * the following conditions:
12544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin *
13544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * The above copyright notice and this permission notice (including the
14544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * next paragraph) shall be included in all copies or substantial portions
15544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * of the Software.
16544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin *
17544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
20544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
21544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin *
25544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin **************************************************************************/
26544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin
27544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin#ifndef ASM_UTIL_H
28544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin#define ASM_UTIL_H
29544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin
30544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin/* μnew = μmask */
31544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusinstatic const char set_mask_asm[] =
325285de7c0fc067dc036a5b421140a696ce2cabbfMichal Krol   "FRAG\n"
33544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL IN[0], GENERIC[0], PERSPECTIVE\n"
34544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL SAMP[0], CONSTANT\n"
35544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL OUT[0], COLOR, CONSTANT\n"
36544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "0: TEX OUT[0], IN[0], SAMP[0], 2D\n"/*umask*/
37544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "1: END\n";
38544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin
39544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin/* μnew = 1 – (1 – μmask)*(1 – μprev) */
40544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusinstatic const char union_mask_asm[] =
415285de7c0fc067dc036a5b421140a696ce2cabbfMichal Krol   "FRAG\n"
42544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL IN[0], GENERIC[0], PERSPECTIVE\n"
43544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL IN[1], POSITION, LINEAR\n"
44544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL CONST[0], CONSTANT\n"
45544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL SAMP[0..1], CONSTANT\n"
46544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL TEMP[0..3], CONSTANT\n"
47544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL OUT[0], COLOR, CONSTANT\n"
48544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "0: TEX TEMP[1], IN[0], SAMP[0], 2D\n"/*umask*/
49544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "1: TEX TEMP[0], IN[1], SAMP[1], 2D\n"/*uprev*/
50544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "2: SUB TEMP[2], CONST[0], TEMP[0]\n"
51544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "3: SUB TEMP[3], CONST[0], TEMP[1]\n"
52544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "4: MUL TEMP[0].w, TEMP[2].wwww, TEMP[3].wwww\n"
53544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "5: SUB OUT[0], CONST[0], TEMP[0]\n"
54544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "6: END\n";
55544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin
56544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin/* μnew = μmask *μprev */
57544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusinstatic const char intersect_mask_asm[] =
585285de7c0fc067dc036a5b421140a696ce2cabbfMichal Krol   "FRAG\n"
59544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL IN[0], GENERIC[0], PERSPECTIVE\n"
60544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL IN[1], POSITION, LINEAR\n"
61544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL CONST[0], CONSTANT\n"
62544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL SAMP[0..1], CONSTANT\n"
63544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL TEMP[0..1], CONSTANT\n"
64544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL OUT[0], COLOR, CONSTANT\n"
65544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "0: TEX TEMP[0], IN[1], SAMP[1], 2D\n"/*uprev*/
66544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "1: TEX TEMP[1], IN[0], SAMP[0], 2D\n"/*umask*/
67544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "2: MUL OUT[0], TEMP[0].wwww, TEMP[1].wwww\n"
68544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "3: END\n";
69544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin
70544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin/* μnew = μprev*(1 – μmask) */
71544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusinstatic const char subtract_mask_asm[] =
725285de7c0fc067dc036a5b421140a696ce2cabbfMichal Krol   "FRAG\n"
73544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL IN[0], GENERIC[0], PERSPECTIVE\n"
74544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL IN[1], POSITION, LINEAR\n"
75544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL CONST[0], CONSTANT\n"
76544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL SAMP[0..1], CONSTANT\n"
77544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL TEMP[0..2], CONSTANT\n"
78544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "DCL OUT[0], COLOR, CONSTANT\n"
79544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "0: TEX TEMP[1], IN[0], SAMP[0], 2D\n"/*umask*/
80544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "1: TEX TEMP[0], IN[1], SAMP[1], 2D\n"/*uprev*/
81544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "2: SUB TEMP[2], CONST[0], TEMP[1]\n"
82544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "3: MUL OUT[0], TEMP[2].wwww, TEMP[0].wwww\n"
83544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin   "4: END\n";
84544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin
85544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin#endif
86