1*7c478bd9Sstevel@tonic-gate %{ 2*7c478bd9Sstevel@tonic-gate /* 3*7c478bd9Sstevel@tonic-gate * CDDL HEADER START 4*7c478bd9Sstevel@tonic-gate * 5*7c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 6*7c478bd9Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only 7*7c478bd9Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance 8*7c478bd9Sstevel@tonic-gate * with the License. 9*7c478bd9Sstevel@tonic-gate * 10*7c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 11*7c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 12*7c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 13*7c478bd9Sstevel@tonic-gate * and limitations under the License. 14*7c478bd9Sstevel@tonic-gate * 15*7c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 16*7c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 17*7c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 18*7c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 19*7c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 20*7c478bd9Sstevel@tonic-gate * 21*7c478bd9Sstevel@tonic-gate * CDDL HEADER END 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 <ctype.h> 30*7c478bd9Sstevel@tonic-gate #include <libintl.h> 31*7c478bd9Sstevel@tonic-gate #include <errno.h> 32*7c478bd9Sstevel@tonic-gate 33*7c478bd9Sstevel@tonic-gate #include "iconv_tm.h" 34*7c478bd9Sstevel@tonic-gate #include "itmcomp.h" 35*7c478bd9Sstevel@tonic-gate #include "itm_util.h" 36*7c478bd9Sstevel@tonic-gate 37*7c478bd9Sstevel@tonic-gate %} 38*7c478bd9Sstevel@tonic-gate 39*7c478bd9Sstevel@tonic-gate %start itm_def 40*7c478bd9Sstevel@tonic-gate 41*7c478bd9Sstevel@tonic-gate %union yystacktype 42*7c478bd9Sstevel@tonic-gate { 43*7c478bd9Sstevel@tonic-gate int intval; 44*7c478bd9Sstevel@tonic-gate 45*7c478bd9Sstevel@tonic-gate itm_num_t num; 46*7c478bd9Sstevel@tonic-gate itm_data_t *name; 47*7c478bd9Sstevel@tonic-gate itm_data_t *data; 48*7c478bd9Sstevel@tonic-gate 49*7c478bd9Sstevel@tonic-gate itm_tbl_hdr_t *tbl_hdr; 50*7c478bd9Sstevel@tonic-gate itm_direc_t *direc_unit; 51*7c478bd9Sstevel@tonic-gate itm_expr_t *expr; 52*7c478bd9Sstevel@tonic-gate 53*7c478bd9Sstevel@tonic-gate itmc_action_t action; 54*7c478bd9Sstevel@tonic-gate itmc_obj_t *obj; 55*7c478bd9Sstevel@tonic-gate itmc_map_t *map_list; 56*7c478bd9Sstevel@tonic-gate itmc_ref_t *itmc_ref; 57*7c478bd9Sstevel@tonic-gate itmc_map_attr_t *map_attr; 58*7c478bd9Sstevel@tonic-gate } 59*7c478bd9Sstevel@tonic-gate 60*7c478bd9Sstevel@tonic-gate %type <intval> itm_def 61*7c478bd9Sstevel@tonic-gate %type <obj> def_element_list 62*7c478bd9Sstevel@tonic-gate %type <tbl_hdr> def_element 63*7c478bd9Sstevel@tonic-gate 64*7c478bd9Sstevel@tonic-gate %type <tbl_hdr> direction 65*7c478bd9Sstevel@tonic-gate %type <obj> direction_unit_list 66*7c478bd9Sstevel@tonic-gate %type <obj> direction_unit 67*7c478bd9Sstevel@tonic-gate 68*7c478bd9Sstevel@tonic-gate %type <action> action 69*7c478bd9Sstevel@tonic-gate 70*7c478bd9Sstevel@tonic-gate %type <itmc_ref> condition 71*7c478bd9Sstevel@tonic-gate %type <obj> condition_list 72*7c478bd9Sstevel@tonic-gate %type <obj> condition_expr 73*7c478bd9Sstevel@tonic-gate 74*7c478bd9Sstevel@tonic-gate %type <obj> range_list 75*7c478bd9Sstevel@tonic-gate %type <obj> range_pair 76*7c478bd9Sstevel@tonic-gate 77*7c478bd9Sstevel@tonic-gate %type <obj> escseq_list 78*7c478bd9Sstevel@tonic-gate %type <obj> escseq 79*7c478bd9Sstevel@tonic-gate 80*7c478bd9Sstevel@tonic-gate %type <tbl_hdr> map 81*7c478bd9Sstevel@tonic-gate %type <map_list> map_list 82*7c478bd9Sstevel@tonic-gate %type <map_list> map_pair 83*7c478bd9Sstevel@tonic-gate %type <map_attr> map_attribute 84*7c478bd9Sstevel@tonic-gate %type <intval> map_resultlen 85*7c478bd9Sstevel@tonic-gate %type <map_attr> map_type 86*7c478bd9Sstevel@tonic-gate %type <name> map_type_names 87*7c478bd9Sstevel@tonic-gate 88*7c478bd9Sstevel@tonic-gate %type <tbl_hdr> operation 89*7c478bd9Sstevel@tonic-gate %type <obj> op_list 90*7c478bd9Sstevel@tonic-gate %type <obj> op_unit 91*7c478bd9Sstevel@tonic-gate %type <obj> op_if_else 92*7c478bd9Sstevel@tonic-gate 93*7c478bd9Sstevel@tonic-gate %type <data> name 94*7c478bd9Sstevel@tonic-gate 95*7c478bd9Sstevel@tonic-gate %type <expr> expr 96*7c478bd9Sstevel@tonic-gate %type <expr> itm_in 97*7c478bd9Sstevel@tonic-gate 98*7c478bd9Sstevel@tonic-gate %token <name> ITMNAME 99*7c478bd9Sstevel@tonic-gate %token <name> NAME 100*7c478bd9Sstevel@tonic-gate %token <name> MAPTYPE_NAME 101*7c478bd9Sstevel@tonic-gate %token <data> HEXADECIMAL 102*7c478bd9Sstevel@tonic-gate %token <num> DECIMAL 103*7c478bd9Sstevel@tonic-gate 104*7c478bd9Sstevel@tonic-gate %token ITM_DEFAULT 105*7c478bd9Sstevel@tonic-gate %token ITM_IDENTICAL 106*7c478bd9Sstevel@tonic-gate 107*7c478bd9Sstevel@tonic-gate %token BETWEEN 108*7c478bd9Sstevel@tonic-gate %token BREAK 109*7c478bd9Sstevel@tonic-gate %token CONDITION 110*7c478bd9Sstevel@tonic-gate %token DIRECTION 111*7c478bd9Sstevel@tonic-gate %token DISCARD 112*7c478bd9Sstevel@tonic-gate %token ERROR 113*7c478bd9Sstevel@tonic-gate %token ITM_ELSE 114*7c478bd9Sstevel@tonic-gate %token ITM_INIT 115*7c478bd9Sstevel@tonic-gate %token ITM_FALSE 116*7c478bd9Sstevel@tonic-gate %token ITM_IF 117*7c478bd9Sstevel@tonic-gate %token ITM_IN 118*7c478bd9Sstevel@tonic-gate %token ITM_INSIZE 119*7c478bd9Sstevel@tonic-gate %token NOP 120*7c478bd9Sstevel@tonic-gate %token OPERATION 121*7c478bd9Sstevel@tonic-gate %token ITM_OUT 122*7c478bd9Sstevel@tonic-gate %token ITM_OUTSIZE 123*7c478bd9Sstevel@tonic-gate %token PRINTCHR 124*7c478bd9Sstevel@tonic-gate %token PRINTHD 125*7c478bd9Sstevel@tonic-gate %token PRINTINT 126*7c478bd9Sstevel@tonic-gate %token MAP 127*7c478bd9Sstevel@tonic-gate %token RESET 128*7c478bd9Sstevel@tonic-gate %token RETURN 129*7c478bd9Sstevel@tonic-gate %token ITM_TRUE 130*7c478bd9Sstevel@tonic-gate %token ESCAPESEQ 131*7c478bd9Sstevel@tonic-gate %token MAPTYPE 132*7c478bd9Sstevel@tonic-gate %token RESULTLEN 133*7c478bd9Sstevel@tonic-gate 134*7c478bd9Sstevel@tonic-gate 135*7c478bd9Sstevel@tonic-gate %token MAPTYPE_AUTO 136*7c478bd9Sstevel@tonic-gate %token MAPTYPE_INDEX 137*7c478bd9Sstevel@tonic-gate %token MAPTYPE_DENSE 138*7c478bd9Sstevel@tonic-gate %token MAPTYPE_HASH 139*7c478bd9Sstevel@tonic-gate %token MAPTYPE_BINARY 140*7c478bd9Sstevel@tonic-gate 141*7c478bd9Sstevel@tonic-gate %token ELLIPSES 142*7c478bd9Sstevel@tonic-gate %token CBO CBC 143*7c478bd9Sstevel@tonic-gate %token SBO SBC 144*7c478bd9Sstevel@tonic-gate %token PO PC 145*7c478bd9Sstevel@tonic-gate %token SC 146*7c478bd9Sstevel@tonic-gate %token COMMA 147*7c478bd9Sstevel@tonic-gate %token COLON 148*7c478bd9Sstevel@tonic-gate 149*7c478bd9Sstevel@tonic-gate %right ASSIGN 150*7c478bd9Sstevel@tonic-gate %left LOR 151*7c478bd9Sstevel@tonic-gate %left LAND 152*7c478bd9Sstevel@tonic-gate %left OR 153*7c478bd9Sstevel@tonic-gate %left XOR 154*7c478bd9Sstevel@tonic-gate %left AND 155*7c478bd9Sstevel@tonic-gate %left EQ NE 156*7c478bd9Sstevel@tonic-gate %left LT LE GT GE 157*7c478bd9Sstevel@tonic-gate %left SHL SHR 158*7c478bd9Sstevel@tonic-gate %left PLUS MINUS 159*7c478bd9Sstevel@tonic-gate %left MUL DIV MOD 160*7c478bd9Sstevel@tonic-gate %right NOT NEG UMINUS 161*7c478bd9Sstevel@tonic-gate 162*7c478bd9Sstevel@tonic-gate %% 163*7c478bd9Sstevel@tonic-gate 164*7c478bd9Sstevel@tonic-gate itm_def 165*7c478bd9Sstevel@tonic-gate : ITMNAME CBO def_element_list CBC 166*7c478bd9Sstevel@tonic-gate { 167*7c478bd9Sstevel@tonic-gate itm_def_process($1); 168*7c478bd9Sstevel@tonic-gate } 169*7c478bd9Sstevel@tonic-gate ; 170*7c478bd9Sstevel@tonic-gate 171*7c478bd9Sstevel@tonic-gate def_element_list 172*7c478bd9Sstevel@tonic-gate : def_element SC 173*7c478bd9Sstevel@tonic-gate { 174*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("def_element_list: def_element ;\n")); 175*7c478bd9Sstevel@tonic-gate $$ = NULL; 176*7c478bd9Sstevel@tonic-gate } 177*7c478bd9Sstevel@tonic-gate | def_element_list def_element SC 178*7c478bd9Sstevel@tonic-gate { 179*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', 180*7c478bd9Sstevel@tonic-gate ("def_element_list: def_element_list def_element ;\n")); 181*7c478bd9Sstevel@tonic-gate $$ = NULL; 182*7c478bd9Sstevel@tonic-gate } 183*7c478bd9Sstevel@tonic-gate ; 184*7c478bd9Sstevel@tonic-gate 185*7c478bd9Sstevel@tonic-gate def_element 186*7c478bd9Sstevel@tonic-gate : direction 187*7c478bd9Sstevel@tonic-gate { 188*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("def_element: direction\n")); 189*7c478bd9Sstevel@tonic-gate (void) obj_register(ITMC_OBJ_DIREC, (itm_data_t *)($1->name.itm_ptr), 190*7c478bd9Sstevel@tonic-gate $1, $1->size, 191*7c478bd9Sstevel@tonic-gate NULL, OBJ_REG_TAIL); 192*7c478bd9Sstevel@tonic-gate $$ = $1; 193*7c478bd9Sstevel@tonic-gate } 194*7c478bd9Sstevel@tonic-gate | condition 195*7c478bd9Sstevel@tonic-gate { 196*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("def_element: condition\n")); 197*7c478bd9Sstevel@tonic-gate $$ = (itm_tbl_hdr_t *)($1->referencee); 198*7c478bd9Sstevel@tonic-gate } 199*7c478bd9Sstevel@tonic-gate | map 200*7c478bd9Sstevel@tonic-gate { 201*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("def_element: map\n")); 202*7c478bd9Sstevel@tonic-gate if (NULL != $1) { 203*7c478bd9Sstevel@tonic-gate (void) obj_register(ITMC_OBJ_MAP, 204*7c478bd9Sstevel@tonic-gate (itm_data_t *)($1->name.itm_ptr), 205*7c478bd9Sstevel@tonic-gate $1, $1->size, 206*7c478bd9Sstevel@tonic-gate NULL, OBJ_REG_TAIL); 207*7c478bd9Sstevel@tonic-gate } 208*7c478bd9Sstevel@tonic-gate $$ = $1; 209*7c478bd9Sstevel@tonic-gate } 210*7c478bd9Sstevel@tonic-gate | operation 211*7c478bd9Sstevel@tonic-gate { 212*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("def_element: operation\n")); 213*7c478bd9Sstevel@tonic-gate (void) obj_register(ITMC_OBJ_OP, (itm_data_t *)($1->name.itm_ptr), 214*7c478bd9Sstevel@tonic-gate $1, $1->size, 215*7c478bd9Sstevel@tonic-gate NULL, OBJ_REG_TAIL); 216*7c478bd9Sstevel@tonic-gate $$ = $1; 217*7c478bd9Sstevel@tonic-gate } 218*7c478bd9Sstevel@tonic-gate ; 219*7c478bd9Sstevel@tonic-gate 220*7c478bd9Sstevel@tonic-gate direction 221*7c478bd9Sstevel@tonic-gate : DIRECTION name CBO direction_unit_list CBC 222*7c478bd9Sstevel@tonic-gate { 223*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("direction name (direction_unit_list)\n")); 224*7c478bd9Sstevel@tonic-gate $$ = obj_table(ITM_TBL_DIREC, $2, 225*7c478bd9Sstevel@tonic-gate $4, sizeof (itm_direc_t)); 226*7c478bd9Sstevel@tonic-gate } 227*7c478bd9Sstevel@tonic-gate | DIRECTION CBO direction_unit_list CBC 228*7c478bd9Sstevel@tonic-gate { 229*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("direction name (direction_unit_list)\n")); 230*7c478bd9Sstevel@tonic-gate $$ = obj_table(ITM_TBL_DIREC, NULL, 231*7c478bd9Sstevel@tonic-gate $3, sizeof (itm_direc_t)); 232*7c478bd9Sstevel@tonic-gate } 233*7c478bd9Sstevel@tonic-gate ; 234*7c478bd9Sstevel@tonic-gate 235*7c478bd9Sstevel@tonic-gate direction_unit_list 236*7c478bd9Sstevel@tonic-gate : direction_unit 237*7c478bd9Sstevel@tonic-gate { 238*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("direction_unit_list: direction_unit\n")); 239*7c478bd9Sstevel@tonic-gate $$ = obj_list_append(NULL, $1); 240*7c478bd9Sstevel@tonic-gate } 241*7c478bd9Sstevel@tonic-gate | direction_unit_list direction_unit 242*7c478bd9Sstevel@tonic-gate { 243*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("direction_unit_list: " 244*7c478bd9Sstevel@tonic-gate "direction_unit_list direction_unit\n")); 245*7c478bd9Sstevel@tonic-gate $$ = obj_list_append($1, $2); 246*7c478bd9Sstevel@tonic-gate } 247*7c478bd9Sstevel@tonic-gate ; 248*7c478bd9Sstevel@tonic-gate 249*7c478bd9Sstevel@tonic-gate direction_unit 250*7c478bd9Sstevel@tonic-gate : condition action SC 251*7c478bd9Sstevel@tonic-gate { 252*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("direction_unit: condition action ;\n")); 253*7c478bd9Sstevel@tonic-gate $$ = direction_unit($1, NULL, &($2), NULL); 254*7c478bd9Sstevel@tonic-gate } 255*7c478bd9Sstevel@tonic-gate | condition name SC 256*7c478bd9Sstevel@tonic-gate { 257*7c478bd9Sstevel@tonic-gate itm_direc_t *direc; 258*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("direction_unit: condition NAME ;\n")); 259*7c478bd9Sstevel@tonic-gate $$ = direction_unit($1, NULL, NULL, $2); 260*7c478bd9Sstevel@tonic-gate } 261*7c478bd9Sstevel@tonic-gate | name action SC 262*7c478bd9Sstevel@tonic-gate { 263*7c478bd9Sstevel@tonic-gate itm_direc_t *direc; 264*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("direction_unit: NAME action ;\n")); 265*7c478bd9Sstevel@tonic-gate $$ = direction_unit(NULL, $1, &($2), NULL); 266*7c478bd9Sstevel@tonic-gate } 267*7c478bd9Sstevel@tonic-gate | name name SC 268*7c478bd9Sstevel@tonic-gate { 269*7c478bd9Sstevel@tonic-gate itm_direc_t *direc; 270*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("direction_unit: NAME NAME ;\n")); 271*7c478bd9Sstevel@tonic-gate $$ = direction_unit(NULL, $1, NULL, $2); 272*7c478bd9Sstevel@tonic-gate } 273*7c478bd9Sstevel@tonic-gate | ITM_TRUE action SC 274*7c478bd9Sstevel@tonic-gate { 275*7c478bd9Sstevel@tonic-gate itm_direc_t *direc; 276*7c478bd9Sstevel@tonic-gate $$ = direction_unit(NULL, NULL, &($2), NULL); 277*7c478bd9Sstevel@tonic-gate } 278*7c478bd9Sstevel@tonic-gate | ITM_TRUE name SC 279*7c478bd9Sstevel@tonic-gate { 280*7c478bd9Sstevel@tonic-gate itm_direc_t *direc; 281*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("direction_unit: TRUE NAME ;\n")); 282*7c478bd9Sstevel@tonic-gate $$ = direction_unit(NULL, NULL, NULL, $2); 283*7c478bd9Sstevel@tonic-gate } 284*7c478bd9Sstevel@tonic-gate ; 285*7c478bd9Sstevel@tonic-gate 286*7c478bd9Sstevel@tonic-gate action 287*7c478bd9Sstevel@tonic-gate : direction 288*7c478bd9Sstevel@tonic-gate { 289*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("action: direction\n")); 290*7c478bd9Sstevel@tonic-gate $$.type = ITMC_OBJ_DIREC; 291*7c478bd9Sstevel@tonic-gate $$.tbl_hdr = $1; 292*7c478bd9Sstevel@tonic-gate } 293*7c478bd9Sstevel@tonic-gate | map 294*7c478bd9Sstevel@tonic-gate { 295*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("action: map\n")); 296*7c478bd9Sstevel@tonic-gate $$.type = ITMC_OBJ_MAP; 297*7c478bd9Sstevel@tonic-gate $$.tbl_hdr = $1; 298*7c478bd9Sstevel@tonic-gate } 299*7c478bd9Sstevel@tonic-gate | operation 300*7c478bd9Sstevel@tonic-gate { 301*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("action: operation\n")); 302*7c478bd9Sstevel@tonic-gate $$.type = ITMC_OBJ_OP; 303*7c478bd9Sstevel@tonic-gate $$.tbl_hdr = $1; 304*7c478bd9Sstevel@tonic-gate } 305*7c478bd9Sstevel@tonic-gate ; 306*7c478bd9Sstevel@tonic-gate 307*7c478bd9Sstevel@tonic-gate condition 308*7c478bd9Sstevel@tonic-gate : CONDITION name CBO condition_list CBC 309*7c478bd9Sstevel@tonic-gate { 310*7c478bd9Sstevel@tonic-gate itm_tbl_hdr_t *tbl_hdr; 311*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("condition\n")); 312*7c478bd9Sstevel@tonic-gate tbl_hdr = obj_table(ITM_TBL_COND, $2, 313*7c478bd9Sstevel@tonic-gate $4, sizeof (itm_cond_t)); 314*7c478bd9Sstevel@tonic-gate $$ = obj_register(ITMC_OBJ_COND, $2, 315*7c478bd9Sstevel@tonic-gate tbl_hdr, tbl_hdr->size, 316*7c478bd9Sstevel@tonic-gate NULL, OBJ_REG_TAIL); 317*7c478bd9Sstevel@tonic-gate } 318*7c478bd9Sstevel@tonic-gate | CONDITION CBO condition_list CBC 319*7c478bd9Sstevel@tonic-gate { 320*7c478bd9Sstevel@tonic-gate itm_tbl_hdr_t *tbl_hdr; 321*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("condition\n")); 322*7c478bd9Sstevel@tonic-gate tbl_hdr = obj_table(ITM_TBL_COND, NULL, 323*7c478bd9Sstevel@tonic-gate $3, sizeof (itm_cond_t)); 324*7c478bd9Sstevel@tonic-gate $$ = obj_register(ITMC_OBJ_COND, NULL, 325*7c478bd9Sstevel@tonic-gate tbl_hdr, tbl_hdr->size, 326*7c478bd9Sstevel@tonic-gate NULL, OBJ_REG_TAIL); 327*7c478bd9Sstevel@tonic-gate } 328*7c478bd9Sstevel@tonic-gate ; 329*7c478bd9Sstevel@tonic-gate 330*7c478bd9Sstevel@tonic-gate condition_list 331*7c478bd9Sstevel@tonic-gate : condition_expr SC 332*7c478bd9Sstevel@tonic-gate { 333*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("condition_list: condition_expr;\n")); 334*7c478bd9Sstevel@tonic-gate $$ = obj_list_append(NULL, $1); 335*7c478bd9Sstevel@tonic-gate } 336*7c478bd9Sstevel@tonic-gate | condition_list condition_expr SC 337*7c478bd9Sstevel@tonic-gate { 338*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("condition_list: " 339*7c478bd9Sstevel@tonic-gate "condition_list condition_expr;\n")); 340*7c478bd9Sstevel@tonic-gate $$ = obj_list_append($1, $2); 341*7c478bd9Sstevel@tonic-gate } 342*7c478bd9Sstevel@tonic-gate ; 343*7c478bd9Sstevel@tonic-gate 344*7c478bd9Sstevel@tonic-gate condition_expr 345*7c478bd9Sstevel@tonic-gate : BETWEEN range_list 346*7c478bd9Sstevel@tonic-gate { 347*7c478bd9Sstevel@tonic-gate itm_tbl_hdr_t *range; 348*7c478bd9Sstevel@tonic-gate itm_cond_t *cond; 349*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("condition_expr: between\n")); 350*7c478bd9Sstevel@tonic-gate range = range_table(NULL, $2); 351*7c478bd9Sstevel@tonic-gate if (range == NULL) { 352*7c478bd9Sstevel@tonic-gate $$ = NULL; 353*7c478bd9Sstevel@tonic-gate } else { 354*7c478bd9Sstevel@tonic-gate $$ = malloc_vital(sizeof (itmc_obj_t)); 355*7c478bd9Sstevel@tonic-gate $$->type = ITMC_OBJ_RANGE; 356*7c478bd9Sstevel@tonic-gate $$->name = NULL; 357*7c478bd9Sstevel@tonic-gate cond = malloc_vital(sizeof (itm_cond_t)); 358*7c478bd9Sstevel@tonic-gate $$->obj = cond; 359*7c478bd9Sstevel@tonic-gate cond->type = ITM_COND_BETWEEN; 360*7c478bd9Sstevel@tonic-gate cond->operand.place.itm_ptr = (itm_place2_t)range; 361*7c478bd9Sstevel@tonic-gate $$->ref[0] = obj_register(ITMC_OBJ_RANGE, NULL, 362*7c478bd9Sstevel@tonic-gate range, range->size, 363*7c478bd9Sstevel@tonic-gate &(cond->operand.place), 364*7c478bd9Sstevel@tonic-gate OBJ_REG_TAIL); 365*7c478bd9Sstevel@tonic-gate $$->ref[1] = NULL; 366*7c478bd9Sstevel@tonic-gate $$->ref[2] = NULL; 367*7c478bd9Sstevel@tonic-gate $$->next = $$->last = NULL; 368*7c478bd9Sstevel@tonic-gate } 369*7c478bd9Sstevel@tonic-gate } 370*7c478bd9Sstevel@tonic-gate | expr 371*7c478bd9Sstevel@tonic-gate { 372*7c478bd9Sstevel@tonic-gate itm_cond_t *cond; 373*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("condition_expr: expr\n")); 374*7c478bd9Sstevel@tonic-gate $$ = malloc_vital(sizeof (itmc_obj_t)); 375*7c478bd9Sstevel@tonic-gate $$->type = ITMC_OBJ_EXPR; 376*7c478bd9Sstevel@tonic-gate $$->name = NULL; 377*7c478bd9Sstevel@tonic-gate cond = malloc_vital(sizeof (itm_cond_t)); 378*7c478bd9Sstevel@tonic-gate $$->obj = cond; 379*7c478bd9Sstevel@tonic-gate cond->type = ITM_COND_EXPR; 380*7c478bd9Sstevel@tonic-gate cond->operand.place.itm_ptr = (itm_place2_t)($1); 381*7c478bd9Sstevel@tonic-gate $$->ref[0] = obj_register(ITMC_OBJ_EXPR, NULL, 382*7c478bd9Sstevel@tonic-gate $1, sizeof (itm_expr_t), 383*7c478bd9Sstevel@tonic-gate &(cond->operand.place), 384*7c478bd9Sstevel@tonic-gate OBJ_REG_TAIL); 385*7c478bd9Sstevel@tonic-gate $$->ref[1] = NULL; 386*7c478bd9Sstevel@tonic-gate $$->ref[2] = NULL; 387*7c478bd9Sstevel@tonic-gate $$->next = $$->last = NULL; 388*7c478bd9Sstevel@tonic-gate } 389*7c478bd9Sstevel@tonic-gate | ESCAPESEQ escseq_list 390*7c478bd9Sstevel@tonic-gate { 391*7c478bd9Sstevel@tonic-gate itm_tbl_hdr_t *escseq; 392*7c478bd9Sstevel@tonic-gate itm_cond_t *cond; 393*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("condition_expr: escseq {escseq_list;}\n")); 394*7c478bd9Sstevel@tonic-gate escseq = escseq_table(NULL, $2); 395*7c478bd9Sstevel@tonic-gate if (escseq == NULL) { 396*7c478bd9Sstevel@tonic-gate $$ = NULL; 397*7c478bd9Sstevel@tonic-gate } else { 398*7c478bd9Sstevel@tonic-gate $$ = malloc_vital(sizeof (itmc_obj_t)); 399*7c478bd9Sstevel@tonic-gate $$->type = ITMC_OBJ_ESCAPESEQ; 400*7c478bd9Sstevel@tonic-gate $$->name = NULL; 401*7c478bd9Sstevel@tonic-gate cond = malloc_vital(sizeof (itm_cond_t)); 402*7c478bd9Sstevel@tonic-gate $$->obj = cond; 403*7c478bd9Sstevel@tonic-gate cond->type = ITM_COND_ESCAPESEQ; 404*7c478bd9Sstevel@tonic-gate cond->operand.place.itm_ptr = (itm_place2_t)escseq; 405*7c478bd9Sstevel@tonic-gate $$->ref[0] = obj_register(ITMC_OBJ_ESCAPESEQ, NULL, 406*7c478bd9Sstevel@tonic-gate escseq, escseq->size, 407*7c478bd9Sstevel@tonic-gate &(cond->operand.place), 408*7c478bd9Sstevel@tonic-gate OBJ_REG_TAIL); 409*7c478bd9Sstevel@tonic-gate $$->ref[1] = NULL; 410*7c478bd9Sstevel@tonic-gate $$->ref[2] = NULL; 411*7c478bd9Sstevel@tonic-gate $$->next = $$->last = NULL; 412*7c478bd9Sstevel@tonic-gate } 413*7c478bd9Sstevel@tonic-gate } 414*7c478bd9Sstevel@tonic-gate ; 415*7c478bd9Sstevel@tonic-gate 416*7c478bd9Sstevel@tonic-gate range_list 417*7c478bd9Sstevel@tonic-gate : range_pair 418*7c478bd9Sstevel@tonic-gate { 419*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("range_list: range_pair\n")); 420*7c478bd9Sstevel@tonic-gate $$ = obj_list_append(NULL, $1); 421*7c478bd9Sstevel@tonic-gate } 422*7c478bd9Sstevel@tonic-gate | range_list COMMA range_pair 423*7c478bd9Sstevel@tonic-gate { 424*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("range_list: range_list, range_pair\n")); 425*7c478bd9Sstevel@tonic-gate $$ = obj_list_append($1, $3); 426*7c478bd9Sstevel@tonic-gate } 427*7c478bd9Sstevel@tonic-gate ; 428*7c478bd9Sstevel@tonic-gate 429*7c478bd9Sstevel@tonic-gate range_pair 430*7c478bd9Sstevel@tonic-gate : HEXADECIMAL ELLIPSES HEXADECIMAL 431*7c478bd9Sstevel@tonic-gate { 432*7c478bd9Sstevel@tonic-gate itmc_data_pair_t *range; 433*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("range_pair: HEXADECIMAL...HEXADECIMAL\n")); 434*7c478bd9Sstevel@tonic-gate $$ = malloc_vital(sizeof (itmc_obj_t)); 435*7c478bd9Sstevel@tonic-gate $$->type = ITMC_OBJ_RANGE; 436*7c478bd9Sstevel@tonic-gate $$->name = NULL; 437*7c478bd9Sstevel@tonic-gate range = malloc_vital(sizeof (itmc_data_pair_t)); 438*7c478bd9Sstevel@tonic-gate $$->obj = range; 439*7c478bd9Sstevel@tonic-gate if (data_compare($1, $3) < 0) { 440*7c478bd9Sstevel@tonic-gate range->data0 = *($1); 441*7c478bd9Sstevel@tonic-gate range->data1 = *($3); 442*7c478bd9Sstevel@tonic-gate } else { 443*7c478bd9Sstevel@tonic-gate range->data0 = *($3); 444*7c478bd9Sstevel@tonic-gate range->data1 = *($1); 445*7c478bd9Sstevel@tonic-gate } 446*7c478bd9Sstevel@tonic-gate } 447*7c478bd9Sstevel@tonic-gate ; 448*7c478bd9Sstevel@tonic-gate escseq_list 449*7c478bd9Sstevel@tonic-gate : escseq 450*7c478bd9Sstevel@tonic-gate { 451*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("escseq_list: escseq\n")); 452*7c478bd9Sstevel@tonic-gate $$ = obj_list_append(NULL, $1); 453*7c478bd9Sstevel@tonic-gate } 454*7c478bd9Sstevel@tonic-gate | escseq_list COMMA escseq 455*7c478bd9Sstevel@tonic-gate { 456*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("escseq_list: escseq_list; escseq\n")); 457*7c478bd9Sstevel@tonic-gate $$ = obj_list_append($1, $3); 458*7c478bd9Sstevel@tonic-gate } 459*7c478bd9Sstevel@tonic-gate ; 460*7c478bd9Sstevel@tonic-gate 461*7c478bd9Sstevel@tonic-gate escseq 462*7c478bd9Sstevel@tonic-gate : HEXADECIMAL 463*7c478bd9Sstevel@tonic-gate { 464*7c478bd9Sstevel@tonic-gate itm_data_t *escseq; 465*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("escseq: HEXADECIMAL\n")); 466*7c478bd9Sstevel@tonic-gate $$ = malloc_vital(sizeof (itmc_obj_t)); 467*7c478bd9Sstevel@tonic-gate $$->type = ITMC_OBJ_ESCAPESEQ; 468*7c478bd9Sstevel@tonic-gate $$->name = NULL; 469*7c478bd9Sstevel@tonic-gate escseq = malloc_vital(sizeof (itm_data_t)); 470*7c478bd9Sstevel@tonic-gate $$->obj = escseq; 471*7c478bd9Sstevel@tonic-gate *escseq = *($1); 472*7c478bd9Sstevel@tonic-gate } 473*7c478bd9Sstevel@tonic-gate ; 474*7c478bd9Sstevel@tonic-gate 475*7c478bd9Sstevel@tonic-gate map : MAP name CBO map_list CBC 476*7c478bd9Sstevel@tonic-gate { 477*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map: map name {map_list}\n")); 478*7c478bd9Sstevel@tonic-gate $$ = map_table($2, $4, NULL); 479*7c478bd9Sstevel@tonic-gate } 480*7c478bd9Sstevel@tonic-gate | MAP CBO map_list CBC 481*7c478bd9Sstevel@tonic-gate { 482*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map: map {map_list}\n")); 483*7c478bd9Sstevel@tonic-gate $$ = map_table(NULL, $3, NULL); 484*7c478bd9Sstevel@tonic-gate } 485*7c478bd9Sstevel@tonic-gate | MAP name map_attribute CBO map_list CBC 486*7c478bd9Sstevel@tonic-gate { 487*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map: map name attribute {map_list}\n")); 488*7c478bd9Sstevel@tonic-gate $$ = map_table($2, $5, $3); 489*7c478bd9Sstevel@tonic-gate } 490*7c478bd9Sstevel@tonic-gate | MAP map_attribute CBO map_list CBC 491*7c478bd9Sstevel@tonic-gate { 492*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map: map attribute {map_list}\n")); 493*7c478bd9Sstevel@tonic-gate $$ = map_table(NULL, $4, $2); 494*7c478bd9Sstevel@tonic-gate } 495*7c478bd9Sstevel@tonic-gate ; 496*7c478bd9Sstevel@tonic-gate 497*7c478bd9Sstevel@tonic-gate map_attribute 498*7c478bd9Sstevel@tonic-gate :map_type COMMA map_resultlen 499*7c478bd9Sstevel@tonic-gate { 500*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map_attribute: map_type map_resultlen\n")); 501*7c478bd9Sstevel@tonic-gate $$ = $1; 502*7c478bd9Sstevel@tonic-gate $$->resultlen = $3; 503*7c478bd9Sstevel@tonic-gate } 504*7c478bd9Sstevel@tonic-gate |map_type 505*7c478bd9Sstevel@tonic-gate { 506*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map_attribute: map_type\n")); 507*7c478bd9Sstevel@tonic-gate $$ = $1; 508*7c478bd9Sstevel@tonic-gate $$->resultlen = 0; 509*7c478bd9Sstevel@tonic-gate } 510*7c478bd9Sstevel@tonic-gate |map_resultlen COMMA map_type 511*7c478bd9Sstevel@tonic-gate { 512*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map_attribute: map_resultlen map_type\n")); 513*7c478bd9Sstevel@tonic-gate $$ = $3; 514*7c478bd9Sstevel@tonic-gate $$->resultlen = $1; 515*7c478bd9Sstevel@tonic-gate } 516*7c478bd9Sstevel@tonic-gate |map_resultlen 517*7c478bd9Sstevel@tonic-gate { 518*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map_attribute: map_resultlen\n")); 519*7c478bd9Sstevel@tonic-gate $$ = malloc_vital(sizeof (itmc_map_attr_t)); 520*7c478bd9Sstevel@tonic-gate $$->resultlen = $1; 521*7c478bd9Sstevel@tonic-gate $$->type = NULL; 522*7c478bd9Sstevel@tonic-gate $$->hash_factor = 0; 523*7c478bd9Sstevel@tonic-gate } 524*7c478bd9Sstevel@tonic-gate ; 525*7c478bd9Sstevel@tonic-gate 526*7c478bd9Sstevel@tonic-gate map_type 527*7c478bd9Sstevel@tonic-gate : MAPTYPE ASSIGN map_type_names COLON DECIMAL 528*7c478bd9Sstevel@tonic-gate { 529*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map_type: maptype=type:factor(%d)\n", 530*7c478bd9Sstevel@tonic-gate $5)); 531*7c478bd9Sstevel@tonic-gate $$ = malloc_vital(sizeof (itmc_map_attr_t)); 532*7c478bd9Sstevel@tonic-gate $$->type = $3; 533*7c478bd9Sstevel@tonic-gate $$->hash_factor = $5; 534*7c478bd9Sstevel@tonic-gate } 535*7c478bd9Sstevel@tonic-gate | MAPTYPE ASSIGN map_type_names 536*7c478bd9Sstevel@tonic-gate { 537*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map_type: maptype=type\n")); 538*7c478bd9Sstevel@tonic-gate $$ = malloc_vital(sizeof (itmc_map_attr_t)); 539*7c478bd9Sstevel@tonic-gate $$->type = $3; 540*7c478bd9Sstevel@tonic-gate $$->hash_factor = 0; 541*7c478bd9Sstevel@tonic-gate } 542*7c478bd9Sstevel@tonic-gate ; 543*7c478bd9Sstevel@tonic-gate 544*7c478bd9Sstevel@tonic-gate map_type_names 545*7c478bd9Sstevel@tonic-gate : MAPTYPE_NAME 546*7c478bd9Sstevel@tonic-gate { 547*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map_type_names: size=%*s\n", 548*7c478bd9Sstevel@tonic-gate yylval.data->size, NSPTR(yylval.data))); 549*7c478bd9Sstevel@tonic-gate $$ = yylval.data; 550*7c478bd9Sstevel@tonic-gate } 551*7c478bd9Sstevel@tonic-gate ; 552*7c478bd9Sstevel@tonic-gate 553*7c478bd9Sstevel@tonic-gate 554*7c478bd9Sstevel@tonic-gate map_resultlen 555*7c478bd9Sstevel@tonic-gate : RESULTLEN ASSIGN DECIMAL 556*7c478bd9Sstevel@tonic-gate { 557*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map_resultlen(%d)\n", $3)); 558*7c478bd9Sstevel@tonic-gate $$ = $3; 559*7c478bd9Sstevel@tonic-gate } 560*7c478bd9Sstevel@tonic-gate ; 561*7c478bd9Sstevel@tonic-gate 562*7c478bd9Sstevel@tonic-gate map_list 563*7c478bd9Sstevel@tonic-gate : map_pair 564*7c478bd9Sstevel@tonic-gate { 565*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map_list: map_pair\n")); 566*7c478bd9Sstevel@tonic-gate $$ = map_list_append(NULL, $1); 567*7c478bd9Sstevel@tonic-gate } 568*7c478bd9Sstevel@tonic-gate | map_list map_pair 569*7c478bd9Sstevel@tonic-gate { 570*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map_list: map_list map_pair\n")); 571*7c478bd9Sstevel@tonic-gate $$ = map_list_append($1, $2); 572*7c478bd9Sstevel@tonic-gate } 573*7c478bd9Sstevel@tonic-gate ; 574*7c478bd9Sstevel@tonic-gate 575*7c478bd9Sstevel@tonic-gate map_pair 576*7c478bd9Sstevel@tonic-gate : HEXADECIMAL HEXADECIMAL 577*7c478bd9Sstevel@tonic-gate { 578*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map_pair: HEXADECIMAL HEXADECIMAL\n")); 579*7c478bd9Sstevel@tonic-gate $$ = malloc_vital(sizeof (itmc_map_t)); 580*7c478bd9Sstevel@tonic-gate $$->data_pair.data0 = *($1); 581*7c478bd9Sstevel@tonic-gate free($1); 582*7c478bd9Sstevel@tonic-gate $$->data_pair.data1 = *($2); 583*7c478bd9Sstevel@tonic-gate free($2); 584*7c478bd9Sstevel@tonic-gate } 585*7c478bd9Sstevel@tonic-gate | HEXADECIMAL ELLIPSES HEXADECIMAL HEXADECIMAL 586*7c478bd9Sstevel@tonic-gate { 587*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map_pair: " 588*7c478bd9Sstevel@tonic-gate "HEXADECIMAL ELLIPSES HEXADECIMAL\n")); 589*7c478bd9Sstevel@tonic-gate $$ = malloc_vital(sizeof (itmc_map_t)); 590*7c478bd9Sstevel@tonic-gate $$->data_pair.data0 = *($1); 591*7c478bd9Sstevel@tonic-gate $$->data_pair.range = *($3); 592*7c478bd9Sstevel@tonic-gate free($1); 593*7c478bd9Sstevel@tonic-gate free($3); 594*7c478bd9Sstevel@tonic-gate $$->data_pair.data1 = *($4); 595*7c478bd9Sstevel@tonic-gate free($4); 596*7c478bd9Sstevel@tonic-gate } 597*7c478bd9Sstevel@tonic-gate | ITM_DEFAULT HEXADECIMAL 598*7c478bd9Sstevel@tonic-gate { 599*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map_pair: default HEXADECIMAL\n")); 600*7c478bd9Sstevel@tonic-gate $$ = malloc_vital(sizeof (itmc_map_t)); 601*7c478bd9Sstevel@tonic-gate $$->data_pair.data0.size = 0; 602*7c478bd9Sstevel@tonic-gate $$->data_pair.data1 = *($2); 603*7c478bd9Sstevel@tonic-gate free($2); 604*7c478bd9Sstevel@tonic-gate } 605*7c478bd9Sstevel@tonic-gate | ITM_DEFAULT ITM_IDENTICAL 606*7c478bd9Sstevel@tonic-gate { 607*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map_pair: default default\n")); 608*7c478bd9Sstevel@tonic-gate $$ = malloc_vital(sizeof (itmc_map_t)); 609*7c478bd9Sstevel@tonic-gate $$->data_pair.data0.size = 0; 610*7c478bd9Sstevel@tonic-gate $$->data_pair.data1.size = 0; 611*7c478bd9Sstevel@tonic-gate } 612*7c478bd9Sstevel@tonic-gate | HEXADECIMAL ERROR /* NO RANGE */ 613*7c478bd9Sstevel@tonic-gate { 614*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map_pair: hexadecimal error\n")); 615*7c478bd9Sstevel@tonic-gate $$ = malloc_vital(sizeof (itmc_map_t)); 616*7c478bd9Sstevel@tonic-gate $$->data_pair.data0 = *($1); 617*7c478bd9Sstevel@tonic-gate free($1); 618*7c478bd9Sstevel@tonic-gate $$->data_pair.data1.size = 0; 619*7c478bd9Sstevel@tonic-gate } 620*7c478bd9Sstevel@tonic-gate ; 621*7c478bd9Sstevel@tonic-gate 622*7c478bd9Sstevel@tonic-gate operation 623*7c478bd9Sstevel@tonic-gate : OPERATION name CBO op_list CBC 624*7c478bd9Sstevel@tonic-gate { 625*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("operation: operation name {op_list}\n")); 626*7c478bd9Sstevel@tonic-gate $$ = obj_table(ITM_TBL_OP, $2, 627*7c478bd9Sstevel@tonic-gate $4, sizeof (itm_op_t)); 628*7c478bd9Sstevel@tonic-gate } 629*7c478bd9Sstevel@tonic-gate | OPERATION CBO op_list CBC 630*7c478bd9Sstevel@tonic-gate { 631*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("operation: operation {op_list}\n")); 632*7c478bd9Sstevel@tonic-gate $$ = obj_table(ITM_TBL_OP, NULL, 633*7c478bd9Sstevel@tonic-gate $3, sizeof (itm_op_t)); 634*7c478bd9Sstevel@tonic-gate } 635*7c478bd9Sstevel@tonic-gate | OPERATION ITM_INIT CBO op_list CBC 636*7c478bd9Sstevel@tonic-gate { 637*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("operation: operation init {op_list}\n")); 638*7c478bd9Sstevel@tonic-gate $$ = obj_table(ITM_TBL_OP_INIT, NULL, 639*7c478bd9Sstevel@tonic-gate $4, sizeof (itm_op_t)); 640*7c478bd9Sstevel@tonic-gate } 641*7c478bd9Sstevel@tonic-gate | OPERATION RESET CBO op_list CBC 642*7c478bd9Sstevel@tonic-gate { 643*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("operation: operation reset {op_list}\n")); 644*7c478bd9Sstevel@tonic-gate $$ = obj_table(ITM_TBL_OP_RESET, NULL, 645*7c478bd9Sstevel@tonic-gate $4, sizeof (itm_op_t)); 646*7c478bd9Sstevel@tonic-gate } 647*7c478bd9Sstevel@tonic-gate ; 648*7c478bd9Sstevel@tonic-gate 649*7c478bd9Sstevel@tonic-gate op_list : op_unit 650*7c478bd9Sstevel@tonic-gate { 651*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("op_list: op_unit\n")); 652*7c478bd9Sstevel@tonic-gate $$ = obj_list_append(NULL, $1); 653*7c478bd9Sstevel@tonic-gate } 654*7c478bd9Sstevel@tonic-gate | op_list op_unit 655*7c478bd9Sstevel@tonic-gate { 656*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("op_list: op_list op_unit\n")); 657*7c478bd9Sstevel@tonic-gate $$ = obj_list_append($1, $2); 658*7c478bd9Sstevel@tonic-gate } 659*7c478bd9Sstevel@tonic-gate ; 660*7c478bd9Sstevel@tonic-gate 661*7c478bd9Sstevel@tonic-gate op_unit : /* */ SC 662*7c478bd9Sstevel@tonic-gate { 663*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("op_unit: / *null */;\n")); 664*7c478bd9Sstevel@tonic-gate $$ = NULL; 665*7c478bd9Sstevel@tonic-gate } 666*7c478bd9Sstevel@tonic-gate | expr SC 667*7c478bd9Sstevel@tonic-gate { 668*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("op_unit: expr;\n")); 669*7c478bd9Sstevel@tonic-gate $$ = op_unary(ITM_OP_EXPR, $1, sizeof (itm_expr_t)); 670*7c478bd9Sstevel@tonic-gate } 671*7c478bd9Sstevel@tonic-gate | ERROR SC 672*7c478bd9Sstevel@tonic-gate { 673*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: error;\n")); 674*7c478bd9Sstevel@tonic-gate $$ = op_self_num(ITM_OP_ERROR_D, EINVAL); 675*7c478bd9Sstevel@tonic-gate } 676*7c478bd9Sstevel@tonic-gate | ERROR expr SC 677*7c478bd9Sstevel@tonic-gate { 678*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: error;\n")); 679*7c478bd9Sstevel@tonic-gate if (ITM_EXPR_INT == $2->type) { 680*7c478bd9Sstevel@tonic-gate $$ = op_self_num(ITM_OP_ERROR_D, $2->data.itm_exnum); 681*7c478bd9Sstevel@tonic-gate } else { 682*7c478bd9Sstevel@tonic-gate $$ = op_unary(ITM_OP_ERROR, $2, sizeof (itm_expr_t)); 683*7c478bd9Sstevel@tonic-gate } 684*7c478bd9Sstevel@tonic-gate } 685*7c478bd9Sstevel@tonic-gate | DISCARD SC 686*7c478bd9Sstevel@tonic-gate { 687*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("discard expr;\n")); 688*7c478bd9Sstevel@tonic-gate $$ = op_self_num(ITM_OP_DISCARD_D, 1); 689*7c478bd9Sstevel@tonic-gate } 690*7c478bd9Sstevel@tonic-gate | DISCARD expr SC 691*7c478bd9Sstevel@tonic-gate { 692*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("discard expr;\n")); 693*7c478bd9Sstevel@tonic-gate if (ITM_EXPR_INT == $2->type) { 694*7c478bd9Sstevel@tonic-gate $$ = op_self_num(ITM_OP_DISCARD_D, $2->data.itm_exnum); 695*7c478bd9Sstevel@tonic-gate } else { 696*7c478bd9Sstevel@tonic-gate $$ = op_unary(ITM_OP_DISCARD, $2, sizeof (itm_expr_t)); 697*7c478bd9Sstevel@tonic-gate } 698*7c478bd9Sstevel@tonic-gate } 699*7c478bd9Sstevel@tonic-gate | ITM_OUT ASSIGN expr SC 700*7c478bd9Sstevel@tonic-gate { 701*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("out = expr;\n")); 702*7c478bd9Sstevel@tonic-gate switch ($3->type) { 703*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 704*7c478bd9Sstevel@tonic-gate $$ = op_unary(ITM_OP_OUT_D, $3, sizeof (itm_expr_t)); 705*7c478bd9Sstevel@tonic-gate break; 706*7c478bd9Sstevel@tonic-gate case ITM_EXPR_SEQ: 707*7c478bd9Sstevel@tonic-gate $$ = op_unary(ITM_OP_OUT_S, $3, sizeof (itm_expr_t)); 708*7c478bd9Sstevel@tonic-gate break; 709*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 710*7c478bd9Sstevel@tonic-gate $$ = op_unary(ITM_OP_OUT_R, $3, sizeof (itm_expr_t)); 711*7c478bd9Sstevel@tonic-gate break; 712*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 713*7c478bd9Sstevel@tonic-gate $$ = op_unary(ITM_OP_OUT_INVD, $3, sizeof (itm_expr_t)); 714*7c478bd9Sstevel@tonic-gate break; 715*7c478bd9Sstevel@tonic-gate default: 716*7c478bd9Sstevel@tonic-gate $$ = op_unary(ITM_OP_OUT, $3, sizeof (itm_expr_t)); 717*7c478bd9Sstevel@tonic-gate break; 718*7c478bd9Sstevel@tonic-gate } 719*7c478bd9Sstevel@tonic-gate } 720*7c478bd9Sstevel@tonic-gate | DIRECTION name SC 721*7c478bd9Sstevel@tonic-gate { 722*7c478bd9Sstevel@tonic-gate itm_op_t *op; 723*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("direction NAME;\n")); 724*7c478bd9Sstevel@tonic-gate $$ = op_unit(ITM_OP_DIRECTION, NULL, 0, NULL, 0, NULL, 0); 725*7c478bd9Sstevel@tonic-gate op = (itm_op_t *)($$->obj); 726*7c478bd9Sstevel@tonic-gate op->data.operand[0].itm_ptr = (itm_place2_t)($2); 727*7c478bd9Sstevel@tonic-gate $$->ref[0] = obj_register(ITMC_OBJ_DIREC, $2, 728*7c478bd9Sstevel@tonic-gate NULL, 0, 729*7c478bd9Sstevel@tonic-gate &(op->data.operand[0]), OBJ_REG_TAIL); 730*7c478bd9Sstevel@tonic-gate } 731*7c478bd9Sstevel@tonic-gate | OPERATION name SC 732*7c478bd9Sstevel@tonic-gate { 733*7c478bd9Sstevel@tonic-gate itm_op_t *op; 734*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("operation NAME;\n")); 735*7c478bd9Sstevel@tonic-gate $$ = op_unit(ITM_OP_OPERATION, NULL, 0, NULL, 0, NULL, 0); 736*7c478bd9Sstevel@tonic-gate op = (itm_op_t *)($$->obj); 737*7c478bd9Sstevel@tonic-gate op->data.operand[0].itm_ptr = (itm_place2_t)($2); 738*7c478bd9Sstevel@tonic-gate $$->ref[0] = obj_register(ITMC_OBJ_OP, $2, 739*7c478bd9Sstevel@tonic-gate NULL, 0, 740*7c478bd9Sstevel@tonic-gate &(op->data.operand[0]), OBJ_REG_TAIL); 741*7c478bd9Sstevel@tonic-gate } 742*7c478bd9Sstevel@tonic-gate | OPERATION ITM_INIT SC 743*7c478bd9Sstevel@tonic-gate { 744*7c478bd9Sstevel@tonic-gate itm_op_t *op; 745*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("operation init;\n")); 746*7c478bd9Sstevel@tonic-gate $$ = op_self(ITM_OP_INIT); 747*7c478bd9Sstevel@tonic-gate } 748*7c478bd9Sstevel@tonic-gate | OPERATION RESET SC 749*7c478bd9Sstevel@tonic-gate { 750*7c478bd9Sstevel@tonic-gate itm_op_t *op; 751*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("operation reset;\n")); 752*7c478bd9Sstevel@tonic-gate $$ = op_self(ITM_OP_RESET); 753*7c478bd9Sstevel@tonic-gate } 754*7c478bd9Sstevel@tonic-gate | MAP name SC 755*7c478bd9Sstevel@tonic-gate { 756*7c478bd9Sstevel@tonic-gate itm_op_t *op; 757*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map NAME;\n")); 758*7c478bd9Sstevel@tonic-gate $$ = op_unit(ITM_OP_MAP, NULL, 0, NULL, 0, NULL, 0); 759*7c478bd9Sstevel@tonic-gate op = (itm_op_t *)($$->obj); 760*7c478bd9Sstevel@tonic-gate op->data.operand[0].itm_ptr = (itm_place2_t)($2); 761*7c478bd9Sstevel@tonic-gate $$->ref[0] = obj_register(ITMC_OBJ_MAP, $2, 762*7c478bd9Sstevel@tonic-gate NULL, 0, 763*7c478bd9Sstevel@tonic-gate &(op->data.operand[0]), OBJ_REG_TAIL); 764*7c478bd9Sstevel@tonic-gate } 765*7c478bd9Sstevel@tonic-gate | MAP name expr SC 766*7c478bd9Sstevel@tonic-gate { 767*7c478bd9Sstevel@tonic-gate itm_op_t *op; 768*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("map NAME expr;\n")); 769*7c478bd9Sstevel@tonic-gate $$ = op_unit(ITM_OP_MAP, NULL, 0, $3, 770*7c478bd9Sstevel@tonic-gate sizeof (itm_expr_t), NULL, 0); 771*7c478bd9Sstevel@tonic-gate op = (itm_op_t *)($$->obj); 772*7c478bd9Sstevel@tonic-gate op->data.operand[0].itm_ptr = (itm_place2_t)($2); 773*7c478bd9Sstevel@tonic-gate $$->ref[0] = obj_register(ITMC_OBJ_MAP, $2, 774*7c478bd9Sstevel@tonic-gate NULL, 0, 775*7c478bd9Sstevel@tonic-gate &(op->data.operand[0]), OBJ_REG_TAIL); 776*7c478bd9Sstevel@tonic-gate } 777*7c478bd9Sstevel@tonic-gate | op_if_else 778*7c478bd9Sstevel@tonic-gate { 779*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("op_unit: op_if_else\n")); 780*7c478bd9Sstevel@tonic-gate $$ = $1; 781*7c478bd9Sstevel@tonic-gate } 782*7c478bd9Sstevel@tonic-gate | BREAK SC 783*7c478bd9Sstevel@tonic-gate { 784*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("break;\n")); 785*7c478bd9Sstevel@tonic-gate $$ = op_self(ITM_OP_BREAK); 786*7c478bd9Sstevel@tonic-gate } 787*7c478bd9Sstevel@tonic-gate | RETURN SC 788*7c478bd9Sstevel@tonic-gate { 789*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("return;\n")); 790*7c478bd9Sstevel@tonic-gate $$ = op_self(ITM_OP_RETURN); 791*7c478bd9Sstevel@tonic-gate } 792*7c478bd9Sstevel@tonic-gate | PRINTCHR expr SC 793*7c478bd9Sstevel@tonic-gate { 794*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("printchr expr;\n")); 795*7c478bd9Sstevel@tonic-gate $$ = op_unary(ITM_OP_PRINTCHR, $2, sizeof (itm_expr_t)); 796*7c478bd9Sstevel@tonic-gate } 797*7c478bd9Sstevel@tonic-gate | PRINTHD expr SC 798*7c478bd9Sstevel@tonic-gate { 799*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("printchr expr;\n")); 800*7c478bd9Sstevel@tonic-gate $$ = op_unary(ITM_OP_PRINTHD, $2, sizeof (itm_expr_t)); 801*7c478bd9Sstevel@tonic-gate } 802*7c478bd9Sstevel@tonic-gate | PRINTINT expr SC 803*7c478bd9Sstevel@tonic-gate { 804*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("printint expr;\n")); 805*7c478bd9Sstevel@tonic-gate $$ = op_unary(ITM_OP_PRINTINT, $2, sizeof (itm_expr_t)); 806*7c478bd9Sstevel@tonic-gate } 807*7c478bd9Sstevel@tonic-gate ; 808*7c478bd9Sstevel@tonic-gate 809*7c478bd9Sstevel@tonic-gate op_if_else 810*7c478bd9Sstevel@tonic-gate : ITM_IF PO expr PC CBO op_list CBC 811*7c478bd9Sstevel@tonic-gate { 812*7c478bd9Sstevel@tonic-gate itm_tbl_hdr_t *tbl_hdr; 813*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("op_if_else: if (expr) {op_list}\n")); 814*7c478bd9Sstevel@tonic-gate tbl_hdr = obj_table(ITM_TBL_OP, NULL, 815*7c478bd9Sstevel@tonic-gate $6, sizeof (itm_op_t)); 816*7c478bd9Sstevel@tonic-gate $$ = op_unit(ITM_OP_IF, 817*7c478bd9Sstevel@tonic-gate $3, sizeof (itm_expr_t), 818*7c478bd9Sstevel@tonic-gate tbl_hdr, tbl_hdr->size, 819*7c478bd9Sstevel@tonic-gate NULL, 0); 820*7c478bd9Sstevel@tonic-gate } 821*7c478bd9Sstevel@tonic-gate | ITM_IF PO expr PC CBO op_list CBC ITM_ELSE op_if_else 822*7c478bd9Sstevel@tonic-gate { 823*7c478bd9Sstevel@tonic-gate itm_tbl_hdr_t *tbl_hdr1; 824*7c478bd9Sstevel@tonic-gate itm_tbl_hdr_t *tbl_hdr2; 825*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("op_if_else: " 826*7c478bd9Sstevel@tonic-gate "if (expr) {op_list} else op_if_else\n")); 827*7c478bd9Sstevel@tonic-gate tbl_hdr1 = obj_table(ITM_TBL_OP, NULL, 828*7c478bd9Sstevel@tonic-gate $6, sizeof (itm_op_t)); 829*7c478bd9Sstevel@tonic-gate tbl_hdr2 = obj_table(ITM_TBL_OP, NULL, 830*7c478bd9Sstevel@tonic-gate $9, sizeof (itm_op_t)); 831*7c478bd9Sstevel@tonic-gate $$ = op_unit(ITM_OP_IF_ELSE, 832*7c478bd9Sstevel@tonic-gate $3, sizeof (itm_expr_t), 833*7c478bd9Sstevel@tonic-gate tbl_hdr1, tbl_hdr1->size, 834*7c478bd9Sstevel@tonic-gate tbl_hdr2, tbl_hdr2->size); 835*7c478bd9Sstevel@tonic-gate } 836*7c478bd9Sstevel@tonic-gate | ITM_IF PO expr PC CBO op_list CBC ITM_ELSE CBO op_list CBC 837*7c478bd9Sstevel@tonic-gate { 838*7c478bd9Sstevel@tonic-gate itm_tbl_hdr_t *tbl_hdr1; 839*7c478bd9Sstevel@tonic-gate itm_tbl_hdr_t *tbl_hdr2; 840*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("op_if_else: " 841*7c478bd9Sstevel@tonic-gate "if (expr) {op_list} else {op_list}\n")); 842*7c478bd9Sstevel@tonic-gate tbl_hdr1 = obj_table(ITM_TBL_OP, NULL, 843*7c478bd9Sstevel@tonic-gate $6, sizeof (itm_op_t)); 844*7c478bd9Sstevel@tonic-gate tbl_hdr2 = obj_table(ITM_TBL_OP, NULL, 845*7c478bd9Sstevel@tonic-gate $10, sizeof (itm_op_t)); 846*7c478bd9Sstevel@tonic-gate $$ = op_unit(ITM_OP_IF_ELSE, 847*7c478bd9Sstevel@tonic-gate $3, sizeof (itm_expr_t), 848*7c478bd9Sstevel@tonic-gate tbl_hdr1, tbl_hdr1->size, 849*7c478bd9Sstevel@tonic-gate tbl_hdr2, tbl_hdr2->size); 850*7c478bd9Sstevel@tonic-gate } 851*7c478bd9Sstevel@tonic-gate ; 852*7c478bd9Sstevel@tonic-gate 853*7c478bd9Sstevel@tonic-gate name : NAME 854*7c478bd9Sstevel@tonic-gate { 855*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("name: size=%*s\n", 856*7c478bd9Sstevel@tonic-gate yylval.data->size, NSPTR(yylval.data))); 857*7c478bd9Sstevel@tonic-gate $$ = yylval.data; 858*7c478bd9Sstevel@tonic-gate } 859*7c478bd9Sstevel@tonic-gate ; 860*7c478bd9Sstevel@tonic-gate 861*7c478bd9Sstevel@tonic-gate itm_in : ITM_IN 862*7c478bd9Sstevel@tonic-gate { 863*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("in\n")); 864*7c478bd9Sstevel@tonic-gate $$ = expr_self(ITM_EXPR_IN, NULL); 865*7c478bd9Sstevel@tonic-gate } 866*7c478bd9Sstevel@tonic-gate ; 867*7c478bd9Sstevel@tonic-gate 868*7c478bd9Sstevel@tonic-gate expr : PO expr PC 869*7c478bd9Sstevel@tonic-gate { 870*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: (expr)\n")); 871*7c478bd9Sstevel@tonic-gate $$ = $2; 872*7c478bd9Sstevel@tonic-gate } 873*7c478bd9Sstevel@tonic-gate | name 874*7c478bd9Sstevel@tonic-gate { 875*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: NAME\n")); 876*7c478bd9Sstevel@tonic-gate $$ = expr_self(ITM_EXPR_NAME, $1); 877*7c478bd9Sstevel@tonic-gate } 878*7c478bd9Sstevel@tonic-gate | HEXADECIMAL 879*7c478bd9Sstevel@tonic-gate { 880*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: HEXADECIMAL\n")); 881*7c478bd9Sstevel@tonic-gate $$ = expr_self(ITM_EXPR_SEQ, yylval.data); 882*7c478bd9Sstevel@tonic-gate } 883*7c478bd9Sstevel@tonic-gate | DECIMAL 884*7c478bd9Sstevel@tonic-gate { 885*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: DECIMAL\n")); 886*7c478bd9Sstevel@tonic-gate $$ = expr_self_num(ITM_EXPR_INT, yylval.num); 887*7c478bd9Sstevel@tonic-gate } 888*7c478bd9Sstevel@tonic-gate | itm_in SBO expr SBC 889*7c478bd9Sstevel@tonic-gate { 890*7c478bd9Sstevel@tonic-gate if (ITM_EXPR_INT == $3->type) { 891*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: in[%ld]\n", 892*7c478bd9Sstevel@tonic-gate $3->data.itm_exnum)); 893*7c478bd9Sstevel@tonic-gate $$ = expr_self_num(ITM_EXPR_IN_VECTOR_D, 894*7c478bd9Sstevel@tonic-gate $3->data.itm_exnum); 895*7c478bd9Sstevel@tonic-gate } else { 896*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: in[expr]\n")); 897*7c478bd9Sstevel@tonic-gate $$ = expr_unary(ITM_EXPR_IN_VECTOR, $3); 898*7c478bd9Sstevel@tonic-gate } 899*7c478bd9Sstevel@tonic-gate } 900*7c478bd9Sstevel@tonic-gate | ITM_OUTSIZE 901*7c478bd9Sstevel@tonic-gate { 902*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: outsize\n")); 903*7c478bd9Sstevel@tonic-gate $$ = expr_self_num(ITM_EXPR_OUT, 0); 904*7c478bd9Sstevel@tonic-gate } 905*7c478bd9Sstevel@tonic-gate | ITM_INSIZE 906*7c478bd9Sstevel@tonic-gate { 907*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: inputsize\n")); 908*7c478bd9Sstevel@tonic-gate $$ = expr_self_num(ITM_EXPR_IN_VECTOR_D, (size_t)-1); 909*7c478bd9Sstevel@tonic-gate } 910*7c478bd9Sstevel@tonic-gate | ITM_TRUE 911*7c478bd9Sstevel@tonic-gate { 912*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: true\n")); 913*7c478bd9Sstevel@tonic-gate $$ = expr_self_num(ITM_EXPR_TRUE, 1); 914*7c478bd9Sstevel@tonic-gate } 915*7c478bd9Sstevel@tonic-gate | ITM_FALSE 916*7c478bd9Sstevel@tonic-gate { 917*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: false\n")); 918*7c478bd9Sstevel@tonic-gate $$ = expr_self_num(ITM_EXPR_FALSE, 0); 919*7c478bd9Sstevel@tonic-gate } 920*7c478bd9Sstevel@tonic-gate | itm_in EQ expr 921*7c478bd9Sstevel@tonic-gate { 922*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: in == expr\n")); 923*7c478bd9Sstevel@tonic-gate $$ = expr_unary(ITM_EXPR_IN_EQ, $3); 924*7c478bd9Sstevel@tonic-gate } 925*7c478bd9Sstevel@tonic-gate | expr EQ itm_in 926*7c478bd9Sstevel@tonic-gate { 927*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr == in\n")); 928*7c478bd9Sstevel@tonic-gate $$ = expr_unary(ITM_EXPR_IN_EQ, $1); 929*7c478bd9Sstevel@tonic-gate } 930*7c478bd9Sstevel@tonic-gate | NOT expr 931*7c478bd9Sstevel@tonic-gate { 932*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: ! expr\n")); 933*7c478bd9Sstevel@tonic-gate 934*7c478bd9Sstevel@tonic-gate if (ITM_EXPR_INT == $2->type) { 935*7c478bd9Sstevel@tonic-gate $$ = expr_self_num(ITM_EXPR_INT, !($2->data.itm_exnum)); 936*7c478bd9Sstevel@tonic-gate } else { 937*7c478bd9Sstevel@tonic-gate $$ = expr_unary(ITM_EXPR_NOT, $2); 938*7c478bd9Sstevel@tonic-gate } 939*7c478bd9Sstevel@tonic-gate } 940*7c478bd9Sstevel@tonic-gate | NEG expr 941*7c478bd9Sstevel@tonic-gate { 942*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: ~ expr\n")); 943*7c478bd9Sstevel@tonic-gate if (ITM_EXPR_INT == $2->type) { 944*7c478bd9Sstevel@tonic-gate $$ = expr_self_num(ITM_EXPR_INT, ~($2->data.itm_exnum)); 945*7c478bd9Sstevel@tonic-gate } else { 946*7c478bd9Sstevel@tonic-gate $$ = expr_unary(ITM_EXPR_NEG, $2); 947*7c478bd9Sstevel@tonic-gate } 948*7c478bd9Sstevel@tonic-gate } 949*7c478bd9Sstevel@tonic-gate | MINUS expr %prec MUL 950*7c478bd9Sstevel@tonic-gate { 951*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: - expr\n")); 952*7c478bd9Sstevel@tonic-gate if (ITM_EXPR_INT == $2->type) { 953*7c478bd9Sstevel@tonic-gate $$ = expr_self_num(ITM_EXPR_INT, 954*7c478bd9Sstevel@tonic-gate (-1) * ($2->data.itm_exnum)); 955*7c478bd9Sstevel@tonic-gate } else { 956*7c478bd9Sstevel@tonic-gate $$ = expr_unary(ITM_EXPR_UMINUS, $2); 957*7c478bd9Sstevel@tonic-gate } 958*7c478bd9Sstevel@tonic-gate } 959*7c478bd9Sstevel@tonic-gate | expr PLUS expr 960*7c478bd9Sstevel@tonic-gate { 961*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr + expr\n")); 962*7c478bd9Sstevel@tonic-gate $$ = expr_binary(ITM_EXPR_PLUS, $1, $3); 963*7c478bd9Sstevel@tonic-gate $1 = expr_seq_to_int($1); 964*7c478bd9Sstevel@tonic-gate $3 = expr_seq_to_int($3); 965*7c478bd9Sstevel@tonic-gate switch ($1->type) { 966*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 967*7c478bd9Sstevel@tonic-gate switch ($3->type) { 968*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 969*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_PLUS_D_D, $1, $3); 970*7c478bd9Sstevel@tonic-gate break; 971*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 972*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_PLUS_D_R, $1, $3); 973*7c478bd9Sstevel@tonic-gate break; 974*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 975*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_PLUS_D_INVD, $1, $3); 976*7c478bd9Sstevel@tonic-gate break; 977*7c478bd9Sstevel@tonic-gate default: 978*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_PLUS_D_E, $1, $3); 979*7c478bd9Sstevel@tonic-gate break; 980*7c478bd9Sstevel@tonic-gate } 981*7c478bd9Sstevel@tonic-gate break; 982*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 983*7c478bd9Sstevel@tonic-gate switch ($3->type) { 984*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 985*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_PLUS_R_D, $1, $3); 986*7c478bd9Sstevel@tonic-gate break; 987*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 988*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_PLUS_R_R, $1, $3); 989*7c478bd9Sstevel@tonic-gate break; 990*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 991*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_PLUS_R_INVD, $1, $3); 992*7c478bd9Sstevel@tonic-gate break; 993*7c478bd9Sstevel@tonic-gate default: 994*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_PLUS_R_E, $1, $3); 995*7c478bd9Sstevel@tonic-gate break; 996*7c478bd9Sstevel@tonic-gate } 997*7c478bd9Sstevel@tonic-gate break; 998*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 999*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1000*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1001*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_PLUS_INVD_D, $1, $3); 1002*7c478bd9Sstevel@tonic-gate break; 1003*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1004*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_PLUS_INVD_R, $1, $3); 1005*7c478bd9Sstevel@tonic-gate break; 1006*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1007*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_PLUS_INVD_INVD, 1008*7c478bd9Sstevel@tonic-gate $1, $3); 1009*7c478bd9Sstevel@tonic-gate break; 1010*7c478bd9Sstevel@tonic-gate default: 1011*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_PLUS_INVD_E, $1, $3); 1012*7c478bd9Sstevel@tonic-gate break; 1013*7c478bd9Sstevel@tonic-gate } 1014*7c478bd9Sstevel@tonic-gate break; 1015*7c478bd9Sstevel@tonic-gate default: 1016*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1017*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1018*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_PLUS_E_D, $1, $3); 1019*7c478bd9Sstevel@tonic-gate break; 1020*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1021*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_PLUS_E_R, $1, $3); 1022*7c478bd9Sstevel@tonic-gate break; 1023*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1024*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_PLUS_E_INVD, $1, $3); 1025*7c478bd9Sstevel@tonic-gate break; 1026*7c478bd9Sstevel@tonic-gate default: 1027*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_PLUS, $1, $3); 1028*7c478bd9Sstevel@tonic-gate break; 1029*7c478bd9Sstevel@tonic-gate } 1030*7c478bd9Sstevel@tonic-gate break; 1031*7c478bd9Sstevel@tonic-gate } 1032*7c478bd9Sstevel@tonic-gate } 1033*7c478bd9Sstevel@tonic-gate | expr MINUS expr 1034*7c478bd9Sstevel@tonic-gate { 1035*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr - expr\n")); 1036*7c478bd9Sstevel@tonic-gate $$ = expr_binary(ITM_EXPR_MINUS, $1, $3); 1037*7c478bd9Sstevel@tonic-gate $1 = expr_seq_to_int($1); 1038*7c478bd9Sstevel@tonic-gate $3 = expr_seq_to_int($3); 1039*7c478bd9Sstevel@tonic-gate switch ($1->type) { 1040*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1041*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1042*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1043*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MINUS_D_D, $1, $3); 1044*7c478bd9Sstevel@tonic-gate break; 1045*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1046*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MINUS_D_R, $1, $3); 1047*7c478bd9Sstevel@tonic-gate break; 1048*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1049*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MINUS_D_INVD, 1050*7c478bd9Sstevel@tonic-gate $1, $3); 1051*7c478bd9Sstevel@tonic-gate break; 1052*7c478bd9Sstevel@tonic-gate default: 1053*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MINUS_D_E, $1, $3); 1054*7c478bd9Sstevel@tonic-gate break; 1055*7c478bd9Sstevel@tonic-gate } 1056*7c478bd9Sstevel@tonic-gate break; 1057*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1058*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1059*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1060*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MINUS_R_D, $1, $3); 1061*7c478bd9Sstevel@tonic-gate break; 1062*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1063*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MINUS_R_R, $1, $3); 1064*7c478bd9Sstevel@tonic-gate break; 1065*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1066*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MINUS_R_INVD, 1067*7c478bd9Sstevel@tonic-gate $1, $3); 1068*7c478bd9Sstevel@tonic-gate break; 1069*7c478bd9Sstevel@tonic-gate default: 1070*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MINUS_R_E, $1, $3); 1071*7c478bd9Sstevel@tonic-gate break; 1072*7c478bd9Sstevel@tonic-gate } 1073*7c478bd9Sstevel@tonic-gate break; 1074*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1075*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1076*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1077*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MINUS_INVD_D, 1078*7c478bd9Sstevel@tonic-gate $1, $3); 1079*7c478bd9Sstevel@tonic-gate break; 1080*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1081*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MINUS_INVD_R, 1082*7c478bd9Sstevel@tonic-gate $1, $3); 1083*7c478bd9Sstevel@tonic-gate break; 1084*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1085*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MINUS_INVD_INVD, 1086*7c478bd9Sstevel@tonic-gate $1, $3); 1087*7c478bd9Sstevel@tonic-gate break; 1088*7c478bd9Sstevel@tonic-gate default: 1089*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MINUS_INVD_E, 1090*7c478bd9Sstevel@tonic-gate $1, $3); 1091*7c478bd9Sstevel@tonic-gate break; 1092*7c478bd9Sstevel@tonic-gate } 1093*7c478bd9Sstevel@tonic-gate break; 1094*7c478bd9Sstevel@tonic-gate default: 1095*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1096*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1097*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MINUS_E_D, $1, $3); 1098*7c478bd9Sstevel@tonic-gate break; 1099*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1100*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MINUS_E_R, $1, $3); 1101*7c478bd9Sstevel@tonic-gate break; 1102*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1103*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MINUS_E_INVD, 1104*7c478bd9Sstevel@tonic-gate $1, $3); 1105*7c478bd9Sstevel@tonic-gate break; 1106*7c478bd9Sstevel@tonic-gate default: 1107*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MINUS, $1, $3); 1108*7c478bd9Sstevel@tonic-gate break; 1109*7c478bd9Sstevel@tonic-gate } 1110*7c478bd9Sstevel@tonic-gate break; 1111*7c478bd9Sstevel@tonic-gate } 1112*7c478bd9Sstevel@tonic-gate } 1113*7c478bd9Sstevel@tonic-gate | expr MUL expr 1114*7c478bd9Sstevel@tonic-gate { 1115*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr *expr\n")); 1116*7c478bd9Sstevel@tonic-gate $$ = expr_binary(ITM_EXPR_MUL, $1, $3); 1117*7c478bd9Sstevel@tonic-gate $1 = expr_seq_to_int($1); 1118*7c478bd9Sstevel@tonic-gate $3 = expr_seq_to_int($3); 1119*7c478bd9Sstevel@tonic-gate switch ($1->type) { 1120*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1121*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1122*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1123*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MUL_D_D, $1, $3); 1124*7c478bd9Sstevel@tonic-gate break; 1125*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1126*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MUL_D_R, $1, $3); 1127*7c478bd9Sstevel@tonic-gate break; 1128*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1129*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MUL_D_INVD, $1, $3); 1130*7c478bd9Sstevel@tonic-gate break; 1131*7c478bd9Sstevel@tonic-gate default: 1132*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MUL_D_E, $1, $3); 1133*7c478bd9Sstevel@tonic-gate break; 1134*7c478bd9Sstevel@tonic-gate } 1135*7c478bd9Sstevel@tonic-gate break; 1136*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1137*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1138*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1139*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MUL_R_D, $1, $3); 1140*7c478bd9Sstevel@tonic-gate break; 1141*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1142*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MUL_R_R, $1, $3); 1143*7c478bd9Sstevel@tonic-gate break; 1144*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1145*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MUL_R_INVD, $1, $3); 1146*7c478bd9Sstevel@tonic-gate break; 1147*7c478bd9Sstevel@tonic-gate default: 1148*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MUL_R_E, $1, $3); 1149*7c478bd9Sstevel@tonic-gate break; 1150*7c478bd9Sstevel@tonic-gate } 1151*7c478bd9Sstevel@tonic-gate break; 1152*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1153*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1154*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1155*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MUL_INVD_D, $1, $3); 1156*7c478bd9Sstevel@tonic-gate break; 1157*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1158*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MUL_INVD_R, $1, $3); 1159*7c478bd9Sstevel@tonic-gate break; 1160*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1161*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MUL_INVD_INVD, 1162*7c478bd9Sstevel@tonic-gate $1, $3); 1163*7c478bd9Sstevel@tonic-gate break; 1164*7c478bd9Sstevel@tonic-gate default: 1165*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MUL_INVD_E, $1, $3); 1166*7c478bd9Sstevel@tonic-gate break; 1167*7c478bd9Sstevel@tonic-gate } 1168*7c478bd9Sstevel@tonic-gate break; 1169*7c478bd9Sstevel@tonic-gate default: 1170*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1171*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1172*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MUL_E_D, $1, $3); 1173*7c478bd9Sstevel@tonic-gate break; 1174*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1175*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MUL_E_R, $1, $3); 1176*7c478bd9Sstevel@tonic-gate break; 1177*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1178*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MUL_E_INVD, $1, $3); 1179*7c478bd9Sstevel@tonic-gate break; 1180*7c478bd9Sstevel@tonic-gate default: 1181*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MUL, $1, $3); 1182*7c478bd9Sstevel@tonic-gate break; 1183*7c478bd9Sstevel@tonic-gate } 1184*7c478bd9Sstevel@tonic-gate break; 1185*7c478bd9Sstevel@tonic-gate } 1186*7c478bd9Sstevel@tonic-gate } 1187*7c478bd9Sstevel@tonic-gate | expr DIV expr 1188*7c478bd9Sstevel@tonic-gate { 1189*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr / expr\n")); 1190*7c478bd9Sstevel@tonic-gate $$ = expr_binary(ITM_EXPR_DIV, $1, $3); 1191*7c478bd9Sstevel@tonic-gate $1 = expr_seq_to_int($1); 1192*7c478bd9Sstevel@tonic-gate $3 = expr_seq_to_int($3); 1193*7c478bd9Sstevel@tonic-gate switch ($1->type) { 1194*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1195*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1196*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1197*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_DIV_D_D, $1, $3); 1198*7c478bd9Sstevel@tonic-gate break; 1199*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1200*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_DIV_D_R, $1, $3); 1201*7c478bd9Sstevel@tonic-gate break; 1202*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1203*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_DIV_D_INVD, $1, $3); 1204*7c478bd9Sstevel@tonic-gate break; 1205*7c478bd9Sstevel@tonic-gate default: 1206*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_DIV_D_E, $1, $3); 1207*7c478bd9Sstevel@tonic-gate break; 1208*7c478bd9Sstevel@tonic-gate } 1209*7c478bd9Sstevel@tonic-gate break; 1210*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1211*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1212*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1213*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_DIV_R_D, $1, $3); 1214*7c478bd9Sstevel@tonic-gate break; 1215*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1216*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_DIV_R_R, $1, $3); 1217*7c478bd9Sstevel@tonic-gate break; 1218*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1219*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_DIV_R_INVD, $1, $3); 1220*7c478bd9Sstevel@tonic-gate break; 1221*7c478bd9Sstevel@tonic-gate default: 1222*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_DIV_R_E, $1, $3); 1223*7c478bd9Sstevel@tonic-gate break; 1224*7c478bd9Sstevel@tonic-gate } 1225*7c478bd9Sstevel@tonic-gate break; 1226*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1227*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1228*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1229*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_DIV_INVD_D, $1, $3); 1230*7c478bd9Sstevel@tonic-gate break; 1231*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1232*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_DIV_INVD_R, $1, $3); 1233*7c478bd9Sstevel@tonic-gate break; 1234*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1235*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_DIV_INVD_INVD, 1236*7c478bd9Sstevel@tonic-gate $1, $3); 1237*7c478bd9Sstevel@tonic-gate break; 1238*7c478bd9Sstevel@tonic-gate default: 1239*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_DIV_INVD_E, $1, $3); 1240*7c478bd9Sstevel@tonic-gate break; 1241*7c478bd9Sstevel@tonic-gate } 1242*7c478bd9Sstevel@tonic-gate break; 1243*7c478bd9Sstevel@tonic-gate default: 1244*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1245*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1246*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_DIV_E_D, $1, $3); 1247*7c478bd9Sstevel@tonic-gate break; 1248*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1249*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_DIV_E_R, $1, $3); 1250*7c478bd9Sstevel@tonic-gate break; 1251*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1252*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_DIV_E_INVD, $1, $3); 1253*7c478bd9Sstevel@tonic-gate break; 1254*7c478bd9Sstevel@tonic-gate default: 1255*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_DIV, $1, $3); 1256*7c478bd9Sstevel@tonic-gate break; 1257*7c478bd9Sstevel@tonic-gate } 1258*7c478bd9Sstevel@tonic-gate break; 1259*7c478bd9Sstevel@tonic-gate } 1260*7c478bd9Sstevel@tonic-gate } 1261*7c478bd9Sstevel@tonic-gate | expr MOD expr 1262*7c478bd9Sstevel@tonic-gate { 1263*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr % expr\n")); 1264*7c478bd9Sstevel@tonic-gate $$ = expr_binary(ITM_EXPR_MOD, $1, $3); 1265*7c478bd9Sstevel@tonic-gate $1 = expr_seq_to_int($1); 1266*7c478bd9Sstevel@tonic-gate $3 = expr_seq_to_int($3); 1267*7c478bd9Sstevel@tonic-gate switch ($1->type) { 1268*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1269*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1270*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1271*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MOD_D_D, $1, $3); 1272*7c478bd9Sstevel@tonic-gate break; 1273*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1274*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MOD_D_R, $1, $3); 1275*7c478bd9Sstevel@tonic-gate break; 1276*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1277*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MOD_D_INVD, $1, $3); 1278*7c478bd9Sstevel@tonic-gate break; 1279*7c478bd9Sstevel@tonic-gate default: 1280*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MOD_D_E, $1, $3); 1281*7c478bd9Sstevel@tonic-gate break; 1282*7c478bd9Sstevel@tonic-gate } 1283*7c478bd9Sstevel@tonic-gate break; 1284*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1285*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1286*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1287*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MOD_R_D, $1, $3); 1288*7c478bd9Sstevel@tonic-gate break; 1289*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1290*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MOD_R_R, $1, $3); 1291*7c478bd9Sstevel@tonic-gate break; 1292*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1293*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MOD_R_INVD, $1, $3); 1294*7c478bd9Sstevel@tonic-gate break; 1295*7c478bd9Sstevel@tonic-gate default: 1296*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MOD_R_E, $1, $3); 1297*7c478bd9Sstevel@tonic-gate break; 1298*7c478bd9Sstevel@tonic-gate } 1299*7c478bd9Sstevel@tonic-gate break; 1300*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1301*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1302*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1303*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MOD_INVD_D, $1, $3); 1304*7c478bd9Sstevel@tonic-gate break; 1305*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1306*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MOD_INVD_R, $1, $3); 1307*7c478bd9Sstevel@tonic-gate break; 1308*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1309*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MOD_INVD_INVD, 1310*7c478bd9Sstevel@tonic-gate $1, $3); 1311*7c478bd9Sstevel@tonic-gate break; 1312*7c478bd9Sstevel@tonic-gate default: 1313*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MOD_INVD_E, $1, $3); 1314*7c478bd9Sstevel@tonic-gate break; 1315*7c478bd9Sstevel@tonic-gate } 1316*7c478bd9Sstevel@tonic-gate break; 1317*7c478bd9Sstevel@tonic-gate default: 1318*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1319*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1320*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MOD_E_D, $1, $3); 1321*7c478bd9Sstevel@tonic-gate break; 1322*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1323*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MOD_E_R, $1, $3); 1324*7c478bd9Sstevel@tonic-gate break; 1325*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1326*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MOD_E_INVD, $1, $3); 1327*7c478bd9Sstevel@tonic-gate break; 1328*7c478bd9Sstevel@tonic-gate default: 1329*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_MOD, $1, $3); 1330*7c478bd9Sstevel@tonic-gate break; 1331*7c478bd9Sstevel@tonic-gate } 1332*7c478bd9Sstevel@tonic-gate break; 1333*7c478bd9Sstevel@tonic-gate } 1334*7c478bd9Sstevel@tonic-gate } 1335*7c478bd9Sstevel@tonic-gate | expr SHL expr 1336*7c478bd9Sstevel@tonic-gate { 1337*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr << expr\n")); 1338*7c478bd9Sstevel@tonic-gate $$ = expr_binary(ITM_EXPR_SHIFT_L, $1, $3); 1339*7c478bd9Sstevel@tonic-gate $1 = expr_seq_to_int($1); 1340*7c478bd9Sstevel@tonic-gate $3 = expr_seq_to_int($3); 1341*7c478bd9Sstevel@tonic-gate switch ($1->type) { 1342*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1343*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1344*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1345*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_L_D_D, $1, $3); 1346*7c478bd9Sstevel@tonic-gate break; 1347*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1348*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_L_D_R, $1, $3); 1349*7c478bd9Sstevel@tonic-gate break; 1350*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1351*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_L_D_INVD, 1352*7c478bd9Sstevel@tonic-gate $1, $3); 1353*7c478bd9Sstevel@tonic-gate break; 1354*7c478bd9Sstevel@tonic-gate default: 1355*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_L_D_E, $1, $3); 1356*7c478bd9Sstevel@tonic-gate break; 1357*7c478bd9Sstevel@tonic-gate } 1358*7c478bd9Sstevel@tonic-gate break; 1359*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1360*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1361*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1362*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_L_R_D, $1, $3); 1363*7c478bd9Sstevel@tonic-gate break; 1364*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1365*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_L_R_R, $1, $3); 1366*7c478bd9Sstevel@tonic-gate break; 1367*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1368*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_L_R_INVD, 1369*7c478bd9Sstevel@tonic-gate $1, $3); 1370*7c478bd9Sstevel@tonic-gate break; 1371*7c478bd9Sstevel@tonic-gate default: 1372*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_L_R_E, $1, $3); 1373*7c478bd9Sstevel@tonic-gate break; 1374*7c478bd9Sstevel@tonic-gate } 1375*7c478bd9Sstevel@tonic-gate break; 1376*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1377*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1378*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1379*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_L_INVD_D, 1380*7c478bd9Sstevel@tonic-gate $1, $3); 1381*7c478bd9Sstevel@tonic-gate break; 1382*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1383*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_L_INVD_R, 1384*7c478bd9Sstevel@tonic-gate $1, $3); 1385*7c478bd9Sstevel@tonic-gate break; 1386*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1387*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_L_INVD_INVD, 1388*7c478bd9Sstevel@tonic-gate $1, $3); 1389*7c478bd9Sstevel@tonic-gate break; 1390*7c478bd9Sstevel@tonic-gate default: 1391*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_L_INVD_E, 1392*7c478bd9Sstevel@tonic-gate $1, $3); 1393*7c478bd9Sstevel@tonic-gate break; 1394*7c478bd9Sstevel@tonic-gate } 1395*7c478bd9Sstevel@tonic-gate break; 1396*7c478bd9Sstevel@tonic-gate default: 1397*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1398*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1399*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_L_E_D, $1, $3); 1400*7c478bd9Sstevel@tonic-gate break; 1401*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1402*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_L_E_R, $1, $3); 1403*7c478bd9Sstevel@tonic-gate break; 1404*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1405*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_L_E_INVD, 1406*7c478bd9Sstevel@tonic-gate $1, $3); 1407*7c478bd9Sstevel@tonic-gate break; 1408*7c478bd9Sstevel@tonic-gate default: 1409*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_L, $1, $3); 1410*7c478bd9Sstevel@tonic-gate break; 1411*7c478bd9Sstevel@tonic-gate } 1412*7c478bd9Sstevel@tonic-gate break; 1413*7c478bd9Sstevel@tonic-gate } 1414*7c478bd9Sstevel@tonic-gate } 1415*7c478bd9Sstevel@tonic-gate | expr SHR expr 1416*7c478bd9Sstevel@tonic-gate { 1417*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr >> expr\n")); 1418*7c478bd9Sstevel@tonic-gate $$ = expr_binary(ITM_EXPR_SHIFT_R, $1, $3); 1419*7c478bd9Sstevel@tonic-gate $1 = expr_seq_to_int($1); 1420*7c478bd9Sstevel@tonic-gate $3 = expr_seq_to_int($3); 1421*7c478bd9Sstevel@tonic-gate switch ($1->type) { 1422*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1423*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1424*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1425*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_R_D_D, $1, $3); 1426*7c478bd9Sstevel@tonic-gate break; 1427*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1428*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_R_D_R, $1, $3); 1429*7c478bd9Sstevel@tonic-gate break; 1430*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1431*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_R_D_INVD, 1432*7c478bd9Sstevel@tonic-gate $1, $3); 1433*7c478bd9Sstevel@tonic-gate break; 1434*7c478bd9Sstevel@tonic-gate default: 1435*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_R_D_E, $1, $3); 1436*7c478bd9Sstevel@tonic-gate break; 1437*7c478bd9Sstevel@tonic-gate } 1438*7c478bd9Sstevel@tonic-gate break; 1439*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1440*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1441*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1442*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_R_R_D, $1, $3); 1443*7c478bd9Sstevel@tonic-gate break; 1444*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1445*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_R_R_R, $1, $3); 1446*7c478bd9Sstevel@tonic-gate break; 1447*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1448*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_R_R_INVD, 1449*7c478bd9Sstevel@tonic-gate $1, $3); 1450*7c478bd9Sstevel@tonic-gate break; 1451*7c478bd9Sstevel@tonic-gate default: 1452*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_R_R_E, $1, $3); 1453*7c478bd9Sstevel@tonic-gate break; 1454*7c478bd9Sstevel@tonic-gate } 1455*7c478bd9Sstevel@tonic-gate break; 1456*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1457*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1458*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1459*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_R_INVD_D, 1460*7c478bd9Sstevel@tonic-gate $1, $3); 1461*7c478bd9Sstevel@tonic-gate break; 1462*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1463*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_R_INVD_R, 1464*7c478bd9Sstevel@tonic-gate $1, $3); 1465*7c478bd9Sstevel@tonic-gate break; 1466*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1467*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_R_INVD_INVD, 1468*7c478bd9Sstevel@tonic-gate $1, $3); 1469*7c478bd9Sstevel@tonic-gate break; 1470*7c478bd9Sstevel@tonic-gate default: 1471*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_R_INVD_E, 1472*7c478bd9Sstevel@tonic-gate $1, $3); 1473*7c478bd9Sstevel@tonic-gate break; 1474*7c478bd9Sstevel@tonic-gate } 1475*7c478bd9Sstevel@tonic-gate break; 1476*7c478bd9Sstevel@tonic-gate default: 1477*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1478*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1479*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_R_E_D, $1, $3); 1480*7c478bd9Sstevel@tonic-gate break; 1481*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1482*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_R_E_R, $1, $3); 1483*7c478bd9Sstevel@tonic-gate break; 1484*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1485*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_R_E_INVD, 1486*7c478bd9Sstevel@tonic-gate $1, $3); 1487*7c478bd9Sstevel@tonic-gate break; 1488*7c478bd9Sstevel@tonic-gate default: 1489*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_SHIFT_R, $1, $3); 1490*7c478bd9Sstevel@tonic-gate break; 1491*7c478bd9Sstevel@tonic-gate } 1492*7c478bd9Sstevel@tonic-gate break; 1493*7c478bd9Sstevel@tonic-gate } 1494*7c478bd9Sstevel@tonic-gate } 1495*7c478bd9Sstevel@tonic-gate | expr OR expr 1496*7c478bd9Sstevel@tonic-gate { 1497*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr | expr\n")); 1498*7c478bd9Sstevel@tonic-gate $$ = expr_binary(ITM_EXPR_OR, $1, $3); 1499*7c478bd9Sstevel@tonic-gate $1 = expr_seq_to_int($1); 1500*7c478bd9Sstevel@tonic-gate $3 = expr_seq_to_int($3); 1501*7c478bd9Sstevel@tonic-gate switch ($1->type) { 1502*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1503*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1504*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1505*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_OR_D_D, $1, $3); 1506*7c478bd9Sstevel@tonic-gate break; 1507*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1508*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_OR_D_R, $1, $3); 1509*7c478bd9Sstevel@tonic-gate break; 1510*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1511*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_OR_D_INVD, $1, $3); 1512*7c478bd9Sstevel@tonic-gate break; 1513*7c478bd9Sstevel@tonic-gate default: 1514*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_OR_D_E, $1, $3); 1515*7c478bd9Sstevel@tonic-gate break; 1516*7c478bd9Sstevel@tonic-gate } 1517*7c478bd9Sstevel@tonic-gate break; 1518*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1519*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1520*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1521*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_OR_R_D, $1, $3); 1522*7c478bd9Sstevel@tonic-gate break; 1523*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1524*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_OR_R_R, $1, $3); 1525*7c478bd9Sstevel@tonic-gate break; 1526*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1527*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_OR_R_INVD, $1, $3); 1528*7c478bd9Sstevel@tonic-gate break; 1529*7c478bd9Sstevel@tonic-gate default: 1530*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_OR_R_E, $1, $3); 1531*7c478bd9Sstevel@tonic-gate break; 1532*7c478bd9Sstevel@tonic-gate } 1533*7c478bd9Sstevel@tonic-gate break; 1534*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1535*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1536*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1537*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_OR_INVD_D, $1, $3); 1538*7c478bd9Sstevel@tonic-gate break; 1539*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1540*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_OR_INVD_R, $1, $3); 1541*7c478bd9Sstevel@tonic-gate break; 1542*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1543*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_OR_INVD_INVD, 1544*7c478bd9Sstevel@tonic-gate $1, $3); 1545*7c478bd9Sstevel@tonic-gate break; 1546*7c478bd9Sstevel@tonic-gate default: 1547*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_OR_INVD_E, $1, $3); 1548*7c478bd9Sstevel@tonic-gate break; 1549*7c478bd9Sstevel@tonic-gate } 1550*7c478bd9Sstevel@tonic-gate break; 1551*7c478bd9Sstevel@tonic-gate default: 1552*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1553*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1554*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_OR_E_D, $1, $3); 1555*7c478bd9Sstevel@tonic-gate break; 1556*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1557*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_OR_E_R, $1, $3); 1558*7c478bd9Sstevel@tonic-gate break; 1559*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1560*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_OR_E_INVD, $1, $3); 1561*7c478bd9Sstevel@tonic-gate break; 1562*7c478bd9Sstevel@tonic-gate default: 1563*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_OR, $1, $3); 1564*7c478bd9Sstevel@tonic-gate break; 1565*7c478bd9Sstevel@tonic-gate } 1566*7c478bd9Sstevel@tonic-gate break; 1567*7c478bd9Sstevel@tonic-gate } 1568*7c478bd9Sstevel@tonic-gate } 1569*7c478bd9Sstevel@tonic-gate | expr XOR expr 1570*7c478bd9Sstevel@tonic-gate { 1571*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr ^ expr\n")); 1572*7c478bd9Sstevel@tonic-gate $$ = expr_binary(ITM_EXPR_XOR, $1, $3); 1573*7c478bd9Sstevel@tonic-gate $1 = expr_seq_to_int($1); 1574*7c478bd9Sstevel@tonic-gate $3 = expr_seq_to_int($3); 1575*7c478bd9Sstevel@tonic-gate switch ($1->type) { 1576*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1577*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1578*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1579*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_XOR_D_D, $1, $3); 1580*7c478bd9Sstevel@tonic-gate break; 1581*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1582*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_XOR_D_R, $1, $3); 1583*7c478bd9Sstevel@tonic-gate break; 1584*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1585*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_XOR_D_INVD, $1, $3); 1586*7c478bd9Sstevel@tonic-gate break; 1587*7c478bd9Sstevel@tonic-gate default: 1588*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_XOR_D_E, $1, $3); 1589*7c478bd9Sstevel@tonic-gate break; 1590*7c478bd9Sstevel@tonic-gate } 1591*7c478bd9Sstevel@tonic-gate break; 1592*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1593*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1594*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1595*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_XOR_R_D, $1, $3); 1596*7c478bd9Sstevel@tonic-gate break; 1597*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1598*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_XOR_R_R, $1, $3); 1599*7c478bd9Sstevel@tonic-gate break; 1600*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1601*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_XOR_R_INVD, $1, $3); 1602*7c478bd9Sstevel@tonic-gate break; 1603*7c478bd9Sstevel@tonic-gate default: 1604*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_XOR_R_E, $1, $3); 1605*7c478bd9Sstevel@tonic-gate break; 1606*7c478bd9Sstevel@tonic-gate } 1607*7c478bd9Sstevel@tonic-gate break; 1608*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1609*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1610*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1611*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_XOR_INVD_D, $1, $3); 1612*7c478bd9Sstevel@tonic-gate break; 1613*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1614*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_XOR_INVD_R, $1, $3); 1615*7c478bd9Sstevel@tonic-gate break; 1616*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1617*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_XOR_INVD_INVD, 1618*7c478bd9Sstevel@tonic-gate $1, $3); 1619*7c478bd9Sstevel@tonic-gate break; 1620*7c478bd9Sstevel@tonic-gate default: 1621*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_XOR_INVD_E, $1, $3); 1622*7c478bd9Sstevel@tonic-gate break; 1623*7c478bd9Sstevel@tonic-gate } 1624*7c478bd9Sstevel@tonic-gate break; 1625*7c478bd9Sstevel@tonic-gate default: 1626*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1627*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1628*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_XOR_E_D, $1, $3); 1629*7c478bd9Sstevel@tonic-gate break; 1630*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1631*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_XOR_E_R, $1, $3); 1632*7c478bd9Sstevel@tonic-gate break; 1633*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1634*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_XOR_E_INVD, $1, $3); 1635*7c478bd9Sstevel@tonic-gate break; 1636*7c478bd9Sstevel@tonic-gate default: 1637*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_XOR, $1, $3); 1638*7c478bd9Sstevel@tonic-gate break; 1639*7c478bd9Sstevel@tonic-gate } 1640*7c478bd9Sstevel@tonic-gate break; 1641*7c478bd9Sstevel@tonic-gate } 1642*7c478bd9Sstevel@tonic-gate } 1643*7c478bd9Sstevel@tonic-gate | expr AND expr 1644*7c478bd9Sstevel@tonic-gate { 1645*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr & expr\n")); 1646*7c478bd9Sstevel@tonic-gate $$ = expr_binary(ITM_EXPR_AND, $1, $3); 1647*7c478bd9Sstevel@tonic-gate $1 = expr_seq_to_int($1); 1648*7c478bd9Sstevel@tonic-gate $3 = expr_seq_to_int($3); 1649*7c478bd9Sstevel@tonic-gate switch ($1->type) { 1650*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1651*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1652*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1653*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_AND_D_D, $1, $3); 1654*7c478bd9Sstevel@tonic-gate break; 1655*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1656*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_AND_D_R, $1, $3); 1657*7c478bd9Sstevel@tonic-gate break; 1658*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1659*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_AND_D_INVD, $1, $3); 1660*7c478bd9Sstevel@tonic-gate break; 1661*7c478bd9Sstevel@tonic-gate default: 1662*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_AND_D_E, $1, $3); 1663*7c478bd9Sstevel@tonic-gate break; 1664*7c478bd9Sstevel@tonic-gate } 1665*7c478bd9Sstevel@tonic-gate break; 1666*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1667*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1668*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1669*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_AND_R_D, $1, $3); 1670*7c478bd9Sstevel@tonic-gate break; 1671*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1672*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_AND_R_R, $1, $3); 1673*7c478bd9Sstevel@tonic-gate break; 1674*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1675*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_AND_R_INVD, $1, $3); 1676*7c478bd9Sstevel@tonic-gate break; 1677*7c478bd9Sstevel@tonic-gate default: 1678*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_AND_R_E, $1, $3); 1679*7c478bd9Sstevel@tonic-gate break; 1680*7c478bd9Sstevel@tonic-gate } 1681*7c478bd9Sstevel@tonic-gate break; 1682*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1683*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1684*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1685*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_AND_INVD_D, $1, $3); 1686*7c478bd9Sstevel@tonic-gate break; 1687*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1688*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_AND_INVD_R, $1, $3); 1689*7c478bd9Sstevel@tonic-gate break; 1690*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1691*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_AND_INVD_INVD, 1692*7c478bd9Sstevel@tonic-gate $1, $3); 1693*7c478bd9Sstevel@tonic-gate break; 1694*7c478bd9Sstevel@tonic-gate default: 1695*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_AND_INVD_E, $1, $3); 1696*7c478bd9Sstevel@tonic-gate break; 1697*7c478bd9Sstevel@tonic-gate } 1698*7c478bd9Sstevel@tonic-gate break; 1699*7c478bd9Sstevel@tonic-gate default: 1700*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1701*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1702*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_AND_E_D, $1, $3); 1703*7c478bd9Sstevel@tonic-gate break; 1704*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1705*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_AND_E_R, $1, $3); 1706*7c478bd9Sstevel@tonic-gate break; 1707*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1708*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_AND_E_INVD, $1, $3); 1709*7c478bd9Sstevel@tonic-gate break; 1710*7c478bd9Sstevel@tonic-gate default: 1711*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_AND, $1, $3); 1712*7c478bd9Sstevel@tonic-gate break; 1713*7c478bd9Sstevel@tonic-gate } 1714*7c478bd9Sstevel@tonic-gate break; 1715*7c478bd9Sstevel@tonic-gate } 1716*7c478bd9Sstevel@tonic-gate } 1717*7c478bd9Sstevel@tonic-gate | expr EQ expr 1718*7c478bd9Sstevel@tonic-gate { 1719*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr == expr\n")); 1720*7c478bd9Sstevel@tonic-gate $$ = expr_binary(ITM_EXPR_EQ, $1, $3); 1721*7c478bd9Sstevel@tonic-gate $1 = expr_seq_to_int($1); 1722*7c478bd9Sstevel@tonic-gate $3 = expr_seq_to_int($3); 1723*7c478bd9Sstevel@tonic-gate switch ($1->type) { 1724*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1725*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1726*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1727*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_EQ_D_D, $1, $3); 1728*7c478bd9Sstevel@tonic-gate break; 1729*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1730*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_EQ_D_R, $1, $3); 1731*7c478bd9Sstevel@tonic-gate break; 1732*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1733*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_EQ_D_INVD, $1, $3); 1734*7c478bd9Sstevel@tonic-gate break; 1735*7c478bd9Sstevel@tonic-gate default: 1736*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_EQ_D_E, $1, $3); 1737*7c478bd9Sstevel@tonic-gate break; 1738*7c478bd9Sstevel@tonic-gate } 1739*7c478bd9Sstevel@tonic-gate break; 1740*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1741*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1742*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1743*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_EQ_R_D, $1, $3); 1744*7c478bd9Sstevel@tonic-gate break; 1745*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1746*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_EQ_R_R, $1, $3); 1747*7c478bd9Sstevel@tonic-gate break; 1748*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1749*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_EQ_R_INVD, $1, $3); 1750*7c478bd9Sstevel@tonic-gate break; 1751*7c478bd9Sstevel@tonic-gate default: 1752*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_EQ_R_E, $1, $3); 1753*7c478bd9Sstevel@tonic-gate break; 1754*7c478bd9Sstevel@tonic-gate } 1755*7c478bd9Sstevel@tonic-gate break; 1756*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1757*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1758*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1759*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_EQ_INVD_D, $1, $3); 1760*7c478bd9Sstevel@tonic-gate break; 1761*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1762*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_EQ_INVD_R, $1, $3); 1763*7c478bd9Sstevel@tonic-gate break; 1764*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1765*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_EQ_INVD_INVD, 1766*7c478bd9Sstevel@tonic-gate $1, $3); 1767*7c478bd9Sstevel@tonic-gate break; 1768*7c478bd9Sstevel@tonic-gate default: 1769*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_EQ_INVD_E, $1, $3); 1770*7c478bd9Sstevel@tonic-gate break; 1771*7c478bd9Sstevel@tonic-gate } 1772*7c478bd9Sstevel@tonic-gate break; 1773*7c478bd9Sstevel@tonic-gate default: 1774*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1775*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1776*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_EQ_E_D, $1, $3); 1777*7c478bd9Sstevel@tonic-gate break; 1778*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1779*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_EQ_E_R, $1, $3); 1780*7c478bd9Sstevel@tonic-gate break; 1781*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1782*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_EQ_E_INVD, $1, $3); 1783*7c478bd9Sstevel@tonic-gate break; 1784*7c478bd9Sstevel@tonic-gate default: 1785*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_EQ, $1, $3); 1786*7c478bd9Sstevel@tonic-gate break; 1787*7c478bd9Sstevel@tonic-gate } 1788*7c478bd9Sstevel@tonic-gate break; 1789*7c478bd9Sstevel@tonic-gate } 1790*7c478bd9Sstevel@tonic-gate } 1791*7c478bd9Sstevel@tonic-gate | expr NE expr 1792*7c478bd9Sstevel@tonic-gate { 1793*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr != expr\n")); 1794*7c478bd9Sstevel@tonic-gate $$ = expr_binary(ITM_EXPR_NE, $1, $3); 1795*7c478bd9Sstevel@tonic-gate $1 = expr_seq_to_int($1); 1796*7c478bd9Sstevel@tonic-gate $3 = expr_seq_to_int($3); 1797*7c478bd9Sstevel@tonic-gate switch ($1->type) { 1798*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1799*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1800*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1801*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_NE_D_D, $1, $3); 1802*7c478bd9Sstevel@tonic-gate break; 1803*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1804*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_NE_D_R, $1, $3); 1805*7c478bd9Sstevel@tonic-gate break; 1806*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1807*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_NE_D_INVD, $1, $3); 1808*7c478bd9Sstevel@tonic-gate break; 1809*7c478bd9Sstevel@tonic-gate default: 1810*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_NE_D_E, $1, $3); 1811*7c478bd9Sstevel@tonic-gate break; 1812*7c478bd9Sstevel@tonic-gate } 1813*7c478bd9Sstevel@tonic-gate break; 1814*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1815*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1816*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1817*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_NE_R_D, $1, $3); 1818*7c478bd9Sstevel@tonic-gate break; 1819*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1820*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_NE_R_R, $1, $3); 1821*7c478bd9Sstevel@tonic-gate break; 1822*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1823*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_NE_R_INVD, $1, $3); 1824*7c478bd9Sstevel@tonic-gate break; 1825*7c478bd9Sstevel@tonic-gate default: 1826*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_NE_R_E, $1, $3); 1827*7c478bd9Sstevel@tonic-gate break; 1828*7c478bd9Sstevel@tonic-gate } 1829*7c478bd9Sstevel@tonic-gate break; 1830*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1831*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1832*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1833*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_NE_INVD_D, $1, $3); 1834*7c478bd9Sstevel@tonic-gate break; 1835*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1836*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_NE_INVD_R, $1, $3); 1837*7c478bd9Sstevel@tonic-gate break; 1838*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1839*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_NE_INVD_INVD, 1840*7c478bd9Sstevel@tonic-gate $1, $3); 1841*7c478bd9Sstevel@tonic-gate break; 1842*7c478bd9Sstevel@tonic-gate default: 1843*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_NE_INVD_E, $1, $3); 1844*7c478bd9Sstevel@tonic-gate break; 1845*7c478bd9Sstevel@tonic-gate } 1846*7c478bd9Sstevel@tonic-gate break; 1847*7c478bd9Sstevel@tonic-gate default: 1848*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1849*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1850*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_NE_E_D, $1, $3); 1851*7c478bd9Sstevel@tonic-gate break; 1852*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1853*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_NE_E_R, $1, $3); 1854*7c478bd9Sstevel@tonic-gate break; 1855*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1856*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_NE_E_INVD, $1, $3); 1857*7c478bd9Sstevel@tonic-gate break; 1858*7c478bd9Sstevel@tonic-gate default: 1859*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_NE, $1, $3); 1860*7c478bd9Sstevel@tonic-gate break; 1861*7c478bd9Sstevel@tonic-gate } 1862*7c478bd9Sstevel@tonic-gate break; 1863*7c478bd9Sstevel@tonic-gate } 1864*7c478bd9Sstevel@tonic-gate } 1865*7c478bd9Sstevel@tonic-gate | expr GT expr 1866*7c478bd9Sstevel@tonic-gate { 1867*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr > expr\n")); 1868*7c478bd9Sstevel@tonic-gate $$ = expr_binary(ITM_EXPR_GT, $1, $3); 1869*7c478bd9Sstevel@tonic-gate $1 = expr_seq_to_int($1); 1870*7c478bd9Sstevel@tonic-gate $3 = expr_seq_to_int($3); 1871*7c478bd9Sstevel@tonic-gate switch ($1->type) { 1872*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1873*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1874*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1875*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GT_D_D, $1, $3); 1876*7c478bd9Sstevel@tonic-gate break; 1877*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1878*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GT_D_R, $1, $3); 1879*7c478bd9Sstevel@tonic-gate break; 1880*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1881*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GT_D_INVD, $1, $3); 1882*7c478bd9Sstevel@tonic-gate break; 1883*7c478bd9Sstevel@tonic-gate default: 1884*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GT_D_E, $1, $3); 1885*7c478bd9Sstevel@tonic-gate break; 1886*7c478bd9Sstevel@tonic-gate } 1887*7c478bd9Sstevel@tonic-gate break; 1888*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1889*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1890*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1891*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GT_R_D, $1, $3); 1892*7c478bd9Sstevel@tonic-gate break; 1893*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1894*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GT_R_R, $1, $3); 1895*7c478bd9Sstevel@tonic-gate break; 1896*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1897*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GT_R_INVD, $1, $3); 1898*7c478bd9Sstevel@tonic-gate break; 1899*7c478bd9Sstevel@tonic-gate default: 1900*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GT_R_E, $1, $3); 1901*7c478bd9Sstevel@tonic-gate break; 1902*7c478bd9Sstevel@tonic-gate } 1903*7c478bd9Sstevel@tonic-gate break; 1904*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1905*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1906*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1907*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GT_INVD_D, $1, $3); 1908*7c478bd9Sstevel@tonic-gate break; 1909*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1910*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GT_INVD_R, $1, $3); 1911*7c478bd9Sstevel@tonic-gate break; 1912*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1913*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GT_INVD_INVD, 1914*7c478bd9Sstevel@tonic-gate $1, $3); 1915*7c478bd9Sstevel@tonic-gate break; 1916*7c478bd9Sstevel@tonic-gate default: 1917*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GT_INVD_E, $1, $3); 1918*7c478bd9Sstevel@tonic-gate break; 1919*7c478bd9Sstevel@tonic-gate } 1920*7c478bd9Sstevel@tonic-gate break; 1921*7c478bd9Sstevel@tonic-gate default: 1922*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1923*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1924*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GT_E_D, $1, $3); 1925*7c478bd9Sstevel@tonic-gate break; 1926*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1927*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GT_E_R, $1, $3); 1928*7c478bd9Sstevel@tonic-gate break; 1929*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1930*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GT_E_INVD, $1, $3); 1931*7c478bd9Sstevel@tonic-gate break; 1932*7c478bd9Sstevel@tonic-gate default: 1933*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GT, $1, $3); 1934*7c478bd9Sstevel@tonic-gate break; 1935*7c478bd9Sstevel@tonic-gate } 1936*7c478bd9Sstevel@tonic-gate break; 1937*7c478bd9Sstevel@tonic-gate } 1938*7c478bd9Sstevel@tonic-gate } 1939*7c478bd9Sstevel@tonic-gate | expr GE expr 1940*7c478bd9Sstevel@tonic-gate { 1941*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr >= expr\n")); 1942*7c478bd9Sstevel@tonic-gate $$ = expr_binary(ITM_EXPR_GE, $1, $3); 1943*7c478bd9Sstevel@tonic-gate $1 = expr_seq_to_int($1); 1944*7c478bd9Sstevel@tonic-gate $3 = expr_seq_to_int($3); 1945*7c478bd9Sstevel@tonic-gate switch ($1->type) { 1946*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1947*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1948*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1949*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GE_D_D, $1, $3); 1950*7c478bd9Sstevel@tonic-gate break; 1951*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1952*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GE_D_R, $1, $3); 1953*7c478bd9Sstevel@tonic-gate break; 1954*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1955*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GE_D_INVD, $1, $3); 1956*7c478bd9Sstevel@tonic-gate break; 1957*7c478bd9Sstevel@tonic-gate default: 1958*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GE_D_E, $1, $3); 1959*7c478bd9Sstevel@tonic-gate break; 1960*7c478bd9Sstevel@tonic-gate } 1961*7c478bd9Sstevel@tonic-gate break; 1962*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1963*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1964*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1965*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GE_R_D, $1, $3); 1966*7c478bd9Sstevel@tonic-gate break; 1967*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1968*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GE_R_R, $1, $3); 1969*7c478bd9Sstevel@tonic-gate break; 1970*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1971*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GE_R_INVD, $1, $3); 1972*7c478bd9Sstevel@tonic-gate break; 1973*7c478bd9Sstevel@tonic-gate default: 1974*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GE_R_E, $1, $3); 1975*7c478bd9Sstevel@tonic-gate break; 1976*7c478bd9Sstevel@tonic-gate } 1977*7c478bd9Sstevel@tonic-gate break; 1978*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1979*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1980*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1981*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GE_INVD_D, $1, $3); 1982*7c478bd9Sstevel@tonic-gate break; 1983*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 1984*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GE_INVD_R, $1, $3); 1985*7c478bd9Sstevel@tonic-gate break; 1986*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 1987*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GE_INVD_INVD, 1988*7c478bd9Sstevel@tonic-gate $1, $3); 1989*7c478bd9Sstevel@tonic-gate break; 1990*7c478bd9Sstevel@tonic-gate default: 1991*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GE_INVD_E, $1, $3); 1992*7c478bd9Sstevel@tonic-gate break; 1993*7c478bd9Sstevel@tonic-gate } 1994*7c478bd9Sstevel@tonic-gate break; 1995*7c478bd9Sstevel@tonic-gate default: 1996*7c478bd9Sstevel@tonic-gate switch ($3->type) { 1997*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 1998*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GE_E_D, $1, $3); 1999*7c478bd9Sstevel@tonic-gate break; 2000*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 2001*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GE_E_R, $1, $3); 2002*7c478bd9Sstevel@tonic-gate break; 2003*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 2004*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GE_E_INVD, $1, $3); 2005*7c478bd9Sstevel@tonic-gate break; 2006*7c478bd9Sstevel@tonic-gate default: 2007*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_GE, $1, $3); 2008*7c478bd9Sstevel@tonic-gate break; 2009*7c478bd9Sstevel@tonic-gate } 2010*7c478bd9Sstevel@tonic-gate break; 2011*7c478bd9Sstevel@tonic-gate } 2012*7c478bd9Sstevel@tonic-gate } 2013*7c478bd9Sstevel@tonic-gate | expr LT expr 2014*7c478bd9Sstevel@tonic-gate { 2015*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr < expr\n")); 2016*7c478bd9Sstevel@tonic-gate $$ = expr_binary(ITM_EXPR_LT, $1, $3); 2017*7c478bd9Sstevel@tonic-gate $1 = expr_seq_to_int($1); 2018*7c478bd9Sstevel@tonic-gate $3 = expr_seq_to_int($3); 2019*7c478bd9Sstevel@tonic-gate switch ($1->type) { 2020*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 2021*7c478bd9Sstevel@tonic-gate switch ($3->type) { 2022*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 2023*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LT_D_D, $1, $3); 2024*7c478bd9Sstevel@tonic-gate break; 2025*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 2026*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LT_D_R, $1, $3); 2027*7c478bd9Sstevel@tonic-gate break; 2028*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 2029*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LT_D_INVD, $1, $3); 2030*7c478bd9Sstevel@tonic-gate break; 2031*7c478bd9Sstevel@tonic-gate default: 2032*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LT_D_E, $1, $3); 2033*7c478bd9Sstevel@tonic-gate break; 2034*7c478bd9Sstevel@tonic-gate } 2035*7c478bd9Sstevel@tonic-gate break; 2036*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 2037*7c478bd9Sstevel@tonic-gate switch ($3->type) { 2038*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 2039*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LT_R_D, $1, $3); 2040*7c478bd9Sstevel@tonic-gate break; 2041*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 2042*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LT_R_R, $1, $3); 2043*7c478bd9Sstevel@tonic-gate break; 2044*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 2045*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LT_R_INVD, $1, $3); 2046*7c478bd9Sstevel@tonic-gate break; 2047*7c478bd9Sstevel@tonic-gate default: 2048*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LT_R_E, $1, $3); 2049*7c478bd9Sstevel@tonic-gate break; 2050*7c478bd9Sstevel@tonic-gate } 2051*7c478bd9Sstevel@tonic-gate break; 2052*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 2053*7c478bd9Sstevel@tonic-gate switch ($3->type) { 2054*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 2055*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LT_INVD_D, $1, $3); 2056*7c478bd9Sstevel@tonic-gate break; 2057*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 2058*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LT_INVD_R, $1, $3); 2059*7c478bd9Sstevel@tonic-gate break; 2060*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 2061*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LT_INVD_INVD, 2062*7c478bd9Sstevel@tonic-gate $1, $3); 2063*7c478bd9Sstevel@tonic-gate break; 2064*7c478bd9Sstevel@tonic-gate default: 2065*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LT_INVD_E, $1, $3); 2066*7c478bd9Sstevel@tonic-gate break; 2067*7c478bd9Sstevel@tonic-gate } 2068*7c478bd9Sstevel@tonic-gate break; 2069*7c478bd9Sstevel@tonic-gate default: 2070*7c478bd9Sstevel@tonic-gate switch ($3->type) { 2071*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 2072*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LT_E_D, $1, $3); 2073*7c478bd9Sstevel@tonic-gate break; 2074*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 2075*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LT_E_R, $1, $3); 2076*7c478bd9Sstevel@tonic-gate break; 2077*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 2078*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LT_E_INVD, $1, $3); 2079*7c478bd9Sstevel@tonic-gate break; 2080*7c478bd9Sstevel@tonic-gate default: 2081*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LT, $1, $3); 2082*7c478bd9Sstevel@tonic-gate break; 2083*7c478bd9Sstevel@tonic-gate } 2084*7c478bd9Sstevel@tonic-gate break; 2085*7c478bd9Sstevel@tonic-gate } 2086*7c478bd9Sstevel@tonic-gate } 2087*7c478bd9Sstevel@tonic-gate | expr LE expr 2088*7c478bd9Sstevel@tonic-gate { 2089*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr <= expr\n")); 2090*7c478bd9Sstevel@tonic-gate $$ = expr_binary(ITM_EXPR_LE, $1, $3); 2091*7c478bd9Sstevel@tonic-gate $1 = expr_seq_to_int($1); 2092*7c478bd9Sstevel@tonic-gate $3 = expr_seq_to_int($3); 2093*7c478bd9Sstevel@tonic-gate switch ($1->type) { 2094*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 2095*7c478bd9Sstevel@tonic-gate switch ($3->type) { 2096*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 2097*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LE_D_D, $1, $3); 2098*7c478bd9Sstevel@tonic-gate break; 2099*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 2100*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LE_D_R, $1, $3); 2101*7c478bd9Sstevel@tonic-gate break; 2102*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 2103*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LE_D_INVD, $1, $3); 2104*7c478bd9Sstevel@tonic-gate break; 2105*7c478bd9Sstevel@tonic-gate default: 2106*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LE_D_E, $1, $3); 2107*7c478bd9Sstevel@tonic-gate break; 2108*7c478bd9Sstevel@tonic-gate } 2109*7c478bd9Sstevel@tonic-gate break; 2110*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 2111*7c478bd9Sstevel@tonic-gate switch ($3->type) { 2112*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 2113*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LE_R_D, $1, $3); 2114*7c478bd9Sstevel@tonic-gate break; 2115*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 2116*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LE_R_R, $1, $3); 2117*7c478bd9Sstevel@tonic-gate break; 2118*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 2119*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LE_R_INVD, $1, $3); 2120*7c478bd9Sstevel@tonic-gate break; 2121*7c478bd9Sstevel@tonic-gate default: 2122*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LE_R_E, $1, $3); 2123*7c478bd9Sstevel@tonic-gate break; 2124*7c478bd9Sstevel@tonic-gate } 2125*7c478bd9Sstevel@tonic-gate break; 2126*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 2127*7c478bd9Sstevel@tonic-gate switch ($3->type) { 2128*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 2129*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LE_INVD_D, $1, $3); 2130*7c478bd9Sstevel@tonic-gate break; 2131*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 2132*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LE_INVD_R, $1, $3); 2133*7c478bd9Sstevel@tonic-gate break; 2134*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 2135*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LE_INVD_INVD, 2136*7c478bd9Sstevel@tonic-gate $1, $3); 2137*7c478bd9Sstevel@tonic-gate break; 2138*7c478bd9Sstevel@tonic-gate default: 2139*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LE_INVD_E, $1, $3); 2140*7c478bd9Sstevel@tonic-gate break; 2141*7c478bd9Sstevel@tonic-gate } 2142*7c478bd9Sstevel@tonic-gate break; 2143*7c478bd9Sstevel@tonic-gate default: 2144*7c478bd9Sstevel@tonic-gate switch ($3->type) { 2145*7c478bd9Sstevel@tonic-gate case ITM_EXPR_INT: 2146*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LE_E_D, $1, $3); 2147*7c478bd9Sstevel@tonic-gate break; 2148*7c478bd9Sstevel@tonic-gate case ITM_EXPR_REG: 2149*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LE_E_R, $1, $3); 2150*7c478bd9Sstevel@tonic-gate break; 2151*7c478bd9Sstevel@tonic-gate case ITM_EXPR_IN_VECTOR_D: 2152*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LE_E_INVD, $1, $3); 2153*7c478bd9Sstevel@tonic-gate break; 2154*7c478bd9Sstevel@tonic-gate default: 2155*7c478bd9Sstevel@tonic-gate $$ = expr_binary2(ITM_EXPR_LE, $1, $3); 2156*7c478bd9Sstevel@tonic-gate break; 2157*7c478bd9Sstevel@tonic-gate } 2158*7c478bd9Sstevel@tonic-gate break; 2159*7c478bd9Sstevel@tonic-gate } 2160*7c478bd9Sstevel@tonic-gate } 2161*7c478bd9Sstevel@tonic-gate | name ASSIGN expr 2162*7c478bd9Sstevel@tonic-gate { 2163*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: NAME = expr\n")); 2164*7c478bd9Sstevel@tonic-gate $$ = expr_assign(ITM_EXPR_ASSIGN, $1, $3); 2165*7c478bd9Sstevel@tonic-gate } 2166*7c478bd9Sstevel@tonic-gate | expr LOR expr 2167*7c478bd9Sstevel@tonic-gate { 2168*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr || expr\n")); 2169*7c478bd9Sstevel@tonic-gate $$ = expr_binary(ITM_EXPR_LOR, $1, $3); 2170*7c478bd9Sstevel@tonic-gate } 2171*7c478bd9Sstevel@tonic-gate | expr LAND expr 2172*7c478bd9Sstevel@tonic-gate { 2173*7c478bd9Sstevel@tonic-gate TRACE_MESSAGE('y', ("expr: expr && expr\n")); 2174*7c478bd9Sstevel@tonic-gate $$ = expr_binary(ITM_EXPR_LAND, $1, $3); 2175*7c478bd9Sstevel@tonic-gate } 2176*7c478bd9Sstevel@tonic-gate ; 2177*7c478bd9Sstevel@tonic-gate 2178*7c478bd9Sstevel@tonic-gate %% 2179