1*7c478bd9Sstevel@tonic-gate /*
2*7c478bd9Sstevel@tonic-gate  * CDDL HEADER START
3*7c478bd9Sstevel@tonic-gate  *
4*7c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*7c478bd9Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
6*7c478bd9Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
7*7c478bd9Sstevel@tonic-gate  * with the License.
8*7c478bd9Sstevel@tonic-gate  *
9*7c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*7c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
11*7c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
12*7c478bd9Sstevel@tonic-gate  * and limitations under the License.
13*7c478bd9Sstevel@tonic-gate  *
14*7c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
15*7c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*7c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
17*7c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
18*7c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
19*7c478bd9Sstevel@tonic-gate  *
20*7c478bd9Sstevel@tonic-gate  * CDDL HEADER END
21*7c478bd9Sstevel@tonic-gate  */
22*7c478bd9Sstevel@tonic-gate /*
23*7c478bd9Sstevel@tonic-gate  * Copyright (c) 1999 by Sun Microsystems, Inc.
24*7c478bd9Sstevel@tonic-gate  * All rights reserved.
25*7c478bd9Sstevel@tonic-gate  */
26*7c478bd9Sstevel@tonic-gate 
27*7c478bd9Sstevel@tonic-gate #include <stdio.h>
28*7c478bd9Sstevel@tonic-gate #include <stdlib.h>
29*7c478bd9Sstevel@tonic-gate #include <stddef.h>
30*7c478bd9Sstevel@tonic-gate #include <fcntl.h>
31*7c478bd9Sstevel@tonic-gate #include <unistd.h>
32*7c478bd9Sstevel@tonic-gate #include <libintl.h>
33*7c478bd9Sstevel@tonic-gate #include <sys/types.h>
34*7c478bd9Sstevel@tonic-gate #include <sys/stat.h>
35*7c478bd9Sstevel@tonic-gate #include <sys/mman.h>
36*7c478bd9Sstevel@tonic-gate #include <errno.h>
37*7c478bd9Sstevel@tonic-gate #include <stdarg.h>
38*7c478bd9Sstevel@tonic-gate #include <string.h>
39*7c478bd9Sstevel@tonic-gate 
40*7c478bd9Sstevel@tonic-gate #include "iconv_tm.h"
41*7c478bd9Sstevel@tonic-gate #include "itm_util.h"
42*7c478bd9Sstevel@tonic-gate 
43*7c478bd9Sstevel@tonic-gate /*
44*7c478bd9Sstevel@tonic-gate  * function prototype
45*7c478bd9Sstevel@tonic-gate  */
46*7c478bd9Sstevel@tonic-gate 
47*7c478bd9Sstevel@tonic-gate static itm_hdr_t	*itm_attach(const char *);
48*7c478bd9Sstevel@tonic-gate static void	dump_tables(itm_hdr_t *, itm_info_hdr_t *);
49*7c478bd9Sstevel@tonic-gate static void	dump_direc_tbl(itm_hdr_t *, itm_place_t);
50*7c478bd9Sstevel@tonic-gate static void	dump_map(itm_hdr_t *, itm_place_t, int);
51*7c478bd9Sstevel@tonic-gate static void	dump_map_i_f(itm_hdr_t *, itm_place_t, int);
52*7c478bd9Sstevel@tonic-gate static void	dump_map_l_f(itm_hdr_t *, itm_place_t, int);
53*7c478bd9Sstevel@tonic-gate static void	dump_map_hash(itm_hdr_t *, itm_place_t, int);
54*7c478bd9Sstevel@tonic-gate static void	dump_map_dense_enc(itm_hdr_t *, itm_place_t, int);
55*7c478bd9Sstevel@tonic-gate static void	dump_cond_tbl(itm_hdr_t *, itm_place_t, int);
56*7c478bd9Sstevel@tonic-gate static void	dump_op_tbl(itm_hdr_t *, itm_place_t, int);
57*7c478bd9Sstevel@tonic-gate static void	dump_op(itm_hdr_t *, itm_place2_t);
58*7c478bd9Sstevel@tonic-gate static void	dump_expr(itm_hdr_t *, itm_place_t);
59*7c478bd9Sstevel@tonic-gate static void	dump_range(itm_hdr_t *, itm_place_t);
60*7c478bd9Sstevel@tonic-gate static void	dump_escapeseq(itm_hdr_t *, itm_place_t);
61*7c478bd9Sstevel@tonic-gate 
62*7c478bd9Sstevel@tonic-gate static char	*tbl_name(itm_hdr_t *, itm_tbl_hdr_t *);
63*7c478bd9Sstevel@tonic-gate static char	*reg_name(itm_hdr_t	*itm_hdr, itm_place_t op);
64*7c478bd9Sstevel@tonic-gate 
65*7c478bd9Sstevel@tonic-gate static void	printi(int, char *, ...);
66*7c478bd9Sstevel@tonic-gate 
67*7c478bd9Sstevel@tonic-gate 
68*7c478bd9Sstevel@tonic-gate /*
69*7c478bd9Sstevel@tonic-gate  * macro definition
70*7c478bd9Sstevel@tonic-gate  */
71*7c478bd9Sstevel@tonic-gate 
72*7c478bd9Sstevel@tonic-gate #define	ADDR(place)	((void *)(((char *)(itm_hdr)) + \
73*7c478bd9Sstevel@tonic-gate 			((itm_place2_t)((place).itm_ptr))))
74*7c478bd9Sstevel@tonic-gate #define	DADDR(n)	(((n)->size <= (sizeof ((n)->place))) ?	\
75*7c478bd9Sstevel@tonic-gate 				((char *)(&((n)->place))) :\
76*7c478bd9Sstevel@tonic-gate 				((char *)(ADDR((n)->place))))
77*7c478bd9Sstevel@tonic-gate #define	ADDR2(place2)	((void *)(((char *)(itm_hdr)) + \
78*7c478bd9Sstevel@tonic-gate 			((itm_place2_t)(place2))))
79*7c478bd9Sstevel@tonic-gate #define	INFO_HDR(pa)	((void *)(((char *)pa) + \
80*7c478bd9Sstevel@tonic-gate 			((itm_hdr_t *)(pa))->info_hdr.itm_ptr))
81*7c478bd9Sstevel@tonic-gate 
82*7c478bd9Sstevel@tonic-gate 
83*7c478bd9Sstevel@tonic-gate #if defined(RESERVED_NAME_PREFIX)
84*7c478bd9Sstevel@tonic-gate #define	RNPREF		RESERVED_NAME_PREFIX
85*7c478bd9Sstevel@tonic-gate #else /* !defined(RESERVED_NAME_PREFIX) */
86*7c478bd9Sstevel@tonic-gate #define	RNPREF		/* null strings */
87*7c478bd9Sstevel@tonic-gate #endif /* !defined(RESERVED_NAME_PREFIX) */
88*7c478bd9Sstevel@tonic-gate 
89*7c478bd9Sstevel@tonic-gate 
90*7c478bd9Sstevel@tonic-gate void
disassemble(char * file)91*7c478bd9Sstevel@tonic-gate disassemble(char	*file)
92*7c478bd9Sstevel@tonic-gate {
93*7c478bd9Sstevel@tonic-gate 	itm_hdr_t	*itm_hdr;
94*7c478bd9Sstevel@tonic-gate 	itm_info_hdr_t	*info_hdr;
95*7c478bd9Sstevel@tonic-gate 	itm_data_t	type_id;
96*7c478bd9Sstevel@tonic-gate 
97*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('d', ("disassemble %s\n", file));
98*7c478bd9Sstevel@tonic-gate 
99*7c478bd9Sstevel@tonic-gate 	itm_hdr = itm_attach(file);
100*7c478bd9Sstevel@tonic-gate 
101*7c478bd9Sstevel@tonic-gate 	if (NULL == itm_hdr) {
102*7c478bd9Sstevel@tonic-gate 		exit(3);
103*7c478bd9Sstevel@tonic-gate 	}
104*7c478bd9Sstevel@tonic-gate 
105*7c478bd9Sstevel@tonic-gate 	if (0 == itm_hdr->info_hdr.itm_ptr) {
106*7c478bd9Sstevel@tonic-gate 		itm_error(gettext("binarytable is stripped\n"));
107*7c478bd9Sstevel@tonic-gate 		exit(4);
108*7c478bd9Sstevel@tonic-gate 	}
109*7c478bd9Sstevel@tonic-gate 
110*7c478bd9Sstevel@tonic-gate 	if (0 == itm_hdr->info_hdr.itm_ptr) {
111*7c478bd9Sstevel@tonic-gate 		info_hdr = malloc_vital(sizeof (itm_info_hdr_t));
112*7c478bd9Sstevel@tonic-gate 		(void) memset(info_hdr, 0, sizeof (itm_info_hdr_t));
113*7c478bd9Sstevel@tonic-gate 	} else {
114*7c478bd9Sstevel@tonic-gate 		info_hdr = INFO_HDR(itm_hdr);
115*7c478bd9Sstevel@tonic-gate 	}
116*7c478bd9Sstevel@tonic-gate 
117*7c478bd9Sstevel@tonic-gate #if defined(ENABLE_TRACE)
118*7c478bd9Sstevel@tonic-gate 	dump_itm_header(itm_hdr, info_hdr);
119*7c478bd9Sstevel@tonic-gate #endif
120*7c478bd9Sstevel@tonic-gate 	printi(0, "//\n", file);
121*7c478bd9Sstevel@tonic-gate 	printi(0, "// %s\n", file);
122*7c478bd9Sstevel@tonic-gate 	printi(0, "//\n", file);
123*7c478bd9Sstevel@tonic-gate 
124*7c478bd9Sstevel@tonic-gate 	type_id = itm_hdr->type_id;
125*7c478bd9Sstevel@tonic-gate 	if ((NULL != cmd_opt.disassemble) &&
126*7c478bd9Sstevel@tonic-gate 	    ((sizeof (itm_place_t)) < type_id.size)) {
127*7c478bd9Sstevel@tonic-gate 		type_id.place.itm_ptr += (itm_place2_t)itm_hdr;
128*7c478bd9Sstevel@tonic-gate 	}
129*7c478bd9Sstevel@tonic-gate 	printi(1, "%s {\n", name_to_str(&type_id));
130*7c478bd9Sstevel@tonic-gate 	dump_tables(itm_hdr, info_hdr);
131*7c478bd9Sstevel@tonic-gate 	printi(-1, "}\n");
132*7c478bd9Sstevel@tonic-gate }
133*7c478bd9Sstevel@tonic-gate 
134*7c478bd9Sstevel@tonic-gate #if defined(ENABLE_TRACE)
135*7c478bd9Sstevel@tonic-gate void
dump_itm_header(itm_hdr_t * itm_header,itm_info_hdr_t * info_header)136*7c478bd9Sstevel@tonic-gate dump_itm_header(itm_hdr_t	*itm_header, itm_info_hdr_t	*info_header)
137*7c478bd9Sstevel@tonic-gate {
138*7c478bd9Sstevel@tonic-gate 	char	*str_type_id;
139*7c478bd9Sstevel@tonic-gate 	char	*str_interpreter;
140*7c478bd9Sstevel@tonic-gate 
141*7c478bd9Sstevel@tonic-gate 	itm_data_t	type_id;
142*7c478bd9Sstevel@tonic-gate 	itm_data_t	interpreter;
143*7c478bd9Sstevel@tonic-gate 
144*7c478bd9Sstevel@tonic-gate 	type_id = itm_header->type_id;
145*7c478bd9Sstevel@tonic-gate 	str_type_id = malloc_vital(itm_header->type_id.size + 1);
146*7c478bd9Sstevel@tonic-gate 	if ((NULL != cmd_opt.disassemble) &&
147*7c478bd9Sstevel@tonic-gate 	    ((sizeof (itm_place_t)) < type_id.size)) {
148*7c478bd9Sstevel@tonic-gate 		type_id.place.itm_ptr += (itm_place2_t)itm_header;
149*7c478bd9Sstevel@tonic-gate 	}
150*7c478bd9Sstevel@tonic-gate 	(void) memcpy(str_type_id, name_to_str(&type_id), type_id.size + 1);
151*7c478bd9Sstevel@tonic-gate 
152*7c478bd9Sstevel@tonic-gate 	interpreter = itm_header->interpreter;
153*7c478bd9Sstevel@tonic-gate 	str_interpreter = malloc_vital(itm_header->interpreter.size + 1);
154*7c478bd9Sstevel@tonic-gate 	if ((NULL != cmd_opt.disassemble) &&
155*7c478bd9Sstevel@tonic-gate 	    ((sizeof (itm_place_t)) < interpreter.size)) {
156*7c478bd9Sstevel@tonic-gate 		interpreter.place.itm_ptr += (itm_place2_t)itm_header;
157*7c478bd9Sstevel@tonic-gate 	}
158*7c478bd9Sstevel@tonic-gate 	(void) memcpy(str_interpreter, name_to_str(&interpreter),
159*7c478bd9Sstevel@tonic-gate 		interpreter.size + 1);
160*7c478bd9Sstevel@tonic-gate 
161*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('D',
162*7c478bd9Sstevel@tonic-gate 			("\n"
163*7c478bd9Sstevel@tonic-gate 			"------\n"
164*7c478bd9Sstevel@tonic-gate 			"Sizeof Data Structures \n"
165*7c478bd9Sstevel@tonic-gate 			" sizeof(int)		    = %ld\n"
166*7c478bd9Sstevel@tonic-gate 			" sizeof(long)		    = %ld\n"
167*7c478bd9Sstevel@tonic-gate 			" sizeof(uintptr_t)	    = %ld\n"
168*7c478bd9Sstevel@tonic-gate 			" sizeof(struct itm_place_t)  = %ld\n"
169*7c478bd9Sstevel@tonic-gate 			" sizeof(struct itm_data_t)   = %ld\n"
170*7c478bd9Sstevel@tonic-gate 			" sizeof(struct itm_hdr_t)    = %ld\n"
171*7c478bd9Sstevel@tonic-gate 			" sizeof(struct itm_place_tbl_info_t)  = %ld\n"
172*7c478bd9Sstevel@tonic-gate 			" sizeof(struct itm_section_info_t)    = %ld\n"
173*7c478bd9Sstevel@tonic-gate 			" sizeof(struct itm_action_type_t)     = %ld\n"
174*7c478bd9Sstevel@tonic-gate 			" sizeof(struct itm_direct_t)	= %ld\n"
175*7c478bd9Sstevel@tonic-gate 			" sizeof(struct itm_cond_t)	= %ld\n"
176*7c478bd9Sstevel@tonic-gate 			" sizeof(struct itm_range_hdr_t)       = %ld\n"
177*7c478bd9Sstevel@tonic-gate 			" sizeof(struct itm_escapeseq_hdr_t)   = %ld\n"
178*7c478bd9Sstevel@tonic-gate 			" sizeof(struct itm_map_idx_fix_hdr_t) = %ld\n"
179*7c478bd9Sstevel@tonic-gate 			" sizeof(struct itm_map_lookup_hdr_t)  = %ld\n"
180*7c478bd9Sstevel@tonic-gate 			" sizeof(struct itm_map_hash_hdr_t)    = %ld\n"
181*7c478bd9Sstevel@tonic-gate 			" sizeof(struct itm_map_dense_enc_hdr_t) = %ld\n"
182*7c478bd9Sstevel@tonic-gate 			" sizeof(struct itm_expr_t)   = %ld\n"
183*7c478bd9Sstevel@tonic-gate 			" sizeof(enum itm_op_type_t)  = %ld\n"
184*7c478bd9Sstevel@tonic-gate 			" sizeof(struct itm_op_t)     u= %ld\n"
185*7c478bd9Sstevel@tonic-gate 			" sizeof(enum itm_expr_type_t)= %ld\n"
186*7c478bd9Sstevel@tonic-gate 			"\n",
187*7c478bd9Sstevel@tonic-gate 
188*7c478bd9Sstevel@tonic-gate 			sizeof (int),
189*7c478bd9Sstevel@tonic-gate 			sizeof (long),
190*7c478bd9Sstevel@tonic-gate 			sizeof (uintptr_t),
191*7c478bd9Sstevel@tonic-gate 			sizeof (itm_place_t),
192*7c478bd9Sstevel@tonic-gate 			sizeof (itm_data_t),
193*7c478bd9Sstevel@tonic-gate 			sizeof (itm_hdr_t),
194*7c478bd9Sstevel@tonic-gate 			sizeof (itm_place_tbl_info_t),
195*7c478bd9Sstevel@tonic-gate 			sizeof (itm_section_info_t),
196*7c478bd9Sstevel@tonic-gate 			sizeof (itm_action_type_t),
197*7c478bd9Sstevel@tonic-gate 			sizeof (itm_direc_t),
198*7c478bd9Sstevel@tonic-gate 			sizeof (itm_cond_t),
199*7c478bd9Sstevel@tonic-gate 			sizeof (itm_range_hdr_t),
200*7c478bd9Sstevel@tonic-gate 			sizeof (itm_escapeseq_hdr_t),
201*7c478bd9Sstevel@tonic-gate 			sizeof (itm_map_idx_fix_hdr_t),
202*7c478bd9Sstevel@tonic-gate 			sizeof (itm_map_lookup_hdr_t),
203*7c478bd9Sstevel@tonic-gate 			sizeof (itm_map_hash_hdr_t),
204*7c478bd9Sstevel@tonic-gate 			sizeof (itm_map_dense_enc_hdr_t),
205*7c478bd9Sstevel@tonic-gate 			sizeof (itm_expr_t),
206*7c478bd9Sstevel@tonic-gate 			sizeof (itm_op_type_t),
207*7c478bd9Sstevel@tonic-gate 			sizeof (itm_op_t),
208*7c478bd9Sstevel@tonic-gate 			sizeof (itm_expr_type_t)));
209*7c478bd9Sstevel@tonic-gate 
210*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('H',
211*7c478bd9Sstevel@tonic-gate 			("ident		= %c%c%c\n"
212*7c478bd9Sstevel@tonic-gate 			"spec		= %02x%02x%02x%02x\n"
213*7c478bd9Sstevel@tonic-gate 			"version	= %02x%02x%02x%02x\n"
214*7c478bd9Sstevel@tonic-gate 			"itm_size	= %ld\n"
215*7c478bd9Sstevel@tonic-gate 			"type_id	= %s\n"
216*7c478bd9Sstevel@tonic-gate 			"interpreter	= %s\n"
217*7c478bd9Sstevel@tonic-gate 			"op_init_tbl	= %ld\n"
218*7c478bd9Sstevel@tonic-gate 			"op_reset_tbl	= %ld\n"
219*7c478bd9Sstevel@tonic-gate 			"direc_init_tbl = %ld\n"
220*7c478bd9Sstevel@tonic-gate 			"reg_num	= %ld\n"
221*7c478bd9Sstevel@tonic-gate 			"itm_hdr_size	= %ld\n"
222*7c478bd9Sstevel@tonic-gate 			"info_hdr	= %ld\n"
223*7c478bd9Sstevel@tonic-gate 			"info_hdr_size	= %ld\n",
224*7c478bd9Sstevel@tonic-gate 
225*7c478bd9Sstevel@tonic-gate 			itm_header->ident[0],
226*7c478bd9Sstevel@tonic-gate 			itm_header->ident[1],
227*7c478bd9Sstevel@tonic-gate 			itm_header->ident[2],
228*7c478bd9Sstevel@tonic-gate 			/* itm_header->ident[3], */
229*7c478bd9Sstevel@tonic-gate 			itm_header->spec[0],
230*7c478bd9Sstevel@tonic-gate 			itm_header->spec[1],
231*7c478bd9Sstevel@tonic-gate 			itm_header->spec[2],
232*7c478bd9Sstevel@tonic-gate 			itm_header->spec[3],
233*7c478bd9Sstevel@tonic-gate 			itm_header->version[0],
234*7c478bd9Sstevel@tonic-gate 			itm_header->version[1],
235*7c478bd9Sstevel@tonic-gate 			itm_header->version[2],
236*7c478bd9Sstevel@tonic-gate 			itm_header->version[3],
237*7c478bd9Sstevel@tonic-gate 			itm_header->itm_size.itm_ptr,
238*7c478bd9Sstevel@tonic-gate 			str_type_id,
239*7c478bd9Sstevel@tonic-gate 			str_interpreter,
240*7c478bd9Sstevel@tonic-gate 			itm_header->op_init_tbl.itm_ptr,
241*7c478bd9Sstevel@tonic-gate 			itm_header->op_reset_tbl.itm_ptr,
242*7c478bd9Sstevel@tonic-gate 			itm_header->direc_init_tbl.itm_ptr,
243*7c478bd9Sstevel@tonic-gate 			itm_header->reg_num,
244*7c478bd9Sstevel@tonic-gate 			itm_header->itm_hdr_size,
245*7c478bd9Sstevel@tonic-gate 			itm_header->info_hdr.itm_ptr,
246*7c478bd9Sstevel@tonic-gate 			(sizeof (itm_info_hdr_t))));
247*7c478bd9Sstevel@tonic-gate 
248*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('H',
249*7c478bd9Sstevel@tonic-gate 			("  str_sec     = (%4ld %4ld %4ld)	"
250*7c478bd9Sstevel@tonic-gate 			"  str_plc_tbl = (%4ld %4ld %4ld)\n"
251*7c478bd9Sstevel@tonic-gate 			"direc_sec_tbl = (%4ld %4ld %4ld)	"
252*7c478bd9Sstevel@tonic-gate 			"direc_plc_tbl = (%4ld %4ld %4ld)\n"
253*7c478bd9Sstevel@tonic-gate 			" cond_sec_tbl = (%4ld %4ld %4ld)	"
254*7c478bd9Sstevel@tonic-gate 			" cond_plc_tbl = (%4ld %4ld %4ld)\n"
255*7c478bd9Sstevel@tonic-gate 			"  map_sec_tbl = (%4ld %4ld %4ld)	"
256*7c478bd9Sstevel@tonic-gate 			"  map_plc_tbl = (%4ld %4ld %4ld)\n"
257*7c478bd9Sstevel@tonic-gate 			"   op_sec_tbl = (%4ld %4ld %4ld)	"
258*7c478bd9Sstevel@tonic-gate 			"   op_plc_tbl = (%4ld %4ld %4ld)\n"
259*7c478bd9Sstevel@tonic-gate 			"range_sec_tbl = (%4ld %4ld %4ld)	"
260*7c478bd9Sstevel@tonic-gate 			"range_plc_tbl = (%4ld %4ld %4ld)\n"
261*7c478bd9Sstevel@tonic-gate 			"escsq_sec_tbl = (%4ld %4ld %4ld)	"
262*7c478bd9Sstevel@tonic-gate 			"escsq_plc_tbl = (%4ld %4ld %4ld)\n"
263*7c478bd9Sstevel@tonic-gate 			" data_sec     = (%4ld %4ld %4ld)	"
264*7c478bd9Sstevel@tonic-gate 			" data_plc_tbl = (%4ld %4ld %4ld)\n"
265*7c478bd9Sstevel@tonic-gate 			" name_sec     = (%4ld %4ld %4ld)	"
266*7c478bd9Sstevel@tonic-gate 			" name_plc_tbl = (%4ld %4ld %4ld)\n"
267*7c478bd9Sstevel@tonic-gate 			"					"
268*7c478bd9Sstevel@tonic-gate 			"  reg_plc_tbl = (%4ld %4ld %4ld)\n"
269*7c478bd9Sstevel@tonic-gate 			"%s\n",
270*7c478bd9Sstevel@tonic-gate 			info_header->str_sec.place.itm_ptr,
271*7c478bd9Sstevel@tonic-gate 			info_header->str_sec.size,
272*7c478bd9Sstevel@tonic-gate 			info_header->str_sec.number,
273*7c478bd9Sstevel@tonic-gate 			info_header->str_plc_tbl.place.itm_ptr,
274*7c478bd9Sstevel@tonic-gate 			info_header->str_plc_tbl.size,
275*7c478bd9Sstevel@tonic-gate 			info_header->str_plc_tbl.number,
276*7c478bd9Sstevel@tonic-gate 			info_header->direc_tbl_sec.place.itm_ptr,
277*7c478bd9Sstevel@tonic-gate 			info_header->direc_tbl_sec.size,
278*7c478bd9Sstevel@tonic-gate 			info_header->direc_tbl_sec.number,
279*7c478bd9Sstevel@tonic-gate 			info_header->direc_plc_tbl.place.itm_ptr,
280*7c478bd9Sstevel@tonic-gate 			info_header->direc_plc_tbl.size,
281*7c478bd9Sstevel@tonic-gate 			info_header->direc_plc_tbl.number,
282*7c478bd9Sstevel@tonic-gate 			info_header->cond_tbl_sec.place.itm_ptr,
283*7c478bd9Sstevel@tonic-gate 			info_header->cond_tbl_sec.size,
284*7c478bd9Sstevel@tonic-gate 			info_header->cond_tbl_sec.number,
285*7c478bd9Sstevel@tonic-gate 			info_header->cond_plc_tbl.place.itm_ptr,
286*7c478bd9Sstevel@tonic-gate 			info_header->cond_plc_tbl.size,
287*7c478bd9Sstevel@tonic-gate 			info_header->cond_plc_tbl.number,
288*7c478bd9Sstevel@tonic-gate 			info_header->map_tbl_sec.place.itm_ptr,
289*7c478bd9Sstevel@tonic-gate 			info_header->map_tbl_sec.size,
290*7c478bd9Sstevel@tonic-gate 			info_header->map_tbl_sec.number,
291*7c478bd9Sstevel@tonic-gate 			info_header->map_plc_tbl.place.itm_ptr,
292*7c478bd9Sstevel@tonic-gate 			info_header->map_plc_tbl.size,
293*7c478bd9Sstevel@tonic-gate 			info_header->map_plc_tbl.number,
294*7c478bd9Sstevel@tonic-gate 			info_header->op_tbl_sec.place.itm_ptr,
295*7c478bd9Sstevel@tonic-gate 			info_header->op_tbl_sec.size,
296*7c478bd9Sstevel@tonic-gate 			info_header->op_tbl_sec.number,
297*7c478bd9Sstevel@tonic-gate 			info_header->op_plc_tbl.place.itm_ptr,
298*7c478bd9Sstevel@tonic-gate 			info_header->op_plc_tbl.size,
299*7c478bd9Sstevel@tonic-gate 			info_header->op_plc_tbl.number,
300*7c478bd9Sstevel@tonic-gate 			info_header->range_tbl_sec.place.itm_ptr,
301*7c478bd9Sstevel@tonic-gate 			info_header->range_tbl_sec.size,
302*7c478bd9Sstevel@tonic-gate 			info_header->range_tbl_sec.number,
303*7c478bd9Sstevel@tonic-gate 			info_header->range_plc_tbl.place.itm_ptr,
304*7c478bd9Sstevel@tonic-gate 			info_header->range_plc_tbl.size,
305*7c478bd9Sstevel@tonic-gate 			info_header->range_plc_tbl.number,
306*7c478bd9Sstevel@tonic-gate 			info_header->escapeseq_tbl_sec.place.itm_ptr,
307*7c478bd9Sstevel@tonic-gate 			info_header->escapeseq_tbl_sec.size,
308*7c478bd9Sstevel@tonic-gate 			info_header->escapeseq_tbl_sec.number,
309*7c478bd9Sstevel@tonic-gate 			info_header->escapeseq_plc_tbl.place.itm_ptr,
310*7c478bd9Sstevel@tonic-gate 			info_header->escapeseq_plc_tbl.size,
311*7c478bd9Sstevel@tonic-gate 			info_header->escapeseq_plc_tbl.number,
312*7c478bd9Sstevel@tonic-gate 			info_header->data_sec.place.itm_ptr,
313*7c478bd9Sstevel@tonic-gate 			info_header->data_sec.size,
314*7c478bd9Sstevel@tonic-gate 			info_header->data_sec.number,
315*7c478bd9Sstevel@tonic-gate 			info_header->data_plc_tbl.place.itm_ptr,
316*7c478bd9Sstevel@tonic-gate 			info_header->data_plc_tbl.size,
317*7c478bd9Sstevel@tonic-gate 			info_header->data_plc_tbl.number,
318*7c478bd9Sstevel@tonic-gate 			info_header->name_sec.place.itm_ptr,
319*7c478bd9Sstevel@tonic-gate 			info_header->name_sec.size,
320*7c478bd9Sstevel@tonic-gate 			info_header->name_sec.number,
321*7c478bd9Sstevel@tonic-gate 			info_header->name_plc_tbl.place.itm_ptr,
322*7c478bd9Sstevel@tonic-gate 			info_header->name_plc_tbl.size,
323*7c478bd9Sstevel@tonic-gate 			info_header->name_plc_tbl.number,
324*7c478bd9Sstevel@tonic-gate 			info_header->reg_plc_tbl.place.itm_ptr,
325*7c478bd9Sstevel@tonic-gate 			info_header->reg_plc_tbl.size,
326*7c478bd9Sstevel@tonic-gate 			info_header->reg_plc_tbl.number,
327*7c478bd9Sstevel@tonic-gate 			"--------"));
328*7c478bd9Sstevel@tonic-gate }
329*7c478bd9Sstevel@tonic-gate #endif
330*7c478bd9Sstevel@tonic-gate 
331*7c478bd9Sstevel@tonic-gate /*
332*7c478bd9Sstevel@tonic-gate  * Dump tables
333*7c478bd9Sstevel@tonic-gate  */
334*7c478bd9Sstevel@tonic-gate static void
dump_tables(itm_hdr_t * itm_hdr,itm_info_hdr_t * info_hdr)335*7c478bd9Sstevel@tonic-gate dump_tables(itm_hdr_t	*itm_hdr, itm_info_hdr_t	*info_hdr)
336*7c478bd9Sstevel@tonic-gate {
337*7c478bd9Sstevel@tonic-gate 	itm_num_t	n;
338*7c478bd9Sstevel@tonic-gate 	itm_data_t	*data;
339*7c478bd9Sstevel@tonic-gate 	itm_place_t	*place;
340*7c478bd9Sstevel@tonic-gate 	itm_place2_t	place2;
341*7c478bd9Sstevel@tonic-gate 	itm_data_t	d;
342*7c478bd9Sstevel@tonic-gate 
343*7c478bd9Sstevel@tonic-gate 	data = (itm_data_t *)(ADDR(info_hdr->reg_plc_tbl.place));
344*7c478bd9Sstevel@tonic-gate 	for (n = 0; n < info_hdr->reg_plc_tbl.number; n++, data += 1) {
345*7c478bd9Sstevel@tonic-gate 		d = *(data);
346*7c478bd9Sstevel@tonic-gate 		if ((sizeof (itm_place_t)) < d.size) {
347*7c478bd9Sstevel@tonic-gate 			d.place.itm_ptr = (itm_place2_t)ADDR(d.place);
348*7c478bd9Sstevel@tonic-gate 		}
349*7c478bd9Sstevel@tonic-gate 		printi(0, "// register: %s\n", name_to_str(&d));
350*7c478bd9Sstevel@tonic-gate 	}
351*7c478bd9Sstevel@tonic-gate 
352*7c478bd9Sstevel@tonic-gate 	data = (itm_data_t *)(ADDR(info_hdr->name_plc_tbl.place));
353*7c478bd9Sstevel@tonic-gate 	for (n = 0, place2 = info_hdr->name_plc_tbl.place.itm_ptr;
354*7c478bd9Sstevel@tonic-gate 	    n < info_hdr->name_plc_tbl.number;
355*7c478bd9Sstevel@tonic-gate 	    n++, data += 1, place2 += sizeof (itm_data_t)) {
356*7c478bd9Sstevel@tonic-gate 		d = *(data);
357*7c478bd9Sstevel@tonic-gate 
358*7c478bd9Sstevel@tonic-gate 		if ((sizeof (itm_place_t)) < d.size) {
359*7c478bd9Sstevel@tonic-gate 			d.place.itm_ptr = (itm_place2_t)ADDR(d.place);
360*7c478bd9Sstevel@tonic-gate 		}
361*7c478bd9Sstevel@tonic-gate 		TRACE_MESSAGE('p', ("(*)name=%ld",
362*7c478bd9Sstevel@tonic-gate 				((sizeof (itm_place_t)) < d.size) ?
363*7c478bd9Sstevel@tonic-gate 				d.place.itm_ptr:
364*7c478bd9Sstevel@tonic-gate 				(place2 + offsetof(itm_data_t, place))));
365*7c478bd9Sstevel@tonic-gate 		printi(0, "// name: %s\n", name_to_str(&d));
366*7c478bd9Sstevel@tonic-gate 
367*7c478bd9Sstevel@tonic-gate 	}
368*7c478bd9Sstevel@tonic-gate 
369*7c478bd9Sstevel@tonic-gate 	place = (itm_place_t *)(ADDR(info_hdr->cond_plc_tbl.place));
370*7c478bd9Sstevel@tonic-gate 	for (n = 0; n < info_hdr->cond_plc_tbl.number; n++, place += 1) {
371*7c478bd9Sstevel@tonic-gate 		dump_cond_tbl(itm_hdr, *place, 1);
372*7c478bd9Sstevel@tonic-gate 	}
373*7c478bd9Sstevel@tonic-gate 	place = (itm_place_t *)(ADDR(info_hdr->map_plc_tbl.place));
374*7c478bd9Sstevel@tonic-gate 	for (n = 0; n < info_hdr->map_plc_tbl.number;
375*7c478bd9Sstevel@tonic-gate 	    n++, place += 1) {
376*7c478bd9Sstevel@tonic-gate 		dump_map(itm_hdr, *place, 1);
377*7c478bd9Sstevel@tonic-gate 	}
378*7c478bd9Sstevel@tonic-gate 	place = (itm_place_t *)(ADDR(info_hdr->op_plc_tbl.place));
379*7c478bd9Sstevel@tonic-gate 	for (n = 0; n < info_hdr->op_plc_tbl.number;
380*7c478bd9Sstevel@tonic-gate 	    n++, place += 1) {
381*7c478bd9Sstevel@tonic-gate 		dump_op_tbl(itm_hdr, *place, 1);
382*7c478bd9Sstevel@tonic-gate 	}
383*7c478bd9Sstevel@tonic-gate 	place = (itm_place_t *)(ADDR(info_hdr->direc_plc_tbl.place));
384*7c478bd9Sstevel@tonic-gate 	for (n = 0; n < info_hdr->direc_plc_tbl.number; n++, place += 1) {
385*7c478bd9Sstevel@tonic-gate 		dump_direc_tbl(itm_hdr, *place);
386*7c478bd9Sstevel@tonic-gate 	}
387*7c478bd9Sstevel@tonic-gate }
388*7c478bd9Sstevel@tonic-gate 
389*7c478bd9Sstevel@tonic-gate 
390*7c478bd9Sstevel@tonic-gate /*
391*7c478bd9Sstevel@tonic-gate  * Dump direction
392*7c478bd9Sstevel@tonic-gate  */
393*7c478bd9Sstevel@tonic-gate static void
dump_direc_tbl(itm_hdr_t * itm_hdr,itm_place_t direc_place)394*7c478bd9Sstevel@tonic-gate dump_direc_tbl(itm_hdr_t	*itm_hdr, itm_place_t direc_place)
395*7c478bd9Sstevel@tonic-gate {
396*7c478bd9Sstevel@tonic-gate 	itm_tbl_hdr_t	*direc_hdr;
397*7c478bd9Sstevel@tonic-gate 	itm_direc_t	*direc;
398*7c478bd9Sstevel@tonic-gate 	itm_type_t	type;
399*7c478bd9Sstevel@tonic-gate 	long		i;
400*7c478bd9Sstevel@tonic-gate 	char		*name;
401*7c478bd9Sstevel@tonic-gate 
402*7c478bd9Sstevel@tonic-gate 	direc_hdr = (itm_tbl_hdr_t *)ADDR(direc_place);
403*7c478bd9Sstevel@tonic-gate 	direc = (itm_direc_t *)(direc_hdr + 1);
404*7c478bd9Sstevel@tonic-gate 
405*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('p', ("(&)direc=%ld ", direc_place.itm_ptr));
406*7c478bd9Sstevel@tonic-gate 
407*7c478bd9Sstevel@tonic-gate 	printi(1, RNPREF "direction");
408*7c478bd9Sstevel@tonic-gate 	if (0 != direc_hdr->name.itm_ptr) {
409*7c478bd9Sstevel@tonic-gate 		name = tbl_name(itm_hdr, direc_hdr);
410*7c478bd9Sstevel@tonic-gate 		if (NULL != name) {
411*7c478bd9Sstevel@tonic-gate 			printi(0, " %s", name);
412*7c478bd9Sstevel@tonic-gate 		}
413*7c478bd9Sstevel@tonic-gate 	}
414*7c478bd9Sstevel@tonic-gate 	printi(0, " {\n");
415*7c478bd9Sstevel@tonic-gate 
416*7c478bd9Sstevel@tonic-gate 	for (i = 0; i < direc_hdr->number; i++, direc++) {
417*7c478bd9Sstevel@tonic-gate 		dump_cond_tbl(itm_hdr, direc->condition, 0);
418*7c478bd9Sstevel@tonic-gate 
419*7c478bd9Sstevel@tonic-gate 		printi(0, "\t");
420*7c478bd9Sstevel@tonic-gate 
421*7c478bd9Sstevel@tonic-gate 		type = (ITM_TBL_MASK &
422*7c478bd9Sstevel@tonic-gate 			(((itm_tbl_hdr_t *)(ADDR(direc->action)))->type));
423*7c478bd9Sstevel@tonic-gate 
424*7c478bd9Sstevel@tonic-gate 		if (ITM_TBL_OP == type) {
425*7c478bd9Sstevel@tonic-gate 			dump_op_tbl(itm_hdr, direc->action, 0);
426*7c478bd9Sstevel@tonic-gate 		} else if (ITM_TBL_DIREC == type) {
427*7c478bd9Sstevel@tonic-gate 			printi(0, "direction: action: %ld\n",
428*7c478bd9Sstevel@tonic-gate 				direc->action.itm_ptr);
429*7c478bd9Sstevel@tonic-gate 		} else if (ITM_TBL_MAP == type) {
430*7c478bd9Sstevel@tonic-gate 			dump_map(itm_hdr, direc->action, 0);
431*7c478bd9Sstevel@tonic-gate 		} else {
432*7c478bd9Sstevel@tonic-gate 			printi(0, RNPREF
433*7c478bd9Sstevel@tonic-gate 				"error ELIBBAD // unknown operation (%lx)\n",
434*7c478bd9Sstevel@tonic-gate 				type);
435*7c478bd9Sstevel@tonic-gate 		}
436*7c478bd9Sstevel@tonic-gate 	}
437*7c478bd9Sstevel@tonic-gate 
438*7c478bd9Sstevel@tonic-gate 	printi(-1, "};\n");
439*7c478bd9Sstevel@tonic-gate }
440*7c478bd9Sstevel@tonic-gate 
441*7c478bd9Sstevel@tonic-gate 
442*7c478bd9Sstevel@tonic-gate static void
dump_map(itm_hdr_t * itm_hdr,itm_place_t map_place,int standalone)443*7c478bd9Sstevel@tonic-gate dump_map(itm_hdr_t	*itm_hdr, itm_place_t map_place, int standalone)
444*7c478bd9Sstevel@tonic-gate {
445*7c478bd9Sstevel@tonic-gate 	itm_tbl_hdr_t	*tbl_hdr;
446*7c478bd9Sstevel@tonic-gate 
447*7c478bd9Sstevel@tonic-gate 	tbl_hdr = (itm_tbl_hdr_t *)ADDR(map_place);
448*7c478bd9Sstevel@tonic-gate 
449*7c478bd9Sstevel@tonic-gate 	switch (tbl_hdr->type) {
450*7c478bd9Sstevel@tonic-gate 	case ITM_TBL_MAP_INDEX_FIXED_1_1:
451*7c478bd9Sstevel@tonic-gate 	case ITM_TBL_MAP_INDEX_FIXED:
452*7c478bd9Sstevel@tonic-gate 		dump_map_i_f(itm_hdr, map_place, standalone);
453*7c478bd9Sstevel@tonic-gate 		break;
454*7c478bd9Sstevel@tonic-gate 	case ITM_TBL_MAP_LOOKUP:
455*7c478bd9Sstevel@tonic-gate 		dump_map_l_f(itm_hdr, map_place, standalone);
456*7c478bd9Sstevel@tonic-gate 		break;
457*7c478bd9Sstevel@tonic-gate 	case ITM_TBL_MAP_HASH:
458*7c478bd9Sstevel@tonic-gate 		dump_map_hash(itm_hdr, map_place, standalone);
459*7c478bd9Sstevel@tonic-gate 		break;
460*7c478bd9Sstevel@tonic-gate 	case ITM_TBL_MAP_DENSE_ENC:
461*7c478bd9Sstevel@tonic-gate 		dump_map_dense_enc(itm_hdr, map_place, standalone);
462*7c478bd9Sstevel@tonic-gate 		break;
463*7c478bd9Sstevel@tonic-gate 	default:
464*7c478bd9Sstevel@tonic-gate 		break;
465*7c478bd9Sstevel@tonic-gate 	}
466*7c478bd9Sstevel@tonic-gate }
467*7c478bd9Sstevel@tonic-gate 
468*7c478bd9Sstevel@tonic-gate 
469*7c478bd9Sstevel@tonic-gate /*
470*7c478bd9Sstevel@tonic-gate  * Dump map-indexed-fixed
471*7c478bd9Sstevel@tonic-gate  */
472*7c478bd9Sstevel@tonic-gate static void
dump_map_i_f(itm_hdr_t * itm_hdr,itm_place_t map_place,int standalone)473*7c478bd9Sstevel@tonic-gate dump_map_i_f(itm_hdr_t		*itm_hdr, itm_place_t map_place, int standalone)
474*7c478bd9Sstevel@tonic-gate {
475*7c478bd9Sstevel@tonic-gate 	itm_tbl_hdr_t		*tbl_hdr;
476*7c478bd9Sstevel@tonic-gate 	itm_map_idx_fix_hdr_t	*map_hdr;
477*7c478bd9Sstevel@tonic-gate 	itm_num_t		i;
478*7c478bd9Sstevel@tonic-gate 	itm_num_t		j;
479*7c478bd9Sstevel@tonic-gate 	unsigned char		*p;
480*7c478bd9Sstevel@tonic-gate 	unsigned char		*map_error;
481*7c478bd9Sstevel@tonic-gate 	char			*name;
482*7c478bd9Sstevel@tonic-gate 	int			error_flag;
483*7c478bd9Sstevel@tonic-gate 
484*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('d', ("dump_map_i_f\n"));
485*7c478bd9Sstevel@tonic-gate 
486*7c478bd9Sstevel@tonic-gate 	tbl_hdr = (itm_tbl_hdr_t *)ADDR(map_place);
487*7c478bd9Sstevel@tonic-gate 	map_hdr = (itm_map_idx_fix_hdr_t *)(tbl_hdr + 1);
488*7c478bd9Sstevel@tonic-gate 
489*7c478bd9Sstevel@tonic-gate 	if (0 < map_hdr->error_num) {
490*7c478bd9Sstevel@tonic-gate 		p = (unsigned char *)(map_hdr + 1);
491*7c478bd9Sstevel@tonic-gate 		map_error = p + (map_hdr->result_len * (tbl_hdr->number));
492*7c478bd9Sstevel@tonic-gate 		if (0 == map_hdr->default_error) {
493*7c478bd9Sstevel@tonic-gate 			map_error += map_hdr->result_len;
494*7c478bd9Sstevel@tonic-gate 		}
495*7c478bd9Sstevel@tonic-gate 	} else if (1 == map_hdr->default_error) {
496*7c478bd9Sstevel@tonic-gate 		p = (unsigned char *)(map_hdr + 1);
497*7c478bd9Sstevel@tonic-gate 		map_error = p + (map_hdr->result_len * (tbl_hdr->number));
498*7c478bd9Sstevel@tonic-gate 	} else {
499*7c478bd9Sstevel@tonic-gate 		map_error = NULL;
500*7c478bd9Sstevel@tonic-gate 	}
501*7c478bd9Sstevel@tonic-gate 
502*7c478bd9Sstevel@tonic-gate 	if ((standalone) &&
503*7c478bd9Sstevel@tonic-gate 	    (0 == tbl_hdr->name.itm_ptr) &&
504*7c478bd9Sstevel@tonic-gate 	    (map_place.itm_ptr != itm_hdr->direc_init_tbl.itm_ptr)) {
505*7c478bd9Sstevel@tonic-gate 		return;
506*7c478bd9Sstevel@tonic-gate 	}
507*7c478bd9Sstevel@tonic-gate 
508*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('p', ("(&)map=%ld ", map_place.itm_ptr));
509*7c478bd9Sstevel@tonic-gate 
510*7c478bd9Sstevel@tonic-gate 	if (0 == tbl_hdr->name.itm_ptr) {
511*7c478bd9Sstevel@tonic-gate 		name = NULL;
512*7c478bd9Sstevel@tonic-gate 	} else {
513*7c478bd9Sstevel@tonic-gate 		name = tbl_name(itm_hdr, tbl_hdr);
514*7c478bd9Sstevel@tonic-gate 	}
515*7c478bd9Sstevel@tonic-gate 
516*7c478bd9Sstevel@tonic-gate 	if ((0 == standalone) && (0 != tbl_hdr->name.itm_ptr)) {
517*7c478bd9Sstevel@tonic-gate 		if (NULL != name) {
518*7c478bd9Sstevel@tonic-gate 			printi(0, "%s;\n", name);
519*7c478bd9Sstevel@tonic-gate 		} else {
520*7c478bd9Sstevel@tonic-gate 			printi(0, RNPREF "unknown;\n", name);
521*7c478bd9Sstevel@tonic-gate 		}
522*7c478bd9Sstevel@tonic-gate 		return;
523*7c478bd9Sstevel@tonic-gate 	} else {
524*7c478bd9Sstevel@tonic-gate 		printi(1, RNPREF "map");
525*7c478bd9Sstevel@tonic-gate 		if (NULL != name) {
526*7c478bd9Sstevel@tonic-gate 			printi(0, " %s", name);
527*7c478bd9Sstevel@tonic-gate 		}
528*7c478bd9Sstevel@tonic-gate 		printi(0, " {\n");
529*7c478bd9Sstevel@tonic-gate 	}
530*7c478bd9Sstevel@tonic-gate 
531*7c478bd9Sstevel@tonic-gate 	printi(0, "//  simple indexed map\n");
532*7c478bd9Sstevel@tonic-gate 	printi(0, "//  source_len=%ld result_len=%ld\n",
533*7c478bd9Sstevel@tonic-gate 		map_hdr->source_len, map_hdr->result_len);
534*7c478bd9Sstevel@tonic-gate 	printi(0, "//  start=0x%p end=0x%p\n", /* DO NOT CHANGE to %ld */
535*7c478bd9Sstevel@tonic-gate 		map_hdr->start.itm_ptr, map_hdr->end.itm_ptr);
536*7c478bd9Sstevel@tonic-gate 	if (0 < map_hdr->error_num) {
537*7c478bd9Sstevel@tonic-gate 		printi(0, "//  error_num=%ld\n",
538*7c478bd9Sstevel@tonic-gate 			map_hdr->error_num);
539*7c478bd9Sstevel@tonic-gate 	}
540*7c478bd9Sstevel@tonic-gate 	if (0 == map_hdr->default_error) {
541*7c478bd9Sstevel@tonic-gate 		p = (((unsigned char *)(map_hdr + 1)) +
542*7c478bd9Sstevel@tonic-gate 			(map_hdr->result_len *
543*7c478bd9Sstevel@tonic-gate 			(map_hdr->end.itm_ptr - map_hdr->start.itm_ptr + 1)));
544*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "default 0x");
545*7c478bd9Sstevel@tonic-gate 		for (j = 0; j < map_hdr->result_len; j++) {
546*7c478bd9Sstevel@tonic-gate 			printi(0, "%02x", *(p + j));
547*7c478bd9Sstevel@tonic-gate 		}
548*7c478bd9Sstevel@tonic-gate 		printi(0, "\n");
549*7c478bd9Sstevel@tonic-gate 	} else if (-1 == map_hdr->default_error) {
550*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "default\t" RNPREF "default\n");
551*7c478bd9Sstevel@tonic-gate 	}
552*7c478bd9Sstevel@tonic-gate 	error_flag = 0;
553*7c478bd9Sstevel@tonic-gate 	for (i = 0; i <= (map_hdr->end.itm_ptr - map_hdr->start.itm_ptr); i++) {
554*7c478bd9Sstevel@tonic-gate 		p = (((unsigned char *)(map_hdr + 1)) +
555*7c478bd9Sstevel@tonic-gate 			(map_hdr->result_len * i));
556*7c478bd9Sstevel@tonic-gate 		if ((NULL == map_error) ||
557*7c478bd9Sstevel@tonic-gate 		    (0 == *(map_error + i))) {
558*7c478bd9Sstevel@tonic-gate 			printi(0, "0x%0*p\t",
559*7c478bd9Sstevel@tonic-gate 			(map_hdr->source_len * 2), i + map_hdr->start.itm_ptr);
560*7c478bd9Sstevel@tonic-gate 			printi(0, "0x");
561*7c478bd9Sstevel@tonic-gate 			for (j = 0; j < map_hdr->result_len; j++) {
562*7c478bd9Sstevel@tonic-gate 				printi(0, "%02x", *(p + j));
563*7c478bd9Sstevel@tonic-gate 			}
564*7c478bd9Sstevel@tonic-gate 			error_flag = 0;
565*7c478bd9Sstevel@tonic-gate 			printi(0, "\n");
566*7c478bd9Sstevel@tonic-gate 		} else	if (0 >= map_hdr->default_error) {
567*7c478bd9Sstevel@tonic-gate 			if (0 == error_flag) {
568*7c478bd9Sstevel@tonic-gate 				printi(0, "0x%0*p\t",
569*7c478bd9Sstevel@tonic-gate 				(map_hdr->source_len * 2),
570*7c478bd9Sstevel@tonic-gate 				i + map_hdr->start.itm_ptr);
571*7c478bd9Sstevel@tonic-gate 				printi(0, "error\n");
572*7c478bd9Sstevel@tonic-gate 				error_flag = 1;
573*7c478bd9Sstevel@tonic-gate 			} else if (error_flag == 1) {
574*7c478bd9Sstevel@tonic-gate 				printi(0, " :\t:\n");
575*7c478bd9Sstevel@tonic-gate 				error_flag = 2;
576*7c478bd9Sstevel@tonic-gate 			}
577*7c478bd9Sstevel@tonic-gate 		}
578*7c478bd9Sstevel@tonic-gate 	}
579*7c478bd9Sstevel@tonic-gate 	printi(-1, "};\n");
580*7c478bd9Sstevel@tonic-gate }
581*7c478bd9Sstevel@tonic-gate 
582*7c478bd9Sstevel@tonic-gate 
583*7c478bd9Sstevel@tonic-gate /*
584*7c478bd9Sstevel@tonic-gate  * Dump map-lookup-fixed
585*7c478bd9Sstevel@tonic-gate  */
586*7c478bd9Sstevel@tonic-gate static void
dump_map_l_f(itm_hdr_t * itm_hdr,itm_place_t map_place,int standalone)587*7c478bd9Sstevel@tonic-gate dump_map_l_f(itm_hdr_t		*itm_hdr, itm_place_t map_place, int standalone)
588*7c478bd9Sstevel@tonic-gate {
589*7c478bd9Sstevel@tonic-gate 	itm_tbl_hdr_t		*tbl_hdr;
590*7c478bd9Sstevel@tonic-gate 	itm_map_lookup_hdr_t	*map_hdr;
591*7c478bd9Sstevel@tonic-gate 	itm_num_t		i;
592*7c478bd9Sstevel@tonic-gate 	itm_num_t		j;
593*7c478bd9Sstevel@tonic-gate 	unsigned char		*p;
594*7c478bd9Sstevel@tonic-gate 	char			*name;
595*7c478bd9Sstevel@tonic-gate 
596*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('d', ("dump_map_l_f\n"));
597*7c478bd9Sstevel@tonic-gate 
598*7c478bd9Sstevel@tonic-gate 	tbl_hdr = (itm_tbl_hdr_t *)ADDR(map_place);
599*7c478bd9Sstevel@tonic-gate 	map_hdr = (itm_map_lookup_hdr_t *)(tbl_hdr + 1);
600*7c478bd9Sstevel@tonic-gate 
601*7c478bd9Sstevel@tonic-gate 	if ((standalone) &&
602*7c478bd9Sstevel@tonic-gate 	    (0 == tbl_hdr->name.itm_ptr) &&
603*7c478bd9Sstevel@tonic-gate 	    (map_place.itm_ptr != itm_hdr->direc_init_tbl.itm_ptr)) {
604*7c478bd9Sstevel@tonic-gate 		return;
605*7c478bd9Sstevel@tonic-gate 	}
606*7c478bd9Sstevel@tonic-gate 
607*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('p', ("(&)map=%ld ", map_place.itm_ptr));
608*7c478bd9Sstevel@tonic-gate 
609*7c478bd9Sstevel@tonic-gate 	if (0 == tbl_hdr->name.itm_ptr) {
610*7c478bd9Sstevel@tonic-gate 		name = NULL;
611*7c478bd9Sstevel@tonic-gate 	} else {
612*7c478bd9Sstevel@tonic-gate 		name = tbl_name(itm_hdr, tbl_hdr);
613*7c478bd9Sstevel@tonic-gate 	}
614*7c478bd9Sstevel@tonic-gate 
615*7c478bd9Sstevel@tonic-gate 	if ((0 == standalone) && (0 != tbl_hdr->name.itm_ptr)) {
616*7c478bd9Sstevel@tonic-gate 		if (NULL != name) {
617*7c478bd9Sstevel@tonic-gate 			printi(0, "%s;\n", name);
618*7c478bd9Sstevel@tonic-gate 		} else {
619*7c478bd9Sstevel@tonic-gate 			printi(0, RNPREF "unknown;\n", name);
620*7c478bd9Sstevel@tonic-gate 		}
621*7c478bd9Sstevel@tonic-gate 		return;
622*7c478bd9Sstevel@tonic-gate 	} else {
623*7c478bd9Sstevel@tonic-gate 		printi(1, RNPREF "map");
624*7c478bd9Sstevel@tonic-gate 		if (NULL != name) {
625*7c478bd9Sstevel@tonic-gate 			printi(0, " %s", name);
626*7c478bd9Sstevel@tonic-gate 		}
627*7c478bd9Sstevel@tonic-gate 		printi(0, " {\n");
628*7c478bd9Sstevel@tonic-gate 	}
629*7c478bd9Sstevel@tonic-gate 
630*7c478bd9Sstevel@tonic-gate 	printi(0, "//  binary search map\n");
631*7c478bd9Sstevel@tonic-gate 	printi(0, "//  source_len=%ld result_len=%ld\n",
632*7c478bd9Sstevel@tonic-gate 		map_hdr->source_len, map_hdr->result_len);
633*7c478bd9Sstevel@tonic-gate 	if (0 < map_hdr->error_num) {
634*7c478bd9Sstevel@tonic-gate 		printi(0, "//  error_num=%ld\n",
635*7c478bd9Sstevel@tonic-gate 			map_hdr->error_num);
636*7c478bd9Sstevel@tonic-gate 	}
637*7c478bd9Sstevel@tonic-gate 
638*7c478bd9Sstevel@tonic-gate 	if (0 == map_hdr->default_error) {
639*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "default\t0x");
640*7c478bd9Sstevel@tonic-gate 		p = ((unsigned char *)(map_hdr + 1) +
641*7c478bd9Sstevel@tonic-gate 			(tbl_hdr->number *
642*7c478bd9Sstevel@tonic-gate 			(map_hdr->source_len + map_hdr->result_len + 1)) +
643*7c478bd9Sstevel@tonic-gate 			map_hdr->source_len + 1);
644*7c478bd9Sstevel@tonic-gate 		for (j = 0; j < map_hdr->result_len; j++, p++) {
645*7c478bd9Sstevel@tonic-gate 			printi(0, "%02x", *p);
646*7c478bd9Sstevel@tonic-gate 		}
647*7c478bd9Sstevel@tonic-gate 		printi(0, "\n");
648*7c478bd9Sstevel@tonic-gate 	} else if (-1 == map_hdr->default_error) {
649*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "default\t" RNPREF "default\n");
650*7c478bd9Sstevel@tonic-gate 	}
651*7c478bd9Sstevel@tonic-gate 	p = (unsigned char *)(map_hdr + 1);
652*7c478bd9Sstevel@tonic-gate 	for (i = 0; i < tbl_hdr->number; i++) {
653*7c478bd9Sstevel@tonic-gate 		printi(0, "0x");
654*7c478bd9Sstevel@tonic-gate 		for (j = 0; j < map_hdr->source_len; j++, p++) {
655*7c478bd9Sstevel@tonic-gate 			printi(0, "%02x", *p);
656*7c478bd9Sstevel@tonic-gate 		}
657*7c478bd9Sstevel@tonic-gate 
658*7c478bd9Sstevel@tonic-gate 		if (0 != (*p)) {
659*7c478bd9Sstevel@tonic-gate 			p += map_hdr->result_len + 1;
660*7c478bd9Sstevel@tonic-gate 			printi(0, "\terror");
661*7c478bd9Sstevel@tonic-gate 		} else {
662*7c478bd9Sstevel@tonic-gate 			p++;
663*7c478bd9Sstevel@tonic-gate 			printi(0, "\t0x");
664*7c478bd9Sstevel@tonic-gate 			for (j = 0; j < map_hdr->result_len; j++, p++) {
665*7c478bd9Sstevel@tonic-gate 				printi(0, "%02x", *p);
666*7c478bd9Sstevel@tonic-gate 			}
667*7c478bd9Sstevel@tonic-gate 		}
668*7c478bd9Sstevel@tonic-gate 		printi(0, "\n");
669*7c478bd9Sstevel@tonic-gate 	}
670*7c478bd9Sstevel@tonic-gate 	printi(-1, "};\n");
671*7c478bd9Sstevel@tonic-gate }
672*7c478bd9Sstevel@tonic-gate 
673*7c478bd9Sstevel@tonic-gate /*
674*7c478bd9Sstevel@tonic-gate  * Dump map-hash
675*7c478bd9Sstevel@tonic-gate  */
676*7c478bd9Sstevel@tonic-gate static void
dump_map_hash(itm_hdr_t * itm_hdr,itm_place_t map_place,int standalone)677*7c478bd9Sstevel@tonic-gate dump_map_hash(itm_hdr_t		*itm_hdr, itm_place_t map_place, int standalone)
678*7c478bd9Sstevel@tonic-gate {
679*7c478bd9Sstevel@tonic-gate 	itm_tbl_hdr_t		*tbl_hdr;
680*7c478bd9Sstevel@tonic-gate 	itm_map_hash_hdr_t	*map_hdr;
681*7c478bd9Sstevel@tonic-gate 	itm_num_t		i;
682*7c478bd9Sstevel@tonic-gate 	itm_num_t		j;
683*7c478bd9Sstevel@tonic-gate 	unsigned char		*p;
684*7c478bd9Sstevel@tonic-gate 	unsigned char		*map_hash;
685*7c478bd9Sstevel@tonic-gate 	unsigned char		*map_error;
686*7c478bd9Sstevel@tonic-gate 	char			*name;
687*7c478bd9Sstevel@tonic-gate 
688*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('d', ("dump_map_hash\n"));
689*7c478bd9Sstevel@tonic-gate 
690*7c478bd9Sstevel@tonic-gate 	tbl_hdr = (itm_tbl_hdr_t *)ADDR(map_place);
691*7c478bd9Sstevel@tonic-gate 	map_hdr = (itm_map_hash_hdr_t *)(tbl_hdr + 1);
692*7c478bd9Sstevel@tonic-gate 	map_error = (unsigned char *)(map_hdr + 1);
693*7c478bd9Sstevel@tonic-gate 	map_hash = (map_error + map_hdr->hash_tbl_num);
694*7c478bd9Sstevel@tonic-gate 
695*7c478bd9Sstevel@tonic-gate 	if ((standalone) &&
696*7c478bd9Sstevel@tonic-gate 	    (0 == tbl_hdr->name.itm_ptr) &&
697*7c478bd9Sstevel@tonic-gate 	    (map_place.itm_ptr != itm_hdr->direc_init_tbl.itm_ptr)) {
698*7c478bd9Sstevel@tonic-gate 		return;
699*7c478bd9Sstevel@tonic-gate 	}
700*7c478bd9Sstevel@tonic-gate 
701*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('p', ("(&)map=%ld ", map_place.itm_ptr));
702*7c478bd9Sstevel@tonic-gate 
703*7c478bd9Sstevel@tonic-gate 	if (0 == tbl_hdr->name.itm_ptr) {
704*7c478bd9Sstevel@tonic-gate 		name = NULL;
705*7c478bd9Sstevel@tonic-gate 	} else {
706*7c478bd9Sstevel@tonic-gate 		name = tbl_name(itm_hdr, tbl_hdr);
707*7c478bd9Sstevel@tonic-gate 	}
708*7c478bd9Sstevel@tonic-gate 
709*7c478bd9Sstevel@tonic-gate 	if ((0 == standalone) && (0 != tbl_hdr->name.itm_ptr)) {
710*7c478bd9Sstevel@tonic-gate 		if (NULL != name) {
711*7c478bd9Sstevel@tonic-gate 			printi(0, "%s;\n", name);
712*7c478bd9Sstevel@tonic-gate 		} else {
713*7c478bd9Sstevel@tonic-gate 			printi(0, RNPREF "unknown;\n", name);
714*7c478bd9Sstevel@tonic-gate 		}
715*7c478bd9Sstevel@tonic-gate 		return;
716*7c478bd9Sstevel@tonic-gate 	} else {
717*7c478bd9Sstevel@tonic-gate 		printi(1, RNPREF "map");
718*7c478bd9Sstevel@tonic-gate 		if (NULL != name) {
719*7c478bd9Sstevel@tonic-gate 			printi(0, " %s", name);
720*7c478bd9Sstevel@tonic-gate 		}
721*7c478bd9Sstevel@tonic-gate 		printi(0, " {\n");
722*7c478bd9Sstevel@tonic-gate 	}
723*7c478bd9Sstevel@tonic-gate 
724*7c478bd9Sstevel@tonic-gate 	printi(0, "//  hashed map\n");
725*7c478bd9Sstevel@tonic-gate 	printi(0, "//  number=%ld\n",
726*7c478bd9Sstevel@tonic-gate 		tbl_hdr->number);
727*7c478bd9Sstevel@tonic-gate 	printi(0, "//  source_len=%ld result_len=%ld\n",
728*7c478bd9Sstevel@tonic-gate 		map_hdr->source_len, map_hdr->result_len);
729*7c478bd9Sstevel@tonic-gate 	printi(0, "//  hash_tbl_size=%ld hash_of_size=%ld hash_of_num=%ld\n",
730*7c478bd9Sstevel@tonic-gate 		map_hdr->hash_tbl_size,
731*7c478bd9Sstevel@tonic-gate 		map_hdr->hash_of_size, map_hdr->hash_of_num);
732*7c478bd9Sstevel@tonic-gate 	if (0 < map_hdr->error_num) {
733*7c478bd9Sstevel@tonic-gate 		printi(0, "//  error_num=%ld\n",
734*7c478bd9Sstevel@tonic-gate 			map_hdr->error_num);
735*7c478bd9Sstevel@tonic-gate 	}
736*7c478bd9Sstevel@tonic-gate 
737*7c478bd9Sstevel@tonic-gate 
738*7c478bd9Sstevel@tonic-gate 	if (0 == map_hdr->default_error) {
739*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "default\t0x");
740*7c478bd9Sstevel@tonic-gate 		p = map_hash + map_hdr->hash_tbl_size +
741*7c478bd9Sstevel@tonic-gate 			map_hdr->hash_of_size;
742*7c478bd9Sstevel@tonic-gate 		for (j = 0; j < map_hdr->result_len; j++, p++) {
743*7c478bd9Sstevel@tonic-gate 			printi(0, "%02x", *p);
744*7c478bd9Sstevel@tonic-gate 		}
745*7c478bd9Sstevel@tonic-gate 		printi(0, "\n");
746*7c478bd9Sstevel@tonic-gate 	} else if (-1 == map_hdr->default_error) {
747*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "default\t" RNPREF "default\n");
748*7c478bd9Sstevel@tonic-gate 	}
749*7c478bd9Sstevel@tonic-gate 	p = map_hash;
750*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('d', ("dump_map_hash: %ld %ld\n",
751*7c478bd9Sstevel@tonic-gate 			tbl_hdr->number, map_hdr->hash_of_num));
752*7c478bd9Sstevel@tonic-gate 	for (i = 0; i < map_hdr->hash_tbl_num; i++) {
753*7c478bd9Sstevel@tonic-gate 		TRACE_MESSAGE('d', ("dump_map_hash: %x (0x%08p)\n", *p, p));
754*7c478bd9Sstevel@tonic-gate 		if (0 == *(map_error + i)) {
755*7c478bd9Sstevel@tonic-gate 			p += (map_hdr->source_len + 1 + map_hdr->result_len);
756*7c478bd9Sstevel@tonic-gate 			continue;
757*7c478bd9Sstevel@tonic-gate 		}
758*7c478bd9Sstevel@tonic-gate 		printi(0, "0x");
759*7c478bd9Sstevel@tonic-gate 		for (j = 0; j < map_hdr->source_len; j++, p++) {
760*7c478bd9Sstevel@tonic-gate 			printi(0, "%02x", *p);
761*7c478bd9Sstevel@tonic-gate 		}
762*7c478bd9Sstevel@tonic-gate 
763*7c478bd9Sstevel@tonic-gate 		if (0 != (*p)) {
764*7c478bd9Sstevel@tonic-gate 			p += map_hdr->result_len + 1;
765*7c478bd9Sstevel@tonic-gate 			printi(0, "\terror");
766*7c478bd9Sstevel@tonic-gate 		} else {
767*7c478bd9Sstevel@tonic-gate 			p++;
768*7c478bd9Sstevel@tonic-gate 			printi(0, "\t0x");
769*7c478bd9Sstevel@tonic-gate 			for (j = 0; j < map_hdr->result_len; j++, p++) {
770*7c478bd9Sstevel@tonic-gate 				printi(0, "%02x", *p);
771*7c478bd9Sstevel@tonic-gate 			}
772*7c478bd9Sstevel@tonic-gate 		}
773*7c478bd9Sstevel@tonic-gate 		printi(0, "\n");
774*7c478bd9Sstevel@tonic-gate 	}
775*7c478bd9Sstevel@tonic-gate 	printi(0, "// of table\n");
776*7c478bd9Sstevel@tonic-gate 	for (i = 0; i < map_hdr->hash_of_num; i++) {
777*7c478bd9Sstevel@tonic-gate 		printi(0, "0x");
778*7c478bd9Sstevel@tonic-gate 		for (j = 0; j < map_hdr->source_len; j++, p++) {
779*7c478bd9Sstevel@tonic-gate 			printi(0, "%02x", *p);
780*7c478bd9Sstevel@tonic-gate 		}
781*7c478bd9Sstevel@tonic-gate 		if (0 != (*p)) {
782*7c478bd9Sstevel@tonic-gate 			p += map_hdr->result_len + 1;
783*7c478bd9Sstevel@tonic-gate 			printi(0, "\terror\n");
784*7c478bd9Sstevel@tonic-gate 		} else {
785*7c478bd9Sstevel@tonic-gate 			p++;
786*7c478bd9Sstevel@tonic-gate 			printi(0, "\t0x");
787*7c478bd9Sstevel@tonic-gate 			for (j = 0; j < map_hdr->result_len; j++, p++) {
788*7c478bd9Sstevel@tonic-gate 				printi(0, "%02x", *p);
789*7c478bd9Sstevel@tonic-gate 			}
790*7c478bd9Sstevel@tonic-gate 			printi(0, "\n");
791*7c478bd9Sstevel@tonic-gate 		}
792*7c478bd9Sstevel@tonic-gate 	}
793*7c478bd9Sstevel@tonic-gate 	printi(-1, "};\n");
794*7c478bd9Sstevel@tonic-gate }
795*7c478bd9Sstevel@tonic-gate 
796*7c478bd9Sstevel@tonic-gate 
797*7c478bd9Sstevel@tonic-gate /*
798*7c478bd9Sstevel@tonic-gate  * Dump map-dense-encoding
799*7c478bd9Sstevel@tonic-gate  */
800*7c478bd9Sstevel@tonic-gate static void
dump_map_dense_enc(itm_hdr_t * itm_hdr,itm_place_t map_place,int standalone)801*7c478bd9Sstevel@tonic-gate dump_map_dense_enc(itm_hdr_t	*itm_hdr, itm_place_t map_place, int standalone)
802*7c478bd9Sstevel@tonic-gate {
803*7c478bd9Sstevel@tonic-gate 	itm_tbl_hdr_t			*tbl_hdr;
804*7c478bd9Sstevel@tonic-gate 	itm_map_dense_enc_hdr_t		*map_hdr;
805*7c478bd9Sstevel@tonic-gate 	itm_num_t			i;
806*7c478bd9Sstevel@tonic-gate 	itm_num_t			j;
807*7c478bd9Sstevel@tonic-gate 	unsigned char			*p;
808*7c478bd9Sstevel@tonic-gate 	unsigned char			*map_ptr;
809*7c478bd9Sstevel@tonic-gate 	unsigned char			*map_error;
810*7c478bd9Sstevel@tonic-gate 	unsigned char			*byte_seq_min;
811*7c478bd9Sstevel@tonic-gate 	unsigned char			*byte_seq_max;
812*7c478bd9Sstevel@tonic-gate 	char				*name;
813*7c478bd9Sstevel@tonic-gate 	int				error_flag;
814*7c478bd9Sstevel@tonic-gate 
815*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('d', ("dump_map_dense_enc\n"));
816*7c478bd9Sstevel@tonic-gate 
817*7c478bd9Sstevel@tonic-gate 	tbl_hdr = (itm_tbl_hdr_t *)ADDR(map_place);
818*7c478bd9Sstevel@tonic-gate 	map_hdr = (itm_map_dense_enc_hdr_t *)(tbl_hdr + 1);
819*7c478bd9Sstevel@tonic-gate 	map_ptr = ((unsigned char *)(map_hdr + 1) +
820*7c478bd9Sstevel@tonic-gate 			map_hdr->source_len + map_hdr->source_len);
821*7c478bd9Sstevel@tonic-gate 
822*7c478bd9Sstevel@tonic-gate 	if (0 < map_hdr->error_num) {
823*7c478bd9Sstevel@tonic-gate 		map_error = (map_ptr +
824*7c478bd9Sstevel@tonic-gate 			(tbl_hdr->number * map_hdr->result_len));
825*7c478bd9Sstevel@tonic-gate 		if (0 == map_hdr->default_error) {
826*7c478bd9Sstevel@tonic-gate 			map_error += map_hdr->result_len;
827*7c478bd9Sstevel@tonic-gate 		}
828*7c478bd9Sstevel@tonic-gate 	} else if (1 == map_hdr->default_error) {
829*7c478bd9Sstevel@tonic-gate 		map_error = (map_ptr +
830*7c478bd9Sstevel@tonic-gate 			(tbl_hdr->number * map_hdr->result_len));
831*7c478bd9Sstevel@tonic-gate 	} else {
832*7c478bd9Sstevel@tonic-gate 		map_error = NULL;
833*7c478bd9Sstevel@tonic-gate 	}
834*7c478bd9Sstevel@tonic-gate 	byte_seq_min = (unsigned char *)(map_hdr + 1);
835*7c478bd9Sstevel@tonic-gate 	byte_seq_max = byte_seq_min + map_hdr->source_len;
836*7c478bd9Sstevel@tonic-gate 
837*7c478bd9Sstevel@tonic-gate 	if ((standalone) &&
838*7c478bd9Sstevel@tonic-gate 	    (0 == tbl_hdr->name.itm_ptr) &&
839*7c478bd9Sstevel@tonic-gate 	    (map_place.itm_ptr != itm_hdr->direc_init_tbl.itm_ptr)) {
840*7c478bd9Sstevel@tonic-gate 		return;
841*7c478bd9Sstevel@tonic-gate 	}
842*7c478bd9Sstevel@tonic-gate 
843*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('p', ("(&)map=%ld ", map_place.itm_ptr));
844*7c478bd9Sstevel@tonic-gate 
845*7c478bd9Sstevel@tonic-gate 	if (0 == tbl_hdr->name.itm_ptr) {
846*7c478bd9Sstevel@tonic-gate 		name = NULL;
847*7c478bd9Sstevel@tonic-gate 	} else {
848*7c478bd9Sstevel@tonic-gate 		name = tbl_name(itm_hdr, tbl_hdr);
849*7c478bd9Sstevel@tonic-gate 	}
850*7c478bd9Sstevel@tonic-gate 
851*7c478bd9Sstevel@tonic-gate 	if ((0 == standalone) && (0 != tbl_hdr->name.itm_ptr)) {
852*7c478bd9Sstevel@tonic-gate 		if (NULL != name) {
853*7c478bd9Sstevel@tonic-gate 			printi(0, "%s;\n", name);
854*7c478bd9Sstevel@tonic-gate 		} else {
855*7c478bd9Sstevel@tonic-gate 			printi(0, RNPREF "unknown;\n", name);
856*7c478bd9Sstevel@tonic-gate 		}
857*7c478bd9Sstevel@tonic-gate 		return;
858*7c478bd9Sstevel@tonic-gate 	} else {
859*7c478bd9Sstevel@tonic-gate 		printi(1, RNPREF "map");
860*7c478bd9Sstevel@tonic-gate 		if (NULL != name) {
861*7c478bd9Sstevel@tonic-gate 			printi(0, " %s", name);
862*7c478bd9Sstevel@tonic-gate 		}
863*7c478bd9Sstevel@tonic-gate 		printi(0, " {\n");
864*7c478bd9Sstevel@tonic-gate 	}
865*7c478bd9Sstevel@tonic-gate 
866*7c478bd9Sstevel@tonic-gate 	printi(0, "//  dense encoded map\n");
867*7c478bd9Sstevel@tonic-gate 	printi(0, "//  entry_number=%ld\n", tbl_hdr->number);
868*7c478bd9Sstevel@tonic-gate 	printi(0, "//  source_len=%ld result_len=%ld\n",
869*7c478bd9Sstevel@tonic-gate 		map_hdr->source_len, map_hdr->result_len);
870*7c478bd9Sstevel@tonic-gate 	printi(0, "//  byte_seq_min=0x");
871*7c478bd9Sstevel@tonic-gate 	p = byte_seq_min;
872*7c478bd9Sstevel@tonic-gate 	for (i = 0; i < map_hdr->source_len; i++, p++) {
873*7c478bd9Sstevel@tonic-gate 		printi(0, "%02x", *p);
874*7c478bd9Sstevel@tonic-gate 	}
875*7c478bd9Sstevel@tonic-gate 	printi(0, "\n");
876*7c478bd9Sstevel@tonic-gate 	printi(0, "//  byte_seq_max=0x");
877*7c478bd9Sstevel@tonic-gate 	p = byte_seq_max;
878*7c478bd9Sstevel@tonic-gate 	for (i = 0; i < map_hdr->source_len; i++, p++) {
879*7c478bd9Sstevel@tonic-gate 		printi(0, "%02x", *p);
880*7c478bd9Sstevel@tonic-gate 	}
881*7c478bd9Sstevel@tonic-gate 	printi(0, "\n");
882*7c478bd9Sstevel@tonic-gate 	if (0 < map_hdr->error_num) {
883*7c478bd9Sstevel@tonic-gate 		printi(0, "//  error_num=%ld\n",
884*7c478bd9Sstevel@tonic-gate 			map_hdr->error_num);
885*7c478bd9Sstevel@tonic-gate 	}
886*7c478bd9Sstevel@tonic-gate 	if (0 == map_hdr->default_error) {
887*7c478bd9Sstevel@tonic-gate 		p = (map_ptr + (tbl_hdr->number * map_hdr->result_len));
888*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "default 0x");
889*7c478bd9Sstevel@tonic-gate 		for (j = 0; j < map_hdr->result_len; j++) {
890*7c478bd9Sstevel@tonic-gate 			printi(0, "%02x", *(p + j));
891*7c478bd9Sstevel@tonic-gate 		}
892*7c478bd9Sstevel@tonic-gate 		printi(0, "\n");
893*7c478bd9Sstevel@tonic-gate 	} else if (-1 == map_hdr->default_error) {
894*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "default\t" RNPREF "default\n");
895*7c478bd9Sstevel@tonic-gate 	}
896*7c478bd9Sstevel@tonic-gate 
897*7c478bd9Sstevel@tonic-gate 	error_flag = 0;
898*7c478bd9Sstevel@tonic-gate 	for (i = 0, p = map_ptr; i < tbl_hdr->number;
899*7c478bd9Sstevel@tonic-gate 	    i++, p += map_hdr->result_len) {
900*7c478bd9Sstevel@tonic-gate 		if ((NULL == map_error) || (0 == *(map_error + i))) {
901*7c478bd9Sstevel@tonic-gate 			printi(0, "%s\t",
902*7c478bd9Sstevel@tonic-gate 				dense_enc_index_to_byte_seq(
903*7c478bd9Sstevel@tonic-gate 					i, map_hdr->source_len,
904*7c478bd9Sstevel@tonic-gate 					byte_seq_min, byte_seq_max));
905*7c478bd9Sstevel@tonic-gate 			printi(0, "0x");
906*7c478bd9Sstevel@tonic-gate 			for (j = 0; j < map_hdr->result_len; j++) {
907*7c478bd9Sstevel@tonic-gate 				printi(0, "%02x", *(p + j));
908*7c478bd9Sstevel@tonic-gate 			}
909*7c478bd9Sstevel@tonic-gate 			printi(0, "\n");
910*7c478bd9Sstevel@tonic-gate 			error_flag = 0;
911*7c478bd9Sstevel@tonic-gate 		} else	if (0 >= map_hdr->default_error) {
912*7c478bd9Sstevel@tonic-gate 			if (0 == error_flag) {
913*7c478bd9Sstevel@tonic-gate 				printi(0, "%s\t",
914*7c478bd9Sstevel@tonic-gate 					dense_enc_index_to_byte_seq(
915*7c478bd9Sstevel@tonic-gate 					i, map_hdr->source_len,
916*7c478bd9Sstevel@tonic-gate 					byte_seq_min, byte_seq_max));
917*7c478bd9Sstevel@tonic-gate 				printi(0, "error\n");
918*7c478bd9Sstevel@tonic-gate 				error_flag = 1;
919*7c478bd9Sstevel@tonic-gate 			} else if (error_flag == 1) {
920*7c478bd9Sstevel@tonic-gate 				printi(0, " :\t:\n");
921*7c478bd9Sstevel@tonic-gate 				error_flag = 2;
922*7c478bd9Sstevel@tonic-gate 			}
923*7c478bd9Sstevel@tonic-gate 		}
924*7c478bd9Sstevel@tonic-gate 	}
925*7c478bd9Sstevel@tonic-gate 	printi(-1, "};\n");
926*7c478bd9Sstevel@tonic-gate }
927*7c478bd9Sstevel@tonic-gate 
928*7c478bd9Sstevel@tonic-gate 
929*7c478bd9Sstevel@tonic-gate /*
930*7c478bd9Sstevel@tonic-gate  * Evaluate condition table
931*7c478bd9Sstevel@tonic-gate  */
932*7c478bd9Sstevel@tonic-gate static void
dump_cond_tbl(itm_hdr_t * itm_hdr,itm_place_t cond_place,int standalone)933*7c478bd9Sstevel@tonic-gate dump_cond_tbl(itm_hdr_t *itm_hdr, itm_place_t cond_place, int standalone)
934*7c478bd9Sstevel@tonic-gate {
935*7c478bd9Sstevel@tonic-gate 	itm_tbl_hdr_t	*cond_hdr;
936*7c478bd9Sstevel@tonic-gate 	itm_cond_t	*cond;
937*7c478bd9Sstevel@tonic-gate 	long		i;
938*7c478bd9Sstevel@tonic-gate 	char		*name;
939*7c478bd9Sstevel@tonic-gate 
940*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('p', ("(&)cond_tbl=%ld ", cond_place.itm_ptr));
941*7c478bd9Sstevel@tonic-gate 	cond_hdr = (itm_tbl_hdr_t *)(ADDR(cond_place));
942*7c478bd9Sstevel@tonic-gate 	cond = (itm_cond_t *)(cond_hdr + 1);
943*7c478bd9Sstevel@tonic-gate 
944*7c478bd9Sstevel@tonic-gate 	if ((standalone) && (0 == cond_hdr->name.itm_ptr)) {
945*7c478bd9Sstevel@tonic-gate 		TRACE_MESSAGE('t', ("skip condition(%d, %ld)\n",
946*7c478bd9Sstevel@tonic-gate 		standalone, cond_hdr->name.itm_ptr));
947*7c478bd9Sstevel@tonic-gate 		return;
948*7c478bd9Sstevel@tonic-gate 	}
949*7c478bd9Sstevel@tonic-gate 
950*7c478bd9Sstevel@tonic-gate 	if (0 == cond_place.itm_ptr) {
951*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "true");
952*7c478bd9Sstevel@tonic-gate 		return;
953*7c478bd9Sstevel@tonic-gate 	}
954*7c478bd9Sstevel@tonic-gate 
955*7c478bd9Sstevel@tonic-gate 	if (0 == cond_hdr->name.itm_ptr) {
956*7c478bd9Sstevel@tonic-gate 		name = NULL;
957*7c478bd9Sstevel@tonic-gate 	} else {
958*7c478bd9Sstevel@tonic-gate 		name = tbl_name(itm_hdr, cond_hdr);
959*7c478bd9Sstevel@tonic-gate 	}
960*7c478bd9Sstevel@tonic-gate 
961*7c478bd9Sstevel@tonic-gate 	if ((0 == standalone) && (0 != cond_hdr->name.itm_ptr)) {
962*7c478bd9Sstevel@tonic-gate 		if (NULL != name) {
963*7c478bd9Sstevel@tonic-gate 			printi(0, "%s", name);
964*7c478bd9Sstevel@tonic-gate 		} else {
965*7c478bd9Sstevel@tonic-gate 			printi(0, RNPREF "unknown");
966*7c478bd9Sstevel@tonic-gate 		}
967*7c478bd9Sstevel@tonic-gate 		return;
968*7c478bd9Sstevel@tonic-gate 	} else {
969*7c478bd9Sstevel@tonic-gate 		printi(1, RNPREF "condition");
970*7c478bd9Sstevel@tonic-gate 		if (NULL != name) {
971*7c478bd9Sstevel@tonic-gate 			printi(0, " %s", name);
972*7c478bd9Sstevel@tonic-gate 		}
973*7c478bd9Sstevel@tonic-gate 		printi(0, " {\n");
974*7c478bd9Sstevel@tonic-gate 	}
975*7c478bd9Sstevel@tonic-gate 
976*7c478bd9Sstevel@tonic-gate 	for (i = 0; i < cond_hdr->number; i++, cond++) {
977*7c478bd9Sstevel@tonic-gate 		switch (cond->type) {
978*7c478bd9Sstevel@tonic-gate 		case ITM_COND_BETWEEN:
979*7c478bd9Sstevel@tonic-gate 			dump_range(itm_hdr, cond->operand.place);
980*7c478bd9Sstevel@tonic-gate 			break;
981*7c478bd9Sstevel@tonic-gate 		case ITM_COND_EXPR:
982*7c478bd9Sstevel@tonic-gate 			dump_expr(itm_hdr, cond->operand.place);
983*7c478bd9Sstevel@tonic-gate 			printi(0, ";\n");
984*7c478bd9Sstevel@tonic-gate 			break;
985*7c478bd9Sstevel@tonic-gate 		case ITM_COND_ESCAPESEQ:
986*7c478bd9Sstevel@tonic-gate 			dump_escapeseq(itm_hdr, cond->operand.place);
987*7c478bd9Sstevel@tonic-gate 			break;
988*7c478bd9Sstevel@tonic-gate 		default:
989*7c478bd9Sstevel@tonic-gate 			printi(0, "// unknown %d\n", cond->type);
990*7c478bd9Sstevel@tonic-gate 			break;
991*7c478bd9Sstevel@tonic-gate 		}
992*7c478bd9Sstevel@tonic-gate 	}
993*7c478bd9Sstevel@tonic-gate 
994*7c478bd9Sstevel@tonic-gate 	if (standalone) {
995*7c478bd9Sstevel@tonic-gate 		printi(-1, "};\n");
996*7c478bd9Sstevel@tonic-gate 	} else {
997*7c478bd9Sstevel@tonic-gate 		printi(-1, "}");
998*7c478bd9Sstevel@tonic-gate 	}
999*7c478bd9Sstevel@tonic-gate }
1000*7c478bd9Sstevel@tonic-gate 
1001*7c478bd9Sstevel@tonic-gate 
1002*7c478bd9Sstevel@tonic-gate /*
1003*7c478bd9Sstevel@tonic-gate  * Dump operation table
1004*7c478bd9Sstevel@tonic-gate  */
1005*7c478bd9Sstevel@tonic-gate static void
dump_op_tbl(itm_hdr_t * itm_hdr,itm_place_t op_tbl_place,int standalone)1006*7c478bd9Sstevel@tonic-gate dump_op_tbl(itm_hdr_t	*itm_hdr, itm_place_t op_tbl_place, int standalone)
1007*7c478bd9Sstevel@tonic-gate {
1008*7c478bd9Sstevel@tonic-gate 	itm_tbl_hdr_t	*op_hdr;
1009*7c478bd9Sstevel@tonic-gate 	itm_op_t	*operation;
1010*7c478bd9Sstevel@tonic-gate 	itm_place2_t	op_place;
1011*7c478bd9Sstevel@tonic-gate 	long		i;
1012*7c478bd9Sstevel@tonic-gate 	char		*name;
1013*7c478bd9Sstevel@tonic-gate 	static int	op_tbl_level;
1014*7c478bd9Sstevel@tonic-gate 
1015*7c478bd9Sstevel@tonic-gate 	op_hdr = (itm_tbl_hdr_t *)(ADDR(op_tbl_place));
1016*7c478bd9Sstevel@tonic-gate 	operation = (itm_op_t *)(op_hdr + 1);
1017*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('p', ("(&)op_tbl=%ld ", op_tbl_place));
1018*7c478bd9Sstevel@tonic-gate 
1019*7c478bd9Sstevel@tonic-gate 	name = tbl_name(itm_hdr, op_hdr);
1020*7c478bd9Sstevel@tonic-gate 
1021*7c478bd9Sstevel@tonic-gate 	if ((standalone) && (NULL == name))
1022*7c478bd9Sstevel@tonic-gate 		return;
1023*7c478bd9Sstevel@tonic-gate 
1024*7c478bd9Sstevel@tonic-gate 	if (0 == op_tbl_level) {
1025*7c478bd9Sstevel@tonic-gate 		if ((0 == standalone) && (0 != op_hdr->name.itm_ptr)) {
1026*7c478bd9Sstevel@tonic-gate 			if (NULL != name) {
1027*7c478bd9Sstevel@tonic-gate 				printi(0, "%s;\n", name);
1028*7c478bd9Sstevel@tonic-gate 			} else {
1029*7c478bd9Sstevel@tonic-gate 				printi(0, RNPREF "unknown;", name);
1030*7c478bd9Sstevel@tonic-gate 			}
1031*7c478bd9Sstevel@tonic-gate 			return;
1032*7c478bd9Sstevel@tonic-gate 		} else {
1033*7c478bd9Sstevel@tonic-gate 			printi(1, RNPREF "operation");
1034*7c478bd9Sstevel@tonic-gate 			if (NULL != name) {
1035*7c478bd9Sstevel@tonic-gate 				printi(0, " %s", name);
1036*7c478bd9Sstevel@tonic-gate 			}
1037*7c478bd9Sstevel@tonic-gate 			printi(0, " {\n");
1038*7c478bd9Sstevel@tonic-gate 		}
1039*7c478bd9Sstevel@tonic-gate 	}
1040*7c478bd9Sstevel@tonic-gate 
1041*7c478bd9Sstevel@tonic-gate 	op_tbl_level += 1;
1042*7c478bd9Sstevel@tonic-gate 
1043*7c478bd9Sstevel@tonic-gate 	op_place = op_tbl_place.itm_ptr + (sizeof (itm_tbl_hdr_t));
1044*7c478bd9Sstevel@tonic-gate 	for (i = 0; i < op_hdr->number;
1045*7c478bd9Sstevel@tonic-gate 	    i++, operation++, op_place += (sizeof (itm_op_t))) {
1046*7c478bd9Sstevel@tonic-gate 		dump_op(itm_hdr, op_place);
1047*7c478bd9Sstevel@tonic-gate 	}
1048*7c478bd9Sstevel@tonic-gate 
1049*7c478bd9Sstevel@tonic-gate 	op_tbl_level -= 1;
1050*7c478bd9Sstevel@tonic-gate 
1051*7c478bd9Sstevel@tonic-gate 	if (0 == op_tbl_level) {
1052*7c478bd9Sstevel@tonic-gate 		printi(-1, "};\n");
1053*7c478bd9Sstevel@tonic-gate 	}
1054*7c478bd9Sstevel@tonic-gate }
1055*7c478bd9Sstevel@tonic-gate 
1056*7c478bd9Sstevel@tonic-gate 
1057*7c478bd9Sstevel@tonic-gate /*
1058*7c478bd9Sstevel@tonic-gate  * Evaluate single operation
1059*7c478bd9Sstevel@tonic-gate  */
1060*7c478bd9Sstevel@tonic-gate static void
dump_op(itm_hdr_t * itm_hdr,itm_place2_t op_place)1061*7c478bd9Sstevel@tonic-gate dump_op(itm_hdr_t	*itm_hdr, itm_place2_t op_place)
1062*7c478bd9Sstevel@tonic-gate {
1063*7c478bd9Sstevel@tonic-gate 	itm_op_t	*operation;
1064*7c478bd9Sstevel@tonic-gate 	itm_tbl_hdr_t	*op_hdr;
1065*7c478bd9Sstevel@tonic-gate 
1066*7c478bd9Sstevel@tonic-gate 	operation = (itm_op_t *)ADDR2(op_place);
1067*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('p', ("(&)op=%ld ", op_place));
1068*7c478bd9Sstevel@tonic-gate 
1069*7c478bd9Sstevel@tonic-gate 	switch (operation->type) {
1070*7c478bd9Sstevel@tonic-gate 	case ITM_OP_EXPR:
1071*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, operation->data.operand[0]);
1072*7c478bd9Sstevel@tonic-gate 		printi(0, ";\n");
1073*7c478bd9Sstevel@tonic-gate 		break;
1074*7c478bd9Sstevel@tonic-gate 	case ITM_OP_ERROR:
1075*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "error ");
1076*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, operation->data.operand[0]);
1077*7c478bd9Sstevel@tonic-gate 		printi(0, ";\n");
1078*7c478bd9Sstevel@tonic-gate 		break;
1079*7c478bd9Sstevel@tonic-gate 	case ITM_OP_ERROR_D:
1080*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "error %d;",
1081*7c478bd9Sstevel@tonic-gate 			operation->data.operand[0].itm_ptr);
1082*7c478bd9Sstevel@tonic-gate 		printi(0, "\n");
1083*7c478bd9Sstevel@tonic-gate 		break;
1084*7c478bd9Sstevel@tonic-gate 	case ITM_OP_DISCARD:
1085*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "discard ");
1086*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, operation->data.operand[0]);
1087*7c478bd9Sstevel@tonic-gate 		printi(0, ";\n");
1088*7c478bd9Sstevel@tonic-gate 		break;
1089*7c478bd9Sstevel@tonic-gate 	case ITM_OP_DISCARD_D:
1090*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "discard %ld;\n",
1091*7c478bd9Sstevel@tonic-gate 			operation->data.operand[0].itm_ptr);
1092*7c478bd9Sstevel@tonic-gate 		break;
1093*7c478bd9Sstevel@tonic-gate 	case ITM_OP_OUT:
1094*7c478bd9Sstevel@tonic-gate 	case ITM_OP_OUT_D:
1095*7c478bd9Sstevel@tonic-gate 	case ITM_OP_OUT_R:
1096*7c478bd9Sstevel@tonic-gate 	case ITM_OP_OUT_S:
1097*7c478bd9Sstevel@tonic-gate 	case ITM_OP_OUT_INVD:
1098*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "out = ");
1099*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, operation->data.operand[0]);
1100*7c478bd9Sstevel@tonic-gate 		printi(0, ";\n");
1101*7c478bd9Sstevel@tonic-gate 		break;
1102*7c478bd9Sstevel@tonic-gate 	case ITM_OP_IF:
1103*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "if ");
1104*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, operation->data.operand[0]);
1105*7c478bd9Sstevel@tonic-gate 		printi(1, " {\n");
1106*7c478bd9Sstevel@tonic-gate 		dump_op_tbl(itm_hdr, operation->data.operand[1], 0);
1107*7c478bd9Sstevel@tonic-gate 		printi(-1, "}\n");
1108*7c478bd9Sstevel@tonic-gate 		break;
1109*7c478bd9Sstevel@tonic-gate 	case ITM_OP_IF_ELSE:
1110*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "if ");
1111*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, operation->data.operand[0]);
1112*7c478bd9Sstevel@tonic-gate 		printi(1, " {\n");
1113*7c478bd9Sstevel@tonic-gate 		dump_op_tbl(itm_hdr, operation->data.operand[1], 0);
1114*7c478bd9Sstevel@tonic-gate 		printi(-1, "} ");
1115*7c478bd9Sstevel@tonic-gate 		op_hdr = ADDR(operation->data.operand[2]);
1116*7c478bd9Sstevel@tonic-gate 		if ((1 == op_hdr->number) &&
1117*7c478bd9Sstevel@tonic-gate 		    ((ITM_OP_IF_ELSE == ((itm_op_t *)(op_hdr + 1))->type) ||
1118*7c478bd9Sstevel@tonic-gate 		    (ITM_OP_IF == ((itm_op_t *)(op_hdr + 1))->type))) {
1119*7c478bd9Sstevel@tonic-gate 			printi(0, RNPREF "else ");
1120*7c478bd9Sstevel@tonic-gate 			dump_op_tbl(itm_hdr, operation->data.operand[2], 0);
1121*7c478bd9Sstevel@tonic-gate 		} else {
1122*7c478bd9Sstevel@tonic-gate 			printi(1, RNPREF "else {\n");
1123*7c478bd9Sstevel@tonic-gate 			dump_op_tbl(itm_hdr, operation->data.operand[2], 0);
1124*7c478bd9Sstevel@tonic-gate 			printi(-1, "}\n");
1125*7c478bd9Sstevel@tonic-gate 		}
1126*7c478bd9Sstevel@tonic-gate 		break;
1127*7c478bd9Sstevel@tonic-gate 	case ITM_OP_DIRECTION: /* switch direction */
1128*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "direction %1$s;\n", tbl_name(itm_hdr,
1129*7c478bd9Sstevel@tonic-gate 			(itm_tbl_hdr_t *)ADDR(operation->data.operand[0])));
1130*7c478bd9Sstevel@tonic-gate 		break;
1131*7c478bd9Sstevel@tonic-gate 	case ITM_OP_MAP:	/* use map */
1132*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "map %1$s", tbl_name(itm_hdr,
1133*7c478bd9Sstevel@tonic-gate 			(itm_tbl_hdr_t *)ADDR(operation->data.operand[0])));
1134*7c478bd9Sstevel@tonic-gate 		if (0 != operation->data.operand[1].itm_ptr) {
1135*7c478bd9Sstevel@tonic-gate 			printi(0, " ");
1136*7c478bd9Sstevel@tonic-gate 			dump_expr(itm_hdr, operation->data.operand[1]);
1137*7c478bd9Sstevel@tonic-gate 		}
1138*7c478bd9Sstevel@tonic-gate 		printi(0, ";\n");
1139*7c478bd9Sstevel@tonic-gate 		break;
1140*7c478bd9Sstevel@tonic-gate 	case ITM_OP_OPERATION: /* invoke operation */
1141*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "operation %1$s;\n",
1142*7c478bd9Sstevel@tonic-gate 			tbl_name(itm_hdr,
1143*7c478bd9Sstevel@tonic-gate 			(itm_tbl_hdr_t *)ADDR(operation->data.operand[0])));
1144*7c478bd9Sstevel@tonic-gate 		break;
1145*7c478bd9Sstevel@tonic-gate 	case ITM_OP_INIT: /* invoke init operation */
1146*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "operation " RNPREF "init;\n");
1147*7c478bd9Sstevel@tonic-gate 		break;
1148*7c478bd9Sstevel@tonic-gate 	case ITM_OP_RESET: /* invoke reset operation */
1149*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "operation " RNPREF "reset;\n");
1150*7c478bd9Sstevel@tonic-gate 		break;
1151*7c478bd9Sstevel@tonic-gate 	case ITM_OP_BREAK: /* break */
1152*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "break;\n");
1153*7c478bd9Sstevel@tonic-gate 		break;
1154*7c478bd9Sstevel@tonic-gate 	case ITM_OP_RETURN: /* return */
1155*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "return;\n");
1156*7c478bd9Sstevel@tonic-gate 		break;
1157*7c478bd9Sstevel@tonic-gate 	case ITM_OP_PRINTCHR:
1158*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "printchr ");
1159*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, operation->data.operand[0]);
1160*7c478bd9Sstevel@tonic-gate 		printi(0, ";\n");
1161*7c478bd9Sstevel@tonic-gate 		break;
1162*7c478bd9Sstevel@tonic-gate 	case ITM_OP_PRINTHD:
1163*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "printhd ");
1164*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, operation->data.operand[0]);
1165*7c478bd9Sstevel@tonic-gate 		printi(0, ";\n");
1166*7c478bd9Sstevel@tonic-gate 		break;
1167*7c478bd9Sstevel@tonic-gate 	case ITM_OP_PRINTINT:
1168*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "printint ");
1169*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, operation->data.operand[0]);
1170*7c478bd9Sstevel@tonic-gate 		printi(0, ";\n");
1171*7c478bd9Sstevel@tonic-gate 		break;
1172*7c478bd9Sstevel@tonic-gate 	default:
1173*7c478bd9Sstevel@tonic-gate 		printi(0, "// unknown operation: %lx\n", operation->type);
1174*7c478bd9Sstevel@tonic-gate 		break;
1175*7c478bd9Sstevel@tonic-gate 	}
1176*7c478bd9Sstevel@tonic-gate }
1177*7c478bd9Sstevel@tonic-gate 
1178*7c478bd9Sstevel@tonic-gate 
1179*7c478bd9Sstevel@tonic-gate /*
1180*7c478bd9Sstevel@tonic-gate  * Dump expression
1181*7c478bd9Sstevel@tonic-gate  */
1182*7c478bd9Sstevel@tonic-gate static void
dump_expr(itm_hdr_t * itm_hdr,itm_place_t expr_place)1183*7c478bd9Sstevel@tonic-gate dump_expr(itm_hdr_t	*itm_hdr, itm_place_t expr_place)
1184*7c478bd9Sstevel@tonic-gate {
1185*7c478bd9Sstevel@tonic-gate 	itm_expr_t	*expr;
1186*7c478bd9Sstevel@tonic-gate 	itm_data_t	data;
1187*7c478bd9Sstevel@tonic-gate 
1188*7c478bd9Sstevel@tonic-gate 	expr = (itm_expr_t *)ADDR(expr_place);
1189*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('p', ("(*)ex=%ld ", expr_place.itm_ptr));
1190*7c478bd9Sstevel@tonic-gate 
1191*7c478bd9Sstevel@tonic-gate 	switch (expr->type) {
1192*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NONE:		/* not used */
1193*7c478bd9Sstevel@tonic-gate 		printi(0, "none");
1194*7c478bd9Sstevel@tonic-gate 		break;
1195*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NOP:		/* not used */
1196*7c478bd9Sstevel@tonic-gate 		printi(0, "NOP");
1197*7c478bd9Sstevel@tonic-gate 		break;
1198*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NAME:		/* not used */
1199*7c478bd9Sstevel@tonic-gate 		printi(0, "NAME");
1200*7c478bd9Sstevel@tonic-gate 		break;
1201*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_INT:		/* integer */
1202*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.itm_exnum);
1203*7c478bd9Sstevel@tonic-gate 		break;
1204*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SEQ:		/* byte sequence */
1205*7c478bd9Sstevel@tonic-gate 		data = expr->data.value;
1206*7c478bd9Sstevel@tonic-gate 		if ((sizeof (itm_place_t)) < data.size) {
1207*7c478bd9Sstevel@tonic-gate 			data.place.itm_ptr = (itm_place2_t)ADDR(data.place);
1208*7c478bd9Sstevel@tonic-gate 		}
1209*7c478bd9Sstevel@tonic-gate 		printi(0, "0x%s", data_to_hexadecimal(&data));
1210*7c478bd9Sstevel@tonic-gate 		break;
1211*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_REG:		/* register */
1212*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1213*7c478bd9Sstevel@tonic-gate 		break;
1214*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_IN_VECTOR:	/* in[expr] */
1215*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[");
1216*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1217*7c478bd9Sstevel@tonic-gate 		printi(0, "]");
1218*7c478bd9Sstevel@tonic-gate 		break;
1219*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_IN_VECTOR_D:	/* in[num] */
1220*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1221*7c478bd9Sstevel@tonic-gate 		if (0 == expr->data.operand[0].itm_ptr) {
1222*7c478bd9Sstevel@tonic-gate 			printi(0, " // inputsize");
1223*7c478bd9Sstevel@tonic-gate 		}
1224*7c478bd9Sstevel@tonic-gate 		break;
1225*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_OUT:		/* out */
1226*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "out");
1227*7c478bd9Sstevel@tonic-gate 		break;
1228*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_TRUE:		/* true */
1229*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "true");
1230*7c478bd9Sstevel@tonic-gate 		break;
1231*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_FALSE:		/* false */
1232*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "false");
1233*7c478bd9Sstevel@tonic-gate 		break;
1234*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_UMINUS:		/* unary minus */
1235*7c478bd9Sstevel@tonic-gate 		printi(0, "-");
1236*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1237*7c478bd9Sstevel@tonic-gate 		break;
1238*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_PLUS:		/* A  + B */
1239*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1240*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1241*7c478bd9Sstevel@tonic-gate 		printi(0, " + ");
1242*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1243*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1244*7c478bd9Sstevel@tonic-gate 		break;
1245*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_PLUS_E_D:		/* exprA + B */
1246*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1247*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1248*7c478bd9Sstevel@tonic-gate 		printi(0, " + ");
1249*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1250*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1251*7c478bd9Sstevel@tonic-gate 		break;
1252*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_PLUS_E_R:		/* exprA + varB */
1253*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1254*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1255*7c478bd9Sstevel@tonic-gate 		printi(0, " + ");
1256*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1257*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1258*7c478bd9Sstevel@tonic-gate 		break;
1259*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_PLUS_E_INVD:	/* exprA + in[B] */
1260*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1261*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1262*7c478bd9Sstevel@tonic-gate 		printi(0, " + ");
1263*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1264*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1265*7c478bd9Sstevel@tonic-gate 		break;
1266*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_PLUS_D_E:		/* intA + exprB */
1267*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1268*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1269*7c478bd9Sstevel@tonic-gate 		printi(0, " + ");
1270*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1271*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1272*7c478bd9Sstevel@tonic-gate 		break;
1273*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_PLUS_D_D:		/* intA + B */
1274*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1275*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1276*7c478bd9Sstevel@tonic-gate 		printi(0, " + ");
1277*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1278*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1279*7c478bd9Sstevel@tonic-gate 		break;
1280*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_PLUS_D_R:		/* intA + varB */
1281*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1282*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1283*7c478bd9Sstevel@tonic-gate 		printi(0, " + ");
1284*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1285*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1286*7c478bd9Sstevel@tonic-gate 		break;
1287*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_PLUS_D_INVD:	/* intA + in[B] */
1288*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1289*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1290*7c478bd9Sstevel@tonic-gate 		printi(0, " + ");
1291*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1292*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1293*7c478bd9Sstevel@tonic-gate 		break;
1294*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_PLUS_R_E:		/* varA + exprB */
1295*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1296*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1297*7c478bd9Sstevel@tonic-gate 		printi(0, " + ");
1298*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1299*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1300*7c478bd9Sstevel@tonic-gate 		break;
1301*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_PLUS_R_D:		/* varA + B */
1302*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1303*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1304*7c478bd9Sstevel@tonic-gate 		printi(0, " + ");
1305*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1306*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1307*7c478bd9Sstevel@tonic-gate 		break;
1308*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_PLUS_R_R:		/* varA + varB */
1309*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1310*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1311*7c478bd9Sstevel@tonic-gate 		printi(0, " + ");
1312*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1313*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1314*7c478bd9Sstevel@tonic-gate 		break;
1315*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_PLUS_R_INVD:	/* varA + in[B] */
1316*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1317*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1318*7c478bd9Sstevel@tonic-gate 		printi(0, " + ");
1319*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1320*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1321*7c478bd9Sstevel@tonic-gate 		break;
1322*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_PLUS_INVD_E:	/* in[A] + exprB */
1323*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1324*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1325*7c478bd9Sstevel@tonic-gate 		printi(0, " + ");
1326*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1327*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1328*7c478bd9Sstevel@tonic-gate 		break;
1329*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_PLUS_INVD_D:	/* in[A] + B */
1330*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1331*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1332*7c478bd9Sstevel@tonic-gate 		printi(0, " + ");
1333*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1334*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1335*7c478bd9Sstevel@tonic-gate 		break;
1336*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_PLUS_INVD_R:	/* in[A] + varB */
1337*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1338*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1339*7c478bd9Sstevel@tonic-gate 		printi(0, " + ");
1340*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1341*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1342*7c478bd9Sstevel@tonic-gate 		break;
1343*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_PLUS_INVD_INVD:	/* in[A] + in[B] */
1344*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1345*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1346*7c478bd9Sstevel@tonic-gate 		printi(0, " + ");
1347*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1348*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1349*7c478bd9Sstevel@tonic-gate 		break;
1350*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MINUS:		/* A  - B */
1351*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1352*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1353*7c478bd9Sstevel@tonic-gate 		printi(0, " - ");
1354*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1355*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1356*7c478bd9Sstevel@tonic-gate 		break;
1357*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MINUS_E_D:		/* exprA - B */
1358*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1359*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1360*7c478bd9Sstevel@tonic-gate 		printi(0, " - ");
1361*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1362*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1363*7c478bd9Sstevel@tonic-gate 		break;
1364*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MINUS_E_R:		/* exprA - varB */
1365*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1366*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1367*7c478bd9Sstevel@tonic-gate 		printi(0, " - ");
1368*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1369*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1370*7c478bd9Sstevel@tonic-gate 		break;
1371*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MINUS_E_INVD:	/* exprA - in[B] */
1372*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1373*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1374*7c478bd9Sstevel@tonic-gate 		printi(0, " - ");
1375*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1376*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1377*7c478bd9Sstevel@tonic-gate 		break;
1378*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MINUS_D_E:		/* intA - exprB */
1379*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1380*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1381*7c478bd9Sstevel@tonic-gate 		printi(0, " - ");
1382*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1383*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1384*7c478bd9Sstevel@tonic-gate 		break;
1385*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MINUS_D_D:		/* intA - B */
1386*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1387*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1388*7c478bd9Sstevel@tonic-gate 		printi(0, " - ");
1389*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1390*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1391*7c478bd9Sstevel@tonic-gate 		break;
1392*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MINUS_D_R:		/* intA - varB */
1393*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1394*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1395*7c478bd9Sstevel@tonic-gate 		printi(0, " - ");
1396*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1397*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1398*7c478bd9Sstevel@tonic-gate 		break;
1399*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MINUS_D_INVD:	/* intA - in[B] */
1400*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1401*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1402*7c478bd9Sstevel@tonic-gate 		printi(0, " - ");
1403*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1404*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1405*7c478bd9Sstevel@tonic-gate 		break;
1406*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MINUS_R_E:		/* varA - exprB */
1407*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1408*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1409*7c478bd9Sstevel@tonic-gate 		printi(0, " - ");
1410*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1411*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1412*7c478bd9Sstevel@tonic-gate 		break;
1413*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MINUS_R_D:		/* varA - B */
1414*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1415*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1416*7c478bd9Sstevel@tonic-gate 		printi(0, " - ");
1417*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1418*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1419*7c478bd9Sstevel@tonic-gate 		break;
1420*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MINUS_R_R:		/* varA - varB */
1421*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1422*7c478bd9Sstevel@tonic-gate 		printi(0, " - ");
1423*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1424*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1425*7c478bd9Sstevel@tonic-gate 		break;
1426*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MINUS_R_INVD:	/* varA - in[B] */
1427*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1428*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1429*7c478bd9Sstevel@tonic-gate 		printi(0, " - ");
1430*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1431*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1432*7c478bd9Sstevel@tonic-gate 		break;
1433*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MINUS_INVD_E:	/* in[A] - exprB */
1434*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1435*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1436*7c478bd9Sstevel@tonic-gate 		printi(0, " - ");
1437*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1438*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1439*7c478bd9Sstevel@tonic-gate 		break;
1440*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MINUS_INVD_D:	/* in[A] - B */
1441*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1442*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1443*7c478bd9Sstevel@tonic-gate 		printi(0, " - ");
1444*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1445*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1446*7c478bd9Sstevel@tonic-gate 		break;
1447*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MINUS_INVD_R:	/* in[A] - varB */
1448*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1449*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1450*7c478bd9Sstevel@tonic-gate 		printi(0, " - ");
1451*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1452*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1453*7c478bd9Sstevel@tonic-gate 		break;
1454*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MINUS_INVD_INVD:	/* in[A] - in[B] */
1455*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1456*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1457*7c478bd9Sstevel@tonic-gate 		printi(0, " - ");
1458*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1459*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1460*7c478bd9Sstevel@tonic-gate 		break;
1461*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MUL:		/* A  * B */
1462*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1463*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1464*7c478bd9Sstevel@tonic-gate 		printi(0, " * ");
1465*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1466*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1467*7c478bd9Sstevel@tonic-gate 		break;
1468*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MUL_E_D:		/* exprA * B */
1469*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1470*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1471*7c478bd9Sstevel@tonic-gate 		printi(0, " * ");
1472*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1473*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1474*7c478bd9Sstevel@tonic-gate 		break;
1475*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MUL_E_R:		/* exprA * varB */
1476*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1477*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1478*7c478bd9Sstevel@tonic-gate 		printi(0, " * ");
1479*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1480*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1481*7c478bd9Sstevel@tonic-gate 		break;
1482*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MUL_E_INVD:	/* exprA * in[B] */
1483*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1484*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1485*7c478bd9Sstevel@tonic-gate 		printi(0, " * ");
1486*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1487*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1488*7c478bd9Sstevel@tonic-gate 		break;
1489*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MUL_D_E:		/* intA * exprB */
1490*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1491*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1492*7c478bd9Sstevel@tonic-gate 		printi(0, " * ");
1493*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1494*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1495*7c478bd9Sstevel@tonic-gate 		break;
1496*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MUL_D_D:		/* intA * B */
1497*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1498*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1499*7c478bd9Sstevel@tonic-gate 		printi(0, " * ");
1500*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1501*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1502*7c478bd9Sstevel@tonic-gate 		break;
1503*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MUL_D_R:		/* intA * varB */
1504*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1505*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1506*7c478bd9Sstevel@tonic-gate 		printi(0, " * ");
1507*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1508*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1509*7c478bd9Sstevel@tonic-gate 		break;
1510*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MUL_D_INVD:	/* intA * in[B] */
1511*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1512*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1513*7c478bd9Sstevel@tonic-gate 		printi(0, " * ");
1514*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1515*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1516*7c478bd9Sstevel@tonic-gate 		break;
1517*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MUL_R_E:		/* varA * exprB */
1518*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1519*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1520*7c478bd9Sstevel@tonic-gate 		printi(0, " * ");
1521*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1522*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1523*7c478bd9Sstevel@tonic-gate 		break;
1524*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MUL_R_D:		/* varA * B */
1525*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1526*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1527*7c478bd9Sstevel@tonic-gate 		printi(0, " * ");
1528*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1529*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1530*7c478bd9Sstevel@tonic-gate 		break;
1531*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MUL_R_R:		/* varA * varB */
1532*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1533*7c478bd9Sstevel@tonic-gate 		printi(0, " * ");
1534*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1535*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1536*7c478bd9Sstevel@tonic-gate 		break;
1537*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MUL_R_INVD:	/* varA * in[B] */
1538*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1539*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1540*7c478bd9Sstevel@tonic-gate 		printi(0, " * ");
1541*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1542*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1543*7c478bd9Sstevel@tonic-gate 		break;
1544*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MUL_INVD_E:	/* in[A] * exprB */
1545*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1546*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1547*7c478bd9Sstevel@tonic-gate 		printi(0, " * ");
1548*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1549*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1550*7c478bd9Sstevel@tonic-gate 		break;
1551*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MUL_INVD_D:	/* in[A] * B */
1552*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1553*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1554*7c478bd9Sstevel@tonic-gate 		printi(0, " * ");
1555*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1556*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1557*7c478bd9Sstevel@tonic-gate 		break;
1558*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MUL_INVD_R:	/* in[A] * varB */
1559*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1560*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1561*7c478bd9Sstevel@tonic-gate 		printi(0, " * ");
1562*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1563*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1564*7c478bd9Sstevel@tonic-gate 		break;
1565*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MUL_INVD_INVD:	/* in[A] * in[B] */
1566*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1567*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1568*7c478bd9Sstevel@tonic-gate 		printi(0, " * ");
1569*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1570*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1571*7c478bd9Sstevel@tonic-gate 		break;
1572*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_DIV:		/* A  / B */
1573*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1574*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1575*7c478bd9Sstevel@tonic-gate 		printi(0, " / ");
1576*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1577*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1578*7c478bd9Sstevel@tonic-gate 		break;
1579*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_DIV_E_D:		/* exprA / B */
1580*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1581*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1582*7c478bd9Sstevel@tonic-gate 		printi(0, " / ");
1583*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1584*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1585*7c478bd9Sstevel@tonic-gate 		break;
1586*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_DIV_E_R:		/* exprA / varB */
1587*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1588*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1589*7c478bd9Sstevel@tonic-gate 		printi(0, " / ");
1590*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1591*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1592*7c478bd9Sstevel@tonic-gate 		break;
1593*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_DIV_E_INVD:	/* exprA / in[B] */
1594*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1595*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1596*7c478bd9Sstevel@tonic-gate 		printi(0, " / ");
1597*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1598*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1599*7c478bd9Sstevel@tonic-gate 		break;
1600*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_DIV_D_E:		/* intA / exprB */
1601*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1602*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1603*7c478bd9Sstevel@tonic-gate 		printi(0, " / ");
1604*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1605*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1606*7c478bd9Sstevel@tonic-gate 		break;
1607*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_DIV_D_D:		/* intA / B */
1608*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1609*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1610*7c478bd9Sstevel@tonic-gate 		printi(0, " / ");
1611*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1612*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1613*7c478bd9Sstevel@tonic-gate 		break;
1614*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_DIV_D_R:		/* intA / varB */
1615*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1616*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1617*7c478bd9Sstevel@tonic-gate 		printi(0, " / ");
1618*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1619*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1620*7c478bd9Sstevel@tonic-gate 		break;
1621*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_DIV_D_INVD:	/* intA / in[B] */
1622*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1623*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1624*7c478bd9Sstevel@tonic-gate 		printi(0, " / ");
1625*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1626*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1627*7c478bd9Sstevel@tonic-gate 		break;
1628*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_DIV_R_E:		/* varA / exprB */
1629*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1630*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1631*7c478bd9Sstevel@tonic-gate 		printi(0, " / ");
1632*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1633*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1634*7c478bd9Sstevel@tonic-gate 		break;
1635*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_DIV_R_D:		/* varA / B */
1636*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1637*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1638*7c478bd9Sstevel@tonic-gate 		printi(0, " / ");
1639*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1640*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1641*7c478bd9Sstevel@tonic-gate 		break;
1642*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_DIV_R_R:		/* varA / varB */
1643*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1644*7c478bd9Sstevel@tonic-gate 		printi(0, " / ");
1645*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1646*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1647*7c478bd9Sstevel@tonic-gate 		break;
1648*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_DIV_R_INVD:	/* varA / in[B] */
1649*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1650*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1651*7c478bd9Sstevel@tonic-gate 		printi(0, " / ");
1652*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1653*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1654*7c478bd9Sstevel@tonic-gate 		break;
1655*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_DIV_INVD_E:	/* in[A] / exprB */
1656*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1657*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1658*7c478bd9Sstevel@tonic-gate 		printi(0, " / ");
1659*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1660*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1661*7c478bd9Sstevel@tonic-gate 		break;
1662*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_DIV_INVD_D:	/* in[A] / B */
1663*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1664*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1665*7c478bd9Sstevel@tonic-gate 		printi(0, " / ");
1666*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1667*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1668*7c478bd9Sstevel@tonic-gate 		break;
1669*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_DIV_INVD_R:	/* in[A] / varB */
1670*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1671*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1672*7c478bd9Sstevel@tonic-gate 		printi(0, " / ");
1673*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1674*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1675*7c478bd9Sstevel@tonic-gate 		break;
1676*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_DIV_INVD_INVD:	/* in[A] / in[B] */
1677*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1678*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1679*7c478bd9Sstevel@tonic-gate 		printi(0, " / ");
1680*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1681*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1682*7c478bd9Sstevel@tonic-gate 		break;
1683*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MOD:		/* A  % B */
1684*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1685*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1686*7c478bd9Sstevel@tonic-gate 		printi(0, " %% ");
1687*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1688*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1689*7c478bd9Sstevel@tonic-gate 		break;
1690*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MOD_E_D:		/* exprA % B */
1691*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1692*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1693*7c478bd9Sstevel@tonic-gate 		printi(0, " %% ");
1694*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1695*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1696*7c478bd9Sstevel@tonic-gate 		break;
1697*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MOD_E_R:		/* exprA % varB */
1698*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1699*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1700*7c478bd9Sstevel@tonic-gate 		printi(0, " %% ");
1701*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1702*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1703*7c478bd9Sstevel@tonic-gate 		break;
1704*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MOD_E_INVD:	/* exprA % in[B] */
1705*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1706*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1707*7c478bd9Sstevel@tonic-gate 		printi(0, " %% ");
1708*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1709*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1710*7c478bd9Sstevel@tonic-gate 		break;
1711*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MOD_D_E:		/* intA % exprB */
1712*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1713*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1714*7c478bd9Sstevel@tonic-gate 		printi(0, " %% ");
1715*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1716*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1717*7c478bd9Sstevel@tonic-gate 		break;
1718*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MOD_D_D:		/* intA % B */
1719*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1720*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1721*7c478bd9Sstevel@tonic-gate 		printi(0, " %% ");
1722*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1723*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1724*7c478bd9Sstevel@tonic-gate 		break;
1725*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MOD_D_R:		/* intA % varB */
1726*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1727*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1728*7c478bd9Sstevel@tonic-gate 		printi(0, " %% ");
1729*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1730*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1731*7c478bd9Sstevel@tonic-gate 		break;
1732*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MOD_D_INVD:	/* intA % in[B] */
1733*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1734*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1735*7c478bd9Sstevel@tonic-gate 		printi(0, " %% ");
1736*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1737*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1738*7c478bd9Sstevel@tonic-gate 		break;
1739*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MOD_R_E:		/* varA % exprB */
1740*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1741*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1742*7c478bd9Sstevel@tonic-gate 		printi(0, " %% ");
1743*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1744*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1745*7c478bd9Sstevel@tonic-gate 		break;
1746*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MOD_R_D:		/* varA % B */
1747*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1748*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1749*7c478bd9Sstevel@tonic-gate 		printi(0, " %% ");
1750*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1751*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1752*7c478bd9Sstevel@tonic-gate 		break;
1753*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MOD_R_R:		/* varA % varB */
1754*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1755*7c478bd9Sstevel@tonic-gate 		printi(0, " %% ");
1756*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1757*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1758*7c478bd9Sstevel@tonic-gate 		break;
1759*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MOD_R_INVD:	/* varA % in[B] */
1760*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1761*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1762*7c478bd9Sstevel@tonic-gate 		printi(0, " %% ");
1763*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1764*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1765*7c478bd9Sstevel@tonic-gate 		break;
1766*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MOD_INVD_E:	/* in[A] % exprB */
1767*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1768*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1769*7c478bd9Sstevel@tonic-gate 		printi(0, " %% ");
1770*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1771*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1772*7c478bd9Sstevel@tonic-gate 		break;
1773*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MOD_INVD_D:	/* in[A] % B */
1774*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1775*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1776*7c478bd9Sstevel@tonic-gate 		printi(0, " %% ");
1777*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1778*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1779*7c478bd9Sstevel@tonic-gate 		break;
1780*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MOD_INVD_R:	/* in[A] % varB */
1781*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1782*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1783*7c478bd9Sstevel@tonic-gate 		printi(0, " %% ");
1784*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1785*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1786*7c478bd9Sstevel@tonic-gate 		break;
1787*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_MOD_INVD_INVD:	/* in[A] % in[B] */
1788*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1789*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1790*7c478bd9Sstevel@tonic-gate 		printi(0, " %% ");
1791*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1792*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1793*7c478bd9Sstevel@tonic-gate 		break;
1794*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_L:		/* A << B */
1795*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1796*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1797*7c478bd9Sstevel@tonic-gate 		printi(0, " << ");
1798*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1799*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1800*7c478bd9Sstevel@tonic-gate 		break;
1801*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_L_E_D:		/* exprA << B */
1802*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1803*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1804*7c478bd9Sstevel@tonic-gate 		printi(0, " << ");
1805*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1806*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1807*7c478bd9Sstevel@tonic-gate 		break;
1808*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_L_E_R:		/* exprA << varB */
1809*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1810*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1811*7c478bd9Sstevel@tonic-gate 		printi(0, " << ");
1812*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1813*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1814*7c478bd9Sstevel@tonic-gate 		break;
1815*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_L_E_INVD:	/* exprA << in[B] */
1816*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1817*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1818*7c478bd9Sstevel@tonic-gate 		printi(0, " << ");
1819*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1820*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1821*7c478bd9Sstevel@tonic-gate 		break;
1822*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_L_D_E:		/* intA << exprB */
1823*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1824*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1825*7c478bd9Sstevel@tonic-gate 		printi(0, " << ");
1826*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1827*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1828*7c478bd9Sstevel@tonic-gate 		break;
1829*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_L_D_D:		/* intA << B */
1830*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1831*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1832*7c478bd9Sstevel@tonic-gate 		printi(0, " << ");
1833*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1834*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1835*7c478bd9Sstevel@tonic-gate 		break;
1836*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_L_D_R:		/* intA << varB */
1837*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1838*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1839*7c478bd9Sstevel@tonic-gate 		printi(0, " << ");
1840*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1841*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1842*7c478bd9Sstevel@tonic-gate 		break;
1843*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_L_D_INVD:	/* intA << in[B] */
1844*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1845*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1846*7c478bd9Sstevel@tonic-gate 		printi(0, " << ");
1847*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1848*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1849*7c478bd9Sstevel@tonic-gate 		break;
1850*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_L_R_E:		/* varA << exprB */
1851*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1852*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1853*7c478bd9Sstevel@tonic-gate 		printi(0, " << ");
1854*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1855*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1856*7c478bd9Sstevel@tonic-gate 		break;
1857*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_L_R_D:		/* varA << B */
1858*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1859*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1860*7c478bd9Sstevel@tonic-gate 		printi(0, " << ");
1861*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1862*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1863*7c478bd9Sstevel@tonic-gate 		break;
1864*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_L_R_R:		/* varA << varB */
1865*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1866*7c478bd9Sstevel@tonic-gate 		printi(0, " << ");
1867*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1868*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1869*7c478bd9Sstevel@tonic-gate 		break;
1870*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_L_R_INVD:	/* varA << in[B] */
1871*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1872*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1873*7c478bd9Sstevel@tonic-gate 		printi(0, " << ");
1874*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1875*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1876*7c478bd9Sstevel@tonic-gate 		break;
1877*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_L_INVD_E:	/* in[A] << exprB */
1878*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1879*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1880*7c478bd9Sstevel@tonic-gate 		printi(0, " << ");
1881*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1882*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1883*7c478bd9Sstevel@tonic-gate 		break;
1884*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_L_INVD_D:	/* in[A] << B */
1885*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1886*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1887*7c478bd9Sstevel@tonic-gate 		printi(0, " << ");
1888*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1889*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1890*7c478bd9Sstevel@tonic-gate 		break;
1891*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_L_INVD_R:	/* in[A] << varB */
1892*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1893*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1894*7c478bd9Sstevel@tonic-gate 		printi(0, " << ");
1895*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1896*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1897*7c478bd9Sstevel@tonic-gate 		break;
1898*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_L_INVD_INVD:	/* in[A] << in[B] */
1899*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1900*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1901*7c478bd9Sstevel@tonic-gate 		printi(0, " << ");
1902*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1903*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1904*7c478bd9Sstevel@tonic-gate 		break;
1905*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_R:		/* A >> B */
1906*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1907*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1908*7c478bd9Sstevel@tonic-gate 		printi(0, " >> ");
1909*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1910*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1911*7c478bd9Sstevel@tonic-gate 		break;
1912*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_R_E_D:		/* exprA >> B */
1913*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1914*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1915*7c478bd9Sstevel@tonic-gate 		printi(0, " >> ");
1916*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1917*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1918*7c478bd9Sstevel@tonic-gate 		break;
1919*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_R_E_R:		/* exprA >> varB */
1920*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1921*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1922*7c478bd9Sstevel@tonic-gate 		printi(0, " >> ");
1923*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1924*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1925*7c478bd9Sstevel@tonic-gate 		break;
1926*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_R_E_INVD:	/* exprA >> in[B] */
1927*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1928*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
1929*7c478bd9Sstevel@tonic-gate 		printi(0, " >> ");
1930*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1931*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1932*7c478bd9Sstevel@tonic-gate 		break;
1933*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_R_D_E:		/* intA >> exprB */
1934*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1935*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1936*7c478bd9Sstevel@tonic-gate 		printi(0, " >> ");
1937*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1938*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1939*7c478bd9Sstevel@tonic-gate 		break;
1940*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_R_D_D:		/* intA >> B */
1941*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1942*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1943*7c478bd9Sstevel@tonic-gate 		printi(0, " >> ");
1944*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1945*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1946*7c478bd9Sstevel@tonic-gate 		break;
1947*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_R_D_R:		/* intA >> varB */
1948*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1949*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1950*7c478bd9Sstevel@tonic-gate 		printi(0, " >> ");
1951*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
1952*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1953*7c478bd9Sstevel@tonic-gate 		break;
1954*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_R_D_INVD:	/* intA >> in[B] */
1955*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1956*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
1957*7c478bd9Sstevel@tonic-gate 		printi(0, " >> ");
1958*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1959*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1960*7c478bd9Sstevel@tonic-gate 		break;
1961*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_R_R_E:		/* varA >> exprB */
1962*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1963*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1964*7c478bd9Sstevel@tonic-gate 		printi(0, " >> ");
1965*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1966*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1967*7c478bd9Sstevel@tonic-gate 		break;
1968*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_R_R_D:		/* varA >> B */
1969*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1970*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1971*7c478bd9Sstevel@tonic-gate 		printi(0, " >> ");
1972*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
1973*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1974*7c478bd9Sstevel@tonic-gate 		break;
1975*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_R_R_R:		/* varA >> varB */
1976*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1977*7c478bd9Sstevel@tonic-gate 		printi(0, " >> ");
1978*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1979*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1980*7c478bd9Sstevel@tonic-gate 		break;
1981*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_R_R_INVD:	/* varA >> in[B] */
1982*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1983*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
1984*7c478bd9Sstevel@tonic-gate 		printi(0, " >> ");
1985*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
1986*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1987*7c478bd9Sstevel@tonic-gate 		break;
1988*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_R_INVD_E:	/* in[A] >> exprB */
1989*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1990*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1991*7c478bd9Sstevel@tonic-gate 		printi(0, " >> ");
1992*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
1993*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
1994*7c478bd9Sstevel@tonic-gate 		break;
1995*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_R_INVD_D:	/* in[A] >> B */
1996*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
1997*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
1998*7c478bd9Sstevel@tonic-gate 		printi(0, " >> ");
1999*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2000*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2001*7c478bd9Sstevel@tonic-gate 		break;
2002*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_R_INVD_R:	/* in[A] >> varB */
2003*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2004*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2005*7c478bd9Sstevel@tonic-gate 		printi(0, " >> ");
2006*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2007*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2008*7c478bd9Sstevel@tonic-gate 		break;
2009*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_SHIFT_R_INVD_INVD:	/* in[A] >> in[B] */
2010*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2011*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2012*7c478bd9Sstevel@tonic-gate 		printi(0, " >> ");
2013*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2014*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2015*7c478bd9Sstevel@tonic-gate 		break;
2016*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_OR:		/* A  | B */
2017*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2018*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2019*7c478bd9Sstevel@tonic-gate 		printi(0, " | ");
2020*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2021*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2022*7c478bd9Sstevel@tonic-gate 		break;
2023*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_OR_E_D:		/* exprA | B */
2024*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2025*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2026*7c478bd9Sstevel@tonic-gate 		printi(0, " | ");
2027*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2028*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2029*7c478bd9Sstevel@tonic-gate 		break;
2030*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_OR_E_R:		/* exprA | varB */
2031*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2032*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2033*7c478bd9Sstevel@tonic-gate 		printi(0, " | ");
2034*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2035*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2036*7c478bd9Sstevel@tonic-gate 		break;
2037*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_OR_E_INVD:	/* exprA | in[B] */
2038*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2039*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2040*7c478bd9Sstevel@tonic-gate 		printi(0, " | ");
2041*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2042*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2043*7c478bd9Sstevel@tonic-gate 		break;
2044*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_OR_D_E:		/* intA | exprB */
2045*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2046*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2047*7c478bd9Sstevel@tonic-gate 		printi(0, " | ");
2048*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2049*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2050*7c478bd9Sstevel@tonic-gate 		break;
2051*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_OR_D_D:		/* intA | B */
2052*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2053*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2054*7c478bd9Sstevel@tonic-gate 		printi(0, " | ");
2055*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2056*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2057*7c478bd9Sstevel@tonic-gate 		break;
2058*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_OR_D_R:		/* intA | varB */
2059*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2060*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2061*7c478bd9Sstevel@tonic-gate 		printi(0, " | ");
2062*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2063*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2064*7c478bd9Sstevel@tonic-gate 		break;
2065*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_OR_D_INVD:	/* intA | in[B] */
2066*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2067*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2068*7c478bd9Sstevel@tonic-gate 		printi(0, " | ");
2069*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2070*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2071*7c478bd9Sstevel@tonic-gate 		break;
2072*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_OR_R_E:		/* varA | exprB */
2073*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2074*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2075*7c478bd9Sstevel@tonic-gate 		printi(0, " | ");
2076*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2077*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2078*7c478bd9Sstevel@tonic-gate 		break;
2079*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_OR_R_D:		/* varA | B */
2080*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2081*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2082*7c478bd9Sstevel@tonic-gate 		printi(0, " | ");
2083*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2084*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2085*7c478bd9Sstevel@tonic-gate 		break;
2086*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_OR_R_R:		/* varA | varB */
2087*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2088*7c478bd9Sstevel@tonic-gate 		printi(0, " | ");
2089*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2090*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2091*7c478bd9Sstevel@tonic-gate 		break;
2092*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_OR_R_INVD:	/* varA | in[B] */
2093*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2094*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2095*7c478bd9Sstevel@tonic-gate 		printi(0, " | ");
2096*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2097*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2098*7c478bd9Sstevel@tonic-gate 		break;
2099*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_OR_INVD_E:	/* in[A] | exprB */
2100*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2101*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2102*7c478bd9Sstevel@tonic-gate 		printi(0, " | ");
2103*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2104*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2105*7c478bd9Sstevel@tonic-gate 		break;
2106*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_OR_INVD_D:	/* in[A] | B */
2107*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2108*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2109*7c478bd9Sstevel@tonic-gate 		printi(0, " | ");
2110*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2111*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2112*7c478bd9Sstevel@tonic-gate 		break;
2113*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_OR_INVD_R:	/* in[A] | varB */
2114*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2115*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2116*7c478bd9Sstevel@tonic-gate 		printi(0, " | ");
2117*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2118*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2119*7c478bd9Sstevel@tonic-gate 		break;
2120*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_OR_INVD_INVD:	/* in[A] | in[B] */
2121*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2122*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2123*7c478bd9Sstevel@tonic-gate 		printi(0, " | ");
2124*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2125*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2126*7c478bd9Sstevel@tonic-gate 		break;
2127*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_XOR:		/* A  ^ B */
2128*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2129*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2130*7c478bd9Sstevel@tonic-gate 		printi(0, " ^ ");
2131*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2132*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2133*7c478bd9Sstevel@tonic-gate 		break;
2134*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_XOR_E_D:		/* exprA ^ B */
2135*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2136*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2137*7c478bd9Sstevel@tonic-gate 		printi(0, " ^ ");
2138*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2139*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2140*7c478bd9Sstevel@tonic-gate 		break;
2141*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_XOR_E_R:		/* exprA ^ varB */
2142*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2143*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2144*7c478bd9Sstevel@tonic-gate 		printi(0, " ^ ");
2145*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2146*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2147*7c478bd9Sstevel@tonic-gate 		break;
2148*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_XOR_E_INVD:	/* exprA ^ in[B] */
2149*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2150*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2151*7c478bd9Sstevel@tonic-gate 		printi(0, " ^ ");
2152*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2153*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2154*7c478bd9Sstevel@tonic-gate 		break;
2155*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_XOR_D_E:		/* intA ^ exprB */
2156*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2157*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2158*7c478bd9Sstevel@tonic-gate 		printi(0, " ^ ");
2159*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2160*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2161*7c478bd9Sstevel@tonic-gate 		break;
2162*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_XOR_D_D:		/* intA ^ B */
2163*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2164*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2165*7c478bd9Sstevel@tonic-gate 		printi(0, " ^ ");
2166*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2167*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2168*7c478bd9Sstevel@tonic-gate 		break;
2169*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_XOR_D_R:		/* intA ^ varB */
2170*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2171*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2172*7c478bd9Sstevel@tonic-gate 		printi(0, " ^ ");
2173*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2174*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2175*7c478bd9Sstevel@tonic-gate 		break;
2176*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_XOR_D_INVD:	/* intA ^ in[B] */
2177*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2178*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2179*7c478bd9Sstevel@tonic-gate 		printi(0, " ^ ");
2180*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2181*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2182*7c478bd9Sstevel@tonic-gate 		break;
2183*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_XOR_R_E:		/* varA ^ exprB */
2184*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2185*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2186*7c478bd9Sstevel@tonic-gate 		printi(0, " ^ ");
2187*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2188*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2189*7c478bd9Sstevel@tonic-gate 		break;
2190*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_XOR_R_D:		/* varA ^ B */
2191*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2192*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2193*7c478bd9Sstevel@tonic-gate 		printi(0, " ^ ");
2194*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2195*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2196*7c478bd9Sstevel@tonic-gate 		break;
2197*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_XOR_R_R:		/* varA ^ varB */
2198*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2199*7c478bd9Sstevel@tonic-gate 		printi(0, " ^ ");
2200*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2201*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2202*7c478bd9Sstevel@tonic-gate 		break;
2203*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_XOR_R_INVD:	/* varA ^ in[B] */
2204*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2205*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2206*7c478bd9Sstevel@tonic-gate 		printi(0, " ^ ");
2207*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2208*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2209*7c478bd9Sstevel@tonic-gate 		break;
2210*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_XOR_INVD_E:	/* in[A] ^ exprB */
2211*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2212*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2213*7c478bd9Sstevel@tonic-gate 		printi(0, " ^ ");
2214*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2215*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2216*7c478bd9Sstevel@tonic-gate 		break;
2217*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_XOR_INVD_D:	/* in[A] ^ B */
2218*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2219*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2220*7c478bd9Sstevel@tonic-gate 		printi(0, " ^ ");
2221*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2222*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2223*7c478bd9Sstevel@tonic-gate 		break;
2224*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_XOR_INVD_R:	/* in[A] ^ varB */
2225*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2226*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2227*7c478bd9Sstevel@tonic-gate 		printi(0, " ^ ");
2228*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2229*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2230*7c478bd9Sstevel@tonic-gate 		break;
2231*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_XOR_INVD_INVD:	/* in[A] ^ in[B] */
2232*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2233*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2234*7c478bd9Sstevel@tonic-gate 		printi(0, " ^ ");
2235*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2236*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2237*7c478bd9Sstevel@tonic-gate 		break;
2238*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_AND:		/* A  & B */
2239*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2240*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2241*7c478bd9Sstevel@tonic-gate 		printi(0, " & ");
2242*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2243*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2244*7c478bd9Sstevel@tonic-gate 		break;
2245*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_AND_E_D:		/* exprA & B */
2246*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2247*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2248*7c478bd9Sstevel@tonic-gate 		printi(0, " & ");
2249*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2250*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2251*7c478bd9Sstevel@tonic-gate 		break;
2252*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_AND_E_R:		/* exprA & varB */
2253*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2254*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2255*7c478bd9Sstevel@tonic-gate 		printi(0, " & ");
2256*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2257*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2258*7c478bd9Sstevel@tonic-gate 		break;
2259*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_AND_E_INVD:	/* exprA & in[B] */
2260*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2261*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2262*7c478bd9Sstevel@tonic-gate 		printi(0, " & ");
2263*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2264*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2265*7c478bd9Sstevel@tonic-gate 		break;
2266*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_AND_D_E:		/* intA & exprB */
2267*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2268*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2269*7c478bd9Sstevel@tonic-gate 		printi(0, " & ");
2270*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2271*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2272*7c478bd9Sstevel@tonic-gate 		break;
2273*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_AND_D_D:		/* intA & B */
2274*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2275*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2276*7c478bd9Sstevel@tonic-gate 		printi(0, " & ");
2277*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2278*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2279*7c478bd9Sstevel@tonic-gate 		break;
2280*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_AND_D_R:		/* intA & varB */
2281*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2282*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2283*7c478bd9Sstevel@tonic-gate 		printi(0, " & ");
2284*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2285*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2286*7c478bd9Sstevel@tonic-gate 		break;
2287*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_AND_D_INVD:	/* intA & in[B] */
2288*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2289*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2290*7c478bd9Sstevel@tonic-gate 		printi(0, " & ");
2291*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2292*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2293*7c478bd9Sstevel@tonic-gate 		break;
2294*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_AND_R_E:		/* varA & exprB */
2295*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2296*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2297*7c478bd9Sstevel@tonic-gate 		printi(0, " & ");
2298*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2299*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2300*7c478bd9Sstevel@tonic-gate 		break;
2301*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_AND_R_D:		/* varA & B */
2302*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2303*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2304*7c478bd9Sstevel@tonic-gate 		printi(0, " & ");
2305*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2306*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2307*7c478bd9Sstevel@tonic-gate 		break;
2308*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_AND_R_R:		/* varA & varB */
2309*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2310*7c478bd9Sstevel@tonic-gate 		printi(0, " & ");
2311*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2312*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2313*7c478bd9Sstevel@tonic-gate 		break;
2314*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_AND_R_INVD:	/* varA & in[B] */
2315*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2316*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2317*7c478bd9Sstevel@tonic-gate 		printi(0, " & ");
2318*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2319*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2320*7c478bd9Sstevel@tonic-gate 		break;
2321*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_AND_INVD_E:	/* in[A] & exprB */
2322*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2323*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2324*7c478bd9Sstevel@tonic-gate 		printi(0, " & ");
2325*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2326*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2327*7c478bd9Sstevel@tonic-gate 		break;
2328*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_AND_INVD_D:	/* in[A] & B */
2329*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2330*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2331*7c478bd9Sstevel@tonic-gate 		printi(0, " & ");
2332*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2333*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2334*7c478bd9Sstevel@tonic-gate 		break;
2335*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_AND_INVD_R:	/* in[A] & varB */
2336*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2337*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2338*7c478bd9Sstevel@tonic-gate 		printi(0, " & ");
2339*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2340*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2341*7c478bd9Sstevel@tonic-gate 		break;
2342*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_AND_INVD_INVD:	/* in[A] & in[B] */
2343*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2344*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2345*7c478bd9Sstevel@tonic-gate 		printi(0, " & ");
2346*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2347*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2348*7c478bd9Sstevel@tonic-gate 		break;
2349*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_EQ:		/* A == B */
2350*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2351*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2352*7c478bd9Sstevel@tonic-gate 		printi(0, " == ");
2353*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2354*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2355*7c478bd9Sstevel@tonic-gate 		break;
2356*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_EQ_E_D:		/* exprA == B */
2357*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2358*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2359*7c478bd9Sstevel@tonic-gate 		printi(0, " == ");
2360*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2361*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2362*7c478bd9Sstevel@tonic-gate 		break;
2363*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_EQ_E_R:		/* exprA == varB */
2364*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2365*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2366*7c478bd9Sstevel@tonic-gate 		printi(0, " == ");
2367*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2368*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2369*7c478bd9Sstevel@tonic-gate 		break;
2370*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_EQ_E_INVD:	/* exprA == in[B] */
2371*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2372*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2373*7c478bd9Sstevel@tonic-gate 		printi(0, " == ");
2374*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2375*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2376*7c478bd9Sstevel@tonic-gate 		break;
2377*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_EQ_D_E:		/* intA == exprB */
2378*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2379*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2380*7c478bd9Sstevel@tonic-gate 		printi(0, " == ");
2381*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2382*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2383*7c478bd9Sstevel@tonic-gate 		break;
2384*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_EQ_D_D:		/* intA == B */
2385*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2386*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2387*7c478bd9Sstevel@tonic-gate 		printi(0, " == ");
2388*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2389*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2390*7c478bd9Sstevel@tonic-gate 		break;
2391*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_EQ_D_R:		/* intA == varB */
2392*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2393*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2394*7c478bd9Sstevel@tonic-gate 		printi(0, " == ");
2395*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2396*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2397*7c478bd9Sstevel@tonic-gate 		break;
2398*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_EQ_D_INVD:	/* intA == in[B] */
2399*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2400*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2401*7c478bd9Sstevel@tonic-gate 		printi(0, " == ");
2402*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2403*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2404*7c478bd9Sstevel@tonic-gate 		break;
2405*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_EQ_R_E:		/* varA == exprB */
2406*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2407*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2408*7c478bd9Sstevel@tonic-gate 		printi(0, " == ");
2409*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2410*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2411*7c478bd9Sstevel@tonic-gate 		break;
2412*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_EQ_R_D:		/* varA == B */
2413*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2414*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2415*7c478bd9Sstevel@tonic-gate 		printi(0, " == ");
2416*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2417*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2418*7c478bd9Sstevel@tonic-gate 		break;
2419*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_EQ_R_R:		/* varA == varB */
2420*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2421*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2422*7c478bd9Sstevel@tonic-gate 		printi(0, " == ");
2423*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2424*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2425*7c478bd9Sstevel@tonic-gate 		break;
2426*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_EQ_R_INVD:	/* varA == in[B] */
2427*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2428*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2429*7c478bd9Sstevel@tonic-gate 		printi(0, " == ");
2430*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2431*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2432*7c478bd9Sstevel@tonic-gate 		break;
2433*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_EQ_INVD_E:	/* in[A] == exprB */
2434*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2435*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2436*7c478bd9Sstevel@tonic-gate 		printi(0, " == ");
2437*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2438*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2439*7c478bd9Sstevel@tonic-gate 		break;
2440*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_EQ_INVD_D:	/* in[A] == B */
2441*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2442*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2443*7c478bd9Sstevel@tonic-gate 		printi(0, " == ");
2444*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2445*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2446*7c478bd9Sstevel@tonic-gate 		break;
2447*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_EQ_INVD_R:	/* in[A] == varB */
2448*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2449*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2450*7c478bd9Sstevel@tonic-gate 		printi(0, " == ");
2451*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2452*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2453*7c478bd9Sstevel@tonic-gate 		break;
2454*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_EQ_INVD_INVD:	/* in[A] == in[B] */
2455*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2456*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2457*7c478bd9Sstevel@tonic-gate 		printi(0, " == ");
2458*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2459*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2460*7c478bd9Sstevel@tonic-gate 		break;
2461*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NE:		/* A != B */
2462*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2463*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2464*7c478bd9Sstevel@tonic-gate 		printi(0, " != ");
2465*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2466*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2467*7c478bd9Sstevel@tonic-gate 		break;
2468*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NE_E_D:		/* exprA != B */
2469*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2470*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2471*7c478bd9Sstevel@tonic-gate 		printi(0, " != ");
2472*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2473*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2474*7c478bd9Sstevel@tonic-gate 		break;
2475*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NE_E_R:		/* exprA != varB */
2476*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2477*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2478*7c478bd9Sstevel@tonic-gate 		printi(0, " != ");
2479*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2480*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2481*7c478bd9Sstevel@tonic-gate 		break;
2482*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NE_E_INVD:	/* exprA != in[B] */
2483*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2484*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2485*7c478bd9Sstevel@tonic-gate 		printi(0, " != ");
2486*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2487*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2488*7c478bd9Sstevel@tonic-gate 		break;
2489*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NE_D_E:		/* intA != exprB */
2490*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2491*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2492*7c478bd9Sstevel@tonic-gate 		printi(0, " != ");
2493*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2494*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2495*7c478bd9Sstevel@tonic-gate 		break;
2496*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NE_D_D:		/* intA != B */
2497*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2498*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2499*7c478bd9Sstevel@tonic-gate 		printi(0, " != ");
2500*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2501*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2502*7c478bd9Sstevel@tonic-gate 		break;
2503*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NE_D_R:		/* intA != varB */
2504*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2505*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2506*7c478bd9Sstevel@tonic-gate 		printi(0, " != ");
2507*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2508*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2509*7c478bd9Sstevel@tonic-gate 		break;
2510*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NE_D_INVD:	/* intA != in[B] */
2511*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2512*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2513*7c478bd9Sstevel@tonic-gate 		printi(0, " != ");
2514*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2515*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2516*7c478bd9Sstevel@tonic-gate 		break;
2517*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NE_R_E:		/* varA != exprB */
2518*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2519*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2520*7c478bd9Sstevel@tonic-gate 		printi(0, " != ");
2521*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2522*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2523*7c478bd9Sstevel@tonic-gate 		break;
2524*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NE_R_D:		/* varA != B */
2525*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2526*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2527*7c478bd9Sstevel@tonic-gate 		printi(0, " != ");
2528*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2529*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2530*7c478bd9Sstevel@tonic-gate 		break;
2531*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NE_R_R:		/* varA != varB */
2532*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2533*7c478bd9Sstevel@tonic-gate 		printi(0, " != ");
2534*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2535*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2536*7c478bd9Sstevel@tonic-gate 		break;
2537*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NE_R_INVD:	/* varA != in[B] */
2538*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2539*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2540*7c478bd9Sstevel@tonic-gate 		printi(0, " != ");
2541*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2542*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2543*7c478bd9Sstevel@tonic-gate 		break;
2544*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NE_INVD_E:	/* in[A] != exprB */
2545*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2546*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2547*7c478bd9Sstevel@tonic-gate 		printi(0, " != ");
2548*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2549*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2550*7c478bd9Sstevel@tonic-gate 		break;
2551*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NE_INVD_D:	/* in[A] != B */
2552*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2553*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2554*7c478bd9Sstevel@tonic-gate 		printi(0, " != ");
2555*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2556*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2557*7c478bd9Sstevel@tonic-gate 		break;
2558*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NE_INVD_R:	/* in[A] != varB */
2559*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2560*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2561*7c478bd9Sstevel@tonic-gate 		printi(0, " != ");
2562*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2563*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2564*7c478bd9Sstevel@tonic-gate 		break;
2565*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NE_INVD_INVD:	/* in[A] != in[B] */
2566*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2567*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2568*7c478bd9Sstevel@tonic-gate 		printi(0, " != ");
2569*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2570*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2571*7c478bd9Sstevel@tonic-gate 		break;
2572*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GT:		/* A  > B */
2573*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2574*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2575*7c478bd9Sstevel@tonic-gate 		printi(0, " > ");
2576*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2577*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2578*7c478bd9Sstevel@tonic-gate 		break;
2579*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GT_E_D:		/* exprA > B */
2580*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2581*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2582*7c478bd9Sstevel@tonic-gate 		printi(0, " > ");
2583*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2584*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2585*7c478bd9Sstevel@tonic-gate 		break;
2586*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GT_E_R:		/* exprA > varB */
2587*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2588*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2589*7c478bd9Sstevel@tonic-gate 		printi(0, " > ");
2590*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2591*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2592*7c478bd9Sstevel@tonic-gate 		break;
2593*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GT_E_INVD:	/* exprA > in[B] */
2594*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2595*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2596*7c478bd9Sstevel@tonic-gate 		printi(0, " > ");
2597*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2598*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2599*7c478bd9Sstevel@tonic-gate 		break;
2600*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GT_D_E:		/* intA > exprB */
2601*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2602*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2603*7c478bd9Sstevel@tonic-gate 		printi(0, " > ");
2604*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2605*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2606*7c478bd9Sstevel@tonic-gate 		break;
2607*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GT_D_D:		/* intA > B */
2608*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2609*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2610*7c478bd9Sstevel@tonic-gate 		printi(0, " > ");
2611*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2612*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2613*7c478bd9Sstevel@tonic-gate 		break;
2614*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GT_D_R:		/* intA > varB */
2615*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2616*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2617*7c478bd9Sstevel@tonic-gate 		printi(0, " > ");
2618*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2619*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2620*7c478bd9Sstevel@tonic-gate 		break;
2621*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GT_D_INVD:	/* intA > in[B] */
2622*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2623*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2624*7c478bd9Sstevel@tonic-gate 		printi(0, " > ");
2625*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2626*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2627*7c478bd9Sstevel@tonic-gate 		break;
2628*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GT_R_E:		/* varA > exprB */
2629*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2630*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2631*7c478bd9Sstevel@tonic-gate 		printi(0, " > ");
2632*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2633*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2634*7c478bd9Sstevel@tonic-gate 		break;
2635*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GT_R_D:		/* varA > B */
2636*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2637*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2638*7c478bd9Sstevel@tonic-gate 		printi(0, " > ");
2639*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2640*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2641*7c478bd9Sstevel@tonic-gate 		break;
2642*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GT_R_R:		/* varA > varB */
2643*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2644*7c478bd9Sstevel@tonic-gate 		printi(0, " > ");
2645*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2646*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2647*7c478bd9Sstevel@tonic-gate 		break;
2648*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GT_R_INVD:	/* varA > in[B] */
2649*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2650*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2651*7c478bd9Sstevel@tonic-gate 		printi(0, " > ");
2652*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2653*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2654*7c478bd9Sstevel@tonic-gate 		break;
2655*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GT_INVD_E:	/* in[A] > exprB */
2656*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2657*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2658*7c478bd9Sstevel@tonic-gate 		printi(0, " > ");
2659*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2660*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2661*7c478bd9Sstevel@tonic-gate 		break;
2662*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GT_INVD_D:	/* in[A] > B */
2663*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2664*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2665*7c478bd9Sstevel@tonic-gate 		printi(0, " > ");
2666*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2667*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2668*7c478bd9Sstevel@tonic-gate 		break;
2669*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GT_INVD_R:	/* in[A] > varB */
2670*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2671*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2672*7c478bd9Sstevel@tonic-gate 		printi(0, " > ");
2673*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2674*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2675*7c478bd9Sstevel@tonic-gate 		break;
2676*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GT_INVD_INVD:	/* in[A] > in[B] */
2677*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2678*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2679*7c478bd9Sstevel@tonic-gate 		printi(0, " > ");
2680*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2681*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2682*7c478bd9Sstevel@tonic-gate 		break;
2683*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GE:		/* A >= B */
2684*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2685*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2686*7c478bd9Sstevel@tonic-gate 		printi(0, " >= ");
2687*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2688*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2689*7c478bd9Sstevel@tonic-gate 		break;
2690*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GE_E_D:		/* exprA >= B */
2691*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2692*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2693*7c478bd9Sstevel@tonic-gate 		printi(0, " >= ");
2694*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2695*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2696*7c478bd9Sstevel@tonic-gate 		break;
2697*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GE_E_R:		/* exprA >= varB */
2698*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2699*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2700*7c478bd9Sstevel@tonic-gate 		printi(0, " >= ");
2701*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2702*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2703*7c478bd9Sstevel@tonic-gate 		break;
2704*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GE_E_INVD:	/* exprA >= in[B] */
2705*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2706*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2707*7c478bd9Sstevel@tonic-gate 		printi(0, " >= ");
2708*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2709*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2710*7c478bd9Sstevel@tonic-gate 		break;
2711*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GE_D_E:		/* intA >= exprB */
2712*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2713*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2714*7c478bd9Sstevel@tonic-gate 		printi(0, " >= ");
2715*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2716*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2717*7c478bd9Sstevel@tonic-gate 		break;
2718*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GE_D_D:		/* intA >= B */
2719*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2720*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2721*7c478bd9Sstevel@tonic-gate 		printi(0, " >= ");
2722*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2723*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2724*7c478bd9Sstevel@tonic-gate 		break;
2725*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GE_D_R:		/* intA >= varB */
2726*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2727*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2728*7c478bd9Sstevel@tonic-gate 		printi(0, " >= ");
2729*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2730*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2731*7c478bd9Sstevel@tonic-gate 		break;
2732*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GE_D_INVD:	/* intA >= in[B] */
2733*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2734*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2735*7c478bd9Sstevel@tonic-gate 		printi(0, " >= ");
2736*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2737*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2738*7c478bd9Sstevel@tonic-gate 		break;
2739*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GE_R_E:		/* varA >= exprB */
2740*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2741*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2742*7c478bd9Sstevel@tonic-gate 		printi(0, " >= ");
2743*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2744*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2745*7c478bd9Sstevel@tonic-gate 		break;
2746*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GE_R_D:		/* varA >= B */
2747*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2748*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2749*7c478bd9Sstevel@tonic-gate 		printi(0, " >= ");
2750*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2751*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2752*7c478bd9Sstevel@tonic-gate 		break;
2753*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GE_R_R:		/* varA >= varB */
2754*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2755*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2756*7c478bd9Sstevel@tonic-gate 		printi(0, " >= ");
2757*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2758*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2759*7c478bd9Sstevel@tonic-gate 		break;
2760*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GE_R_INVD:	/* varA >= in[B] */
2761*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2762*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2763*7c478bd9Sstevel@tonic-gate 		printi(0, " >= ");
2764*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2765*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2766*7c478bd9Sstevel@tonic-gate 		break;
2767*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GE_INVD_E:	/* in[A] >= exprB */
2768*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2769*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2770*7c478bd9Sstevel@tonic-gate 		printi(0, " >= ");
2771*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2772*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2773*7c478bd9Sstevel@tonic-gate 		break;
2774*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GE_INVD_D:	/* in[A] >= B */
2775*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2776*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2777*7c478bd9Sstevel@tonic-gate 		printi(0, " >= ");
2778*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2779*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2780*7c478bd9Sstevel@tonic-gate 		break;
2781*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GE_INVD_R:	/* in[A] >= varB */
2782*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2783*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2784*7c478bd9Sstevel@tonic-gate 		printi(0, " >= ");
2785*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2786*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2787*7c478bd9Sstevel@tonic-gate 		break;
2788*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_GE_INVD_INVD:	/* in[A] >= in[B] */
2789*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2790*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2791*7c478bd9Sstevel@tonic-gate 		printi(0, " >= ");
2792*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2793*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2794*7c478bd9Sstevel@tonic-gate 		break;
2795*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LT:		/* A  < B */
2796*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2797*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2798*7c478bd9Sstevel@tonic-gate 		printi(0, " < ");
2799*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2800*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2801*7c478bd9Sstevel@tonic-gate 		break;
2802*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LT_E_D:		/* exprA < B */
2803*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2804*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2805*7c478bd9Sstevel@tonic-gate 		printi(0, " < ");
2806*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2807*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2808*7c478bd9Sstevel@tonic-gate 		break;
2809*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LT_E_R:		/* exprA < varB */
2810*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2811*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2812*7c478bd9Sstevel@tonic-gate 		printi(0, " < ");
2813*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2814*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2815*7c478bd9Sstevel@tonic-gate 		break;
2816*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LT_E_INVD:	/* exprA < in[B] */
2817*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2818*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2819*7c478bd9Sstevel@tonic-gate 		printi(0, " < ");
2820*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2821*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2822*7c478bd9Sstevel@tonic-gate 		break;
2823*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LT_D_E:		/* intA < exprB */
2824*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2825*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2826*7c478bd9Sstevel@tonic-gate 		printi(0, " < ");
2827*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2828*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2829*7c478bd9Sstevel@tonic-gate 		break;
2830*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LT_D_D:		/* intA < B */
2831*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2832*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2833*7c478bd9Sstevel@tonic-gate 		printi(0, " < ");
2834*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2835*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2836*7c478bd9Sstevel@tonic-gate 		break;
2837*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LT_D_R:		/* intA < varB */
2838*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2839*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2840*7c478bd9Sstevel@tonic-gate 		printi(0, " < ");
2841*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2842*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2843*7c478bd9Sstevel@tonic-gate 		break;
2844*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LT_D_INVD:	/* intA < in[B] */
2845*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2846*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2847*7c478bd9Sstevel@tonic-gate 		printi(0, " < ");
2848*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2849*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2850*7c478bd9Sstevel@tonic-gate 		break;
2851*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LT_R_E:		/* varA < exprB */
2852*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2853*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2854*7c478bd9Sstevel@tonic-gate 		printi(0, " < ");
2855*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2856*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2857*7c478bd9Sstevel@tonic-gate 		break;
2858*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LT_R_D:		/* varA < B */
2859*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2860*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2861*7c478bd9Sstevel@tonic-gate 		printi(0, " < ");
2862*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2863*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2864*7c478bd9Sstevel@tonic-gate 		break;
2865*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LT_R_R:		/* varA < varB */
2866*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2867*7c478bd9Sstevel@tonic-gate 		printi(0, " < ");
2868*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2869*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2870*7c478bd9Sstevel@tonic-gate 		break;
2871*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LT_R_INVD:	/* varA < in[B] */
2872*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2873*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2874*7c478bd9Sstevel@tonic-gate 		printi(0, " < ");
2875*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2876*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2877*7c478bd9Sstevel@tonic-gate 		break;
2878*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LT_INVD_E:	/* in[A] < exprB */
2879*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2880*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2881*7c478bd9Sstevel@tonic-gate 		printi(0, " < ");
2882*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2883*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2884*7c478bd9Sstevel@tonic-gate 		break;
2885*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LT_INVD_D:	/* in[A] < B */
2886*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2887*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2888*7c478bd9Sstevel@tonic-gate 		printi(0, " < ");
2889*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2890*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2891*7c478bd9Sstevel@tonic-gate 		break;
2892*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LT_INVD_R:	/* in[A] < varB */
2893*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2894*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2895*7c478bd9Sstevel@tonic-gate 		printi(0, " < ");
2896*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2897*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2898*7c478bd9Sstevel@tonic-gate 		break;
2899*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LT_INVD_INVD:	/* in[A] < in[B] */
2900*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2901*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2902*7c478bd9Sstevel@tonic-gate 		printi(0, " < ");
2903*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2904*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2905*7c478bd9Sstevel@tonic-gate 		break;
2906*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LE:		/* A <= B */
2907*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2908*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2909*7c478bd9Sstevel@tonic-gate 		printi(0, " <= ");
2910*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2911*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2912*7c478bd9Sstevel@tonic-gate 		break;
2913*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LE_E_D:		/* exprA <= B */
2914*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2915*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2916*7c478bd9Sstevel@tonic-gate 		printi(0, " <= ");
2917*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2918*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2919*7c478bd9Sstevel@tonic-gate 		break;
2920*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LE_E_R:		/* exprA <= varB */
2921*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2922*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2923*7c478bd9Sstevel@tonic-gate 		printi(0, " <= ");
2924*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2925*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2926*7c478bd9Sstevel@tonic-gate 		break;
2927*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LE_E_INVD:	/* exprA <= in[B] */
2928*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2929*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
2930*7c478bd9Sstevel@tonic-gate 		printi(0, " <= ");
2931*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2932*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2933*7c478bd9Sstevel@tonic-gate 		break;
2934*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LE_D_E:		/* intA <= exprB */
2935*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2936*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2937*7c478bd9Sstevel@tonic-gate 		printi(0, " <= ");
2938*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2939*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2940*7c478bd9Sstevel@tonic-gate 		break;
2941*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LE_D_D:		/* intA <= B */
2942*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2943*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2944*7c478bd9Sstevel@tonic-gate 		printi(0, " <= ");
2945*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2946*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2947*7c478bd9Sstevel@tonic-gate 		break;
2948*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LE_D_R:		/* intA <= varB */
2949*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2950*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2951*7c478bd9Sstevel@tonic-gate 		printi(0, " <= ");
2952*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
2953*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2954*7c478bd9Sstevel@tonic-gate 		break;
2955*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LE_D_INVD:	/* intA <= in[B] */
2956*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2957*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[0].itm_ptr);
2958*7c478bd9Sstevel@tonic-gate 		printi(0, " <= ");
2959*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2960*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2961*7c478bd9Sstevel@tonic-gate 		break;
2962*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LE_R_E:		/* varA <= exprB */
2963*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2964*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2965*7c478bd9Sstevel@tonic-gate 		printi(0, " <= ");
2966*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2967*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2968*7c478bd9Sstevel@tonic-gate 		break;
2969*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LE_R_D:		/* varA <= B */
2970*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2971*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2972*7c478bd9Sstevel@tonic-gate 		printi(0, " <= ");
2973*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
2974*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2975*7c478bd9Sstevel@tonic-gate 		break;
2976*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LE_R_R:		/* varA <= varB */
2977*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2978*7c478bd9Sstevel@tonic-gate 		printi(0, " <= ");
2979*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2980*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2981*7c478bd9Sstevel@tonic-gate 		break;
2982*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LE_R_INVD:	/* varA <= in[B] */
2983*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2984*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[0]));
2985*7c478bd9Sstevel@tonic-gate 		printi(0, " <= ");
2986*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
2987*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2988*7c478bd9Sstevel@tonic-gate 		break;
2989*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LE_INVD_E:	/* in[A] <= exprB */
2990*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2991*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2992*7c478bd9Sstevel@tonic-gate 		printi(0, " <= ");
2993*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
2994*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
2995*7c478bd9Sstevel@tonic-gate 		break;
2996*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LE_INVD_D:	/* in[A] <= B */
2997*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
2998*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
2999*7c478bd9Sstevel@tonic-gate 		printi(0, " <= ");
3000*7c478bd9Sstevel@tonic-gate 		printi(0, "%ld", expr->data.operand[1].itm_ptr);
3001*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
3002*7c478bd9Sstevel@tonic-gate 		break;
3003*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LE_INVD_R:	/* in[A] <= varB */
3004*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
3005*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
3006*7c478bd9Sstevel@tonic-gate 		printi(0, " <= ");
3007*7c478bd9Sstevel@tonic-gate 		printi(0, "%s", reg_name(itm_hdr, expr->data.operand[1]));
3008*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
3009*7c478bd9Sstevel@tonic-gate 		break;
3010*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LE_INVD_INVD:	/* in[A] <= in[B] */
3011*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
3012*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[0].itm_ptr);
3013*7c478bd9Sstevel@tonic-gate 		printi(0, " <= ");
3014*7c478bd9Sstevel@tonic-gate 		printi(0, RNPREF "in[%ld]", expr->data.operand[1].itm_ptr);
3015*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
3016*7c478bd9Sstevel@tonic-gate 		break;
3017*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NOT:		/*   !A	  */
3018*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
3019*7c478bd9Sstevel@tonic-gate 		printi(0, "!");
3020*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
3021*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
3022*7c478bd9Sstevel@tonic-gate 		break;
3023*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_NEG:		/*   ~A	  */
3024*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
3025*7c478bd9Sstevel@tonic-gate 		printi(0, " ~");
3026*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
3027*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
3028*7c478bd9Sstevel@tonic-gate 		break;
3029*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LOR:		/* A || B */
3030*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
3031*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
3032*7c478bd9Sstevel@tonic-gate 		printi(0, " || ");
3033*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
3034*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
3035*7c478bd9Sstevel@tonic-gate 		break;
3036*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_LAND:		/* A && B */
3037*7c478bd9Sstevel@tonic-gate 		printi(0, "(");
3038*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
3039*7c478bd9Sstevel@tonic-gate 		printi(0, " && ");
3040*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
3041*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
3042*7c478bd9Sstevel@tonic-gate 		break;
3043*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_ASSIGN:		/* A  = B */
3044*7c478bd9Sstevel@tonic-gate 		printi(0, "%s = ", reg_name(itm_hdr, expr->data.operand[0]));
3045*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[1]);
3046*7c478bd9Sstevel@tonic-gate 		break;
3047*7c478bd9Sstevel@tonic-gate 	case ITM_EXPR_IN_EQ:		/* in == A */
3048*7c478bd9Sstevel@tonic-gate 		printi(0, "(" RNPREF "in == ", 0);
3049*7c478bd9Sstevel@tonic-gate 		dump_expr(itm_hdr, expr->data.operand[0]);
3050*7c478bd9Sstevel@tonic-gate 		printi(0, ")");
3051*7c478bd9Sstevel@tonic-gate 		break;
3052*7c478bd9Sstevel@tonic-gate 	default:
3053*7c478bd9Sstevel@tonic-gate 		break;
3054*7c478bd9Sstevel@tonic-gate 	}
3055*7c478bd9Sstevel@tonic-gate }
3056*7c478bd9Sstevel@tonic-gate 
3057*7c478bd9Sstevel@tonic-gate 
3058*7c478bd9Sstevel@tonic-gate /*
3059*7c478bd9Sstevel@tonic-gate  * Dump range (between)
3060*7c478bd9Sstevel@tonic-gate  */
3061*7c478bd9Sstevel@tonic-gate static void
dump_range(itm_hdr_t * itm_hdr,itm_place_t range_place)3062*7c478bd9Sstevel@tonic-gate dump_range(itm_hdr_t	*itm_hdr, itm_place_t range_place)
3063*7c478bd9Sstevel@tonic-gate {
3064*7c478bd9Sstevel@tonic-gate 	itm_tbl_hdr_t	*rth;
3065*7c478bd9Sstevel@tonic-gate 	itm_range_hdr_t	*rtsh;
3066*7c478bd9Sstevel@tonic-gate 	unsigned char	*p;
3067*7c478bd9Sstevel@tonic-gate 	long		i;
3068*7c478bd9Sstevel@tonic-gate 	long		j;
3069*7c478bd9Sstevel@tonic-gate 
3070*7c478bd9Sstevel@tonic-gate 	rth = (itm_tbl_hdr_t *)(ADDR(range_place));
3071*7c478bd9Sstevel@tonic-gate 	rtsh = (itm_range_hdr_t *)(rth + 1);
3072*7c478bd9Sstevel@tonic-gate 	p = (unsigned char *)(rtsh + 1);
3073*7c478bd9Sstevel@tonic-gate 
3074*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('p', ("(&)between=%ld ", range_place.itm_ptr));
3075*7c478bd9Sstevel@tonic-gate 	printi(0, RNPREF "between ");
3076*7c478bd9Sstevel@tonic-gate 	for (i = 0; i < rth->number; i++) {
3077*7c478bd9Sstevel@tonic-gate 		if (0 != i)	printi(0, "\t ");
3078*7c478bd9Sstevel@tonic-gate 		printi(0, "0x");
3079*7c478bd9Sstevel@tonic-gate 		for (j = 0; j < rtsh->len; j++) {
3080*7c478bd9Sstevel@tonic-gate 			printi(0, "%02x", *(p++));
3081*7c478bd9Sstevel@tonic-gate 		}
3082*7c478bd9Sstevel@tonic-gate 		printi(0, " - ");
3083*7c478bd9Sstevel@tonic-gate 		printi(0, "0x");
3084*7c478bd9Sstevel@tonic-gate 		for (j = 0; j < rtsh->len; j++) {
3085*7c478bd9Sstevel@tonic-gate 			printi(0, "%02x", *(p++));
3086*7c478bd9Sstevel@tonic-gate 		}
3087*7c478bd9Sstevel@tonic-gate 		if (i < (rth->number - 1)) {
3088*7c478bd9Sstevel@tonic-gate 			printi(0, ",\n");
3089*7c478bd9Sstevel@tonic-gate 		} else {
3090*7c478bd9Sstevel@tonic-gate 			printi(0, ";\n");
3091*7c478bd9Sstevel@tonic-gate 		}
3092*7c478bd9Sstevel@tonic-gate 	}
3093*7c478bd9Sstevel@tonic-gate }
3094*7c478bd9Sstevel@tonic-gate 
3095*7c478bd9Sstevel@tonic-gate 
3096*7c478bd9Sstevel@tonic-gate /*
3097*7c478bd9Sstevel@tonic-gate  * Dump escape sequence
3098*7c478bd9Sstevel@tonic-gate  */
3099*7c478bd9Sstevel@tonic-gate static void
dump_escapeseq(itm_hdr_t * itm_hdr,itm_place_t escapeseq_place)3100*7c478bd9Sstevel@tonic-gate dump_escapeseq(itm_hdr_t	*itm_hdr, itm_place_t escapeseq_place)
3101*7c478bd9Sstevel@tonic-gate {
3102*7c478bd9Sstevel@tonic-gate 	itm_tbl_hdr_t		*eth;
3103*7c478bd9Sstevel@tonic-gate 	itm_escapeseq_hdr_t	*eh;
3104*7c478bd9Sstevel@tonic-gate 	itm_data_t		*d;
3105*7c478bd9Sstevel@tonic-gate 	itm_data_t		data;
3106*7c478bd9Sstevel@tonic-gate 
3107*7c478bd9Sstevel@tonic-gate 	long			i;
3108*7c478bd9Sstevel@tonic-gate 
3109*7c478bd9Sstevel@tonic-gate 
3110*7c478bd9Sstevel@tonic-gate 	eth = (itm_tbl_hdr_t *)(ADDR(escapeseq_place));
3111*7c478bd9Sstevel@tonic-gate 	eh = (itm_escapeseq_hdr_t *)(eth + 1);
3112*7c478bd9Sstevel@tonic-gate 	d = (itm_data_t *)(eh + 1);
3113*7c478bd9Sstevel@tonic-gate 	TRACE_MESSAGE('p', ("(&)escseq=%ld ", escapeseq_place.itm_ptr));
3114*7c478bd9Sstevel@tonic-gate 	printi(1, RNPREF "escapceseq {");
3115*7c478bd9Sstevel@tonic-gate 
3116*7c478bd9Sstevel@tonic-gate 	for (i = 0; i < eth->number; i++, d++) {
3117*7c478bd9Sstevel@tonic-gate 		if (0 != i)	printi(0, " ");
3118*7c478bd9Sstevel@tonic-gate 		data = *d;
3119*7c478bd9Sstevel@tonic-gate 		if ((sizeof (itm_place_t)) < data.size) {
3120*7c478bd9Sstevel@tonic-gate 			data.place.itm_ptr = (itm_place2_t)ADDR(d->place);
3121*7c478bd9Sstevel@tonic-gate 		}
3122*7c478bd9Sstevel@tonic-gate 		printi(0, "0x%s;", data_to_hexadecimal(&data));
3123*7c478bd9Sstevel@tonic-gate 	}
3124*7c478bd9Sstevel@tonic-gate 	printi(-1, "}\n");
3125*7c478bd9Sstevel@tonic-gate }
3126*7c478bd9Sstevel@tonic-gate 
3127*7c478bd9Sstevel@tonic-gate 
3128*7c478bd9Sstevel@tonic-gate static void
printi(int c,char * format,...)3129*7c478bd9Sstevel@tonic-gate printi(int c, char	*format, ...)
3130*7c478bd9Sstevel@tonic-gate {
3131*7c478bd9Sstevel@tonic-gate 	static int	indent_level;
3132*7c478bd9Sstevel@tonic-gate 	static int	new_line = 1;
3133*7c478bd9Sstevel@tonic-gate 	int		i;
3134*7c478bd9Sstevel@tonic-gate 	va_list		ap;
3135*7c478bd9Sstevel@tonic-gate 	va_start(ap, format);
3136*7c478bd9Sstevel@tonic-gate 
3137*7c478bd9Sstevel@tonic-gate 	if (c < 0) {
3138*7c478bd9Sstevel@tonic-gate 		indent_level += c;
3139*7c478bd9Sstevel@tonic-gate 		if (indent_level < 0) {
3140*7c478bd9Sstevel@tonic-gate 			indent_level = 0;
3141*7c478bd9Sstevel@tonic-gate 		}
3142*7c478bd9Sstevel@tonic-gate 	}
3143*7c478bd9Sstevel@tonic-gate 	if (new_line) {
3144*7c478bd9Sstevel@tonic-gate 		for (i = indent_level; 0 < i; i -= 1) {
3145*7c478bd9Sstevel@tonic-gate 			(void) putchar('\t');
3146*7c478bd9Sstevel@tonic-gate 		}
3147*7c478bd9Sstevel@tonic-gate 	}
3148*7c478bd9Sstevel@tonic-gate 	if (0 < c) {
3149*7c478bd9Sstevel@tonic-gate 		indent_level += c;
3150*7c478bd9Sstevel@tonic-gate 		if (indent_level < 0) {
3151*7c478bd9Sstevel@tonic-gate 			indent_level = 0;
3152*7c478bd9Sstevel@tonic-gate 		}
3153*7c478bd9Sstevel@tonic-gate 	}
3154*7c478bd9Sstevel@tonic-gate 
3155*7c478bd9Sstevel@tonic-gate 	if (NULL == strchr(format, '\n')) {
3156*7c478bd9Sstevel@tonic-gate 		new_line = 0;
3157*7c478bd9Sstevel@tonic-gate 	} else {
3158*7c478bd9Sstevel@tonic-gate 		new_line = 1;
3159*7c478bd9Sstevel@tonic-gate 	}
3160*7c478bd9Sstevel@tonic-gate 
3161*7c478bd9Sstevel@tonic-gate 	(void) vfprintf(stdout, format, ap);
3162*7c478bd9Sstevel@tonic-gate 
3163*7c478bd9Sstevel@tonic-gate 	va_end(ap);
3164*7c478bd9Sstevel@tonic-gate }
3165*7c478bd9Sstevel@tonic-gate 
3166*7c478bd9Sstevel@tonic-gate 
3167*7c478bd9Sstevel@tonic-gate static char *
name_place_to_str(itm_hdr_t * itm_hdr,itm_place2_t place)3168*7c478bd9Sstevel@tonic-gate name_place_to_str(itm_hdr_t	*itm_hdr, itm_place2_t place)
3169*7c478bd9Sstevel@tonic-gate {
3170*7c478bd9Sstevel@tonic-gate 	itm_data_t	d;
3171*7c478bd9Sstevel@tonic-gate 
3172*7c478bd9Sstevel@tonic-gate 	if (0 != place) {
3173*7c478bd9Sstevel@tonic-gate 		d = *((itm_data_t *)ADDR2(place));
3174*7c478bd9Sstevel@tonic-gate 		if ((sizeof (itm_place_t)) < d.size) {
3175*7c478bd9Sstevel@tonic-gate 			d.place.itm_ptr = (itm_place2_t)ADDR(d.place);
3176*7c478bd9Sstevel@tonic-gate 		}
3177*7c478bd9Sstevel@tonic-gate 	} else {
3178*7c478bd9Sstevel@tonic-gate 		d.size = 0;
3179*7c478bd9Sstevel@tonic-gate 		d.place.itm_ptr = 0;
3180*7c478bd9Sstevel@tonic-gate 	}
3181*7c478bd9Sstevel@tonic-gate 	return (name_to_str(&d));
3182*7c478bd9Sstevel@tonic-gate }
3183*7c478bd9Sstevel@tonic-gate 
3184*7c478bd9Sstevel@tonic-gate static char *
tbl_name(itm_hdr_t * itm_hdr,itm_tbl_hdr_t * tbl_hdr)3185*7c478bd9Sstevel@tonic-gate tbl_name(itm_hdr_t	*itm_hdr, itm_tbl_hdr_t		*tbl_hdr)
3186*7c478bd9Sstevel@tonic-gate {
3187*7c478bd9Sstevel@tonic-gate 	if (ITM_TBL_OP_INIT == tbl_hdr->type) {
3188*7c478bd9Sstevel@tonic-gate 		return (RNPREF "init");
3189*7c478bd9Sstevel@tonic-gate 	} else if (ITM_TBL_OP_RESET == tbl_hdr->type) {
3190*7c478bd9Sstevel@tonic-gate 		return (RNPREF "reset");
3191*7c478bd9Sstevel@tonic-gate 	} else if (tbl_hdr->name.itm_ptr) {
3192*7c478bd9Sstevel@tonic-gate 		return (name_place_to_str(itm_hdr, tbl_hdr->name.itm_ptr));
3193*7c478bd9Sstevel@tonic-gate 	} else {
3194*7c478bd9Sstevel@tonic-gate 		return (NULL);
3195*7c478bd9Sstevel@tonic-gate 	}
3196*7c478bd9Sstevel@tonic-gate }
3197*7c478bd9Sstevel@tonic-gate 
3198*7c478bd9Sstevel@tonic-gate 
3199*7c478bd9Sstevel@tonic-gate static char *
reg_name(itm_hdr_t * itm_hdr,itm_place_t op)3200*7c478bd9Sstevel@tonic-gate reg_name(itm_hdr_t	*itm_hdr, itm_place_t op)
3201*7c478bd9Sstevel@tonic-gate {
3202*7c478bd9Sstevel@tonic-gate 	itm_info_hdr_t		*info_hdr;
3203*7c478bd9Sstevel@tonic-gate 	static char		sbuf[32];
3204*7c478bd9Sstevel@tonic-gate 	itm_num_t		reg_num;
3205*7c478bd9Sstevel@tonic-gate 
3206*7c478bd9Sstevel@tonic-gate 	reg_num = (itm_num_t)(op.itm_ptr);
3207*7c478bd9Sstevel@tonic-gate 	if (0 == itm_hdr->info_hdr.itm_ptr) {
3208*7c478bd9Sstevel@tonic-gate 		(void) sprintf(sbuf, "reg%ld\n", reg_num);
3209*7c478bd9Sstevel@tonic-gate 		return (sbuf);
3210*7c478bd9Sstevel@tonic-gate 	} else {
3211*7c478bd9Sstevel@tonic-gate 		info_hdr = INFO_HDR(itm_hdr);
3212*7c478bd9Sstevel@tonic-gate 		return (name_place_to_str(
3213*7c478bd9Sstevel@tonic-gate 			itm_hdr,
3214*7c478bd9Sstevel@tonic-gate 			info_hdr->reg_plc_tbl.place.itm_ptr +
3215*7c478bd9Sstevel@tonic-gate 			(reg_num	*sizeof (itm_data_t))));
3216*7c478bd9Sstevel@tonic-gate 	}
3217*7c478bd9Sstevel@tonic-gate }
3218*7c478bd9Sstevel@tonic-gate 
3219*7c478bd9Sstevel@tonic-gate static itm_hdr_t *
itm_attach(const char * itm_file)3220*7c478bd9Sstevel@tonic-gate itm_attach(const char	*itm_file)
3221*7c478bd9Sstevel@tonic-gate {
3222*7c478bd9Sstevel@tonic-gate 	itm_hdr_t	*itm_hdr;
3223*7c478bd9Sstevel@tonic-gate 	struct stat	st;
3224*7c478bd9Sstevel@tonic-gate 	int		fd;
3225*7c478bd9Sstevel@tonic-gate 
3226*7c478bd9Sstevel@tonic-gate 	fd = open(itm_file, O_RDONLY, 0);
3227*7c478bd9Sstevel@tonic-gate 	if (fd == -1) {
3228*7c478bd9Sstevel@tonic-gate 		PERROR(gettext("open()"));
3229*7c478bd9Sstevel@tonic-gate 		return	(NULL);
3230*7c478bd9Sstevel@tonic-gate 	}
3231*7c478bd9Sstevel@tonic-gate 
3232*7c478bd9Sstevel@tonic-gate 	if (fstat(fd, &st) == -1) {
3233*7c478bd9Sstevel@tonic-gate 		PERROR(gettext("fstat()"));
3234*7c478bd9Sstevel@tonic-gate 		return	(NULL);
3235*7c478bd9Sstevel@tonic-gate 	}
3236*7c478bd9Sstevel@tonic-gate 	itm_hdr = (void *) mmap(NULL, st.st_size,
3237*7c478bd9Sstevel@tonic-gate 				    PROT_READ, MAP_SHARED, fd, 0);
3238*7c478bd9Sstevel@tonic-gate 	if (MAP_FAILED == itm_hdr) {
3239*7c478bd9Sstevel@tonic-gate 		PERROR(gettext("mmap()"));
3240*7c478bd9Sstevel@tonic-gate 		return	(NULL);
3241*7c478bd9Sstevel@tonic-gate 	}
3242*7c478bd9Sstevel@tonic-gate 
3243*7c478bd9Sstevel@tonic-gate 	(void) close(fd);
3244*7c478bd9Sstevel@tonic-gate 
3245*7c478bd9Sstevel@tonic-gate 	if ((itm_hdr->ident[0] != ITM_IDENT_0) ||
3246*7c478bd9Sstevel@tonic-gate 	    (itm_hdr->ident[1] != ITM_IDENT_1) ||
3247*7c478bd9Sstevel@tonic-gate 	    (itm_hdr->ident[2] != ITM_IDENT_2) ||
3248*7c478bd9Sstevel@tonic-gate 	    (itm_hdr->ident[3] != ITM_IDENT_3)) {
3249*7c478bd9Sstevel@tonic-gate 		itm_error(gettext("magic number error\n"));
3250*7c478bd9Sstevel@tonic-gate 		return	(NULL);
3251*7c478bd9Sstevel@tonic-gate 	}
3252*7c478bd9Sstevel@tonic-gate 	if ((itm_hdr->version[0] != ITM_VER_0) ||
3253*7c478bd9Sstevel@tonic-gate 	    (itm_hdr->version[1] != ITM_VER_1) ||
3254*7c478bd9Sstevel@tonic-gate 	    (itm_hdr->version[2] != ITM_VER_2) ||
3255*7c478bd9Sstevel@tonic-gate #if defined(_LITTLE_ENDIAN)
3256*7c478bd9Sstevel@tonic-gate #if defined(_LP64)
3257*7c478bd9Sstevel@tonic-gate 	    ((itm_hdr->spec[3] != ITM_SPEC_3_32_LITTLE_ENDIAN) &&
3258*7c478bd9Sstevel@tonic-gate 	    (itm_hdr->spec[3] != ITM_SPEC_3_64_LITTLE_ENDIAN))) {
3259*7c478bd9Sstevel@tonic-gate #else
3260*7c478bd9Sstevel@tonic-gate 	    (itm_hdr->spec[3] != ITM_SPEC_3_32_LITTLE_ENDIAN)) {
3261*7c478bd9Sstevel@tonic-gate #endif
3262*7c478bd9Sstevel@tonic-gate #else
3263*7c478bd9Sstevel@tonic-gate #if defined(_LP64)
3264*7c478bd9Sstevel@tonic-gate 	    ((itm_hdr->spec[3] != ITM_SPEC_3_32_BIG_ENDIAN) &&
3265*7c478bd9Sstevel@tonic-gate 	    (itm_hdr->spec[3] != ITM_SPEC_3_64_BIG_ENDIAN))) {
3266*7c478bd9Sstevel@tonic-gate #else
3267*7c478bd9Sstevel@tonic-gate 	    (itm_hdr->spec[3] != ITM_SPEC_3_32_BIG_ENDIAN)) {
3268*7c478bd9Sstevel@tonic-gate #endif
3269*7c478bd9Sstevel@tonic-gate #endif
3270*7c478bd9Sstevel@tonic-gate 		itm_error(gettext("version number error\n"));
3271*7c478bd9Sstevel@tonic-gate 		return	(NULL);
3272*7c478bd9Sstevel@tonic-gate 	}
3273*7c478bd9Sstevel@tonic-gate 	if (itm_hdr->itm_size.itm_ptr != st.st_size) {
3274*7c478bd9Sstevel@tonic-gate 		itm_error(gettext(
3275*7c478bd9Sstevel@tonic-gate 			"size error: expected=%1$d current=%2$d\n"),
3276*7c478bd9Sstevel@tonic-gate 			(size_t)(itm_hdr->itm_size.itm_ptr), st.st_size);
3277*7c478bd9Sstevel@tonic-gate 		return (NULL);
3278*7c478bd9Sstevel@tonic-gate 	}
3279*7c478bd9Sstevel@tonic-gate 
3280*7c478bd9Sstevel@tonic-gate 	return (itm_hdr);
3281*7c478bd9Sstevel@tonic-gate }
3282