xref: /aosp_15_r20/external/igt-gpu-tools/assembler/brw_eu_debug.c (revision d83cc019efdc2edc6c4b16e9034a3ceb8d35d77c)
1*d83cc019SAndroid Build Coastguard Worker /*
2*d83cc019SAndroid Build Coastguard Worker  Copyright (C) Intel Corp.  2006.  All Rights Reserved.
3*d83cc019SAndroid Build Coastguard Worker  Intel funded Tungsten Graphics (http://www.tungstengraphics.com) to
4*d83cc019SAndroid Build Coastguard Worker  develop this 3D driver.
5*d83cc019SAndroid Build Coastguard Worker 
6*d83cc019SAndroid Build Coastguard Worker  Permission is hereby granted, free of charge, to any person obtaining
7*d83cc019SAndroid Build Coastguard Worker  a copy of this software and associated documentation files (the
8*d83cc019SAndroid Build Coastguard Worker  "Software"), to deal in the Software without restriction, including
9*d83cc019SAndroid Build Coastguard Worker  without limitation the rights to use, copy, modify, merge, publish,
10*d83cc019SAndroid Build Coastguard Worker  distribute, sublicense, and/or sell copies of the Software, and to
11*d83cc019SAndroid Build Coastguard Worker  permit persons to whom the Software is furnished to do so, subject to
12*d83cc019SAndroid Build Coastguard Worker  the following conditions:
13*d83cc019SAndroid Build Coastguard Worker 
14*d83cc019SAndroid Build Coastguard Worker  The above copyright notice and this permission notice (including the
15*d83cc019SAndroid Build Coastguard Worker  next paragraph) shall be included in all copies or substantial
16*d83cc019SAndroid Build Coastguard Worker  portions of the Software.
17*d83cc019SAndroid Build Coastguard Worker 
18*d83cc019SAndroid Build Coastguard Worker  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19*d83cc019SAndroid Build Coastguard Worker  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20*d83cc019SAndroid Build Coastguard Worker  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21*d83cc019SAndroid Build Coastguard Worker  IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
22*d83cc019SAndroid Build Coastguard Worker  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23*d83cc019SAndroid Build Coastguard Worker  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24*d83cc019SAndroid Build Coastguard Worker  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25*d83cc019SAndroid Build Coastguard Worker 
26*d83cc019SAndroid Build Coastguard Worker  **********************************************************************/
27*d83cc019SAndroid Build Coastguard Worker  /*
28*d83cc019SAndroid Build Coastguard Worker   * Authors:
29*d83cc019SAndroid Build Coastguard Worker   *   Keith Whitwell <[email protected]>
30*d83cc019SAndroid Build Coastguard Worker   */
31*d83cc019SAndroid Build Coastguard Worker 
32*d83cc019SAndroid Build Coastguard Worker #include "brw_eu.h"
33*d83cc019SAndroid Build Coastguard Worker 
brw_print_reg(struct brw_reg hwreg)34*d83cc019SAndroid Build Coastguard Worker void brw_print_reg( struct brw_reg hwreg )
35*d83cc019SAndroid Build Coastguard Worker {
36*d83cc019SAndroid Build Coastguard Worker    static const char *file[] = {
37*d83cc019SAndroid Build Coastguard Worker       "arf",
38*d83cc019SAndroid Build Coastguard Worker       "grf",
39*d83cc019SAndroid Build Coastguard Worker       "msg",
40*d83cc019SAndroid Build Coastguard Worker       "imm"
41*d83cc019SAndroid Build Coastguard Worker    };
42*d83cc019SAndroid Build Coastguard Worker 
43*d83cc019SAndroid Build Coastguard Worker    static const char *type[] = {
44*d83cc019SAndroid Build Coastguard Worker       "ud",
45*d83cc019SAndroid Build Coastguard Worker       "d",
46*d83cc019SAndroid Build Coastguard Worker       "uw",
47*d83cc019SAndroid Build Coastguard Worker       "w",
48*d83cc019SAndroid Build Coastguard Worker       "ub",
49*d83cc019SAndroid Build Coastguard Worker       "vf",
50*d83cc019SAndroid Build Coastguard Worker       "hf",
51*d83cc019SAndroid Build Coastguard Worker       "f"
52*d83cc019SAndroid Build Coastguard Worker    };
53*d83cc019SAndroid Build Coastguard Worker 
54*d83cc019SAndroid Build Coastguard Worker    printf("%s%s",
55*d83cc019SAndroid Build Coastguard Worker 	  hwreg.abs ? "abs/" : "",
56*d83cc019SAndroid Build Coastguard Worker 	  hwreg.negate ? "-" : "");
57*d83cc019SAndroid Build Coastguard Worker 
58*d83cc019SAndroid Build Coastguard Worker    if (hwreg.file == BRW_GENERAL_REGISTER_FILE &&
59*d83cc019SAndroid Build Coastguard Worker        hwreg.nr % 2 == 0 &&
60*d83cc019SAndroid Build Coastguard Worker        hwreg.subnr == 0 &&
61*d83cc019SAndroid Build Coastguard Worker        hwreg.vstride == BRW_VERTICAL_STRIDE_8 &&
62*d83cc019SAndroid Build Coastguard Worker        hwreg.width == BRW_WIDTH_8 &&
63*d83cc019SAndroid Build Coastguard Worker        hwreg.hstride == BRW_HORIZONTAL_STRIDE_1 &&
64*d83cc019SAndroid Build Coastguard Worker        hwreg.type == BRW_REGISTER_TYPE_F) {
65*d83cc019SAndroid Build Coastguard Worker       /* vector register */
66*d83cc019SAndroid Build Coastguard Worker       printf("vec%d", hwreg.nr);
67*d83cc019SAndroid Build Coastguard Worker    }
68*d83cc019SAndroid Build Coastguard Worker    else if (hwreg.file == BRW_GENERAL_REGISTER_FILE &&
69*d83cc019SAndroid Build Coastguard Worker 	    hwreg.vstride == BRW_VERTICAL_STRIDE_0 &&
70*d83cc019SAndroid Build Coastguard Worker 	    hwreg.width == BRW_WIDTH_1 &&
71*d83cc019SAndroid Build Coastguard Worker 	    hwreg.hstride == BRW_HORIZONTAL_STRIDE_0 &&
72*d83cc019SAndroid Build Coastguard Worker 	    hwreg.type == BRW_REGISTER_TYPE_F) {
73*d83cc019SAndroid Build Coastguard Worker       /* "scalar" register */
74*d83cc019SAndroid Build Coastguard Worker       printf("scl%d.%d", hwreg.nr, hwreg.subnr / 4);
75*d83cc019SAndroid Build Coastguard Worker    }
76*d83cc019SAndroid Build Coastguard Worker    else if (hwreg.file == BRW_IMMEDIATE_VALUE) {
77*d83cc019SAndroid Build Coastguard Worker       printf("imm %f", hwreg.dw1.f);
78*d83cc019SAndroid Build Coastguard Worker    }
79*d83cc019SAndroid Build Coastguard Worker    else {
80*d83cc019SAndroid Build Coastguard Worker       printf("%s%d.%d<%d;%d,%d>:%s",
81*d83cc019SAndroid Build Coastguard Worker 		   file[hwreg.file],
82*d83cc019SAndroid Build Coastguard Worker 		   hwreg.nr,
83*d83cc019SAndroid Build Coastguard Worker 		   hwreg.subnr / type_sz(hwreg.type),
84*d83cc019SAndroid Build Coastguard Worker 		   hwreg.vstride ? (1<<(hwreg.vstride-1)) : 0,
85*d83cc019SAndroid Build Coastguard Worker 		   1<<hwreg.width,
86*d83cc019SAndroid Build Coastguard Worker 		   hwreg.hstride ? (1<<(hwreg.hstride-1)) : 0,
87*d83cc019SAndroid Build Coastguard Worker 		   type[hwreg.type]);
88*d83cc019SAndroid Build Coastguard Worker    }
89*d83cc019SAndroid Build Coastguard Worker }
90*d83cc019SAndroid Build Coastguard Worker 
91*d83cc019SAndroid Build Coastguard Worker 
92*d83cc019SAndroid Build Coastguard Worker 
93