1 /* Simulator instruction semantics for sparc64.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 1999 Cygnus Solutions, Inc.
7 This file is part of the Cygnus Simulators.
12 #define WANT_CPU sparc64
13 #define WANT_CPU_SPARC64
20 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
22 /* x-invalid: --invalid-- */
25 SEM_FN_NAME (sparc64,x_invalid) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
27 SEM_STATUS status = 0;
28 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
29 int UNUSED written = 0;
30 IADDR UNUSED pc = GET_H_PC ();
31 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
32 EXTRACT_IFMT_EMPTY_VARS /* */
33 EXTRACT_IFMT_EMPTY_CODE
37 /* Update the recorded pc in the cpu state struct. */
40 sim_engine_invalid_insn (current_cpu, pc);
41 sim_io_error (CPU_STATE (current_cpu), "invalid insn not handled\n");
45 SEM_NBRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_VIRTUAL-CGEN_ATTR_BOOL_OFFSET)));
49 /* x-after: --after-- */
52 SEM_FN_NAME (sparc64,x_after) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
54 SEM_STATUS status = 0;
55 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
56 int UNUSED written = 0;
57 IADDR UNUSED pc = GET_H_PC ();
58 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
59 EXTRACT_IFMT_EMPTY_VARS /* */
60 EXTRACT_IFMT_EMPTY_CODE
63 #if WITH_SCACHE_PBB_SPARC64
64 sparc64_pbb_after (current_cpu, sem_arg);
68 SEM_NBRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_PBB-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_VIRTUAL-CGEN_ATTR_BOOL_OFFSET)));
72 /* x-before: --before-- */
75 SEM_FN_NAME (sparc64,x_before) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
77 SEM_STATUS status = 0;
78 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
79 int UNUSED written = 0;
80 IADDR UNUSED pc = GET_H_PC ();
81 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
82 EXTRACT_IFMT_EMPTY_VARS /* */
83 EXTRACT_IFMT_EMPTY_CODE
86 #if WITH_SCACHE_PBB_SPARC64
87 sparc64_pbb_before (current_cpu, sem_arg);
91 SEM_NBRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_PBB-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_VIRTUAL-CGEN_ATTR_BOOL_OFFSET)));
95 /* x-cti-chain: --cti-chain-- */
98 SEM_FN_NAME (sparc64,x_cti_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
100 SEM_STATUS status = 0;
101 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
102 int UNUSED written = 0;
103 IADDR UNUSED pc = GET_H_PC ();
104 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
105 EXTRACT_IFMT_EMPTY_VARS /* */
106 EXTRACT_IFMT_EMPTY_CODE
109 #if WITH_SCACHE_PBB_SPARC64
111 vpc = sparc64_pbb_cti_chain (current_cpu, sem_arg,
112 pbb_br_npc_ptr, pbb_br_npc);
115 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
116 vpc = sparc64_pbb_cti_chain (current_cpu, sem_arg,
117 CPU_PBB_BR_NPC_PTR (current_cpu),
118 CPU_PBB_BR_NPC (current_cpu));
123 SEM_NBRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_PBB-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_VIRTUAL-CGEN_ATTR_BOOL_OFFSET)));
127 /* x-chain: --chain-- */
130 SEM_FN_NAME (sparc64,x_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
132 SEM_STATUS status = 0;
133 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
134 int UNUSED written = 0;
135 IADDR UNUSED pc = GET_H_PC ();
136 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
137 EXTRACT_IFMT_EMPTY_VARS /* */
138 EXTRACT_IFMT_EMPTY_CODE
141 #if WITH_SCACHE_PBB_SPARC64
142 vpc = sparc64_pbb_chain (current_cpu, sem_arg);
149 SEM_NBRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_PBB-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_VIRTUAL-CGEN_ATTR_BOOL_OFFSET)));
153 /* x-begin: --begin-- */
156 SEM_FN_NAME (sparc64,x_begin) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
158 SEM_STATUS status = 0;
159 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
160 int UNUSED written = 0;
161 IADDR UNUSED pc = GET_H_PC ();
162 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
163 EXTRACT_IFMT_EMPTY_VARS /* */
164 EXTRACT_IFMT_EMPTY_CODE
167 #if WITH_SCACHE_PBB_SPARC64
169 /* In the switch case FAST_P is a constant, allowing several optimizations
170 in any called inline functions. */
171 vpc = sparc64_pbb_begin (current_cpu, FAST_P);
173 vpc = sparc64_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
178 SEM_NBRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_PBB-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_VIRTUAL-CGEN_ATTR_BOOL_OFFSET)));
182 /* beqz: beqz$a$p $rs1,$disp16 */
185 SEM_FN_NAME (sparc64,beqz) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
187 SEM_STATUS status = 0;
188 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
189 int UNUSED written = 0;
190 IADDR UNUSED pc = GET_H_PC ();
192 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
193 EXTRACT_IFMT_BEQZ_VARS /* f-disp16 f-rs1 f-p f-op2 f-fmt2-rcond f-bpr-res28-1 f-a f-op */
195 EXTRACT_IFMT_BEQZ_CODE
199 if (EQSI (GET_H_GR (f_rs1), 0)) {
201 USI opval = i_disp16;
202 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
204 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
207 SEM_ANNUL_INSN (current_cpu, pc, f_a);
211 abuf->written = written;
212 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
216 /* bgez: bgez$a$p $rs1,$disp16 */
219 SEM_FN_NAME (sparc64,bgez) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
221 SEM_STATUS status = 0;
222 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
223 int UNUSED written = 0;
224 IADDR UNUSED pc = GET_H_PC ();
226 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
227 EXTRACT_IFMT_BEQZ_VARS /* f-disp16 f-rs1 f-p f-op2 f-fmt2-rcond f-bpr-res28-1 f-a f-op */
229 EXTRACT_IFMT_BEQZ_CODE
233 if (GESI (GET_H_GR (f_rs1), 0)) {
235 USI opval = i_disp16;
236 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
238 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
241 SEM_ANNUL_INSN (current_cpu, pc, f_a);
245 abuf->written = written;
246 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
250 /* bgtz: bgtz$a$p $rs1,$disp16 */
253 SEM_FN_NAME (sparc64,bgtz) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
255 SEM_STATUS status = 0;
256 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
257 int UNUSED written = 0;
258 IADDR UNUSED pc = GET_H_PC ();
260 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
261 EXTRACT_IFMT_BEQZ_VARS /* f-disp16 f-rs1 f-p f-op2 f-fmt2-rcond f-bpr-res28-1 f-a f-op */
263 EXTRACT_IFMT_BEQZ_CODE
267 if (GTSI (GET_H_GR (f_rs1), 0)) {
269 USI opval = i_disp16;
270 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
272 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
275 SEM_ANNUL_INSN (current_cpu, pc, f_a);
279 abuf->written = written;
280 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
284 /* blez: blez$a$p $rs1,$disp16 */
287 SEM_FN_NAME (sparc64,blez) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
289 SEM_STATUS status = 0;
290 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
291 int UNUSED written = 0;
292 IADDR UNUSED pc = GET_H_PC ();
294 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
295 EXTRACT_IFMT_BEQZ_VARS /* f-disp16 f-rs1 f-p f-op2 f-fmt2-rcond f-bpr-res28-1 f-a f-op */
297 EXTRACT_IFMT_BEQZ_CODE
301 if (LESI (GET_H_GR (f_rs1), 0)) {
303 USI opval = i_disp16;
304 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
306 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
309 SEM_ANNUL_INSN (current_cpu, pc, f_a);
313 abuf->written = written;
314 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
318 /* bltz: bltz$a$p $rs1,$disp16 */
321 SEM_FN_NAME (sparc64,bltz) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
323 SEM_STATUS status = 0;
324 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
325 int UNUSED written = 0;
326 IADDR UNUSED pc = GET_H_PC ();
328 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
329 EXTRACT_IFMT_BEQZ_VARS /* f-disp16 f-rs1 f-p f-op2 f-fmt2-rcond f-bpr-res28-1 f-a f-op */
331 EXTRACT_IFMT_BEQZ_CODE
335 if (LTSI (GET_H_GR (f_rs1), 0)) {
337 USI opval = i_disp16;
338 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
340 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
343 SEM_ANNUL_INSN (current_cpu, pc, f_a);
347 abuf->written = written;
348 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
352 /* bnez: bnez$a$p $rs1,$disp16 */
355 SEM_FN_NAME (sparc64,bnez) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
357 SEM_STATUS status = 0;
358 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
359 int UNUSED written = 0;
360 IADDR UNUSED pc = GET_H_PC ();
362 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
363 EXTRACT_IFMT_BEQZ_VARS /* f-disp16 f-rs1 f-p f-op2 f-fmt2-rcond f-bpr-res28-1 f-a f-op */
365 EXTRACT_IFMT_BEQZ_CODE
369 if (NESI (GET_H_GR (f_rs1), 0)) {
371 USI opval = i_disp16;
372 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
374 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
377 SEM_ANNUL_INSN (current_cpu, pc, f_a);
381 abuf->written = written;
382 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
386 /* bpcc-ba: ba$a$p %xcc,$disp19 */
389 SEM_FN_NAME (sparc64,bpcc_ba) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
391 SEM_STATUS status = 0;
392 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
393 int UNUSED written = 0;
394 IADDR UNUSED pc = GET_H_PC ();
396 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
397 EXTRACT_IFMT_BPCC_BA_VARS /* f-disp19 f-p f-fmt2-cc0 f-fmt2-cc1 f-op2 f-fmt2-cond f-a f-op */
399 EXTRACT_IFMT_BPCC_BA_CODE
405 USI opval = i_disp22;
406 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
407 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
409 SEM_ANNUL_INSN (current_cpu, pc, f_a);
413 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_UNCOND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
417 /* bpcc-bn: bn$a$p %xcc,$disp19 */
420 SEM_FN_NAME (sparc64,bpcc_bn) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
422 SEM_STATUS status = 0;
423 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
424 int UNUSED written = 0;
425 IADDR UNUSED pc = GET_H_PC ();
426 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
427 EXTRACT_IFMT_BPCC_BA_VARS /* f-disp19 f-p f-fmt2-cc0 f-fmt2-cc1 f-op2 f-fmt2-cond f-a f-op */
428 EXTRACT_IFMT_BPCC_BA_CODE
432 do { } while (0); /*nop*/
433 SEM_ANNUL_INSN (current_cpu, pc, f_a);
437 SEM_NBRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
441 /* bpcc-bne: bne$a$p %xcc,$disp19 */
444 SEM_FN_NAME (sparc64,bpcc_bne) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
446 SEM_STATUS status = 0;
447 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
448 int UNUSED written = 0;
449 IADDR UNUSED pc = GET_H_PC ();
451 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
452 EXTRACT_IFMT_BPCC_BA_VARS /* f-disp19 f-p f-fmt2-cc0 f-fmt2-cc1 f-op2 f-fmt2-cond f-a f-op */
454 EXTRACT_IFMT_BPCC_BA_CODE
458 if (NOTBI (CPU (h_xcc_z))) {
460 USI opval = i_disp22;
461 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
463 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
466 SEM_ANNUL_INSN (current_cpu, pc, f_a);
470 abuf->written = written;
471 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
475 /* bpcc-be: be$a$p %xcc,$disp19 */
478 SEM_FN_NAME (sparc64,bpcc_be) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
480 SEM_STATUS status = 0;
481 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
482 int UNUSED written = 0;
483 IADDR UNUSED pc = GET_H_PC ();
485 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
486 EXTRACT_IFMT_BPCC_BA_VARS /* f-disp19 f-p f-fmt2-cc0 f-fmt2-cc1 f-op2 f-fmt2-cond f-a f-op */
488 EXTRACT_IFMT_BPCC_BA_CODE
494 USI opval = i_disp22;
495 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
497 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
500 SEM_ANNUL_INSN (current_cpu, pc, f_a);
504 abuf->written = written;
505 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
509 /* bpcc-bg: bg$a$p %xcc,$disp19 */
512 SEM_FN_NAME (sparc64,bpcc_bg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
514 SEM_STATUS status = 0;
515 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
516 int UNUSED written = 0;
517 IADDR UNUSED pc = GET_H_PC ();
519 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
520 EXTRACT_IFMT_BPCC_BA_VARS /* f-disp19 f-p f-fmt2-cc0 f-fmt2-cc1 f-op2 f-fmt2-cond f-a f-op */
522 EXTRACT_IFMT_BPCC_BA_CODE
526 if (NOTBI (ORBI (CPU (h_xcc_z), XORBI (CPU (h_xcc_n), CPU (h_xcc_v))))) {
528 USI opval = i_disp22;
529 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
531 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
534 SEM_ANNUL_INSN (current_cpu, pc, f_a);
538 abuf->written = written;
539 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
543 /* bpcc-ble: ble$a$p %xcc,$disp19 */
546 SEM_FN_NAME (sparc64,bpcc_ble) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
548 SEM_STATUS status = 0;
549 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
550 int UNUSED written = 0;
551 IADDR UNUSED pc = GET_H_PC ();
553 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
554 EXTRACT_IFMT_BPCC_BA_VARS /* f-disp19 f-p f-fmt2-cc0 f-fmt2-cc1 f-op2 f-fmt2-cond f-a f-op */
556 EXTRACT_IFMT_BPCC_BA_CODE
560 if (ORBI (CPU (h_xcc_z), XORBI (CPU (h_xcc_n), CPU (h_xcc_v)))) {
562 USI opval = i_disp22;
563 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
565 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
568 SEM_ANNUL_INSN (current_cpu, pc, f_a);
572 abuf->written = written;
573 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
577 /* bpcc-bge: bge$a$p %xcc,$disp19 */
580 SEM_FN_NAME (sparc64,bpcc_bge) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
582 SEM_STATUS status = 0;
583 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
584 int UNUSED written = 0;
585 IADDR UNUSED pc = GET_H_PC ();
587 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
588 EXTRACT_IFMT_BPCC_BA_VARS /* f-disp19 f-p f-fmt2-cc0 f-fmt2-cc1 f-op2 f-fmt2-cond f-a f-op */
590 EXTRACT_IFMT_BPCC_BA_CODE
594 if (NOTBI (XORBI (CPU (h_xcc_n), CPU (h_xcc_v)))) {
596 USI opval = i_disp22;
597 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
599 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
602 SEM_ANNUL_INSN (current_cpu, pc, f_a);
606 abuf->written = written;
607 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
611 /* bpcc-bl: bl$a$p %xcc,$disp19 */
614 SEM_FN_NAME (sparc64,bpcc_bl) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
616 SEM_STATUS status = 0;
617 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
618 int UNUSED written = 0;
619 IADDR UNUSED pc = GET_H_PC ();
621 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
622 EXTRACT_IFMT_BPCC_BA_VARS /* f-disp19 f-p f-fmt2-cc0 f-fmt2-cc1 f-op2 f-fmt2-cond f-a f-op */
624 EXTRACT_IFMT_BPCC_BA_CODE
628 if (XORBI (CPU (h_xcc_n), CPU (h_xcc_v))) {
630 USI opval = i_disp22;
631 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
633 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
636 SEM_ANNUL_INSN (current_cpu, pc, f_a);
640 abuf->written = written;
641 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
645 /* bpcc-bgu: bgu$a$p %xcc,$disp19 */
648 SEM_FN_NAME (sparc64,bpcc_bgu) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
650 SEM_STATUS status = 0;
651 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
652 int UNUSED written = 0;
653 IADDR UNUSED pc = GET_H_PC ();
655 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
656 EXTRACT_IFMT_BPCC_BA_VARS /* f-disp19 f-p f-fmt2-cc0 f-fmt2-cc1 f-op2 f-fmt2-cond f-a f-op */
658 EXTRACT_IFMT_BPCC_BA_CODE
662 if (NOTBI (ORBI (CPU (h_xcc_c), CPU (h_xcc_z)))) {
664 USI opval = i_disp22;
665 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
667 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
670 SEM_ANNUL_INSN (current_cpu, pc, f_a);
674 abuf->written = written;
675 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
679 /* bpcc-bleu: bleu$a$p %xcc,$disp19 */
682 SEM_FN_NAME (sparc64,bpcc_bleu) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
684 SEM_STATUS status = 0;
685 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
686 int UNUSED written = 0;
687 IADDR UNUSED pc = GET_H_PC ();
689 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
690 EXTRACT_IFMT_BPCC_BA_VARS /* f-disp19 f-p f-fmt2-cc0 f-fmt2-cc1 f-op2 f-fmt2-cond f-a f-op */
692 EXTRACT_IFMT_BPCC_BA_CODE
696 if (ORBI (CPU (h_xcc_c), CPU (h_xcc_z))) {
698 USI opval = i_disp22;
699 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
701 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
704 SEM_ANNUL_INSN (current_cpu, pc, f_a);
708 abuf->written = written;
709 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
713 /* bpcc-bcc: bcc$a$p %xcc,$disp19 */
716 SEM_FN_NAME (sparc64,bpcc_bcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
718 SEM_STATUS status = 0;
719 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
720 int UNUSED written = 0;
721 IADDR UNUSED pc = GET_H_PC ();
723 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
724 EXTRACT_IFMT_BPCC_BA_VARS /* f-disp19 f-p f-fmt2-cc0 f-fmt2-cc1 f-op2 f-fmt2-cond f-a f-op */
726 EXTRACT_IFMT_BPCC_BA_CODE
730 if (NOTBI (CPU (h_xcc_c))) {
732 USI opval = i_disp22;
733 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
735 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
738 SEM_ANNUL_INSN (current_cpu, pc, f_a);
742 abuf->written = written;
743 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
747 /* bpcc-bcs: bcs$a$p %xcc,$disp19 */
750 SEM_FN_NAME (sparc64,bpcc_bcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
752 SEM_STATUS status = 0;
753 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
754 int UNUSED written = 0;
755 IADDR UNUSED pc = GET_H_PC ();
757 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
758 EXTRACT_IFMT_BPCC_BA_VARS /* f-disp19 f-p f-fmt2-cc0 f-fmt2-cc1 f-op2 f-fmt2-cond f-a f-op */
760 EXTRACT_IFMT_BPCC_BA_CODE
766 USI opval = i_disp22;
767 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
769 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
772 SEM_ANNUL_INSN (current_cpu, pc, f_a);
776 abuf->written = written;
777 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
781 /* bpcc-bpos: bpos$a$p %xcc,$disp19 */
784 SEM_FN_NAME (sparc64,bpcc_bpos) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
786 SEM_STATUS status = 0;
787 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
788 int UNUSED written = 0;
789 IADDR UNUSED pc = GET_H_PC ();
791 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
792 EXTRACT_IFMT_BPCC_BA_VARS /* f-disp19 f-p f-fmt2-cc0 f-fmt2-cc1 f-op2 f-fmt2-cond f-a f-op */
794 EXTRACT_IFMT_BPCC_BA_CODE
798 if (NOTBI (CPU (h_xcc_n))) {
800 USI opval = i_disp22;
801 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
803 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
806 SEM_ANNUL_INSN (current_cpu, pc, f_a);
810 abuf->written = written;
811 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
815 /* bpcc-bneg: bneg$a$p %xcc,$disp19 */
818 SEM_FN_NAME (sparc64,bpcc_bneg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
820 SEM_STATUS status = 0;
821 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
822 int UNUSED written = 0;
823 IADDR UNUSED pc = GET_H_PC ();
825 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
826 EXTRACT_IFMT_BPCC_BA_VARS /* f-disp19 f-p f-fmt2-cc0 f-fmt2-cc1 f-op2 f-fmt2-cond f-a f-op */
828 EXTRACT_IFMT_BPCC_BA_CODE
834 USI opval = i_disp22;
835 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
837 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
840 SEM_ANNUL_INSN (current_cpu, pc, f_a);
844 abuf->written = written;
845 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
849 /* bpcc-bvc: bvc$a$p %xcc,$disp19 */
852 SEM_FN_NAME (sparc64,bpcc_bvc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
854 SEM_STATUS status = 0;
855 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
856 int UNUSED written = 0;
857 IADDR UNUSED pc = GET_H_PC ();
859 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
860 EXTRACT_IFMT_BPCC_BA_VARS /* f-disp19 f-p f-fmt2-cc0 f-fmt2-cc1 f-op2 f-fmt2-cond f-a f-op */
862 EXTRACT_IFMT_BPCC_BA_CODE
866 if (NOTBI (CPU (h_xcc_v))) {
868 USI opval = i_disp22;
869 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
871 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
874 SEM_ANNUL_INSN (current_cpu, pc, f_a);
878 abuf->written = written;
879 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
883 /* bpcc-bvs: bvs$a$p %xcc,$disp19 */
886 SEM_FN_NAME (sparc64,bpcc_bvs) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
888 SEM_STATUS status = 0;
889 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
890 int UNUSED written = 0;
891 IADDR UNUSED pc = GET_H_PC ();
893 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
894 EXTRACT_IFMT_BPCC_BA_VARS /* f-disp19 f-p f-fmt2-cc0 f-fmt2-cc1 f-op2 f-fmt2-cond f-a f-op */
896 EXTRACT_IFMT_BPCC_BA_CODE
902 USI opval = i_disp22;
903 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
905 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
908 SEM_ANNUL_INSN (current_cpu, pc, f_a);
912 abuf->written = written;
913 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
920 SEM_FN_NAME (sparc64,done) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
922 SEM_STATUS status = 0;
923 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
924 int UNUSED written = 0;
925 IADDR UNUSED pc = GET_H_PC ();
926 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
927 EXTRACT_IFMT_DONE_VARS /* f-res-18-19 f-op3 f-fcn f-op */
928 EXTRACT_IFMT_DONE_CODE
930 sparc64_done (current_cpu, pc);
932 SEM_NBRANCH_FINI (vpc, 0);
939 SEM_FN_NAME (sparc64,retry) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
941 SEM_STATUS status = 0;
942 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
943 int UNUSED written = 0;
944 IADDR UNUSED pc = GET_H_PC ();
945 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
946 EXTRACT_IFMT_DONE_VARS /* f-res-18-19 f-op3 f-fcn f-op */
947 EXTRACT_IFMT_DONE_CODE
949 sparc64_retry (current_cpu, pc);
951 SEM_NBRANCH_FINI (vpc, 0);
958 SEM_FN_NAME (sparc64,flush) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
960 SEM_STATUS status = 0;
961 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
962 int UNUSED written = 0;
963 IADDR UNUSED pc = GET_H_PC ();
964 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
965 EXTRACT_IFMT_FLUSH_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
966 EXTRACT_IFMT_FLUSH_CODE
968 sparc64_flush (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
970 SEM_NBRANCH_FINI (vpc, 0);
974 /* flush-imm: flush */
977 SEM_FN_NAME (sparc64,flush_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
979 SEM_STATUS status = 0;
980 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
981 int UNUSED written = 0;
982 IADDR UNUSED pc = GET_H_PC ();
983 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
984 EXTRACT_IFMT_FLUSH_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
985 EXTRACT_IFMT_FLUSH_IMM_CODE
987 sparc64_flush (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), f_simm13));
989 SEM_NBRANCH_FINI (vpc, 0);
996 SEM_FN_NAME (sparc64,flushw) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
998 SEM_STATUS status = 0;
999 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1000 int UNUSED written = 0;
1001 IADDR UNUSED pc = GET_H_PC ();
1002 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1003 EXTRACT_IFMT_FLUSHW_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
1004 EXTRACT_IFMT_FLUSHW_CODE
1006 sparc64_flushw (current_cpu, pc);
1008 SEM_NBRANCH_FINI (vpc, 0);
1012 /* impdep1: impdep1 $impdep5,$impdep19 */
1015 SEM_FN_NAME (sparc64,impdep1) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1017 SEM_STATUS status = 0;
1018 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1019 int UNUSED written = 0;
1020 IADDR UNUSED pc = GET_H_PC ();
1021 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1022 EXTRACT_IFMT_IMPDEP1_VARS /* f-impdep19 f-op3 f-impdep5 f-op */
1023 EXTRACT_IFMT_IMPDEP1_CODE
1025 sparc64_impdep1 (current_cpu, pc, f_impdep5, f_impdep19);
1027 SEM_NBRANCH_FINI (vpc, 0);
1031 /* impdep2: impdep2 $impdep5,$impdep19 */
1034 SEM_FN_NAME (sparc64,impdep2) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1036 SEM_STATUS status = 0;
1037 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1038 int UNUSED written = 0;
1039 IADDR UNUSED pc = GET_H_PC ();
1040 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1041 EXTRACT_IFMT_IMPDEP1_VARS /* f-impdep19 f-op3 f-impdep5 f-op */
1042 EXTRACT_IFMT_IMPDEP1_CODE
1044 sparc64_impdep2 (current_cpu, pc, f_impdep5, f_impdep19);
1046 SEM_NBRANCH_FINI (vpc, 0);
1050 /* membar: member $membarmask */
1053 SEM_FN_NAME (sparc64,membar) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1055 SEM_STATUS status = 0;
1056 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1057 int UNUSED written = 0;
1058 IADDR UNUSED pc = GET_H_PC ();
1059 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1060 EXTRACT_IFMT_MEMBAR_VARS /* f-membarmask f-membar-res12-6 f-i f-rs1 f-op3 f-rd f-op */
1061 EXTRACT_IFMT_MEMBAR_CODE
1063 sparc64_membar (current_cpu, pc, f_membarmask);
1065 SEM_NBRANCH_FINI (vpc, 0);
1069 /* mova-icc-icc: mova-icc %icc,$rs2,$rd */
1072 SEM_FN_NAME (sparc64,mova_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1074 SEM_STATUS status = 0;
1075 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1076 int UNUSED written = 0;
1077 IADDR UNUSED pc = GET_H_PC ();
1078 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1079 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1080 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
1083 SI opval = GET_H_GR (f_rs2);
1084 SET_H_GR (f_rd, opval);
1085 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1088 SEM_NBRANCH_FINI (vpc, 0);
1092 /* mova-imm-icc-icc: mova-imm-icc %icc,$simm11,$rd */
1095 SEM_FN_NAME (sparc64,mova_imm_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1097 SEM_STATUS status = 0;
1098 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1099 int UNUSED written = 0;
1100 IADDR UNUSED pc = GET_H_PC ();
1101 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1102 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1103 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
1106 SI opval = f_simm11;
1107 SET_H_GR (f_rd, opval);
1108 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1111 SEM_NBRANCH_FINI (vpc, 0);
1115 /* mova-xcc-xcc: mova-xcc %xcc,$rs2,$rd */
1118 SEM_FN_NAME (sparc64,mova_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1120 SEM_STATUS status = 0;
1121 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1122 int UNUSED written = 0;
1123 IADDR UNUSED pc = GET_H_PC ();
1124 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1125 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1126 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
1129 SI opval = GET_H_GR (f_rs2);
1130 SET_H_GR (f_rd, opval);
1131 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1134 SEM_NBRANCH_FINI (vpc, 0);
1138 /* mova-imm-xcc-xcc: mova-imm-xcc %xcc,$simm11,$rd */
1141 SEM_FN_NAME (sparc64,mova_imm_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1143 SEM_STATUS status = 0;
1144 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1145 int UNUSED written = 0;
1146 IADDR UNUSED pc = GET_H_PC ();
1147 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1148 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1149 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
1152 SI opval = f_simm11;
1153 SET_H_GR (f_rd, opval);
1154 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1157 SEM_NBRANCH_FINI (vpc, 0);
1161 /* movn-icc-icc: movn-icc %icc,$rs2,$rd */
1164 SEM_FN_NAME (sparc64,movn_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1166 SEM_STATUS status = 0;
1167 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1168 int UNUSED written = 0;
1169 IADDR UNUSED pc = GET_H_PC ();
1170 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1171 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1172 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
1174 do { } while (0); /*nop*/
1176 SEM_NBRANCH_FINI (vpc, 0);
1180 /* movn-imm-icc-icc: movn-imm-icc %icc,$simm11,$rd */
1183 SEM_FN_NAME (sparc64,movn_imm_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1185 SEM_STATUS status = 0;
1186 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1187 int UNUSED written = 0;
1188 IADDR UNUSED pc = GET_H_PC ();
1189 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1190 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1191 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
1193 do { } while (0); /*nop*/
1195 SEM_NBRANCH_FINI (vpc, 0);
1199 /* movn-xcc-xcc: movn-xcc %xcc,$rs2,$rd */
1202 SEM_FN_NAME (sparc64,movn_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1204 SEM_STATUS status = 0;
1205 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1206 int UNUSED written = 0;
1207 IADDR UNUSED pc = GET_H_PC ();
1208 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1209 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1210 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
1212 do { } while (0); /*nop*/
1214 SEM_NBRANCH_FINI (vpc, 0);
1218 /* movn-imm-xcc-xcc: movn-imm-xcc %xcc,$simm11,$rd */
1221 SEM_FN_NAME (sparc64,movn_imm_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1223 SEM_STATUS status = 0;
1224 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1225 int UNUSED written = 0;
1226 IADDR UNUSED pc = GET_H_PC ();
1227 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1228 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1229 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
1231 do { } while (0); /*nop*/
1233 SEM_NBRANCH_FINI (vpc, 0);
1237 /* movne-icc-icc: movne-icc %icc,$rs2,$rd */
1240 SEM_FN_NAME (sparc64,movne_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1242 SEM_STATUS status = 0;
1243 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1244 int UNUSED written = 0;
1245 IADDR UNUSED pc = GET_H_PC ();
1246 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1247 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1248 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
1250 if (NOTBI (CPU (h_icc_z))) {
1252 SI opval = GET_H_GR (f_rs2);
1253 SET_H_GR (f_rd, opval);
1254 written |= (1 << 2);
1255 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1259 abuf->written = written;
1260 SEM_NBRANCH_FINI (vpc, 0);
1264 /* movne-imm-icc-icc: movne-imm-icc %icc,$simm11,$rd */
1267 SEM_FN_NAME (sparc64,movne_imm_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1269 SEM_STATUS status = 0;
1270 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1271 int UNUSED written = 0;
1272 IADDR UNUSED pc = GET_H_PC ();
1273 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1274 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1275 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
1277 if (NOTBI (CPU (h_icc_z))) {
1279 SI opval = f_simm11;
1280 SET_H_GR (f_rd, opval);
1281 written |= (1 << 2);
1282 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1286 abuf->written = written;
1287 SEM_NBRANCH_FINI (vpc, 0);
1291 /* movne-xcc-xcc: movne-xcc %xcc,$rs2,$rd */
1294 SEM_FN_NAME (sparc64,movne_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1296 SEM_STATUS status = 0;
1297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1298 int UNUSED written = 0;
1299 IADDR UNUSED pc = GET_H_PC ();
1300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1301 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1302 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
1304 if (NOTBI (CPU (h_xcc_z))) {
1306 SI opval = GET_H_GR (f_rs2);
1307 SET_H_GR (f_rd, opval);
1308 written |= (1 << 2);
1309 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1313 abuf->written = written;
1314 SEM_NBRANCH_FINI (vpc, 0);
1318 /* movne-imm-xcc-xcc: movne-imm-xcc %xcc,$simm11,$rd */
1321 SEM_FN_NAME (sparc64,movne_imm_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1323 SEM_STATUS status = 0;
1324 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1325 int UNUSED written = 0;
1326 IADDR UNUSED pc = GET_H_PC ();
1327 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1328 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1329 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
1331 if (NOTBI (CPU (h_xcc_z))) {
1333 SI opval = f_simm11;
1334 SET_H_GR (f_rd, opval);
1335 written |= (1 << 2);
1336 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1340 abuf->written = written;
1341 SEM_NBRANCH_FINI (vpc, 0);
1345 /* move-icc-icc: move-icc %icc,$rs2,$rd */
1348 SEM_FN_NAME (sparc64,move_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1350 SEM_STATUS status = 0;
1351 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1352 int UNUSED written = 0;
1353 IADDR UNUSED pc = GET_H_PC ();
1354 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1355 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1356 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
1358 if (CPU (h_icc_z)) {
1360 SI opval = GET_H_GR (f_rs2);
1361 SET_H_GR (f_rd, opval);
1362 written |= (1 << 2);
1363 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1367 abuf->written = written;
1368 SEM_NBRANCH_FINI (vpc, 0);
1372 /* move-imm-icc-icc: move-imm-icc %icc,$simm11,$rd */
1375 SEM_FN_NAME (sparc64,move_imm_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1377 SEM_STATUS status = 0;
1378 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1379 int UNUSED written = 0;
1380 IADDR UNUSED pc = GET_H_PC ();
1381 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1382 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1383 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
1385 if (CPU (h_icc_z)) {
1387 SI opval = f_simm11;
1388 SET_H_GR (f_rd, opval);
1389 written |= (1 << 2);
1390 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1394 abuf->written = written;
1395 SEM_NBRANCH_FINI (vpc, 0);
1399 /* move-xcc-xcc: move-xcc %xcc,$rs2,$rd */
1402 SEM_FN_NAME (sparc64,move_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1404 SEM_STATUS status = 0;
1405 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1406 int UNUSED written = 0;
1407 IADDR UNUSED pc = GET_H_PC ();
1408 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1409 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1410 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
1412 if (CPU (h_xcc_z)) {
1414 SI opval = GET_H_GR (f_rs2);
1415 SET_H_GR (f_rd, opval);
1416 written |= (1 << 2);
1417 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1421 abuf->written = written;
1422 SEM_NBRANCH_FINI (vpc, 0);
1426 /* move-imm-xcc-xcc: move-imm-xcc %xcc,$simm11,$rd */
1429 SEM_FN_NAME (sparc64,move_imm_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1431 SEM_STATUS status = 0;
1432 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1433 int UNUSED written = 0;
1434 IADDR UNUSED pc = GET_H_PC ();
1435 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1436 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1437 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
1439 if (CPU (h_xcc_z)) {
1441 SI opval = f_simm11;
1442 SET_H_GR (f_rd, opval);
1443 written |= (1 << 2);
1444 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1448 abuf->written = written;
1449 SEM_NBRANCH_FINI (vpc, 0);
1453 /* movg-icc-icc: movg-icc %icc,$rs2,$rd */
1456 SEM_FN_NAME (sparc64,movg_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1458 SEM_STATUS status = 0;
1459 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1460 int UNUSED written = 0;
1461 IADDR UNUSED pc = GET_H_PC ();
1462 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1463 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1464 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
1466 if (NOTBI (ORBI (CPU (h_icc_z), XORBI (CPU (h_icc_n), CPU (h_icc_v))))) {
1468 SI opval = GET_H_GR (f_rs2);
1469 SET_H_GR (f_rd, opval);
1470 written |= (1 << 4);
1471 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1475 abuf->written = written;
1476 SEM_NBRANCH_FINI (vpc, 0);
1480 /* movg-imm-icc-icc: movg-imm-icc %icc,$simm11,$rd */
1483 SEM_FN_NAME (sparc64,movg_imm_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1485 SEM_STATUS status = 0;
1486 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1487 int UNUSED written = 0;
1488 IADDR UNUSED pc = GET_H_PC ();
1489 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1490 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1491 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
1493 if (NOTBI (ORBI (CPU (h_icc_z), XORBI (CPU (h_icc_n), CPU (h_icc_v))))) {
1495 SI opval = f_simm11;
1496 SET_H_GR (f_rd, opval);
1497 written |= (1 << 4);
1498 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1502 abuf->written = written;
1503 SEM_NBRANCH_FINI (vpc, 0);
1507 /* movg-xcc-xcc: movg-xcc %xcc,$rs2,$rd */
1510 SEM_FN_NAME (sparc64,movg_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1512 SEM_STATUS status = 0;
1513 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1514 int UNUSED written = 0;
1515 IADDR UNUSED pc = GET_H_PC ();
1516 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1517 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1518 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
1520 if (NOTBI (ORBI (CPU (h_xcc_z), XORBI (CPU (h_xcc_n), CPU (h_xcc_v))))) {
1522 SI opval = GET_H_GR (f_rs2);
1523 SET_H_GR (f_rd, opval);
1524 written |= (1 << 4);
1525 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1529 abuf->written = written;
1530 SEM_NBRANCH_FINI (vpc, 0);
1534 /* movg-imm-xcc-xcc: movg-imm-xcc %xcc,$simm11,$rd */
1537 SEM_FN_NAME (sparc64,movg_imm_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1539 SEM_STATUS status = 0;
1540 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1541 int UNUSED written = 0;
1542 IADDR UNUSED pc = GET_H_PC ();
1543 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1544 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1545 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
1547 if (NOTBI (ORBI (CPU (h_xcc_z), XORBI (CPU (h_xcc_n), CPU (h_xcc_v))))) {
1549 SI opval = f_simm11;
1550 SET_H_GR (f_rd, opval);
1551 written |= (1 << 4);
1552 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1556 abuf->written = written;
1557 SEM_NBRANCH_FINI (vpc, 0);
1561 /* movle-icc-icc: movle-icc %icc,$rs2,$rd */
1564 SEM_FN_NAME (sparc64,movle_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1566 SEM_STATUS status = 0;
1567 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1568 int UNUSED written = 0;
1569 IADDR UNUSED pc = GET_H_PC ();
1570 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1571 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1572 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
1574 if (ORBI (CPU (h_icc_z), XORBI (CPU (h_icc_n), CPU (h_icc_v)))) {
1576 SI opval = GET_H_GR (f_rs2);
1577 SET_H_GR (f_rd, opval);
1578 written |= (1 << 4);
1579 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1583 abuf->written = written;
1584 SEM_NBRANCH_FINI (vpc, 0);
1588 /* movle-imm-icc-icc: movle-imm-icc %icc,$simm11,$rd */
1591 SEM_FN_NAME (sparc64,movle_imm_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1593 SEM_STATUS status = 0;
1594 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1595 int UNUSED written = 0;
1596 IADDR UNUSED pc = GET_H_PC ();
1597 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1598 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1599 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
1601 if (ORBI (CPU (h_icc_z), XORBI (CPU (h_icc_n), CPU (h_icc_v)))) {
1603 SI opval = f_simm11;
1604 SET_H_GR (f_rd, opval);
1605 written |= (1 << 4);
1606 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1610 abuf->written = written;
1611 SEM_NBRANCH_FINI (vpc, 0);
1615 /* movle-xcc-xcc: movle-xcc %xcc,$rs2,$rd */
1618 SEM_FN_NAME (sparc64,movle_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1620 SEM_STATUS status = 0;
1621 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1622 int UNUSED written = 0;
1623 IADDR UNUSED pc = GET_H_PC ();
1624 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1625 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1626 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
1628 if (ORBI (CPU (h_xcc_z), XORBI (CPU (h_xcc_n), CPU (h_xcc_v)))) {
1630 SI opval = GET_H_GR (f_rs2);
1631 SET_H_GR (f_rd, opval);
1632 written |= (1 << 4);
1633 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1637 abuf->written = written;
1638 SEM_NBRANCH_FINI (vpc, 0);
1642 /* movle-imm-xcc-xcc: movle-imm-xcc %xcc,$simm11,$rd */
1645 SEM_FN_NAME (sparc64,movle_imm_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1647 SEM_STATUS status = 0;
1648 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1649 int UNUSED written = 0;
1650 IADDR UNUSED pc = GET_H_PC ();
1651 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1652 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1653 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
1655 if (ORBI (CPU (h_xcc_z), XORBI (CPU (h_xcc_n), CPU (h_xcc_v)))) {
1657 SI opval = f_simm11;
1658 SET_H_GR (f_rd, opval);
1659 written |= (1 << 4);
1660 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1664 abuf->written = written;
1665 SEM_NBRANCH_FINI (vpc, 0);
1669 /* movge-icc-icc: movge-icc %icc,$rs2,$rd */
1672 SEM_FN_NAME (sparc64,movge_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1674 SEM_STATUS status = 0;
1675 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1676 int UNUSED written = 0;
1677 IADDR UNUSED pc = GET_H_PC ();
1678 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1679 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1680 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
1682 if (NOTBI (XORBI (CPU (h_icc_n), CPU (h_icc_v)))) {
1684 SI opval = GET_H_GR (f_rs2);
1685 SET_H_GR (f_rd, opval);
1686 written |= (1 << 3);
1687 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1691 abuf->written = written;
1692 SEM_NBRANCH_FINI (vpc, 0);
1696 /* movge-imm-icc-icc: movge-imm-icc %icc,$simm11,$rd */
1699 SEM_FN_NAME (sparc64,movge_imm_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1701 SEM_STATUS status = 0;
1702 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1703 int UNUSED written = 0;
1704 IADDR UNUSED pc = GET_H_PC ();
1705 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1706 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1707 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
1709 if (NOTBI (XORBI (CPU (h_icc_n), CPU (h_icc_v)))) {
1711 SI opval = f_simm11;
1712 SET_H_GR (f_rd, opval);
1713 written |= (1 << 3);
1714 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1718 abuf->written = written;
1719 SEM_NBRANCH_FINI (vpc, 0);
1723 /* movge-xcc-xcc: movge-xcc %xcc,$rs2,$rd */
1726 SEM_FN_NAME (sparc64,movge_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1728 SEM_STATUS status = 0;
1729 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1730 int UNUSED written = 0;
1731 IADDR UNUSED pc = GET_H_PC ();
1732 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1733 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1734 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
1736 if (NOTBI (XORBI (CPU (h_xcc_n), CPU (h_xcc_v)))) {
1738 SI opval = GET_H_GR (f_rs2);
1739 SET_H_GR (f_rd, opval);
1740 written |= (1 << 3);
1741 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1745 abuf->written = written;
1746 SEM_NBRANCH_FINI (vpc, 0);
1750 /* movge-imm-xcc-xcc: movge-imm-xcc %xcc,$simm11,$rd */
1753 SEM_FN_NAME (sparc64,movge_imm_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1755 SEM_STATUS status = 0;
1756 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1757 int UNUSED written = 0;
1758 IADDR UNUSED pc = GET_H_PC ();
1759 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1760 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1761 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
1763 if (NOTBI (XORBI (CPU (h_xcc_n), CPU (h_xcc_v)))) {
1765 SI opval = f_simm11;
1766 SET_H_GR (f_rd, opval);
1767 written |= (1 << 3);
1768 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1772 abuf->written = written;
1773 SEM_NBRANCH_FINI (vpc, 0);
1777 /* movl-icc-icc: movl-icc %icc,$rs2,$rd */
1780 SEM_FN_NAME (sparc64,movl_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1782 SEM_STATUS status = 0;
1783 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1784 int UNUSED written = 0;
1785 IADDR UNUSED pc = GET_H_PC ();
1786 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1787 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1788 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
1790 if (XORBI (CPU (h_icc_n), CPU (h_icc_v))) {
1792 SI opval = GET_H_GR (f_rs2);
1793 SET_H_GR (f_rd, opval);
1794 written |= (1 << 3);
1795 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1799 abuf->written = written;
1800 SEM_NBRANCH_FINI (vpc, 0);
1804 /* movl-imm-icc-icc: movl-imm-icc %icc,$simm11,$rd */
1807 SEM_FN_NAME (sparc64,movl_imm_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1809 SEM_STATUS status = 0;
1810 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1811 int UNUSED written = 0;
1812 IADDR UNUSED pc = GET_H_PC ();
1813 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1814 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1815 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
1817 if (XORBI (CPU (h_icc_n), CPU (h_icc_v))) {
1819 SI opval = f_simm11;
1820 SET_H_GR (f_rd, opval);
1821 written |= (1 << 3);
1822 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1826 abuf->written = written;
1827 SEM_NBRANCH_FINI (vpc, 0);
1831 /* movl-xcc-xcc: movl-xcc %xcc,$rs2,$rd */
1834 SEM_FN_NAME (sparc64,movl_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1836 SEM_STATUS status = 0;
1837 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1838 int UNUSED written = 0;
1839 IADDR UNUSED pc = GET_H_PC ();
1840 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1841 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1842 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
1844 if (XORBI (CPU (h_xcc_n), CPU (h_xcc_v))) {
1846 SI opval = GET_H_GR (f_rs2);
1847 SET_H_GR (f_rd, opval);
1848 written |= (1 << 3);
1849 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1853 abuf->written = written;
1854 SEM_NBRANCH_FINI (vpc, 0);
1858 /* movl-imm-xcc-xcc: movl-imm-xcc %xcc,$simm11,$rd */
1861 SEM_FN_NAME (sparc64,movl_imm_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1863 SEM_STATUS status = 0;
1864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1865 int UNUSED written = 0;
1866 IADDR UNUSED pc = GET_H_PC ();
1867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1868 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1869 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
1871 if (XORBI (CPU (h_xcc_n), CPU (h_xcc_v))) {
1873 SI opval = f_simm11;
1874 SET_H_GR (f_rd, opval);
1875 written |= (1 << 3);
1876 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1880 abuf->written = written;
1881 SEM_NBRANCH_FINI (vpc, 0);
1885 /* movgu-icc-icc: movgu-icc %icc,$rs2,$rd */
1888 SEM_FN_NAME (sparc64,movgu_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1890 SEM_STATUS status = 0;
1891 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1892 int UNUSED written = 0;
1893 IADDR UNUSED pc = GET_H_PC ();
1894 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1895 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1896 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
1898 if (NOTBI (ORBI (CPU (h_icc_c), CPU (h_icc_z)))) {
1900 SI opval = GET_H_GR (f_rs2);
1901 SET_H_GR (f_rd, opval);
1902 written |= (1 << 3);
1903 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1907 abuf->written = written;
1908 SEM_NBRANCH_FINI (vpc, 0);
1912 /* movgu-imm-icc-icc: movgu-imm-icc %icc,$simm11,$rd */
1915 SEM_FN_NAME (sparc64,movgu_imm_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1917 SEM_STATUS status = 0;
1918 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1919 int UNUSED written = 0;
1920 IADDR UNUSED pc = GET_H_PC ();
1921 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1922 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1923 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
1925 if (NOTBI (ORBI (CPU (h_icc_c), CPU (h_icc_z)))) {
1927 SI opval = f_simm11;
1928 SET_H_GR (f_rd, opval);
1929 written |= (1 << 3);
1930 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1934 abuf->written = written;
1935 SEM_NBRANCH_FINI (vpc, 0);
1939 /* movgu-xcc-xcc: movgu-xcc %xcc,$rs2,$rd */
1942 SEM_FN_NAME (sparc64,movgu_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1944 SEM_STATUS status = 0;
1945 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1946 int UNUSED written = 0;
1947 IADDR UNUSED pc = GET_H_PC ();
1948 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1949 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1950 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
1952 if (NOTBI (ORBI (CPU (h_xcc_c), CPU (h_xcc_z)))) {
1954 SI opval = GET_H_GR (f_rs2);
1955 SET_H_GR (f_rd, opval);
1956 written |= (1 << 3);
1957 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1961 abuf->written = written;
1962 SEM_NBRANCH_FINI (vpc, 0);
1966 /* movgu-imm-xcc-xcc: movgu-imm-xcc %xcc,$simm11,$rd */
1969 SEM_FN_NAME (sparc64,movgu_imm_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1971 SEM_STATUS status = 0;
1972 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1973 int UNUSED written = 0;
1974 IADDR UNUSED pc = GET_H_PC ();
1975 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1976 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
1977 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
1979 if (NOTBI (ORBI (CPU (h_xcc_c), CPU (h_xcc_z)))) {
1981 SI opval = f_simm11;
1982 SET_H_GR (f_rd, opval);
1983 written |= (1 << 3);
1984 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
1988 abuf->written = written;
1989 SEM_NBRANCH_FINI (vpc, 0);
1993 /* movleu-icc-icc: movleu-icc %icc,$rs2,$rd */
1996 SEM_FN_NAME (sparc64,movleu_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
1998 SEM_STATUS status = 0;
1999 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2000 int UNUSED written = 0;
2001 IADDR UNUSED pc = GET_H_PC ();
2002 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2003 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2004 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
2006 if (ORBI (CPU (h_icc_c), CPU (h_icc_z))) {
2008 SI opval = GET_H_GR (f_rs2);
2009 SET_H_GR (f_rd, opval);
2010 written |= (1 << 3);
2011 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2015 abuf->written = written;
2016 SEM_NBRANCH_FINI (vpc, 0);
2020 /* movleu-imm-icc-icc: movleu-imm-icc %icc,$simm11,$rd */
2023 SEM_FN_NAME (sparc64,movleu_imm_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2025 SEM_STATUS status = 0;
2026 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2027 int UNUSED written = 0;
2028 IADDR UNUSED pc = GET_H_PC ();
2029 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2030 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2031 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
2033 if (ORBI (CPU (h_icc_c), CPU (h_icc_z))) {
2035 SI opval = f_simm11;
2036 SET_H_GR (f_rd, opval);
2037 written |= (1 << 3);
2038 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2042 abuf->written = written;
2043 SEM_NBRANCH_FINI (vpc, 0);
2047 /* movleu-xcc-xcc: movleu-xcc %xcc,$rs2,$rd */
2050 SEM_FN_NAME (sparc64,movleu_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2052 SEM_STATUS status = 0;
2053 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2054 int UNUSED written = 0;
2055 IADDR UNUSED pc = GET_H_PC ();
2056 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2057 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2058 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
2060 if (ORBI (CPU (h_xcc_c), CPU (h_xcc_z))) {
2062 SI opval = GET_H_GR (f_rs2);
2063 SET_H_GR (f_rd, opval);
2064 written |= (1 << 3);
2065 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2069 abuf->written = written;
2070 SEM_NBRANCH_FINI (vpc, 0);
2074 /* movleu-imm-xcc-xcc: movleu-imm-xcc %xcc,$simm11,$rd */
2077 SEM_FN_NAME (sparc64,movleu_imm_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2079 SEM_STATUS status = 0;
2080 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2081 int UNUSED written = 0;
2082 IADDR UNUSED pc = GET_H_PC ();
2083 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2084 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2085 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
2087 if (ORBI (CPU (h_xcc_c), CPU (h_xcc_z))) {
2089 SI opval = f_simm11;
2090 SET_H_GR (f_rd, opval);
2091 written |= (1 << 3);
2092 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2096 abuf->written = written;
2097 SEM_NBRANCH_FINI (vpc, 0);
2101 /* movcc-icc-icc: movcc-icc %icc,$rs2,$rd */
2104 SEM_FN_NAME (sparc64,movcc_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2106 SEM_STATUS status = 0;
2107 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2108 int UNUSED written = 0;
2109 IADDR UNUSED pc = GET_H_PC ();
2110 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2111 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2112 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
2114 if (NOTBI (CPU (h_icc_c))) {
2116 SI opval = GET_H_GR (f_rs2);
2117 SET_H_GR (f_rd, opval);
2118 written |= (1 << 2);
2119 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2123 abuf->written = written;
2124 SEM_NBRANCH_FINI (vpc, 0);
2128 /* movcc-imm-icc-icc: movcc-imm-icc %icc,$simm11,$rd */
2131 SEM_FN_NAME (sparc64,movcc_imm_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2133 SEM_STATUS status = 0;
2134 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2135 int UNUSED written = 0;
2136 IADDR UNUSED pc = GET_H_PC ();
2137 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2138 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2139 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
2141 if (NOTBI (CPU (h_icc_c))) {
2143 SI opval = f_simm11;
2144 SET_H_GR (f_rd, opval);
2145 written |= (1 << 2);
2146 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2150 abuf->written = written;
2151 SEM_NBRANCH_FINI (vpc, 0);
2155 /* movcc-xcc-xcc: movcc-xcc %xcc,$rs2,$rd */
2158 SEM_FN_NAME (sparc64,movcc_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2160 SEM_STATUS status = 0;
2161 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2162 int UNUSED written = 0;
2163 IADDR UNUSED pc = GET_H_PC ();
2164 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2165 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2166 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
2168 if (NOTBI (CPU (h_xcc_c))) {
2170 SI opval = GET_H_GR (f_rs2);
2171 SET_H_GR (f_rd, opval);
2172 written |= (1 << 2);
2173 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2177 abuf->written = written;
2178 SEM_NBRANCH_FINI (vpc, 0);
2182 /* movcc-imm-xcc-xcc: movcc-imm-xcc %xcc,$simm11,$rd */
2185 SEM_FN_NAME (sparc64,movcc_imm_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2187 SEM_STATUS status = 0;
2188 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2189 int UNUSED written = 0;
2190 IADDR UNUSED pc = GET_H_PC ();
2191 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2192 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2193 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
2195 if (NOTBI (CPU (h_xcc_c))) {
2197 SI opval = f_simm11;
2198 SET_H_GR (f_rd, opval);
2199 written |= (1 << 2);
2200 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2204 abuf->written = written;
2205 SEM_NBRANCH_FINI (vpc, 0);
2209 /* movcs-icc-icc: movcs-icc %icc,$rs2,$rd */
2212 SEM_FN_NAME (sparc64,movcs_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2214 SEM_STATUS status = 0;
2215 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2216 int UNUSED written = 0;
2217 IADDR UNUSED pc = GET_H_PC ();
2218 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2219 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2220 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
2222 if (CPU (h_icc_c)) {
2224 SI opval = GET_H_GR (f_rs2);
2225 SET_H_GR (f_rd, opval);
2226 written |= (1 << 2);
2227 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2231 abuf->written = written;
2232 SEM_NBRANCH_FINI (vpc, 0);
2236 /* movcs-imm-icc-icc: movcs-imm-icc %icc,$simm11,$rd */
2239 SEM_FN_NAME (sparc64,movcs_imm_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2241 SEM_STATUS status = 0;
2242 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2243 int UNUSED written = 0;
2244 IADDR UNUSED pc = GET_H_PC ();
2245 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2246 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2247 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
2249 if (CPU (h_icc_c)) {
2251 SI opval = f_simm11;
2252 SET_H_GR (f_rd, opval);
2253 written |= (1 << 2);
2254 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2258 abuf->written = written;
2259 SEM_NBRANCH_FINI (vpc, 0);
2263 /* movcs-xcc-xcc: movcs-xcc %xcc,$rs2,$rd */
2266 SEM_FN_NAME (sparc64,movcs_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2268 SEM_STATUS status = 0;
2269 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2270 int UNUSED written = 0;
2271 IADDR UNUSED pc = GET_H_PC ();
2272 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2273 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2274 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
2276 if (CPU (h_xcc_c)) {
2278 SI opval = GET_H_GR (f_rs2);
2279 SET_H_GR (f_rd, opval);
2280 written |= (1 << 2);
2281 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2285 abuf->written = written;
2286 SEM_NBRANCH_FINI (vpc, 0);
2290 /* movcs-imm-xcc-xcc: movcs-imm-xcc %xcc,$simm11,$rd */
2293 SEM_FN_NAME (sparc64,movcs_imm_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2295 SEM_STATUS status = 0;
2296 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2297 int UNUSED written = 0;
2298 IADDR UNUSED pc = GET_H_PC ();
2299 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2300 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2301 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
2303 if (CPU (h_xcc_c)) {
2305 SI opval = f_simm11;
2306 SET_H_GR (f_rd, opval);
2307 written |= (1 << 2);
2308 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2312 abuf->written = written;
2313 SEM_NBRANCH_FINI (vpc, 0);
2317 /* movpos-icc-icc: movpos-icc %icc,$rs2,$rd */
2320 SEM_FN_NAME (sparc64,movpos_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2322 SEM_STATUS status = 0;
2323 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2324 int UNUSED written = 0;
2325 IADDR UNUSED pc = GET_H_PC ();
2326 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2327 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2328 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
2330 if (NOTBI (CPU (h_icc_n))) {
2332 SI opval = GET_H_GR (f_rs2);
2333 SET_H_GR (f_rd, opval);
2334 written |= (1 << 2);
2335 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2339 abuf->written = written;
2340 SEM_NBRANCH_FINI (vpc, 0);
2344 /* movpos-imm-icc-icc: movpos-imm-icc %icc,$simm11,$rd */
2347 SEM_FN_NAME (sparc64,movpos_imm_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2349 SEM_STATUS status = 0;
2350 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2351 int UNUSED written = 0;
2352 IADDR UNUSED pc = GET_H_PC ();
2353 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2354 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2355 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
2357 if (NOTBI (CPU (h_icc_n))) {
2359 SI opval = f_simm11;
2360 SET_H_GR (f_rd, opval);
2361 written |= (1 << 2);
2362 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2366 abuf->written = written;
2367 SEM_NBRANCH_FINI (vpc, 0);
2371 /* movpos-xcc-xcc: movpos-xcc %xcc,$rs2,$rd */
2374 SEM_FN_NAME (sparc64,movpos_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2376 SEM_STATUS status = 0;
2377 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2378 int UNUSED written = 0;
2379 IADDR UNUSED pc = GET_H_PC ();
2380 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2381 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2382 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
2384 if (NOTBI (CPU (h_xcc_n))) {
2386 SI opval = GET_H_GR (f_rs2);
2387 SET_H_GR (f_rd, opval);
2388 written |= (1 << 2);
2389 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2393 abuf->written = written;
2394 SEM_NBRANCH_FINI (vpc, 0);
2398 /* movpos-imm-xcc-xcc: movpos-imm-xcc %xcc,$simm11,$rd */
2401 SEM_FN_NAME (sparc64,movpos_imm_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2403 SEM_STATUS status = 0;
2404 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2405 int UNUSED written = 0;
2406 IADDR UNUSED pc = GET_H_PC ();
2407 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2408 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2409 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
2411 if (NOTBI (CPU (h_xcc_n))) {
2413 SI opval = f_simm11;
2414 SET_H_GR (f_rd, opval);
2415 written |= (1 << 2);
2416 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2420 abuf->written = written;
2421 SEM_NBRANCH_FINI (vpc, 0);
2425 /* movneg-icc-icc: movneg-icc %icc,$rs2,$rd */
2428 SEM_FN_NAME (sparc64,movneg_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2430 SEM_STATUS status = 0;
2431 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2432 int UNUSED written = 0;
2433 IADDR UNUSED pc = GET_H_PC ();
2434 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2435 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2436 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
2438 if (CPU (h_icc_n)) {
2440 SI opval = GET_H_GR (f_rs2);
2441 SET_H_GR (f_rd, opval);
2442 written |= (1 << 2);
2443 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2447 abuf->written = written;
2448 SEM_NBRANCH_FINI (vpc, 0);
2452 /* movneg-imm-icc-icc: movneg-imm-icc %icc,$simm11,$rd */
2455 SEM_FN_NAME (sparc64,movneg_imm_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2457 SEM_STATUS status = 0;
2458 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2459 int UNUSED written = 0;
2460 IADDR UNUSED pc = GET_H_PC ();
2461 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2462 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2463 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
2465 if (CPU (h_icc_n)) {
2467 SI opval = f_simm11;
2468 SET_H_GR (f_rd, opval);
2469 written |= (1 << 2);
2470 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2474 abuf->written = written;
2475 SEM_NBRANCH_FINI (vpc, 0);
2479 /* movneg-xcc-xcc: movneg-xcc %xcc,$rs2,$rd */
2482 SEM_FN_NAME (sparc64,movneg_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2484 SEM_STATUS status = 0;
2485 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2486 int UNUSED written = 0;
2487 IADDR UNUSED pc = GET_H_PC ();
2488 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2489 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2490 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
2492 if (CPU (h_xcc_n)) {
2494 SI opval = GET_H_GR (f_rs2);
2495 SET_H_GR (f_rd, opval);
2496 written |= (1 << 2);
2497 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2501 abuf->written = written;
2502 SEM_NBRANCH_FINI (vpc, 0);
2506 /* movneg-imm-xcc-xcc: movneg-imm-xcc %xcc,$simm11,$rd */
2509 SEM_FN_NAME (sparc64,movneg_imm_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2511 SEM_STATUS status = 0;
2512 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2513 int UNUSED written = 0;
2514 IADDR UNUSED pc = GET_H_PC ();
2515 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2516 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2517 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
2519 if (CPU (h_xcc_n)) {
2521 SI opval = f_simm11;
2522 SET_H_GR (f_rd, opval);
2523 written |= (1 << 2);
2524 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2528 abuf->written = written;
2529 SEM_NBRANCH_FINI (vpc, 0);
2533 /* movvc-icc-icc: movvc-icc %icc,$rs2,$rd */
2536 SEM_FN_NAME (sparc64,movvc_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2538 SEM_STATUS status = 0;
2539 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2540 int UNUSED written = 0;
2541 IADDR UNUSED pc = GET_H_PC ();
2542 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2543 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2544 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
2546 if (NOTBI (CPU (h_icc_v))) {
2548 SI opval = GET_H_GR (f_rs2);
2549 SET_H_GR (f_rd, opval);
2550 written |= (1 << 2);
2551 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2555 abuf->written = written;
2556 SEM_NBRANCH_FINI (vpc, 0);
2560 /* movvc-imm-icc-icc: movvc-imm-icc %icc,$simm11,$rd */
2563 SEM_FN_NAME (sparc64,movvc_imm_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2565 SEM_STATUS status = 0;
2566 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2567 int UNUSED written = 0;
2568 IADDR UNUSED pc = GET_H_PC ();
2569 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2570 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2571 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
2573 if (NOTBI (CPU (h_icc_v))) {
2575 SI opval = f_simm11;
2576 SET_H_GR (f_rd, opval);
2577 written |= (1 << 2);
2578 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2582 abuf->written = written;
2583 SEM_NBRANCH_FINI (vpc, 0);
2587 /* movvc-xcc-xcc: movvc-xcc %xcc,$rs2,$rd */
2590 SEM_FN_NAME (sparc64,movvc_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2592 SEM_STATUS status = 0;
2593 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2594 int UNUSED written = 0;
2595 IADDR UNUSED pc = GET_H_PC ();
2596 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2597 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2598 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
2600 if (NOTBI (CPU (h_xcc_v))) {
2602 SI opval = GET_H_GR (f_rs2);
2603 SET_H_GR (f_rd, opval);
2604 written |= (1 << 2);
2605 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2609 abuf->written = written;
2610 SEM_NBRANCH_FINI (vpc, 0);
2614 /* movvc-imm-xcc-xcc: movvc-imm-xcc %xcc,$simm11,$rd */
2617 SEM_FN_NAME (sparc64,movvc_imm_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2619 SEM_STATUS status = 0;
2620 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2621 int UNUSED written = 0;
2622 IADDR UNUSED pc = GET_H_PC ();
2623 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2624 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2625 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
2627 if (NOTBI (CPU (h_xcc_v))) {
2629 SI opval = f_simm11;
2630 SET_H_GR (f_rd, opval);
2631 written |= (1 << 2);
2632 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2636 abuf->written = written;
2637 SEM_NBRANCH_FINI (vpc, 0);
2641 /* movvs-icc-icc: movvs-icc %icc,$rs2,$rd */
2644 SEM_FN_NAME (sparc64,movvs_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2646 SEM_STATUS status = 0;
2647 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2648 int UNUSED written = 0;
2649 IADDR UNUSED pc = GET_H_PC ();
2650 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2651 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2652 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
2654 if (CPU (h_icc_v)) {
2656 SI opval = GET_H_GR (f_rs2);
2657 SET_H_GR (f_rd, opval);
2658 written |= (1 << 2);
2659 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2663 abuf->written = written;
2664 SEM_NBRANCH_FINI (vpc, 0);
2668 /* movvs-imm-icc-icc: movvs-imm-icc %icc,$simm11,$rd */
2671 SEM_FN_NAME (sparc64,movvs_imm_icc_icc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2673 SEM_STATUS status = 0;
2674 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2675 int UNUSED written = 0;
2676 IADDR UNUSED pc = GET_H_PC ();
2677 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2678 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2679 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
2681 if (CPU (h_icc_v)) {
2683 SI opval = f_simm11;
2684 SET_H_GR (f_rd, opval);
2685 written |= (1 << 2);
2686 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2690 abuf->written = written;
2691 SEM_NBRANCH_FINI (vpc, 0);
2695 /* movvs-xcc-xcc: movvs-xcc %xcc,$rs2,$rd */
2698 SEM_FN_NAME (sparc64,movvs_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2700 SEM_STATUS status = 0;
2701 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2702 int UNUSED written = 0;
2703 IADDR UNUSED pc = GET_H_PC ();
2704 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2705 EXTRACT_IFMT_MOVA_ICC_ICC_VARS /* f-rs2 f-fmt4-res10-6 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2706 EXTRACT_IFMT_MOVA_ICC_ICC_CODE
2708 if (CPU (h_xcc_v)) {
2710 SI opval = GET_H_GR (f_rs2);
2711 SET_H_GR (f_rd, opval);
2712 written |= (1 << 2);
2713 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2717 abuf->written = written;
2718 SEM_NBRANCH_FINI (vpc, 0);
2722 /* movvs-imm-xcc-xcc: movvs-imm-xcc %xcc,$simm11,$rd */
2725 SEM_FN_NAME (sparc64,movvs_imm_xcc_xcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2727 SEM_STATUS status = 0;
2728 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2729 int UNUSED written = 0;
2730 IADDR UNUSED pc = GET_H_PC ();
2731 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2732 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_VARS /* f-simm11 f-fmt4-cc1-0 f-i f-fmt4-cc2 f-op3 f-fmt2-cond f-rd f-op */
2733 EXTRACT_IFMT_MOVA_IMM_ICC_ICC_CODE
2735 if (CPU (h_xcc_v)) {
2737 SI opval = f_simm11;
2738 SET_H_GR (f_rd, opval);
2739 written |= (1 << 2);
2740 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2744 abuf->written = written;
2745 SEM_NBRANCH_FINI (vpc, 0);
2749 /* ldsb-reg+reg: ldsb [$rs1+$rs2],$rd */
2752 SEM_FN_NAME (sparc64,ldsb_reg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2754 SEM_STATUS status = 0;
2755 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2756 int UNUSED written = 0;
2757 IADDR UNUSED pc = GET_H_PC ();
2758 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2759 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
2760 EXTRACT_IFMT_LDSB_REG_REG_CODE
2763 QI opval = GETMEMQI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
2764 SET_H_GR (f_rd, opval);
2765 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2768 SEM_NBRANCH_FINI (vpc, 0);
2772 /* ldsb-reg+imm: ldsb [$rs1+$simm13],$rd */
2775 SEM_FN_NAME (sparc64,ldsb_reg_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2777 SEM_STATUS status = 0;
2778 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2779 int UNUSED written = 0;
2780 IADDR UNUSED pc = GET_H_PC ();
2781 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2782 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
2783 EXTRACT_IFMT_LDSB_REG_IMM_CODE
2786 QI opval = GETMEMQI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), f_simm13));
2787 SET_H_GR (f_rd, opval);
2788 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2791 SEM_NBRANCH_FINI (vpc, 0);
2795 /* ldsb-reg+reg/asi: ldsb [$rs1+$rs2]$asi,$rd */
2798 SEM_FN_NAME (sparc64,ldsb_reg_reg_asi) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2800 SEM_STATUS status = 0;
2801 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2802 int UNUSED written = 0;
2803 IADDR UNUSED pc = GET_H_PC ();
2804 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2805 EXTRACT_IFMT_LDSB_REG_REG_ASI_VARS /* f-rs2 f-asi f-i f-rs1 f-op3 f-rd f-op */
2806 EXTRACT_IFMT_LDSB_REG_REG_ASI_CODE
2809 QI opval = GETMEMQI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
2810 SET_H_GR (f_rd, opval);
2811 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2814 SEM_NBRANCH_FINI (vpc, 0);
2818 /* ldub-reg+reg: ldub [$rs1+$rs2],$rd */
2821 SEM_FN_NAME (sparc64,ldub_reg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2823 SEM_STATUS status = 0;
2824 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2825 int UNUSED written = 0;
2826 IADDR UNUSED pc = GET_H_PC ();
2827 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2828 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
2829 EXTRACT_IFMT_LDSB_REG_REG_CODE
2832 QI opval = GETMEMQI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
2833 SET_H_GR (f_rd, opval);
2834 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2837 SEM_NBRANCH_FINI (vpc, 0);
2841 /* ldub-reg+imm: ldub [$rs1+$simm13],$rd */
2844 SEM_FN_NAME (sparc64,ldub_reg_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2846 SEM_STATUS status = 0;
2847 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2848 int UNUSED written = 0;
2849 IADDR UNUSED pc = GET_H_PC ();
2850 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2851 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
2852 EXTRACT_IFMT_LDSB_REG_IMM_CODE
2855 QI opval = GETMEMQI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), f_simm13));
2856 SET_H_GR (f_rd, opval);
2857 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2860 SEM_NBRANCH_FINI (vpc, 0);
2864 /* ldub-reg+reg/asi: ldub [$rs1+$rs2]$asi,$rd */
2867 SEM_FN_NAME (sparc64,ldub_reg_reg_asi) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2869 SEM_STATUS status = 0;
2870 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2871 int UNUSED written = 0;
2872 IADDR UNUSED pc = GET_H_PC ();
2873 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2874 EXTRACT_IFMT_LDSB_REG_REG_ASI_VARS /* f-rs2 f-asi f-i f-rs1 f-op3 f-rd f-op */
2875 EXTRACT_IFMT_LDSB_REG_REG_ASI_CODE
2878 QI opval = GETMEMQI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
2879 SET_H_GR (f_rd, opval);
2880 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2883 SEM_NBRANCH_FINI (vpc, 0);
2887 /* ldsh-reg+reg: ldsh [$rs1+$rs2],$rd */
2890 SEM_FN_NAME (sparc64,ldsh_reg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2892 SEM_STATUS status = 0;
2893 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2894 int UNUSED written = 0;
2895 IADDR UNUSED pc = GET_H_PC ();
2896 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2897 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
2898 EXTRACT_IFMT_LDSB_REG_REG_CODE
2901 HI opval = GETMEMHI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
2902 SET_H_GR (f_rd, opval);
2903 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2906 SEM_NBRANCH_FINI (vpc, 0);
2910 /* ldsh-reg+imm: ldsh [$rs1+$simm13],$rd */
2913 SEM_FN_NAME (sparc64,ldsh_reg_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2915 SEM_STATUS status = 0;
2916 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2917 int UNUSED written = 0;
2918 IADDR UNUSED pc = GET_H_PC ();
2919 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2920 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
2921 EXTRACT_IFMT_LDSB_REG_IMM_CODE
2924 HI opval = GETMEMHI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), f_simm13));
2925 SET_H_GR (f_rd, opval);
2926 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2929 SEM_NBRANCH_FINI (vpc, 0);
2933 /* ldsh-reg+reg/asi: ldsh [$rs1+$rs2]$asi,$rd */
2936 SEM_FN_NAME (sparc64,ldsh_reg_reg_asi) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2938 SEM_STATUS status = 0;
2939 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2940 int UNUSED written = 0;
2941 IADDR UNUSED pc = GET_H_PC ();
2942 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2943 EXTRACT_IFMT_LDSB_REG_REG_ASI_VARS /* f-rs2 f-asi f-i f-rs1 f-op3 f-rd f-op */
2944 EXTRACT_IFMT_LDSB_REG_REG_ASI_CODE
2947 HI opval = GETMEMHI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
2948 SET_H_GR (f_rd, opval);
2949 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2952 SEM_NBRANCH_FINI (vpc, 0);
2956 /* lduh-reg+reg: lduh [$rs1+$rs2],$rd */
2959 SEM_FN_NAME (sparc64,lduh_reg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2961 SEM_STATUS status = 0;
2962 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2963 int UNUSED written = 0;
2964 IADDR UNUSED pc = GET_H_PC ();
2965 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2966 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
2967 EXTRACT_IFMT_LDSB_REG_REG_CODE
2970 HI opval = GETMEMHI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
2971 SET_H_GR (f_rd, opval);
2972 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2975 SEM_NBRANCH_FINI (vpc, 0);
2979 /* lduh-reg+imm: lduh [$rs1+$simm13],$rd */
2982 SEM_FN_NAME (sparc64,lduh_reg_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
2984 SEM_STATUS status = 0;
2985 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2986 int UNUSED written = 0;
2987 IADDR UNUSED pc = GET_H_PC ();
2988 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2989 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
2990 EXTRACT_IFMT_LDSB_REG_IMM_CODE
2993 HI opval = GETMEMHI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), f_simm13));
2994 SET_H_GR (f_rd, opval);
2995 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
2998 SEM_NBRANCH_FINI (vpc, 0);
3002 /* lduh-reg+reg/asi: lduh [$rs1+$rs2]$asi,$rd */
3005 SEM_FN_NAME (sparc64,lduh_reg_reg_asi) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3007 SEM_STATUS status = 0;
3008 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3009 int UNUSED written = 0;
3010 IADDR UNUSED pc = GET_H_PC ();
3011 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3012 EXTRACT_IFMT_LDSB_REG_REG_ASI_VARS /* f-rs2 f-asi f-i f-rs1 f-op3 f-rd f-op */
3013 EXTRACT_IFMT_LDSB_REG_REG_ASI_CODE
3016 HI opval = GETMEMHI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
3017 SET_H_GR (f_rd, opval);
3018 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
3021 SEM_NBRANCH_FINI (vpc, 0);
3025 /* ldsw-reg+reg: ldsw [$rs1+$rs2],$rd */
3028 SEM_FN_NAME (sparc64,ldsw_reg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3030 SEM_STATUS status = 0;
3031 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3032 int UNUSED written = 0;
3033 IADDR UNUSED pc = GET_H_PC ();
3034 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3035 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
3036 EXTRACT_IFMT_LDSB_REG_REG_CODE
3039 SI opval = GETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
3040 SET_H_GR (f_rd, opval);
3041 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
3044 SEM_NBRANCH_FINI (vpc, 0);
3048 /* ldsw-reg+imm: ldsw [$rs1+$simm13],$rd */
3051 SEM_FN_NAME (sparc64,ldsw_reg_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3053 SEM_STATUS status = 0;
3054 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3055 int UNUSED written = 0;
3056 IADDR UNUSED pc = GET_H_PC ();
3057 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3058 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
3059 EXTRACT_IFMT_LDSB_REG_IMM_CODE
3062 SI opval = GETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), f_simm13));
3063 SET_H_GR (f_rd, opval);
3064 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
3067 SEM_NBRANCH_FINI (vpc, 0);
3071 /* ldsw-reg+reg/asi: ldsw [$rs1+$rs2]$asi,$rd */
3074 SEM_FN_NAME (sparc64,ldsw_reg_reg_asi) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3076 SEM_STATUS status = 0;
3077 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3078 int UNUSED written = 0;
3079 IADDR UNUSED pc = GET_H_PC ();
3080 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3081 EXTRACT_IFMT_LDSB_REG_REG_ASI_VARS /* f-rs2 f-asi f-i f-rs1 f-op3 f-rd f-op */
3082 EXTRACT_IFMT_LDSB_REG_REG_ASI_CODE
3085 SI opval = GETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
3086 SET_H_GR (f_rd, opval);
3087 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
3090 SEM_NBRANCH_FINI (vpc, 0);
3094 /* lduw-reg+reg: lduw [$rs1+$rs2],$rd */
3097 SEM_FN_NAME (sparc64,lduw_reg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3099 SEM_STATUS status = 0;
3100 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3101 int UNUSED written = 0;
3102 IADDR UNUSED pc = GET_H_PC ();
3103 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3104 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
3105 EXTRACT_IFMT_LDSB_REG_REG_CODE
3108 SI opval = GETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
3109 SET_H_GR (f_rd, opval);
3110 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
3113 SEM_NBRANCH_FINI (vpc, 0);
3117 /* lduw-reg+imm: lduw [$rs1+$simm13],$rd */
3120 SEM_FN_NAME (sparc64,lduw_reg_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3122 SEM_STATUS status = 0;
3123 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3124 int UNUSED written = 0;
3125 IADDR UNUSED pc = GET_H_PC ();
3126 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3127 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
3128 EXTRACT_IFMT_LDSB_REG_IMM_CODE
3131 SI opval = GETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), f_simm13));
3132 SET_H_GR (f_rd, opval);
3133 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
3136 SEM_NBRANCH_FINI (vpc, 0);
3140 /* lduw-reg+reg/asi: lduw [$rs1+$rs2]$asi,$rd */
3143 SEM_FN_NAME (sparc64,lduw_reg_reg_asi) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3145 SEM_STATUS status = 0;
3146 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3147 int UNUSED written = 0;
3148 IADDR UNUSED pc = GET_H_PC ();
3149 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3150 EXTRACT_IFMT_LDSB_REG_REG_ASI_VARS /* f-rs2 f-asi f-i f-rs1 f-op3 f-rd f-op */
3151 EXTRACT_IFMT_LDSB_REG_REG_ASI_CODE
3154 SI opval = GETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
3155 SET_H_GR (f_rd, opval);
3156 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
3159 SEM_NBRANCH_FINI (vpc, 0);
3163 /* ldx-reg+reg: ldx [$rs1+$rs2],$rd */
3166 SEM_FN_NAME (sparc64,ldx_reg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3168 SEM_STATUS status = 0;
3169 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3170 int UNUSED written = 0;
3171 IADDR UNUSED pc = GET_H_PC ();
3172 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3173 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
3174 EXTRACT_IFMT_LDSB_REG_REG_CODE
3177 DI opval = GETMEMDI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
3178 SET_H_GR (f_rd, opval);
3179 TRACE_RESULT (current_cpu, abuf, "rd", 'D', opval);
3182 SEM_NBRANCH_FINI (vpc, 0);
3186 /* ldx-reg+imm: ldx [$rs1+$simm13],$rd */
3189 SEM_FN_NAME (sparc64,ldx_reg_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3191 SEM_STATUS status = 0;
3192 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3193 int UNUSED written = 0;
3194 IADDR UNUSED pc = GET_H_PC ();
3195 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3196 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
3197 EXTRACT_IFMT_LDSB_REG_IMM_CODE
3200 DI opval = GETMEMDI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), f_simm13));
3201 SET_H_GR (f_rd, opval);
3202 TRACE_RESULT (current_cpu, abuf, "rd", 'D', opval);
3205 SEM_NBRANCH_FINI (vpc, 0);
3209 /* ldx-reg+reg/asi: ldx [$rs1+$rs2]$asi,$rd */
3212 SEM_FN_NAME (sparc64,ldx_reg_reg_asi) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3214 SEM_STATUS status = 0;
3215 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3216 int UNUSED written = 0;
3217 IADDR UNUSED pc = GET_H_PC ();
3218 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3219 EXTRACT_IFMT_LDSB_REG_REG_ASI_VARS /* f-rs2 f-asi f-i f-rs1 f-op3 f-rd f-op */
3220 EXTRACT_IFMT_LDSB_REG_REG_ASI_CODE
3223 DI opval = GETMEMDI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
3224 SET_H_GR (f_rd, opval);
3225 TRACE_RESULT (current_cpu, abuf, "rd", 'D', opval);
3228 SEM_NBRANCH_FINI (vpc, 0);
3232 /* ldd-reg+reg: ldd [$rs1+$rs2],$rdd */
3235 SEM_FN_NAME (sparc64,ldd_reg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3237 SEM_STATUS status = 0;
3238 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3239 int UNUSED written = 0;
3240 IADDR UNUSED pc = GET_H_PC ();
3241 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3242 EXTRACT_IFMT_LDD_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
3243 EXTRACT_IFMT_LDD_REG_REG_CODE
3247 SI opval = GETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
3248 SET_H_GR (f_rd, opval);
3249 TRACE_RESULT (current_cpu, abuf, "rdd", 'x', opval);
3252 SI opval = GETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), ADDSI (GET_H_GR (f_rs2), 4)));
3253 SET_H_GR (((f_rd) + (1)), opval);
3254 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-regno-rdd-const:-WI-1", 'x', opval);
3258 SEM_NBRANCH_FINI (vpc, 0);
3262 /* ldd-reg+imm: ldd [$rs1+$simm13],$rdd */
3265 SEM_FN_NAME (sparc64,ldd_reg_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3267 SEM_STATUS status = 0;
3268 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3269 int UNUSED written = 0;
3270 IADDR UNUSED pc = GET_H_PC ();
3271 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3272 EXTRACT_IFMT_LDD_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
3273 EXTRACT_IFMT_LDD_REG_IMM_CODE
3277 SI opval = GETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), f_simm13));
3278 SET_H_GR (f_rd, opval);
3279 TRACE_RESULT (current_cpu, abuf, "rdd", 'x', opval);
3282 SI opval = GETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), ADDHI (f_simm13, 4)));
3283 SET_H_GR (((f_rd) + (1)), opval);
3284 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-regno-rdd-const:-WI-1", 'x', opval);
3288 SEM_NBRANCH_FINI (vpc, 0);
3292 /* ldd-reg+reg/asi: ldd [$rs1+$rs2]$asi,$rdd */
3295 SEM_FN_NAME (sparc64,ldd_reg_reg_asi) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3297 SEM_STATUS status = 0;
3298 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3299 int UNUSED written = 0;
3300 IADDR UNUSED pc = GET_H_PC ();
3301 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3302 EXTRACT_IFMT_LDD_REG_REG_ASI_VARS /* f-rs2 f-asi f-i f-rs1 f-op3 f-rd f-op */
3303 EXTRACT_IFMT_LDD_REG_REG_ASI_CODE
3307 SI opval = GETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
3308 SET_H_GR (f_rd, opval);
3309 TRACE_RESULT (current_cpu, abuf, "rdd", 'x', opval);
3312 SI opval = GETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), ADDSI (GET_H_GR (f_rs2), 4)));
3313 SET_H_GR (((f_rd) + (1)), opval);
3314 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-regno-rdd-const:-WI-1", 'x', opval);
3318 SEM_NBRANCH_FINI (vpc, 0);
3322 /* stb-reg+reg: stb $rd,[$rs1+$rs2] */
3325 SEM_FN_NAME (sparc64,stb_reg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3327 SEM_STATUS status = 0;
3328 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3329 int UNUSED written = 0;
3330 IADDR UNUSED pc = GET_H_PC ();
3331 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3332 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
3333 EXTRACT_IFMT_LDSB_REG_REG_CODE
3336 QI opval = GET_H_GR (f_rd);
3337 SETMEMQI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)), opval);
3338 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3341 SEM_NBRANCH_FINI (vpc, 0);
3345 /* stb-reg+imm: stb $rd,[$rs1+$simm13] */
3348 SEM_FN_NAME (sparc64,stb_reg_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3350 SEM_STATUS status = 0;
3351 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3352 int UNUSED written = 0;
3353 IADDR UNUSED pc = GET_H_PC ();
3354 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3355 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
3356 EXTRACT_IFMT_LDSB_REG_IMM_CODE
3359 QI opval = GET_H_GR (f_rd);
3360 SETMEMQI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), f_simm13), opval);
3361 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3364 SEM_NBRANCH_FINI (vpc, 0);
3368 /* stb-reg+reg/asi: stb $rd,[$rs1+$rs2]$asi */
3371 SEM_FN_NAME (sparc64,stb_reg_reg_asi) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3373 SEM_STATUS status = 0;
3374 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3375 int UNUSED written = 0;
3376 IADDR UNUSED pc = GET_H_PC ();
3377 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3378 EXTRACT_IFMT_LDSB_REG_REG_ASI_VARS /* f-rs2 f-asi f-i f-rs1 f-op3 f-rd f-op */
3379 EXTRACT_IFMT_LDSB_REG_REG_ASI_CODE
3382 QI opval = GET_H_GR (f_rd);
3383 SETMEMQI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)), opval);
3384 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3387 SEM_NBRANCH_FINI (vpc, 0);
3391 /* sth-reg+reg: sth $rd,[$rs1+$rs2] */
3394 SEM_FN_NAME (sparc64,sth_reg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3396 SEM_STATUS status = 0;
3397 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3398 int UNUSED written = 0;
3399 IADDR UNUSED pc = GET_H_PC ();
3400 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3401 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
3402 EXTRACT_IFMT_LDSB_REG_REG_CODE
3405 HI opval = GET_H_GR (f_rd);
3406 SETMEMHI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)), opval);
3407 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3410 SEM_NBRANCH_FINI (vpc, 0);
3414 /* sth-reg+imm: sth $rd,[$rs1+$simm13] */
3417 SEM_FN_NAME (sparc64,sth_reg_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3419 SEM_STATUS status = 0;
3420 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3421 int UNUSED written = 0;
3422 IADDR UNUSED pc = GET_H_PC ();
3423 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3424 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
3425 EXTRACT_IFMT_LDSB_REG_IMM_CODE
3428 HI opval = GET_H_GR (f_rd);
3429 SETMEMHI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), f_simm13), opval);
3430 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3433 SEM_NBRANCH_FINI (vpc, 0);
3437 /* sth-reg+reg/asi: sth $rd,[$rs1+$rs2]$asi */
3440 SEM_FN_NAME (sparc64,sth_reg_reg_asi) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3442 SEM_STATUS status = 0;
3443 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3444 int UNUSED written = 0;
3445 IADDR UNUSED pc = GET_H_PC ();
3446 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3447 EXTRACT_IFMT_LDSB_REG_REG_ASI_VARS /* f-rs2 f-asi f-i f-rs1 f-op3 f-rd f-op */
3448 EXTRACT_IFMT_LDSB_REG_REG_ASI_CODE
3451 HI opval = GET_H_GR (f_rd);
3452 SETMEMHI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)), opval);
3453 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3456 SEM_NBRANCH_FINI (vpc, 0);
3460 /* st-reg+reg: st $rd,[$rs1+$rs2] */
3463 SEM_FN_NAME (sparc64,st_reg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3465 SEM_STATUS status = 0;
3466 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3467 int UNUSED written = 0;
3468 IADDR UNUSED pc = GET_H_PC ();
3469 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3470 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
3471 EXTRACT_IFMT_LDSB_REG_REG_CODE
3474 SI opval = GET_H_GR (f_rd);
3475 SETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)), opval);
3476 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3479 SEM_NBRANCH_FINI (vpc, 0);
3483 /* st-reg+imm: st $rd,[$rs1+$simm13] */
3486 SEM_FN_NAME (sparc64,st_reg_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3488 SEM_STATUS status = 0;
3489 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3490 int UNUSED written = 0;
3491 IADDR UNUSED pc = GET_H_PC ();
3492 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3493 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
3494 EXTRACT_IFMT_LDSB_REG_IMM_CODE
3497 SI opval = GET_H_GR (f_rd);
3498 SETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), f_simm13), opval);
3499 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3502 SEM_NBRANCH_FINI (vpc, 0);
3506 /* st-reg+reg/asi: st $rd,[$rs1+$rs2]$asi */
3509 SEM_FN_NAME (sparc64,st_reg_reg_asi) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3511 SEM_STATUS status = 0;
3512 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3513 int UNUSED written = 0;
3514 IADDR UNUSED pc = GET_H_PC ();
3515 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3516 EXTRACT_IFMT_LDSB_REG_REG_ASI_VARS /* f-rs2 f-asi f-i f-rs1 f-op3 f-rd f-op */
3517 EXTRACT_IFMT_LDSB_REG_REG_ASI_CODE
3520 SI opval = GET_H_GR (f_rd);
3521 SETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)), opval);
3522 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3525 SEM_NBRANCH_FINI (vpc, 0);
3529 /* stx-reg+reg: stx $rd,[$rs1+$rs2] */
3532 SEM_FN_NAME (sparc64,stx_reg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3534 SEM_STATUS status = 0;
3535 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3536 int UNUSED written = 0;
3537 IADDR UNUSED pc = GET_H_PC ();
3538 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3539 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
3540 EXTRACT_IFMT_LDSB_REG_REG_CODE
3543 DI opval = GET_H_GR (f_rd);
3544 SETMEMDI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)), opval);
3545 TRACE_RESULT (current_cpu, abuf, "memory", 'D', opval);
3548 SEM_NBRANCH_FINI (vpc, 0);
3552 /* stx-reg+imm: stx $rd,[$rs1+$simm13] */
3555 SEM_FN_NAME (sparc64,stx_reg_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3557 SEM_STATUS status = 0;
3558 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3559 int UNUSED written = 0;
3560 IADDR UNUSED pc = GET_H_PC ();
3561 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3562 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
3563 EXTRACT_IFMT_LDSB_REG_IMM_CODE
3566 DI opval = GET_H_GR (f_rd);
3567 SETMEMDI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), f_simm13), opval);
3568 TRACE_RESULT (current_cpu, abuf, "memory", 'D', opval);
3571 SEM_NBRANCH_FINI (vpc, 0);
3575 /* stx-reg+reg/asi: stx $rd,[$rs1+$rs2]$asi */
3578 SEM_FN_NAME (sparc64,stx_reg_reg_asi) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3580 SEM_STATUS status = 0;
3581 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3582 int UNUSED written = 0;
3583 IADDR UNUSED pc = GET_H_PC ();
3584 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3585 EXTRACT_IFMT_LDSB_REG_REG_ASI_VARS /* f-rs2 f-asi f-i f-rs1 f-op3 f-rd f-op */
3586 EXTRACT_IFMT_LDSB_REG_REG_ASI_CODE
3589 DI opval = GET_H_GR (f_rd);
3590 SETMEMDI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)), opval);
3591 TRACE_RESULT (current_cpu, abuf, "memory", 'D', opval);
3594 SEM_NBRANCH_FINI (vpc, 0);
3598 /* std-reg+reg: std $rdd,[$rs1+$rs2] */
3601 SEM_FN_NAME (sparc64,std_reg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3603 SEM_STATUS status = 0;
3604 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3605 int UNUSED written = 0;
3606 IADDR UNUSED pc = GET_H_PC ();
3607 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3608 EXTRACT_IFMT_LDD_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
3609 EXTRACT_IFMT_LDD_REG_REG_CODE
3613 SI opval = GET_H_GR (f_rd);
3614 SETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)), opval);
3615 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3618 SI opval = GET_H_GR (((f_rd) + (1)));
3619 SETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), ADDSI (GET_H_GR (f_rs2), 4)), opval);
3620 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3624 SEM_NBRANCH_FINI (vpc, 0);
3628 /* std-reg+imm: std $rdd,[$rs1+$simm13] */
3631 SEM_FN_NAME (sparc64,std_reg_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3633 SEM_STATUS status = 0;
3634 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3635 int UNUSED written = 0;
3636 IADDR UNUSED pc = GET_H_PC ();
3637 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3638 EXTRACT_IFMT_LDD_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
3639 EXTRACT_IFMT_LDD_REG_IMM_CODE
3643 SI opval = GET_H_GR (f_rd);
3644 SETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), f_simm13), opval);
3645 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3648 SI opval = GET_H_GR (((f_rd) + (1)));
3649 SETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), ADDHI (f_simm13, 4)), opval);
3650 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3654 SEM_NBRANCH_FINI (vpc, 0);
3658 /* std-reg+reg/asi: std $rdd,[$rs1+$rs2]$asi */
3661 SEM_FN_NAME (sparc64,std_reg_reg_asi) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3663 SEM_STATUS status = 0;
3664 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3665 int UNUSED written = 0;
3666 IADDR UNUSED pc = GET_H_PC ();
3667 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3668 EXTRACT_IFMT_LDD_REG_REG_ASI_VARS /* f-rs2 f-asi f-i f-rs1 f-op3 f-rd f-op */
3669 EXTRACT_IFMT_LDD_REG_REG_ASI_CODE
3673 SI opval = GET_H_GR (f_rd);
3674 SETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)), opval);
3675 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3678 SI opval = GET_H_GR (((f_rd) + (1)));
3679 SETMEMSI (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), ADDSI (GET_H_GR (f_rs2), 4)), opval);
3680 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3684 SEM_NBRANCH_FINI (vpc, 0);
3688 /* fp-ld-reg+reg: ld [$rs1+$rs2],$frd */
3691 SEM_FN_NAME (sparc64,fp_ld_reg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3693 SEM_STATUS status = 0;
3694 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3695 int UNUSED written = 0;
3696 IADDR UNUSED pc = GET_H_PC ();
3697 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3698 EXTRACT_IFMT_FP_LD_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
3699 EXTRACT_IFMT_FP_LD_REG_REG_CODE
3702 sparc64_hw_trap (current_cpu, pc, TRAP32_FP_DIS);
3704 SF opval = GETMEMSF (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
3705 CPU (h_fr[f_rd]) = opval;
3706 TRACE_RESULT (current_cpu, abuf, "frd", 'f', opval);
3710 SEM_NBRANCH_FINI (vpc, 0);
3714 /* fp-ld-reg+imm: ld [$rs1+$simm13],$frd */
3717 SEM_FN_NAME (sparc64,fp_ld_reg_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3719 SEM_STATUS status = 0;
3720 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3721 int UNUSED written = 0;
3722 IADDR UNUSED pc = GET_H_PC ();
3723 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3724 EXTRACT_IFMT_FP_LD_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
3725 EXTRACT_IFMT_FP_LD_REG_IMM_CODE
3728 sparc64_hw_trap (current_cpu, pc, TRAP32_FP_DIS);
3730 SF opval = GETMEMSF (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), f_simm13));
3731 CPU (h_fr[f_rd]) = opval;
3732 TRACE_RESULT (current_cpu, abuf, "frd", 'f', opval);
3736 SEM_NBRANCH_FINI (vpc, 0);
3740 /* fp-ld-reg+reg/asi: ld [$rs1+$rs2]$asi,$frd */
3743 SEM_FN_NAME (sparc64,fp_ld_reg_reg_asi) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3745 SEM_STATUS status = 0;
3746 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3747 int UNUSED written = 0;
3748 IADDR UNUSED pc = GET_H_PC ();
3749 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3750 EXTRACT_IFMT_FP_LD_REG_REG_ASI_VARS /* f-rs2 f-asi f-i f-rs1 f-op3 f-rd f-op */
3751 EXTRACT_IFMT_FP_LD_REG_REG_ASI_CODE
3754 sparc64_hw_trap (current_cpu, pc, TRAP32_FP_DIS);
3756 SF opval = GETMEMSF (current_cpu, pc, ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)));
3757 CPU (h_fr[f_rd]) = opval;
3758 TRACE_RESULT (current_cpu, abuf, "frd", 'f', opval);
3762 SEM_NBRANCH_FINI (vpc, 0);
3766 /* sethi: sethi $hi22,$rd */
3769 SEM_FN_NAME (sparc64,sethi) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3771 SEM_STATUS status = 0;
3772 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3773 int UNUSED written = 0;
3774 IADDR UNUSED pc = GET_H_PC ();
3775 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3776 EXTRACT_IFMT_SETHI_VARS /* f-hi22 f-op2 f-rd f-op */
3777 EXTRACT_IFMT_SETHI_CODE
3780 SI opval = SLLSI (f_hi22, 10);
3781 SET_H_GR (f_rd, opval);
3782 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
3785 SEM_NBRANCH_FINI (vpc, 0);
3789 /* add: add $rs1,$rs2,$rd */
3792 SEM_FN_NAME (sparc64,add) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3794 SEM_STATUS status = 0;
3795 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3796 int UNUSED written = 0;
3797 IADDR UNUSED pc = GET_H_PC ();
3798 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3799 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
3800 EXTRACT_IFMT_LDSB_REG_REG_CODE
3803 SI opval = ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2));
3804 SET_H_GR (f_rd, opval);
3805 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
3808 SEM_NBRANCH_FINI (vpc, 0);
3812 /* add-imm: add $rs1,$simm13,$rd */
3815 SEM_FN_NAME (sparc64,add_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3817 SEM_STATUS status = 0;
3818 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3819 int UNUSED written = 0;
3820 IADDR UNUSED pc = GET_H_PC ();
3821 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3822 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
3823 EXTRACT_IFMT_LDSB_REG_IMM_CODE
3826 SI opval = ADDSI (GET_H_GR (f_rs1), f_simm13);
3827 SET_H_GR (f_rd, opval);
3828 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
3831 SEM_NBRANCH_FINI (vpc, 0);
3835 /* sub: sub $rs1,$rs2,$rd */
3838 SEM_FN_NAME (sparc64,sub) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3840 SEM_STATUS status = 0;
3841 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3842 int UNUSED written = 0;
3843 IADDR UNUSED pc = GET_H_PC ();
3844 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3845 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
3846 EXTRACT_IFMT_LDSB_REG_REG_CODE
3849 SI opval = SUBSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2));
3850 SET_H_GR (f_rd, opval);
3851 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
3854 SEM_NBRANCH_FINI (vpc, 0);
3858 /* sub-imm: sub $rs1,$simm13,$rd */
3861 SEM_FN_NAME (sparc64,sub_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3863 SEM_STATUS status = 0;
3864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3865 int UNUSED written = 0;
3866 IADDR UNUSED pc = GET_H_PC ();
3867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3868 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
3869 EXTRACT_IFMT_LDSB_REG_IMM_CODE
3872 SI opval = SUBSI (GET_H_GR (f_rs1), f_simm13);
3873 SET_H_GR (f_rd, opval);
3874 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
3877 SEM_NBRANCH_FINI (vpc, 0);
3881 /* addcc: addcc $rs1,$rs2,$rd */
3884 SEM_FN_NAME (sparc64,addcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3886 SEM_STATUS status = 0;
3887 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3888 int UNUSED written = 0;
3889 IADDR UNUSED pc = GET_H_PC ();
3890 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3891 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
3892 EXTRACT_IFMT_LDSB_REG_REG_CODE
3897 tmp_x = ADDCSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2), 0);
3899 BI opval = ADDCFSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2), 0);
3900 CPU (h_icc_c) = opval;
3901 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
3904 BI opval = ADDOFSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2), 0);
3905 CPU (h_icc_v) = opval;
3906 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
3909 BI opval = LTSI (tmp_x, 0);
3910 CPU (h_icc_n) = opval;
3911 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
3914 BI opval = EQSI (tmp_x, 0);
3915 CPU (h_icc_z) = opval;
3916 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
3920 SI opval = ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2));
3921 SET_H_GR (f_rd, opval);
3922 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
3926 SEM_NBRANCH_FINI (vpc, 0);
3930 /* addcc-imm: addcc $rs1,$simm13,$rd */
3933 SEM_FN_NAME (sparc64,addcc_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3935 SEM_STATUS status = 0;
3936 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3937 int UNUSED written = 0;
3938 IADDR UNUSED pc = GET_H_PC ();
3939 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3940 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
3941 EXTRACT_IFMT_LDSB_REG_IMM_CODE
3946 tmp_x = ADDCSI (GET_H_GR (f_rs1), f_simm13, 0);
3948 BI opval = ADDCFSI (GET_H_GR (f_rs1), f_simm13, 0);
3949 CPU (h_icc_c) = opval;
3950 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
3953 BI opval = ADDOFSI (GET_H_GR (f_rs1), f_simm13, 0);
3954 CPU (h_icc_v) = opval;
3955 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
3958 BI opval = LTSI (tmp_x, 0);
3959 CPU (h_icc_n) = opval;
3960 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
3963 BI opval = EQSI (tmp_x, 0);
3964 CPU (h_icc_z) = opval;
3965 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
3969 SI opval = ADDSI (GET_H_GR (f_rs1), f_simm13);
3970 SET_H_GR (f_rd, opval);
3971 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
3975 SEM_NBRANCH_FINI (vpc, 0);
3979 /* subcc: subcc $rs1,$rs2,$rd */
3982 SEM_FN_NAME (sparc64,subcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
3984 SEM_STATUS status = 0;
3985 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3986 int UNUSED written = 0;
3987 IADDR UNUSED pc = GET_H_PC ();
3988 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3989 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
3990 EXTRACT_IFMT_LDSB_REG_REG_CODE
3995 tmp_x = SUBCSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2), 0);
3997 BI opval = SUBCFSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2), 0);
3998 CPU (h_icc_c) = opval;
3999 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
4002 BI opval = SUBOFSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2), 0);
4003 CPU (h_icc_v) = opval;
4004 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
4007 BI opval = LTSI (tmp_x, 0);
4008 CPU (h_icc_n) = opval;
4009 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
4012 BI opval = EQSI (tmp_x, 0);
4013 CPU (h_icc_z) = opval;
4014 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
4018 SI opval = SUBSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2));
4019 SET_H_GR (f_rd, opval);
4020 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4024 SEM_NBRANCH_FINI (vpc, 0);
4028 /* subcc-imm: subcc $rs1,$simm13,$rd */
4031 SEM_FN_NAME (sparc64,subcc_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4033 SEM_STATUS status = 0;
4034 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4035 int UNUSED written = 0;
4036 IADDR UNUSED pc = GET_H_PC ();
4037 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4038 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
4039 EXTRACT_IFMT_LDSB_REG_IMM_CODE
4044 tmp_x = SUBCSI (GET_H_GR (f_rs1), f_simm13, 0);
4046 BI opval = SUBCFSI (GET_H_GR (f_rs1), f_simm13, 0);
4047 CPU (h_icc_c) = opval;
4048 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
4051 BI opval = SUBOFSI (GET_H_GR (f_rs1), f_simm13, 0);
4052 CPU (h_icc_v) = opval;
4053 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
4056 BI opval = LTSI (tmp_x, 0);
4057 CPU (h_icc_n) = opval;
4058 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
4061 BI opval = EQSI (tmp_x, 0);
4062 CPU (h_icc_z) = opval;
4063 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
4067 SI opval = SUBSI (GET_H_GR (f_rs1), f_simm13);
4068 SET_H_GR (f_rd, opval);
4069 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4073 SEM_NBRANCH_FINI (vpc, 0);
4077 /* addc: addc $rs1,$rs2,$rd */
4080 SEM_FN_NAME (sparc64,addc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4082 SEM_STATUS status = 0;
4083 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4084 int UNUSED written = 0;
4085 IADDR UNUSED pc = GET_H_PC ();
4086 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4087 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
4088 EXTRACT_IFMT_LDSB_REG_REG_CODE
4091 SI opval = ADDCSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2), CPU (h_icc_c));
4092 SET_H_GR (f_rd, opval);
4093 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4096 SEM_NBRANCH_FINI (vpc, 0);
4100 /* addc-imm: addc $rs1,$simm13,$rd */
4103 SEM_FN_NAME (sparc64,addc_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4105 SEM_STATUS status = 0;
4106 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4107 int UNUSED written = 0;
4108 IADDR UNUSED pc = GET_H_PC ();
4109 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4110 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
4111 EXTRACT_IFMT_LDSB_REG_IMM_CODE
4114 SI opval = ADDCSI (GET_H_GR (f_rs1), f_simm13, CPU (h_icc_c));
4115 SET_H_GR (f_rd, opval);
4116 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4119 SEM_NBRANCH_FINI (vpc, 0);
4123 /* subc: subc $rs1,$rs2,$rd */
4126 SEM_FN_NAME (sparc64,subc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4128 SEM_STATUS status = 0;
4129 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4130 int UNUSED written = 0;
4131 IADDR UNUSED pc = GET_H_PC ();
4132 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4133 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
4134 EXTRACT_IFMT_LDSB_REG_REG_CODE
4137 SI opval = SUBCSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2), CPU (h_icc_c));
4138 SET_H_GR (f_rd, opval);
4139 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4142 SEM_NBRANCH_FINI (vpc, 0);
4146 /* subc-imm: subc $rs1,$simm13,$rd */
4149 SEM_FN_NAME (sparc64,subc_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4151 SEM_STATUS status = 0;
4152 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4153 int UNUSED written = 0;
4154 IADDR UNUSED pc = GET_H_PC ();
4155 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4156 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
4157 EXTRACT_IFMT_LDSB_REG_IMM_CODE
4160 SI opval = SUBCSI (GET_H_GR (f_rs1), f_simm13, CPU (h_icc_c));
4161 SET_H_GR (f_rd, opval);
4162 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4165 SEM_NBRANCH_FINI (vpc, 0);
4169 /* addccc: addccc $rs1,$rs2,$rd */
4172 SEM_FN_NAME (sparc64,addccc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4174 SEM_STATUS status = 0;
4175 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4176 int UNUSED written = 0;
4177 IADDR UNUSED pc = GET_H_PC ();
4178 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4179 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
4180 EXTRACT_IFMT_LDSB_REG_REG_CODE
4185 tmp_x = ADDCSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2), CPU (h_icc_c));
4187 BI opval = ADDCFSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2), CPU (h_icc_c));
4188 CPU (h_icc_c) = opval;
4189 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
4192 BI opval = ADDOFSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2), CPU (h_icc_c));
4193 CPU (h_icc_v) = opval;
4194 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
4197 BI opval = LTSI (tmp_x, 0);
4198 CPU (h_icc_n) = opval;
4199 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
4202 BI opval = EQSI (tmp_x, 0);
4203 CPU (h_icc_z) = opval;
4204 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
4208 SI opval = ADDCSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2), CPU (h_icc_c));
4209 SET_H_GR (f_rd, opval);
4210 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4214 SEM_NBRANCH_FINI (vpc, 0);
4218 /* addccc-imm: addccc $rs1,$simm13,$rd */
4221 SEM_FN_NAME (sparc64,addccc_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4223 SEM_STATUS status = 0;
4224 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4225 int UNUSED written = 0;
4226 IADDR UNUSED pc = GET_H_PC ();
4227 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4228 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
4229 EXTRACT_IFMT_LDSB_REG_IMM_CODE
4234 tmp_x = ADDCSI (GET_H_GR (f_rs1), f_simm13, CPU (h_icc_c));
4236 BI opval = ADDCFSI (GET_H_GR (f_rs1), f_simm13, CPU (h_icc_c));
4237 CPU (h_icc_c) = opval;
4238 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
4241 BI opval = ADDOFSI (GET_H_GR (f_rs1), f_simm13, CPU (h_icc_c));
4242 CPU (h_icc_v) = opval;
4243 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
4246 BI opval = LTSI (tmp_x, 0);
4247 CPU (h_icc_n) = opval;
4248 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
4251 BI opval = EQSI (tmp_x, 0);
4252 CPU (h_icc_z) = opval;
4253 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
4257 SI opval = ADDCSI (GET_H_GR (f_rs1), f_simm13, CPU (h_icc_c));
4258 SET_H_GR (f_rd, opval);
4259 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4263 SEM_NBRANCH_FINI (vpc, 0);
4267 /* subccc: subccc $rs1,$rs2,$rd */
4270 SEM_FN_NAME (sparc64,subccc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4272 SEM_STATUS status = 0;
4273 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4274 int UNUSED written = 0;
4275 IADDR UNUSED pc = GET_H_PC ();
4276 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4277 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
4278 EXTRACT_IFMT_LDSB_REG_REG_CODE
4283 tmp_x = SUBCSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2), CPU (h_icc_c));
4285 BI opval = SUBCFSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2), CPU (h_icc_c));
4286 CPU (h_icc_c) = opval;
4287 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
4290 BI opval = SUBOFSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2), CPU (h_icc_c));
4291 CPU (h_icc_v) = opval;
4292 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
4295 BI opval = LTSI (tmp_x, 0);
4296 CPU (h_icc_n) = opval;
4297 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
4300 BI opval = EQSI (tmp_x, 0);
4301 CPU (h_icc_z) = opval;
4302 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
4306 SI opval = SUBCSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2), CPU (h_icc_c));
4307 SET_H_GR (f_rd, opval);
4308 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4312 SEM_NBRANCH_FINI (vpc, 0);
4316 /* subccc-imm: subccc $rs1,$simm13,$rd */
4319 SEM_FN_NAME (sparc64,subccc_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4321 SEM_STATUS status = 0;
4322 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4323 int UNUSED written = 0;
4324 IADDR UNUSED pc = GET_H_PC ();
4325 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4326 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
4327 EXTRACT_IFMT_LDSB_REG_IMM_CODE
4332 tmp_x = SUBCSI (GET_H_GR (f_rs1), f_simm13, CPU (h_icc_c));
4334 BI opval = SUBCFSI (GET_H_GR (f_rs1), f_simm13, CPU (h_icc_c));
4335 CPU (h_icc_c) = opval;
4336 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
4339 BI opval = SUBOFSI (GET_H_GR (f_rs1), f_simm13, CPU (h_icc_c));
4340 CPU (h_icc_v) = opval;
4341 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
4344 BI opval = LTSI (tmp_x, 0);
4345 CPU (h_icc_n) = opval;
4346 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
4349 BI opval = EQSI (tmp_x, 0);
4350 CPU (h_icc_z) = opval;
4351 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
4355 SI opval = SUBCSI (GET_H_GR (f_rs1), f_simm13, CPU (h_icc_c));
4356 SET_H_GR (f_rd, opval);
4357 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4361 SEM_NBRANCH_FINI (vpc, 0);
4365 /* and: and $rs1,$rs2,$rd */
4368 SEM_FN_NAME (sparc64,and) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4370 SEM_STATUS status = 0;
4371 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4372 int UNUSED written = 0;
4373 IADDR UNUSED pc = GET_H_PC ();
4374 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4375 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
4376 EXTRACT_IFMT_LDSB_REG_REG_CODE
4379 SI opval = ANDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2));
4380 SET_H_GR (f_rd, opval);
4381 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4384 SEM_NBRANCH_FINI (vpc, 0);
4388 /* and-imm: and $rs1,$simm13,$rd */
4391 SEM_FN_NAME (sparc64,and_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4393 SEM_STATUS status = 0;
4394 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4395 int UNUSED written = 0;
4396 IADDR UNUSED pc = GET_H_PC ();
4397 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4398 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
4399 EXTRACT_IFMT_LDSB_REG_IMM_CODE
4402 SI opval = ANDSI (GET_H_GR (f_rs1), f_simm13);
4403 SET_H_GR (f_rd, opval);
4404 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4407 SEM_NBRANCH_FINI (vpc, 0);
4411 /* andcc: andcc $rs1,$rs2,$rd */
4414 SEM_FN_NAME (sparc64,andcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4416 SEM_STATUS status = 0;
4417 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4418 int UNUSED written = 0;
4419 IADDR UNUSED pc = GET_H_PC ();
4420 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4421 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
4422 EXTRACT_IFMT_LDSB_REG_REG_CODE
4427 BI opval = EQSI (ANDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)), 0);
4428 CPU (h_icc_z) = opval;
4429 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
4432 BI opval = LTSI (ANDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)), 0);
4433 CPU (h_icc_n) = opval;
4434 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
4438 CPU (h_icc_c) = opval;
4439 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
4443 CPU (h_icc_v) = opval;
4444 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
4448 SI opval = ANDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2));
4449 SET_H_GR (f_rd, opval);
4450 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4454 SEM_NBRANCH_FINI (vpc, 0);
4458 /* andcc-imm: andcc $rs1,$simm13,$rd */
4461 SEM_FN_NAME (sparc64,andcc_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4463 SEM_STATUS status = 0;
4464 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4465 int UNUSED written = 0;
4466 IADDR UNUSED pc = GET_H_PC ();
4467 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4468 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
4469 EXTRACT_IFMT_LDSB_REG_IMM_CODE
4474 BI opval = EQSI (ANDSI (GET_H_GR (f_rs1), f_simm13), 0);
4475 CPU (h_icc_z) = opval;
4476 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
4479 BI opval = LTSI (ANDSI (GET_H_GR (f_rs1), f_simm13), 0);
4480 CPU (h_icc_n) = opval;
4481 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
4485 CPU (h_icc_c) = opval;
4486 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
4490 CPU (h_icc_v) = opval;
4491 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
4495 SI opval = ANDSI (GET_H_GR (f_rs1), f_simm13);
4496 SET_H_GR (f_rd, opval);
4497 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4501 SEM_NBRANCH_FINI (vpc, 0);
4505 /* or: or $rs1,$rs2,$rd */
4508 SEM_FN_NAME (sparc64,or) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4510 SEM_STATUS status = 0;
4511 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4512 int UNUSED written = 0;
4513 IADDR UNUSED pc = GET_H_PC ();
4514 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4515 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
4516 EXTRACT_IFMT_LDSB_REG_REG_CODE
4519 SI opval = ORSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2));
4520 SET_H_GR (f_rd, opval);
4521 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4524 SEM_NBRANCH_FINI (vpc, 0);
4528 /* or-imm: or $rs1,$simm13,$rd */
4531 SEM_FN_NAME (sparc64,or_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4533 SEM_STATUS status = 0;
4534 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4535 int UNUSED written = 0;
4536 IADDR UNUSED pc = GET_H_PC ();
4537 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4538 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
4539 EXTRACT_IFMT_LDSB_REG_IMM_CODE
4542 SI opval = ORSI (GET_H_GR (f_rs1), f_simm13);
4543 SET_H_GR (f_rd, opval);
4544 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4547 SEM_NBRANCH_FINI (vpc, 0);
4551 /* orcc: orcc $rs1,$rs2,$rd */
4554 SEM_FN_NAME (sparc64,orcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4556 SEM_STATUS status = 0;
4557 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4558 int UNUSED written = 0;
4559 IADDR UNUSED pc = GET_H_PC ();
4560 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4561 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
4562 EXTRACT_IFMT_LDSB_REG_REG_CODE
4567 BI opval = EQSI (ORSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)), 0);
4568 CPU (h_icc_z) = opval;
4569 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
4572 BI opval = LTSI (ORSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)), 0);
4573 CPU (h_icc_n) = opval;
4574 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
4578 CPU (h_icc_c) = opval;
4579 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
4583 CPU (h_icc_v) = opval;
4584 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
4588 SI opval = ORSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2));
4589 SET_H_GR (f_rd, opval);
4590 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4594 SEM_NBRANCH_FINI (vpc, 0);
4598 /* orcc-imm: orcc $rs1,$simm13,$rd */
4601 SEM_FN_NAME (sparc64,orcc_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4603 SEM_STATUS status = 0;
4604 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4605 int UNUSED written = 0;
4606 IADDR UNUSED pc = GET_H_PC ();
4607 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4608 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
4609 EXTRACT_IFMT_LDSB_REG_IMM_CODE
4614 BI opval = EQSI (ORSI (GET_H_GR (f_rs1), f_simm13), 0);
4615 CPU (h_icc_z) = opval;
4616 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
4619 BI opval = LTSI (ORSI (GET_H_GR (f_rs1), f_simm13), 0);
4620 CPU (h_icc_n) = opval;
4621 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
4625 CPU (h_icc_c) = opval;
4626 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
4630 CPU (h_icc_v) = opval;
4631 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
4635 SI opval = ORSI (GET_H_GR (f_rs1), f_simm13);
4636 SET_H_GR (f_rd, opval);
4637 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4641 SEM_NBRANCH_FINI (vpc, 0);
4645 /* xor: xor $rs1,$rs2,$rd */
4648 SEM_FN_NAME (sparc64,xor) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4650 SEM_STATUS status = 0;
4651 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4652 int UNUSED written = 0;
4653 IADDR UNUSED pc = GET_H_PC ();
4654 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4655 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
4656 EXTRACT_IFMT_LDSB_REG_REG_CODE
4659 SI opval = XORSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2));
4660 SET_H_GR (f_rd, opval);
4661 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4664 SEM_NBRANCH_FINI (vpc, 0);
4668 /* xor-imm: xor $rs1,$simm13,$rd */
4671 SEM_FN_NAME (sparc64,xor_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4673 SEM_STATUS status = 0;
4674 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4675 int UNUSED written = 0;
4676 IADDR UNUSED pc = GET_H_PC ();
4677 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4678 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
4679 EXTRACT_IFMT_LDSB_REG_IMM_CODE
4682 SI opval = XORSI (GET_H_GR (f_rs1), f_simm13);
4683 SET_H_GR (f_rd, opval);
4684 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4687 SEM_NBRANCH_FINI (vpc, 0);
4691 /* xorcc: xorcc $rs1,$rs2,$rd */
4694 SEM_FN_NAME (sparc64,xorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4696 SEM_STATUS status = 0;
4697 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4698 int UNUSED written = 0;
4699 IADDR UNUSED pc = GET_H_PC ();
4700 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4701 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
4702 EXTRACT_IFMT_LDSB_REG_REG_CODE
4707 BI opval = EQSI (XORSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)), 0);
4708 CPU (h_icc_z) = opval;
4709 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
4712 BI opval = LTSI (XORSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2)), 0);
4713 CPU (h_icc_n) = opval;
4714 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
4718 CPU (h_icc_c) = opval;
4719 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
4723 CPU (h_icc_v) = opval;
4724 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
4728 SI opval = XORSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2));
4729 SET_H_GR (f_rd, opval);
4730 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4734 SEM_NBRANCH_FINI (vpc, 0);
4738 /* xorcc-imm: xorcc $rs1,$simm13,$rd */
4741 SEM_FN_NAME (sparc64,xorcc_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4743 SEM_STATUS status = 0;
4744 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4745 int UNUSED written = 0;
4746 IADDR UNUSED pc = GET_H_PC ();
4747 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4748 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
4749 EXTRACT_IFMT_LDSB_REG_IMM_CODE
4754 BI opval = EQSI (XORSI (GET_H_GR (f_rs1), f_simm13), 0);
4755 CPU (h_icc_z) = opval;
4756 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
4759 BI opval = LTSI (XORSI (GET_H_GR (f_rs1), f_simm13), 0);
4760 CPU (h_icc_n) = opval;
4761 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
4765 CPU (h_icc_c) = opval;
4766 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
4770 CPU (h_icc_v) = opval;
4771 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
4775 SI opval = XORSI (GET_H_GR (f_rs1), f_simm13);
4776 SET_H_GR (f_rd, opval);
4777 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4781 SEM_NBRANCH_FINI (vpc, 0);
4785 /* andn: andn $rs1,$rs2,$rd */
4788 SEM_FN_NAME (sparc64,andn) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4790 SEM_STATUS status = 0;
4791 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4792 int UNUSED written = 0;
4793 IADDR UNUSED pc = GET_H_PC ();
4794 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4795 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
4796 EXTRACT_IFMT_LDSB_REG_REG_CODE
4799 SI opval = ANDSI (GET_H_GR (f_rs1), INVSI (GET_H_GR (f_rs2)));
4800 SET_H_GR (f_rd, opval);
4801 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4804 SEM_NBRANCH_FINI (vpc, 0);
4808 /* andn-imm: andn $rs1,$simm13,$rd */
4811 SEM_FN_NAME (sparc64,andn_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4813 SEM_STATUS status = 0;
4814 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4815 int UNUSED written = 0;
4816 IADDR UNUSED pc = GET_H_PC ();
4817 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4818 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
4819 EXTRACT_IFMT_LDSB_REG_IMM_CODE
4822 SI opval = ANDSI (GET_H_GR (f_rs1), INVHI (f_simm13));
4823 SET_H_GR (f_rd, opval);
4824 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4827 SEM_NBRANCH_FINI (vpc, 0);
4831 /* andncc: andncc $rs1,$rs2,$rd */
4834 SEM_FN_NAME (sparc64,andncc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4836 SEM_STATUS status = 0;
4837 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4838 int UNUSED written = 0;
4839 IADDR UNUSED pc = GET_H_PC ();
4840 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4841 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
4842 EXTRACT_IFMT_LDSB_REG_REG_CODE
4847 BI opval = EQSI (ANDSI (GET_H_GR (f_rs1), INVSI (GET_H_GR (f_rs2))), 0);
4848 CPU (h_icc_z) = opval;
4849 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
4852 BI opval = LTSI (ANDSI (GET_H_GR (f_rs1), INVSI (GET_H_GR (f_rs2))), 0);
4853 CPU (h_icc_n) = opval;
4854 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
4858 CPU (h_icc_c) = opval;
4859 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
4863 CPU (h_icc_v) = opval;
4864 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
4868 SI opval = ANDSI (GET_H_GR (f_rs1), INVSI (GET_H_GR (f_rs2)));
4869 SET_H_GR (f_rd, opval);
4870 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4874 SEM_NBRANCH_FINI (vpc, 0);
4878 /* andncc-imm: andncc $rs1,$simm13,$rd */
4881 SEM_FN_NAME (sparc64,andncc_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4883 SEM_STATUS status = 0;
4884 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4885 int UNUSED written = 0;
4886 IADDR UNUSED pc = GET_H_PC ();
4887 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4888 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
4889 EXTRACT_IFMT_LDSB_REG_IMM_CODE
4894 BI opval = EQSI (ANDSI (GET_H_GR (f_rs1), INVHI (f_simm13)), 0);
4895 CPU (h_icc_z) = opval;
4896 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
4899 BI opval = LTSI (ANDSI (GET_H_GR (f_rs1), INVHI (f_simm13)), 0);
4900 CPU (h_icc_n) = opval;
4901 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
4905 CPU (h_icc_c) = opval;
4906 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
4910 CPU (h_icc_v) = opval;
4911 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
4915 SI opval = ANDSI (GET_H_GR (f_rs1), INVHI (f_simm13));
4916 SET_H_GR (f_rd, opval);
4917 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4921 SEM_NBRANCH_FINI (vpc, 0);
4925 /* orn: orn $rs1,$rs2,$rd */
4928 SEM_FN_NAME (sparc64,orn) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4930 SEM_STATUS status = 0;
4931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4932 int UNUSED written = 0;
4933 IADDR UNUSED pc = GET_H_PC ();
4934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4935 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
4936 EXTRACT_IFMT_LDSB_REG_REG_CODE
4939 SI opval = ORSI (GET_H_GR (f_rs1), INVSI (GET_H_GR (f_rs2)));
4940 SET_H_GR (f_rd, opval);
4941 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4944 SEM_NBRANCH_FINI (vpc, 0);
4948 /* orn-imm: orn $rs1,$simm13,$rd */
4951 SEM_FN_NAME (sparc64,orn_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4953 SEM_STATUS status = 0;
4954 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4955 int UNUSED written = 0;
4956 IADDR UNUSED pc = GET_H_PC ();
4957 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4958 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
4959 EXTRACT_IFMT_LDSB_REG_IMM_CODE
4962 SI opval = ORSI (GET_H_GR (f_rs1), INVHI (f_simm13));
4963 SET_H_GR (f_rd, opval);
4964 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
4967 SEM_NBRANCH_FINI (vpc, 0);
4971 /* orncc: orncc $rs1,$rs2,$rd */
4974 SEM_FN_NAME (sparc64,orncc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
4976 SEM_STATUS status = 0;
4977 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4978 int UNUSED written = 0;
4979 IADDR UNUSED pc = GET_H_PC ();
4980 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4981 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
4982 EXTRACT_IFMT_LDSB_REG_REG_CODE
4987 BI opval = EQSI (ORSI (GET_H_GR (f_rs1), INVSI (GET_H_GR (f_rs2))), 0);
4988 CPU (h_icc_z) = opval;
4989 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
4992 BI opval = LTSI (ORSI (GET_H_GR (f_rs1), INVSI (GET_H_GR (f_rs2))), 0);
4993 CPU (h_icc_n) = opval;
4994 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
4998 CPU (h_icc_c) = opval;
4999 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
5003 CPU (h_icc_v) = opval;
5004 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
5008 SI opval = ORSI (GET_H_GR (f_rs1), INVSI (GET_H_GR (f_rs2)));
5009 SET_H_GR (f_rd, opval);
5010 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5014 SEM_NBRANCH_FINI (vpc, 0);
5018 /* orncc-imm: orncc $rs1,$simm13,$rd */
5021 SEM_FN_NAME (sparc64,orncc_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5023 SEM_STATUS status = 0;
5024 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5025 int UNUSED written = 0;
5026 IADDR UNUSED pc = GET_H_PC ();
5027 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5028 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
5029 EXTRACT_IFMT_LDSB_REG_IMM_CODE
5034 BI opval = EQSI (ORSI (GET_H_GR (f_rs1), INVHI (f_simm13)), 0);
5035 CPU (h_icc_z) = opval;
5036 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
5039 BI opval = LTSI (ORSI (GET_H_GR (f_rs1), INVHI (f_simm13)), 0);
5040 CPU (h_icc_n) = opval;
5041 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
5045 CPU (h_icc_c) = opval;
5046 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
5050 CPU (h_icc_v) = opval;
5051 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
5055 SI opval = ORSI (GET_H_GR (f_rs1), INVHI (f_simm13));
5056 SET_H_GR (f_rd, opval);
5057 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5061 SEM_NBRANCH_FINI (vpc, 0);
5065 /* xnor: xnor $rs1,$rs2,$rd */
5068 SEM_FN_NAME (sparc64,xnor) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5070 SEM_STATUS status = 0;
5071 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5072 int UNUSED written = 0;
5073 IADDR UNUSED pc = GET_H_PC ();
5074 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5075 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
5076 EXTRACT_IFMT_LDSB_REG_REG_CODE
5079 SI opval = XORSI (GET_H_GR (f_rs1), INVSI (GET_H_GR (f_rs2)));
5080 SET_H_GR (f_rd, opval);
5081 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5084 SEM_NBRANCH_FINI (vpc, 0);
5088 /* xnor-imm: xnor $rs1,$simm13,$rd */
5091 SEM_FN_NAME (sparc64,xnor_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5093 SEM_STATUS status = 0;
5094 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5095 int UNUSED written = 0;
5096 IADDR UNUSED pc = GET_H_PC ();
5097 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5098 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
5099 EXTRACT_IFMT_LDSB_REG_IMM_CODE
5102 SI opval = XORSI (GET_H_GR (f_rs1), INVHI (f_simm13));
5103 SET_H_GR (f_rd, opval);
5104 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5107 SEM_NBRANCH_FINI (vpc, 0);
5111 /* xnorcc: xnorcc $rs1,$rs2,$rd */
5114 SEM_FN_NAME (sparc64,xnorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5116 SEM_STATUS status = 0;
5117 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5118 int UNUSED written = 0;
5119 IADDR UNUSED pc = GET_H_PC ();
5120 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5121 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
5122 EXTRACT_IFMT_LDSB_REG_REG_CODE
5127 BI opval = EQSI (XORSI (GET_H_GR (f_rs1), INVSI (GET_H_GR (f_rs2))), 0);
5128 CPU (h_icc_z) = opval;
5129 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
5132 BI opval = LTSI (XORSI (GET_H_GR (f_rs1), INVSI (GET_H_GR (f_rs2))), 0);
5133 CPU (h_icc_n) = opval;
5134 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
5138 CPU (h_icc_c) = opval;
5139 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
5143 CPU (h_icc_v) = opval;
5144 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
5148 SI opval = XORSI (GET_H_GR (f_rs1), INVSI (GET_H_GR (f_rs2)));
5149 SET_H_GR (f_rd, opval);
5150 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5154 SEM_NBRANCH_FINI (vpc, 0);
5158 /* xnorcc-imm: xnorcc $rs1,$simm13,$rd */
5161 SEM_FN_NAME (sparc64,xnorcc_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5163 SEM_STATUS status = 0;
5164 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5165 int UNUSED written = 0;
5166 IADDR UNUSED pc = GET_H_PC ();
5167 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5168 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
5169 EXTRACT_IFMT_LDSB_REG_IMM_CODE
5174 BI opval = EQSI (XORSI (GET_H_GR (f_rs1), INVHI (f_simm13)), 0);
5175 CPU (h_icc_z) = opval;
5176 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
5179 BI opval = LTSI (XORSI (GET_H_GR (f_rs1), INVHI (f_simm13)), 0);
5180 CPU (h_icc_n) = opval;
5181 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
5185 CPU (h_icc_c) = opval;
5186 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
5190 CPU (h_icc_v) = opval;
5191 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
5195 SI opval = XORSI (GET_H_GR (f_rs1), INVHI (f_simm13));
5196 SET_H_GR (f_rd, opval);
5197 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5201 SEM_NBRANCH_FINI (vpc, 0);
5205 /* sll: sll $rs1,$rs2,$rd */
5208 SEM_FN_NAME (sparc64,sll) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5210 SEM_STATUS status = 0;
5211 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5212 int UNUSED written = 0;
5213 IADDR UNUSED pc = GET_H_PC ();
5214 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5215 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
5216 EXTRACT_IFMT_LDSB_REG_REG_CODE
5219 SI opval = SLLSI (GET_H_GR (f_rs1), ANDSI (GET_H_GR (f_rs2), 31));
5220 SET_H_GR (f_rd, opval);
5221 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5224 SEM_NBRANCH_FINI (vpc, 0);
5228 /* sll-imm: sll $rs1,$simm13,$rd */
5231 SEM_FN_NAME (sparc64,sll_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5233 SEM_STATUS status = 0;
5234 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5235 int UNUSED written = 0;
5236 IADDR UNUSED pc = GET_H_PC ();
5237 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5238 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
5239 EXTRACT_IFMT_LDSB_REG_IMM_CODE
5242 SI opval = SLLSI (GET_H_GR (f_rs1), ANDHI (f_simm13, 31));
5243 SET_H_GR (f_rd, opval);
5244 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5247 SEM_NBRANCH_FINI (vpc, 0);
5251 /* srl: srl $rs1,$rs2,$rd */
5254 SEM_FN_NAME (sparc64,srl) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5256 SEM_STATUS status = 0;
5257 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5258 int UNUSED written = 0;
5259 IADDR UNUSED pc = GET_H_PC ();
5260 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5261 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
5262 EXTRACT_IFMT_LDSB_REG_REG_CODE
5265 SI opval = SRLSI (GET_H_GR (f_rs1), ANDSI (GET_H_GR (f_rs2), 31));
5266 SET_H_GR (f_rd, opval);
5267 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5270 SEM_NBRANCH_FINI (vpc, 0);
5274 /* srl-imm: srl $rs1,$simm13,$rd */
5277 SEM_FN_NAME (sparc64,srl_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5279 SEM_STATUS status = 0;
5280 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5281 int UNUSED written = 0;
5282 IADDR UNUSED pc = GET_H_PC ();
5283 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5284 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
5285 EXTRACT_IFMT_LDSB_REG_IMM_CODE
5288 SI opval = SRLSI (GET_H_GR (f_rs1), ANDHI (f_simm13, 31));
5289 SET_H_GR (f_rd, opval);
5290 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5293 SEM_NBRANCH_FINI (vpc, 0);
5297 /* sra: sra $rs1,$rs2,$rd */
5300 SEM_FN_NAME (sparc64,sra) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5302 SEM_STATUS status = 0;
5303 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5304 int UNUSED written = 0;
5305 IADDR UNUSED pc = GET_H_PC ();
5306 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5307 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
5308 EXTRACT_IFMT_LDSB_REG_REG_CODE
5311 SI opval = SRASI (GET_H_GR (f_rs1), ANDSI (GET_H_GR (f_rs2), 31));
5312 SET_H_GR (f_rd, opval);
5313 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5316 SEM_NBRANCH_FINI (vpc, 0);
5320 /* sra-imm: sra $rs1,$simm13,$rd */
5323 SEM_FN_NAME (sparc64,sra_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5325 SEM_STATUS status = 0;
5326 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5327 int UNUSED written = 0;
5328 IADDR UNUSED pc = GET_H_PC ();
5329 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5330 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
5331 EXTRACT_IFMT_LDSB_REG_IMM_CODE
5334 SI opval = SRASI (GET_H_GR (f_rs1), ANDHI (f_simm13, 31));
5335 SET_H_GR (f_rd, opval);
5336 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5339 SEM_NBRANCH_FINI (vpc, 0);
5343 /* smul: smul $rs1,$rs2,$rd */
5346 SEM_FN_NAME (sparc64,smul) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5348 SEM_STATUS status = 0;
5349 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5350 int UNUSED written = 0;
5351 IADDR UNUSED pc = GET_H_PC ();
5352 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5353 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
5354 EXTRACT_IFMT_LDSB_REG_REG_CODE
5358 tmp_res = MULDI (EXTSIDI (GET_H_GR (f_rs1)), EXTSIDI (GET_H_GR (f_rs2)));
5360 SI opval = TRUNCDISI (SRLDI (tmp_res, 32));
5362 TRACE_RESULT (current_cpu, abuf, "y-0", 'x', opval);
5365 SI opval = TRUNCDISI (tmp_res);
5366 SET_H_GR (f_rd, opval);
5367 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5371 SEM_NBRANCH_FINI (vpc, 0);
5375 /* smul-imm: smul $rs1,$simm13,$rd */
5378 SEM_FN_NAME (sparc64,smul_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5380 SEM_STATUS status = 0;
5381 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5382 int UNUSED written = 0;
5383 IADDR UNUSED pc = GET_H_PC ();
5384 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5385 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
5386 EXTRACT_IFMT_LDSB_REG_IMM_CODE
5390 tmp_res = MULDI (EXTSIDI (GET_H_GR (f_rs1)), EXTHIDI (f_simm13));
5392 SI opval = TRUNCDISI (SRLDI (tmp_res, 32));
5394 TRACE_RESULT (current_cpu, abuf, "y-0", 'x', opval);
5397 SI opval = TRUNCDISI (tmp_res);
5398 SET_H_GR (f_rd, opval);
5399 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5403 SEM_NBRANCH_FINI (vpc, 0);
5407 /* smul-cc: smulcc $rs1,$rs2,$rd */
5410 SEM_FN_NAME (sparc64,smul_cc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5412 SEM_STATUS status = 0;
5413 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5414 int UNUSED written = 0;
5415 IADDR UNUSED pc = GET_H_PC ();
5416 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5417 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
5418 EXTRACT_IFMT_LDSB_REG_REG_CODE
5422 tmp_res = MULDI (EXTSIDI (GET_H_GR (f_rs1)), EXTSIDI (GET_H_GR (f_rs2)));
5424 SI opval = TRUNCDISI (SRLDI (tmp_res, 32));
5426 TRACE_RESULT (current_cpu, abuf, "y-0", 'x', opval);
5429 SI opval = TRUNCDISI (tmp_res);
5430 SET_H_GR (f_rd, opval);
5431 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5435 BI opval = EQSI (TRUNCDISI (tmp_res), 0);
5436 CPU (h_icc_z) = opval;
5437 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
5440 BI opval = LTSI (TRUNCDISI (tmp_res), 0);
5441 CPU (h_icc_n) = opval;
5442 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
5446 CPU (h_icc_c) = opval;
5447 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
5451 CPU (h_icc_v) = opval;
5452 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
5457 SEM_NBRANCH_FINI (vpc, 0);
5461 /* smul-cc-imm: smulcc $rs1,$simm13,$rd */
5464 SEM_FN_NAME (sparc64,smul_cc_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5466 SEM_STATUS status = 0;
5467 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5468 int UNUSED written = 0;
5469 IADDR UNUSED pc = GET_H_PC ();
5470 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5471 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
5472 EXTRACT_IFMT_LDSB_REG_IMM_CODE
5476 tmp_res = MULDI (EXTSIDI (GET_H_GR (f_rs1)), EXTHIDI (f_simm13));
5478 SI opval = TRUNCDISI (SRLDI (tmp_res, 32));
5480 TRACE_RESULT (current_cpu, abuf, "y-0", 'x', opval);
5483 SI opval = TRUNCDISI (tmp_res);
5484 SET_H_GR (f_rd, opval);
5485 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5489 BI opval = EQSI (TRUNCDISI (tmp_res), 0);
5490 CPU (h_icc_z) = opval;
5491 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
5494 BI opval = LTSI (TRUNCDISI (tmp_res), 0);
5495 CPU (h_icc_n) = opval;
5496 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
5500 CPU (h_icc_c) = opval;
5501 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
5505 CPU (h_icc_v) = opval;
5506 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
5511 SEM_NBRANCH_FINI (vpc, 0);
5515 /* umul: umul $rs1,$rs2,$rd */
5518 SEM_FN_NAME (sparc64,umul) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5520 SEM_STATUS status = 0;
5521 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5522 int UNUSED written = 0;
5523 IADDR UNUSED pc = GET_H_PC ();
5524 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5525 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
5526 EXTRACT_IFMT_LDSB_REG_REG_CODE
5530 tmp_res = MULDI (ZEXTSIDI (GET_H_GR (f_rs1)), ZEXTSIDI (GET_H_GR (f_rs2)));
5532 SI opval = TRUNCDISI (SRLDI (tmp_res, 32));
5534 TRACE_RESULT (current_cpu, abuf, "y-0", 'x', opval);
5537 SI opval = TRUNCDISI (tmp_res);
5538 SET_H_GR (f_rd, opval);
5539 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5543 SEM_NBRANCH_FINI (vpc, 0);
5547 /* umul-imm: umul $rs1,$simm13,$rd */
5550 SEM_FN_NAME (sparc64,umul_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5552 SEM_STATUS status = 0;
5553 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5554 int UNUSED written = 0;
5555 IADDR UNUSED pc = GET_H_PC ();
5556 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5557 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
5558 EXTRACT_IFMT_LDSB_REG_IMM_CODE
5562 tmp_res = MULDI (ZEXTSIDI (GET_H_GR (f_rs1)), ZEXTHIDI (f_simm13));
5564 SI opval = TRUNCDISI (SRLDI (tmp_res, 32));
5566 TRACE_RESULT (current_cpu, abuf, "y-0", 'x', opval);
5569 SI opval = TRUNCDISI (tmp_res);
5570 SET_H_GR (f_rd, opval);
5571 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5575 SEM_NBRANCH_FINI (vpc, 0);
5579 /* umul-cc: umulcc $rs1,$rs2,$rd */
5582 SEM_FN_NAME (sparc64,umul_cc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5584 SEM_STATUS status = 0;
5585 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5586 int UNUSED written = 0;
5587 IADDR UNUSED pc = GET_H_PC ();
5588 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5589 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
5590 EXTRACT_IFMT_LDSB_REG_REG_CODE
5594 tmp_res = MULDI (ZEXTSIDI (GET_H_GR (f_rs1)), ZEXTSIDI (GET_H_GR (f_rs2)));
5596 SI opval = TRUNCDISI (SRLDI (tmp_res, 32));
5598 TRACE_RESULT (current_cpu, abuf, "y-0", 'x', opval);
5601 SI opval = TRUNCDISI (tmp_res);
5602 SET_H_GR (f_rd, opval);
5603 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5607 BI opval = EQSI (TRUNCDISI (tmp_res), 0);
5608 CPU (h_icc_z) = opval;
5609 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
5612 BI opval = LTSI (TRUNCDISI (tmp_res), 0);
5613 CPU (h_icc_n) = opval;
5614 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
5618 CPU (h_icc_c) = opval;
5619 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
5623 CPU (h_icc_v) = opval;
5624 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
5629 SEM_NBRANCH_FINI (vpc, 0);
5633 /* umul-cc-imm: umulcc $rs1,$simm13,$rd */
5636 SEM_FN_NAME (sparc64,umul_cc_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5638 SEM_STATUS status = 0;
5639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5640 int UNUSED written = 0;
5641 IADDR UNUSED pc = GET_H_PC ();
5642 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5643 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
5644 EXTRACT_IFMT_LDSB_REG_IMM_CODE
5648 tmp_res = MULDI (ZEXTSIDI (GET_H_GR (f_rs1)), ZEXTHIDI (f_simm13));
5650 SI opval = TRUNCDISI (SRLDI (tmp_res, 32));
5652 TRACE_RESULT (current_cpu, abuf, "y-0", 'x', opval);
5655 SI opval = TRUNCDISI (tmp_res);
5656 SET_H_GR (f_rd, opval);
5657 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5661 BI opval = EQSI (TRUNCDISI (tmp_res), 0);
5662 CPU (h_icc_z) = opval;
5663 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
5666 BI opval = LTSI (TRUNCDISI (tmp_res), 0);
5667 CPU (h_icc_n) = opval;
5668 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
5672 CPU (h_icc_c) = opval;
5673 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
5677 CPU (h_icc_v) = opval;
5678 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
5683 SEM_NBRANCH_FINI (vpc, 0);
5687 /* mulscc: mulscc $rs1,$rs2,$rd */
5690 SEM_FN_NAME (sparc64,mulscc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5692 SEM_STATUS status = 0;
5693 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5694 int UNUSED written = 0;
5695 IADDR UNUSED pc = GET_H_PC ();
5696 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5697 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
5698 EXTRACT_IFMT_LDSB_REG_REG_CODE
5704 tmp_tmp = SRLSI (GET_H_GR (f_rs1), 1);
5705 if (NEBI (XORBI (CPU (h_icc_n), CPU (h_icc_v)), 0)) {
5706 tmp_tmp = ORSI (tmp_tmp, 0x80000000);
5708 if (NESI (ANDSI (GET_H_Y (), 1), 0)) {
5709 tmp_add_tmp = GET_H_GR (f_rs2);
5713 tmp_rd_tmp = ADDSI (tmp_tmp, tmp_add_tmp);
5716 tmp_x = ADDCSI (tmp_tmp, tmp_add_tmp, 0);
5718 BI opval = ADDCFSI (tmp_tmp, tmp_add_tmp, 0);
5719 CPU (h_icc_c) = opval;
5720 TRACE_RESULT (current_cpu, abuf, "icc-c", 'x', opval);
5723 BI opval = ADDOFSI (tmp_tmp, tmp_add_tmp, 0);
5724 CPU (h_icc_v) = opval;
5725 TRACE_RESULT (current_cpu, abuf, "icc-v", 'x', opval);
5728 BI opval = LTSI (tmp_x, 0);
5729 CPU (h_icc_n) = opval;
5730 TRACE_RESULT (current_cpu, abuf, "icc-n", 'x', opval);
5733 BI opval = EQSI (tmp_x, 0);
5734 CPU (h_icc_z) = opval;
5735 TRACE_RESULT (current_cpu, abuf, "icc-z", 'x', opval);
5739 SI opval = SRLSI (GET_H_Y (), 1);
5741 TRACE_RESULT (current_cpu, abuf, "y-0", 'x', opval);
5743 if (NESI (ANDSI (GET_H_GR (f_rs1), 1), 0)) {
5745 SI opval = ORSI (GET_H_Y (), 0x80000000);
5747 TRACE_RESULT (current_cpu, abuf, "y-0", 'x', opval);
5751 SI opval = tmp_rd_tmp;
5752 SET_H_GR (f_rd, opval);
5753 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5757 SEM_NBRANCH_FINI (vpc, 0);
5761 /* save: save $rs1,$rs2,$rd */
5764 SEM_FN_NAME (sparc64,save) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5766 SEM_STATUS status = 0;
5767 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5768 int UNUSED written = 0;
5769 IADDR UNUSED pc = GET_H_PC ();
5770 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5771 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
5772 EXTRACT_IFMT_LDSB_REG_REG_CODE
5775 SI opval = sparc64_do_save (current_cpu, pc, GET_H_GR (f_rs1), GET_H_GR (f_rs2));
5776 SET_H_GR (f_rd, opval);
5777 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5780 SEM_NBRANCH_FINI (vpc, 0);
5784 /* save-imm: save $rs1,$simm13,$rd */
5787 SEM_FN_NAME (sparc64,save_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5789 SEM_STATUS status = 0;
5790 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5791 int UNUSED written = 0;
5792 IADDR UNUSED pc = GET_H_PC ();
5793 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5794 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
5795 EXTRACT_IFMT_LDSB_REG_IMM_CODE
5798 SI opval = sparc64_do_save (current_cpu, pc, GET_H_GR (f_rs1), f_simm13);
5799 SET_H_GR (f_rd, opval);
5800 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5803 SEM_NBRANCH_FINI (vpc, 0);
5807 /* restore: restore $rs1,$rs2,$rd */
5810 SEM_FN_NAME (sparc64,restore) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5812 SEM_STATUS status = 0;
5813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5814 int UNUSED written = 0;
5815 IADDR UNUSED pc = GET_H_PC ();
5816 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5817 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
5818 EXTRACT_IFMT_LDSB_REG_REG_CODE
5821 SI opval = sparc64_do_restore (current_cpu, pc, GET_H_GR (f_rs1), GET_H_GR (f_rs2));
5822 SET_H_GR (f_rd, opval);
5823 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5826 SEM_NBRANCH_FINI (vpc, 0);
5830 /* restore-imm: restore $rs1,$simm13,$rd */
5833 SEM_FN_NAME (sparc64,restore_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5835 SEM_STATUS status = 0;
5836 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5837 int UNUSED written = 0;
5838 IADDR UNUSED pc = GET_H_PC ();
5839 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5840 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
5841 EXTRACT_IFMT_LDSB_REG_IMM_CODE
5844 SI opval = sparc64_do_restore (current_cpu, pc, GET_H_GR (f_rs1), f_simm13);
5845 SET_H_GR (f_rd, opval);
5846 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5849 SEM_NBRANCH_FINI (vpc, 0);
5853 /* rett: rett $rs1,$rs2 */
5856 SEM_FN_NAME (sparc64,rett) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5858 SEM_STATUS status = 0;
5859 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5860 int UNUSED written = 0;
5861 IADDR UNUSED pc = GET_H_PC ();
5863 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5864 EXTRACT_IFMT_FLUSH_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
5865 EXTRACT_IFMT_FLUSH_CODE
5869 USI opval = sparc64_do_rett (current_cpu, pc, GET_H_GR (f_rs1), GET_H_GR (f_rs2));
5870 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
5871 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5875 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_UNCOND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
5879 /* rett-imm: rett $rs1,$simm13 */
5882 SEM_FN_NAME (sparc64,rett_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5884 SEM_STATUS status = 0;
5885 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5886 int UNUSED written = 0;
5887 IADDR UNUSED pc = GET_H_PC ();
5889 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5890 EXTRACT_IFMT_FLUSH_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
5891 EXTRACT_IFMT_FLUSH_IMM_CODE
5895 USI opval = sparc64_do_rett (current_cpu, pc, GET_H_GR (f_rs1), f_simm13);
5896 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
5897 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5901 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_UNCOND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
5905 /* unimp: unimp $imm22 */
5908 SEM_FN_NAME (sparc64,unimp) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5910 SEM_STATUS status = 0;
5911 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5912 int UNUSED written = 0;
5913 IADDR UNUSED pc = GET_H_PC ();
5914 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5915 EXTRACT_IFMT_UNIMP_VARS /* f-imm22 f-op2 f-rd-res f-op */
5916 EXTRACT_IFMT_UNIMP_CODE
5918 sparc_do_unimp (current_cpu, pc, f_imm22);
5920 SEM_NBRANCH_FINI (vpc, 0);
5924 /* call: call $disp30 */
5927 SEM_FN_NAME (sparc64,call) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5929 SEM_STATUS status = 0;
5930 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5931 int UNUSED written = 0;
5932 IADDR UNUSED pc = GET_H_PC ();
5934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5935 EXTRACT_IFMT_CALL_VARS /* f-disp30 f-op */
5937 EXTRACT_IFMT_CALL_CODE
5938 i_disp30 = f_disp30;
5943 SET_H_GR (((UINT) 15), opval);
5944 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5948 USI opval = i_disp30;
5949 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
5950 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5955 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_UNCOND_CTI-CGEN_ATTR_BOOL_OFFSET)));
5959 /* jmpl: jmpl $rs1+$rs2,$rd */
5962 SEM_FN_NAME (sparc64,jmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5964 SEM_STATUS status = 0;
5965 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5966 int UNUSED written = 0;
5967 IADDR UNUSED pc = GET_H_PC ();
5969 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5970 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
5971 EXTRACT_IFMT_LDSB_REG_REG_CODE
5976 SET_H_GR (f_rd, opval);
5977 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
5981 USI opval = ADDSI (GET_H_GR (f_rs1), GET_H_GR (f_rs2));
5982 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
5983 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5988 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_UNCOND_CTI-CGEN_ATTR_BOOL_OFFSET)));
5992 /* jmpl-imm: jmpl $rs1+$simm13,$rd */
5995 SEM_FN_NAME (sparc64,jmpl_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
5997 SEM_STATUS status = 0;
5998 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5999 int UNUSED written = 0;
6000 IADDR UNUSED pc = GET_H_PC ();
6002 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6003 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
6004 EXTRACT_IFMT_LDSB_REG_IMM_CODE
6009 SET_H_GR (f_rd, opval);
6010 TRACE_RESULT (current_cpu, abuf, "rd", 'x', opval);
6014 USI opval = ADDSI (GET_H_GR (f_rs1), f_simm13);
6015 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6016 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6021 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_UNCOND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6025 /* ba: ba$a $disp22 */
6028 SEM_FN_NAME (sparc64,ba) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6030 SEM_STATUS status = 0;
6031 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6032 int UNUSED written = 0;
6033 IADDR UNUSED pc = GET_H_PC ();
6035 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6036 EXTRACT_IFMT_BA_VARS /* f-disp22 f-op2 f-fmt2-cond f-a f-op */
6038 EXTRACT_IFMT_BA_CODE
6039 i_disp22 = f_disp22;
6044 USI opval = i_disp22;
6045 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6046 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6048 SEM_ANNUL_INSN (current_cpu, pc, f_a);
6052 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_UNCOND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
6056 /* ta: ta $rs1,$rs2 */
6059 SEM_FN_NAME (sparc64,ta) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6061 SEM_STATUS status = 0;
6062 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6063 int UNUSED written = 0;
6064 IADDR UNUSED pc = GET_H_PC ();
6066 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6067 EXTRACT_IFMT_TA_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6068 EXTRACT_IFMT_TA_CODE
6071 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), GET_H_GR (f_rs2));
6073 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6074 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6077 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_UNCOND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6081 /* ta-imm: ta $rs1,$simm13 */
6084 SEM_FN_NAME (sparc64,ta_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6086 SEM_STATUS status = 0;
6087 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6088 int UNUSED written = 0;
6089 IADDR UNUSED pc = GET_H_PC ();
6091 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6092 EXTRACT_IFMT_TA_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6093 EXTRACT_IFMT_TA_IMM_CODE
6096 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), f_simm13);
6098 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6099 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6102 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_UNCOND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6106 /* bn: bn$a $disp22 */
6109 SEM_FN_NAME (sparc64,bn) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6111 SEM_STATUS status = 0;
6112 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6113 int UNUSED written = 0;
6114 IADDR UNUSED pc = GET_H_PC ();
6115 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6116 EXTRACT_IFMT_BA_VARS /* f-disp22 f-op2 f-fmt2-cond f-a f-op */
6117 EXTRACT_IFMT_BA_CODE
6121 do { } while (0); /*nop*/
6122 SEM_ANNUL_INSN (current_cpu, pc, f_a);
6126 SEM_NBRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
6130 /* tn: tn $rs1,$rs2 */
6133 SEM_FN_NAME (sparc64,tn) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6135 SEM_STATUS status = 0;
6136 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6137 int UNUSED written = 0;
6138 IADDR UNUSED pc = GET_H_PC ();
6139 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6140 EXTRACT_IFMT_TA_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6141 EXTRACT_IFMT_TA_CODE
6143 do { } while (0); /*nop*/
6145 SEM_NBRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET)));
6149 /* tn-imm: tn $rs1,$simm13 */
6152 SEM_FN_NAME (sparc64,tn_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6154 SEM_STATUS status = 0;
6155 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6156 int UNUSED written = 0;
6157 IADDR UNUSED pc = GET_H_PC ();
6158 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6159 EXTRACT_IFMT_TA_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6160 EXTRACT_IFMT_TA_IMM_CODE
6162 do { } while (0); /*nop*/
6164 SEM_NBRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET)));
6168 /* bne: bne$a $disp22 */
6171 SEM_FN_NAME (sparc64,bne) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6173 SEM_STATUS status = 0;
6174 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6175 int UNUSED written = 0;
6176 IADDR UNUSED pc = GET_H_PC ();
6178 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6179 EXTRACT_IFMT_BA_VARS /* f-disp22 f-op2 f-fmt2-cond f-a f-op */
6181 EXTRACT_IFMT_BA_CODE
6182 i_disp22 = f_disp22;
6185 if (NOTBI (CPU (h_icc_z))) {
6187 USI opval = i_disp22;
6188 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6189 written |= (1 << 3);
6190 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6193 SEM_ANNUL_INSN (current_cpu, pc, f_a);
6197 abuf->written = written;
6198 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
6202 /* tne: tne $rs1,$rs2 */
6205 SEM_FN_NAME (sparc64,tne) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6207 SEM_STATUS status = 0;
6208 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6209 int UNUSED written = 0;
6210 IADDR UNUSED pc = GET_H_PC ();
6212 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6213 EXTRACT_IFMT_TA_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6214 EXTRACT_IFMT_TA_CODE
6216 if (NOTBI (CPU (h_icc_z))) {
6218 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), GET_H_GR (f_rs2));
6220 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6221 written |= (1 << 4);
6222 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6226 abuf->written = written;
6227 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6231 /* tne-imm: tne $rs1,$simm13 */
6234 SEM_FN_NAME (sparc64,tne_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6236 SEM_STATUS status = 0;
6237 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6238 int UNUSED written = 0;
6239 IADDR UNUSED pc = GET_H_PC ();
6241 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6242 EXTRACT_IFMT_TA_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6243 EXTRACT_IFMT_TA_IMM_CODE
6245 if (NOTBI (CPU (h_icc_z))) {
6247 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), f_simm13);
6249 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6250 written |= (1 << 4);
6251 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6255 abuf->written = written;
6256 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6260 /* be: be$a $disp22 */
6263 SEM_FN_NAME (sparc64,be) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6265 SEM_STATUS status = 0;
6266 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6267 int UNUSED written = 0;
6268 IADDR UNUSED pc = GET_H_PC ();
6270 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6271 EXTRACT_IFMT_BA_VARS /* f-disp22 f-op2 f-fmt2-cond f-a f-op */
6273 EXTRACT_IFMT_BA_CODE
6274 i_disp22 = f_disp22;
6277 if (CPU (h_icc_z)) {
6279 USI opval = i_disp22;
6280 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6281 written |= (1 << 3);
6282 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6285 SEM_ANNUL_INSN (current_cpu, pc, f_a);
6289 abuf->written = written;
6290 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
6294 /* te: te $rs1,$rs2 */
6297 SEM_FN_NAME (sparc64,te) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6299 SEM_STATUS status = 0;
6300 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6301 int UNUSED written = 0;
6302 IADDR UNUSED pc = GET_H_PC ();
6304 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6305 EXTRACT_IFMT_TA_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6306 EXTRACT_IFMT_TA_CODE
6308 if (CPU (h_icc_z)) {
6310 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), GET_H_GR (f_rs2));
6312 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6313 written |= (1 << 4);
6314 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6318 abuf->written = written;
6319 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6323 /* te-imm: te $rs1,$simm13 */
6326 SEM_FN_NAME (sparc64,te_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6328 SEM_STATUS status = 0;
6329 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6330 int UNUSED written = 0;
6331 IADDR UNUSED pc = GET_H_PC ();
6333 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6334 EXTRACT_IFMT_TA_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6335 EXTRACT_IFMT_TA_IMM_CODE
6337 if (CPU (h_icc_z)) {
6339 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), f_simm13);
6341 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6342 written |= (1 << 4);
6343 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6347 abuf->written = written;
6348 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6352 /* bg: bg$a $disp22 */
6355 SEM_FN_NAME (sparc64,bg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6357 SEM_STATUS status = 0;
6358 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6359 int UNUSED written = 0;
6360 IADDR UNUSED pc = GET_H_PC ();
6362 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6363 EXTRACT_IFMT_BA_VARS /* f-disp22 f-op2 f-fmt2-cond f-a f-op */
6365 EXTRACT_IFMT_BA_CODE
6366 i_disp22 = f_disp22;
6369 if (NOTBI (ORBI (CPU (h_icc_z), XORBI (CPU (h_icc_n), CPU (h_icc_v))))) {
6371 USI opval = i_disp22;
6372 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6373 written |= (1 << 5);
6374 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6377 SEM_ANNUL_INSN (current_cpu, pc, f_a);
6381 abuf->written = written;
6382 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
6386 /* tg: tg $rs1,$rs2 */
6389 SEM_FN_NAME (sparc64,tg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6391 SEM_STATUS status = 0;
6392 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6393 int UNUSED written = 0;
6394 IADDR UNUSED pc = GET_H_PC ();
6396 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6397 EXTRACT_IFMT_TA_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6398 EXTRACT_IFMT_TA_CODE
6400 if (NOTBI (ORBI (CPU (h_icc_z), XORBI (CPU (h_icc_n), CPU (h_icc_v))))) {
6402 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), GET_H_GR (f_rs2));
6404 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6405 written |= (1 << 6);
6406 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6410 abuf->written = written;
6411 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6415 /* tg-imm: tg $rs1,$simm13 */
6418 SEM_FN_NAME (sparc64,tg_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6420 SEM_STATUS status = 0;
6421 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6422 int UNUSED written = 0;
6423 IADDR UNUSED pc = GET_H_PC ();
6425 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6426 EXTRACT_IFMT_TA_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6427 EXTRACT_IFMT_TA_IMM_CODE
6429 if (NOTBI (ORBI (CPU (h_icc_z), XORBI (CPU (h_icc_n), CPU (h_icc_v))))) {
6431 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), f_simm13);
6433 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6434 written |= (1 << 6);
6435 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6439 abuf->written = written;
6440 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6444 /* ble: ble$a $disp22 */
6447 SEM_FN_NAME (sparc64,ble) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6449 SEM_STATUS status = 0;
6450 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6451 int UNUSED written = 0;
6452 IADDR UNUSED pc = GET_H_PC ();
6454 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6455 EXTRACT_IFMT_BA_VARS /* f-disp22 f-op2 f-fmt2-cond f-a f-op */
6457 EXTRACT_IFMT_BA_CODE
6458 i_disp22 = f_disp22;
6461 if (ORBI (CPU (h_icc_z), XORBI (CPU (h_icc_n), CPU (h_icc_v)))) {
6463 USI opval = i_disp22;
6464 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6465 written |= (1 << 5);
6466 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6469 SEM_ANNUL_INSN (current_cpu, pc, f_a);
6473 abuf->written = written;
6474 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
6478 /* tle: tle $rs1,$rs2 */
6481 SEM_FN_NAME (sparc64,tle) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6483 SEM_STATUS status = 0;
6484 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6485 int UNUSED written = 0;
6486 IADDR UNUSED pc = GET_H_PC ();
6488 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6489 EXTRACT_IFMT_TA_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6490 EXTRACT_IFMT_TA_CODE
6492 if (ORBI (CPU (h_icc_z), XORBI (CPU (h_icc_n), CPU (h_icc_v)))) {
6494 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), GET_H_GR (f_rs2));
6496 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6497 written |= (1 << 6);
6498 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6502 abuf->written = written;
6503 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6507 /* tle-imm: tle $rs1,$simm13 */
6510 SEM_FN_NAME (sparc64,tle_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6512 SEM_STATUS status = 0;
6513 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6514 int UNUSED written = 0;
6515 IADDR UNUSED pc = GET_H_PC ();
6517 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6518 EXTRACT_IFMT_TA_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6519 EXTRACT_IFMT_TA_IMM_CODE
6521 if (ORBI (CPU (h_icc_z), XORBI (CPU (h_icc_n), CPU (h_icc_v)))) {
6523 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), f_simm13);
6525 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6526 written |= (1 << 6);
6527 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6531 abuf->written = written;
6532 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6536 /* bge: bge$a $disp22 */
6539 SEM_FN_NAME (sparc64,bge) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6541 SEM_STATUS status = 0;
6542 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6543 int UNUSED written = 0;
6544 IADDR UNUSED pc = GET_H_PC ();
6546 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6547 EXTRACT_IFMT_BA_VARS /* f-disp22 f-op2 f-fmt2-cond f-a f-op */
6549 EXTRACT_IFMT_BA_CODE
6550 i_disp22 = f_disp22;
6553 if (NOTBI (XORBI (CPU (h_icc_n), CPU (h_icc_v)))) {
6555 USI opval = i_disp22;
6556 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6557 written |= (1 << 4);
6558 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6561 SEM_ANNUL_INSN (current_cpu, pc, f_a);
6565 abuf->written = written;
6566 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
6570 /* tge: tge $rs1,$rs2 */
6573 SEM_FN_NAME (sparc64,tge) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6575 SEM_STATUS status = 0;
6576 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6577 int UNUSED written = 0;
6578 IADDR UNUSED pc = GET_H_PC ();
6580 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6581 EXTRACT_IFMT_TA_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6582 EXTRACT_IFMT_TA_CODE
6584 if (NOTBI (XORBI (CPU (h_icc_n), CPU (h_icc_v)))) {
6586 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), GET_H_GR (f_rs2));
6588 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6589 written |= (1 << 5);
6590 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6594 abuf->written = written;
6595 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6599 /* tge-imm: tge $rs1,$simm13 */
6602 SEM_FN_NAME (sparc64,tge_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6604 SEM_STATUS status = 0;
6605 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6606 int UNUSED written = 0;
6607 IADDR UNUSED pc = GET_H_PC ();
6609 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6610 EXTRACT_IFMT_TA_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6611 EXTRACT_IFMT_TA_IMM_CODE
6613 if (NOTBI (XORBI (CPU (h_icc_n), CPU (h_icc_v)))) {
6615 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), f_simm13);
6617 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6618 written |= (1 << 5);
6619 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6623 abuf->written = written;
6624 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6628 /* bl: bl$a $disp22 */
6631 SEM_FN_NAME (sparc64,bl) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6633 SEM_STATUS status = 0;
6634 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6635 int UNUSED written = 0;
6636 IADDR UNUSED pc = GET_H_PC ();
6638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6639 EXTRACT_IFMT_BA_VARS /* f-disp22 f-op2 f-fmt2-cond f-a f-op */
6641 EXTRACT_IFMT_BA_CODE
6642 i_disp22 = f_disp22;
6645 if (XORBI (CPU (h_icc_n), CPU (h_icc_v))) {
6647 USI opval = i_disp22;
6648 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6649 written |= (1 << 4);
6650 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6653 SEM_ANNUL_INSN (current_cpu, pc, f_a);
6657 abuf->written = written;
6658 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
6662 /* tl: tl $rs1,$rs2 */
6665 SEM_FN_NAME (sparc64,tl) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6667 SEM_STATUS status = 0;
6668 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6669 int UNUSED written = 0;
6670 IADDR UNUSED pc = GET_H_PC ();
6672 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6673 EXTRACT_IFMT_TA_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6674 EXTRACT_IFMT_TA_CODE
6676 if (XORBI (CPU (h_icc_n), CPU (h_icc_v))) {
6678 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), GET_H_GR (f_rs2));
6680 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6681 written |= (1 << 5);
6682 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6686 abuf->written = written;
6687 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6691 /* tl-imm: tl $rs1,$simm13 */
6694 SEM_FN_NAME (sparc64,tl_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6696 SEM_STATUS status = 0;
6697 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6698 int UNUSED written = 0;
6699 IADDR UNUSED pc = GET_H_PC ();
6701 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6702 EXTRACT_IFMT_TA_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6703 EXTRACT_IFMT_TA_IMM_CODE
6705 if (XORBI (CPU (h_icc_n), CPU (h_icc_v))) {
6707 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), f_simm13);
6709 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6710 written |= (1 << 5);
6711 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6715 abuf->written = written;
6716 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6720 /* bgu: bgu$a $disp22 */
6723 SEM_FN_NAME (sparc64,bgu) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6725 SEM_STATUS status = 0;
6726 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6727 int UNUSED written = 0;
6728 IADDR UNUSED pc = GET_H_PC ();
6730 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6731 EXTRACT_IFMT_BA_VARS /* f-disp22 f-op2 f-fmt2-cond f-a f-op */
6733 EXTRACT_IFMT_BA_CODE
6734 i_disp22 = f_disp22;
6737 if (NOTBI (ORBI (CPU (h_icc_c), CPU (h_icc_z)))) {
6739 USI opval = i_disp22;
6740 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6741 written |= (1 << 4);
6742 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6745 SEM_ANNUL_INSN (current_cpu, pc, f_a);
6749 abuf->written = written;
6750 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
6754 /* tgu: tgu $rs1,$rs2 */
6757 SEM_FN_NAME (sparc64,tgu) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6759 SEM_STATUS status = 0;
6760 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6761 int UNUSED written = 0;
6762 IADDR UNUSED pc = GET_H_PC ();
6764 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6765 EXTRACT_IFMT_TA_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6766 EXTRACT_IFMT_TA_CODE
6768 if (NOTBI (ORBI (CPU (h_icc_c), CPU (h_icc_z)))) {
6770 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), GET_H_GR (f_rs2));
6772 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6773 written |= (1 << 5);
6774 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6778 abuf->written = written;
6779 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6783 /* tgu-imm: tgu $rs1,$simm13 */
6786 SEM_FN_NAME (sparc64,tgu_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6788 SEM_STATUS status = 0;
6789 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6790 int UNUSED written = 0;
6791 IADDR UNUSED pc = GET_H_PC ();
6793 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6794 EXTRACT_IFMT_TA_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6795 EXTRACT_IFMT_TA_IMM_CODE
6797 if (NOTBI (ORBI (CPU (h_icc_c), CPU (h_icc_z)))) {
6799 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), f_simm13);
6801 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6802 written |= (1 << 5);
6803 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6807 abuf->written = written;
6808 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6812 /* bleu: bleu$a $disp22 */
6815 SEM_FN_NAME (sparc64,bleu) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6817 SEM_STATUS status = 0;
6818 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6819 int UNUSED written = 0;
6820 IADDR UNUSED pc = GET_H_PC ();
6822 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6823 EXTRACT_IFMT_BA_VARS /* f-disp22 f-op2 f-fmt2-cond f-a f-op */
6825 EXTRACT_IFMT_BA_CODE
6826 i_disp22 = f_disp22;
6829 if (ORBI (CPU (h_icc_c), CPU (h_icc_z))) {
6831 USI opval = i_disp22;
6832 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6833 written |= (1 << 4);
6834 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6837 SEM_ANNUL_INSN (current_cpu, pc, f_a);
6841 abuf->written = written;
6842 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
6846 /* tleu: tleu $rs1,$rs2 */
6849 SEM_FN_NAME (sparc64,tleu) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6851 SEM_STATUS status = 0;
6852 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6853 int UNUSED written = 0;
6854 IADDR UNUSED pc = GET_H_PC ();
6856 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6857 EXTRACT_IFMT_TA_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6858 EXTRACT_IFMT_TA_CODE
6860 if (ORBI (CPU (h_icc_c), CPU (h_icc_z))) {
6862 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), GET_H_GR (f_rs2));
6864 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6865 written |= (1 << 5);
6866 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6870 abuf->written = written;
6871 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6875 /* tleu-imm: tleu $rs1,$simm13 */
6878 SEM_FN_NAME (sparc64,tleu_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6880 SEM_STATUS status = 0;
6881 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6882 int UNUSED written = 0;
6883 IADDR UNUSED pc = GET_H_PC ();
6885 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6886 EXTRACT_IFMT_TA_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6887 EXTRACT_IFMT_TA_IMM_CODE
6889 if (ORBI (CPU (h_icc_c), CPU (h_icc_z))) {
6891 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), f_simm13);
6893 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6894 written |= (1 << 5);
6895 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6899 abuf->written = written;
6900 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6904 /* bcc: bcc$a $disp22 */
6907 SEM_FN_NAME (sparc64,bcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6909 SEM_STATUS status = 0;
6910 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6911 int UNUSED written = 0;
6912 IADDR UNUSED pc = GET_H_PC ();
6914 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6915 EXTRACT_IFMT_BA_VARS /* f-disp22 f-op2 f-fmt2-cond f-a f-op */
6917 EXTRACT_IFMT_BA_CODE
6918 i_disp22 = f_disp22;
6921 if (NOTBI (CPU (h_icc_c))) {
6923 USI opval = i_disp22;
6924 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6925 written |= (1 << 3);
6926 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6929 SEM_ANNUL_INSN (current_cpu, pc, f_a);
6933 abuf->written = written;
6934 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
6938 /* tcc: tcc $rs1,$rs2 */
6941 SEM_FN_NAME (sparc64,tcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6943 SEM_STATUS status = 0;
6944 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6945 int UNUSED written = 0;
6946 IADDR UNUSED pc = GET_H_PC ();
6948 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6949 EXTRACT_IFMT_TA_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6950 EXTRACT_IFMT_TA_CODE
6952 if (NOTBI (CPU (h_icc_c))) {
6954 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), GET_H_GR (f_rs2));
6956 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6957 written |= (1 << 4);
6958 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6962 abuf->written = written;
6963 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6967 /* tcc-imm: tcc $rs1,$simm13 */
6970 SEM_FN_NAME (sparc64,tcc_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
6972 SEM_STATUS status = 0;
6973 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6974 int UNUSED written = 0;
6975 IADDR UNUSED pc = GET_H_PC ();
6977 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6978 EXTRACT_IFMT_TA_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
6979 EXTRACT_IFMT_TA_IMM_CODE
6981 if (NOTBI (CPU (h_icc_c))) {
6983 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), f_simm13);
6985 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6986 written |= (1 << 4);
6987 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6991 abuf->written = written;
6992 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
6996 /* bcs: bcs$a $disp22 */
6999 SEM_FN_NAME (sparc64,bcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7001 SEM_STATUS status = 0;
7002 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7003 int UNUSED written = 0;
7004 IADDR UNUSED pc = GET_H_PC ();
7006 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7007 EXTRACT_IFMT_BA_VARS /* f-disp22 f-op2 f-fmt2-cond f-a f-op */
7009 EXTRACT_IFMT_BA_CODE
7010 i_disp22 = f_disp22;
7013 if (CPU (h_icc_c)) {
7015 USI opval = i_disp22;
7016 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7017 written |= (1 << 3);
7018 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7021 SEM_ANNUL_INSN (current_cpu, pc, f_a);
7025 abuf->written = written;
7026 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
7030 /* tcs: tcs $rs1,$rs2 */
7033 SEM_FN_NAME (sparc64,tcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7035 SEM_STATUS status = 0;
7036 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7037 int UNUSED written = 0;
7038 IADDR UNUSED pc = GET_H_PC ();
7040 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7041 EXTRACT_IFMT_TA_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
7042 EXTRACT_IFMT_TA_CODE
7044 if (CPU (h_icc_c)) {
7046 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), GET_H_GR (f_rs2));
7048 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7049 written |= (1 << 4);
7050 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7054 abuf->written = written;
7055 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
7059 /* tcs-imm: tcs $rs1,$simm13 */
7062 SEM_FN_NAME (sparc64,tcs_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7064 SEM_STATUS status = 0;
7065 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7066 int UNUSED written = 0;
7067 IADDR UNUSED pc = GET_H_PC ();
7069 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7070 EXTRACT_IFMT_TA_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
7071 EXTRACT_IFMT_TA_IMM_CODE
7073 if (CPU (h_icc_c)) {
7075 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), f_simm13);
7077 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7078 written |= (1 << 4);
7079 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7083 abuf->written = written;
7084 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
7088 /* bpos: bpos$a $disp22 */
7091 SEM_FN_NAME (sparc64,bpos) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7093 SEM_STATUS status = 0;
7094 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7095 int UNUSED written = 0;
7096 IADDR UNUSED pc = GET_H_PC ();
7098 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7099 EXTRACT_IFMT_BA_VARS /* f-disp22 f-op2 f-fmt2-cond f-a f-op */
7101 EXTRACT_IFMT_BA_CODE
7102 i_disp22 = f_disp22;
7105 if (NOTBI (CPU (h_icc_n))) {
7107 USI opval = i_disp22;
7108 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7109 written |= (1 << 3);
7110 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7113 SEM_ANNUL_INSN (current_cpu, pc, f_a);
7117 abuf->written = written;
7118 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
7122 /* tpos: tpos $rs1,$rs2 */
7125 SEM_FN_NAME (sparc64,tpos) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7127 SEM_STATUS status = 0;
7128 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7129 int UNUSED written = 0;
7130 IADDR UNUSED pc = GET_H_PC ();
7132 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7133 EXTRACT_IFMT_TA_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
7134 EXTRACT_IFMT_TA_CODE
7136 if (NOTBI (CPU (h_icc_n))) {
7138 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), GET_H_GR (f_rs2));
7140 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7141 written |= (1 << 4);
7142 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7146 abuf->written = written;
7147 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
7151 /* tpos-imm: tpos $rs1,$simm13 */
7154 SEM_FN_NAME (sparc64,tpos_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7156 SEM_STATUS status = 0;
7157 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7158 int UNUSED written = 0;
7159 IADDR UNUSED pc = GET_H_PC ();
7161 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7162 EXTRACT_IFMT_TA_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
7163 EXTRACT_IFMT_TA_IMM_CODE
7165 if (NOTBI (CPU (h_icc_n))) {
7167 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), f_simm13);
7169 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7170 written |= (1 << 4);
7171 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7175 abuf->written = written;
7176 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
7180 /* bneg: bneg$a $disp22 */
7183 SEM_FN_NAME (sparc64,bneg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7185 SEM_STATUS status = 0;
7186 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7187 int UNUSED written = 0;
7188 IADDR UNUSED pc = GET_H_PC ();
7190 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7191 EXTRACT_IFMT_BA_VARS /* f-disp22 f-op2 f-fmt2-cond f-a f-op */
7193 EXTRACT_IFMT_BA_CODE
7194 i_disp22 = f_disp22;
7197 if (CPU (h_icc_n)) {
7199 USI opval = i_disp22;
7200 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7201 written |= (1 << 3);
7202 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7205 SEM_ANNUL_INSN (current_cpu, pc, f_a);
7209 abuf->written = written;
7210 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
7214 /* tneg: tneg $rs1,$rs2 */
7217 SEM_FN_NAME (sparc64,tneg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7219 SEM_STATUS status = 0;
7220 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7221 int UNUSED written = 0;
7222 IADDR UNUSED pc = GET_H_PC ();
7224 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7225 EXTRACT_IFMT_TA_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
7226 EXTRACT_IFMT_TA_CODE
7228 if (CPU (h_icc_n)) {
7230 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), GET_H_GR (f_rs2));
7232 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7233 written |= (1 << 4);
7234 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7238 abuf->written = written;
7239 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
7243 /* tneg-imm: tneg $rs1,$simm13 */
7246 SEM_FN_NAME (sparc64,tneg_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7248 SEM_STATUS status = 0;
7249 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7250 int UNUSED written = 0;
7251 IADDR UNUSED pc = GET_H_PC ();
7253 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7254 EXTRACT_IFMT_TA_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
7255 EXTRACT_IFMT_TA_IMM_CODE
7257 if (CPU (h_icc_n)) {
7259 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), f_simm13);
7261 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7262 written |= (1 << 4);
7263 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7267 abuf->written = written;
7268 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
7272 /* bvc: bvc$a $disp22 */
7275 SEM_FN_NAME (sparc64,bvc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7277 SEM_STATUS status = 0;
7278 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7279 int UNUSED written = 0;
7280 IADDR UNUSED pc = GET_H_PC ();
7282 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7283 EXTRACT_IFMT_BA_VARS /* f-disp22 f-op2 f-fmt2-cond f-a f-op */
7285 EXTRACT_IFMT_BA_CODE
7286 i_disp22 = f_disp22;
7289 if (NOTBI (CPU (h_icc_v))) {
7291 USI opval = i_disp22;
7292 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7293 written |= (1 << 3);
7294 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7297 SEM_ANNUL_INSN (current_cpu, pc, f_a);
7301 abuf->written = written;
7302 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
7306 /* tvc: tvc $rs1,$rs2 */
7309 SEM_FN_NAME (sparc64,tvc) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7311 SEM_STATUS status = 0;
7312 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7313 int UNUSED written = 0;
7314 IADDR UNUSED pc = GET_H_PC ();
7316 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7317 EXTRACT_IFMT_TA_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
7318 EXTRACT_IFMT_TA_CODE
7320 if (NOTBI (CPU (h_icc_v))) {
7322 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), GET_H_GR (f_rs2));
7324 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7325 written |= (1 << 4);
7326 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7330 abuf->written = written;
7331 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
7335 /* tvc-imm: tvc $rs1,$simm13 */
7338 SEM_FN_NAME (sparc64,tvc_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7340 SEM_STATUS status = 0;
7341 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7342 int UNUSED written = 0;
7343 IADDR UNUSED pc = GET_H_PC ();
7345 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7346 EXTRACT_IFMT_TA_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
7347 EXTRACT_IFMT_TA_IMM_CODE
7349 if (NOTBI (CPU (h_icc_v))) {
7351 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), f_simm13);
7353 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7354 written |= (1 << 4);
7355 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7359 abuf->written = written;
7360 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
7364 /* bvs: bvs$a $disp22 */
7367 SEM_FN_NAME (sparc64,bvs) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7369 SEM_STATUS status = 0;
7370 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7371 int UNUSED written = 0;
7372 IADDR UNUSED pc = GET_H_PC ();
7374 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7375 EXTRACT_IFMT_BA_VARS /* f-disp22 f-op2 f-fmt2-cond f-a f-op */
7377 EXTRACT_IFMT_BA_CODE
7378 i_disp22 = f_disp22;
7381 if (CPU (h_icc_v)) {
7383 USI opval = i_disp22;
7384 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7385 written |= (1 << 3);
7386 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7389 SEM_ANNUL_INSN (current_cpu, pc, f_a);
7393 abuf->written = written;
7394 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_DELAY_SLOT-CGEN_ATTR_BOOL_OFFSET)));
7398 /* tvs: tvs $rs1,$rs2 */
7401 SEM_FN_NAME (sparc64,tvs) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7403 SEM_STATUS status = 0;
7404 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7405 int UNUSED written = 0;
7406 IADDR UNUSED pc = GET_H_PC ();
7408 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7409 EXTRACT_IFMT_TA_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
7410 EXTRACT_IFMT_TA_CODE
7412 if (CPU (h_icc_v)) {
7414 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), GET_H_GR (f_rs2));
7416 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7417 written |= (1 << 4);
7418 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7422 abuf->written = written;
7423 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
7427 /* tvs-imm: tvs $rs1,$simm13 */
7430 SEM_FN_NAME (sparc64,tvs_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7432 SEM_STATUS status = 0;
7433 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7434 int UNUSED written = 0;
7435 IADDR UNUSED pc = GET_H_PC ();
7437 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7438 EXTRACT_IFMT_TA_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-fmt2-cond f-a f-op */
7439 EXTRACT_IFMT_TA_IMM_CODE
7441 if (CPU (h_icc_v)) {
7443 USI opval = sparc64_sw_trap (current_cpu, pc, GET_H_GR (f_rs1), f_simm13);
7445 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7446 written |= (1 << 4);
7447 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7451 abuf->written = written;
7452 SEM_BRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_TRAP-CGEN_ATTR_BOOL_OFFSET))|(1<<(CGEN_INSN_COND_CTI-CGEN_ATTR_BOOL_OFFSET)));
7456 /* ldstub-reg+reg: ldstub [$rs1+$rs2],$rd */
7459 SEM_FN_NAME (sparc64,ldstub_reg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7461 SEM_STATUS status = 0;
7462 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7463 int UNUSED written = 0;
7464 IADDR UNUSED pc = GET_H_PC ();
7465 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7466 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
7467 EXTRACT_IFMT_LDSB_REG_REG_CODE
7469 sparc64_do_ldstub (current_cpu, pc, f_rd, GET_H_GR (f_rs1), GET_H_GR (f_rs2), -1);
7471 SEM_NBRANCH_FINI (vpc, 0);
7475 /* ldstub-reg+imm: ldstub [$rs1+$simm13],$rd */
7478 SEM_FN_NAME (sparc64,ldstub_reg_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7480 SEM_STATUS status = 0;
7481 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7482 int UNUSED written = 0;
7483 IADDR UNUSED pc = GET_H_PC ();
7484 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7485 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
7486 EXTRACT_IFMT_LDSB_REG_IMM_CODE
7488 sparc64_do_ldstub (current_cpu, pc, f_rd, GET_H_GR (f_rs1), f_simm13, -1);
7490 SEM_NBRANCH_FINI (vpc, 0);
7494 /* ldstub-reg+reg/asi: ldstub [$rs1+$rs2]$asi,$rd */
7497 SEM_FN_NAME (sparc64,ldstub_reg_reg_asi) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7499 SEM_STATUS status = 0;
7500 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7501 int UNUSED written = 0;
7502 IADDR UNUSED pc = GET_H_PC ();
7503 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7504 EXTRACT_IFMT_LDSB_REG_REG_ASI_VARS /* f-rs2 f-asi f-i f-rs1 f-op3 f-rd f-op */
7505 EXTRACT_IFMT_LDSB_REG_REG_ASI_CODE
7507 sparc64_do_ldstub (current_cpu, pc, f_rd, GET_H_GR (f_rs1), GET_H_GR (f_rs2), f_asi);
7509 SEM_NBRANCH_FINI (vpc, 0);
7513 /* swap-reg+reg: swap [$rs1+$rs2],$rd */
7516 SEM_FN_NAME (sparc64,swap_reg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7518 SEM_STATUS status = 0;
7519 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7520 int UNUSED written = 0;
7521 IADDR UNUSED pc = GET_H_PC ();
7522 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7523 EXTRACT_IFMT_LDSB_REG_REG_VARS /* f-rs2 f-res-asi f-i f-rs1 f-op3 f-rd f-op */
7524 EXTRACT_IFMT_LDSB_REG_REG_CODE
7526 sparc64_do_swap (current_cpu, pc, f_rd, GET_H_GR (f_rs1), GET_H_GR (f_rs2), -1);
7528 SEM_NBRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET)));
7532 /* swap-reg+imm: swap [$rs1+$simm13],$rd */
7535 SEM_FN_NAME (sparc64,swap_reg_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7537 SEM_STATUS status = 0;
7538 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7539 int UNUSED written = 0;
7540 IADDR UNUSED pc = GET_H_PC ();
7541 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7542 EXTRACT_IFMT_LDSB_REG_IMM_VARS /* f-simm13 f-i f-rs1 f-op3 f-rd f-op */
7543 EXTRACT_IFMT_LDSB_REG_IMM_CODE
7545 sparc64_do_swap (current_cpu, pc, f_rd, GET_H_GR (f_rs1), f_simm13, -1);
7547 SEM_NBRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET)));
7551 /* swap-reg+reg/asi: swap [$rs1+$rs2]$asi,$rd */
7554 SEM_FN_NAME (sparc64,swap_reg_reg_asi) (SIM_CPU *current_cpu, SEM_ARG sem_arg, CGEN_INSN_INT insn)
7556 SEM_STATUS status = 0;
7557 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7558 int UNUSED written = 0;
7559 IADDR UNUSED pc = GET_H_PC ();
7560 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7561 EXTRACT_IFMT_LDSB_REG_REG_ASI_VARS /* f-rs2 f-asi f-i f-rs1 f-op3 f-rd f-op */
7562 EXTRACT_IFMT_LDSB_REG_REG_ASI_CODE
7564 sparc64_do_swap (current_cpu, pc, f_rd, GET_H_GR (f_rs1), GET_H_GR (f_rs2), f_asi);
7566 SEM_NBRANCH_FINI (vpc, 0|(1<<(CGEN_INSN_V9_DEPRECATED-CGEN_ATTR_BOOL_OFFSET)));