Home | History | Annotate | Line # | Download | only in or1k
sem.c revision 1.1.1.3
      1 /* Simulator instruction semantics for or1k32bf.
      2 
      3 THIS FILE IS MACHINE GENERATED WITH CGEN.
      4 
      5 Copyright (C) 1996-2023 Free Software Foundation, Inc.
      6 
      7 This file is part of the GNU simulators.
      8 
      9    This file is free software; you can redistribute it and/or modify
     10    it under the terms of the GNU General Public License as published by
     11    the Free Software Foundation; either version 3, or (at your option)
     12    any later version.
     13 
     14    It is distributed in the hope that it will be useful, but WITHOUT
     15    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
     16    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
     17    License for more details.
     18 
     19    You should have received a copy of the GNU General Public License along
     20    with this program; if not, write to the Free Software Foundation, Inc.,
     21    51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
     22 
     23 */
     24 
     25 #define WANT_CPU or1k32bf
     26 #define WANT_CPU_OR1K32BF
     27 
     28 #include "sim-main.h"
     29 #include "cgen-mem.h"
     30 #include "cgen-ops.h"
     31 
     32 #undef GET_ATTR
     33 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
     34 
     35 /* This is used so that we can compile two copies of the semantic code,
     36    one with full feature support and one without that runs fast(er).
     37    FAST_P, when desired, is defined on the command line, -DFAST_P=1.  */
     38 #if FAST_P
     39 #define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_semf_,fn)
     40 #undef CGEN_TRACE_RESULT
     41 #define CGEN_TRACE_RESULT(cpu, abuf, name, type, val)
     42 #else
     43 #define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_sem_,fn)
     44 #endif
     45 
     46 /* x-invalid: --invalid-- */
     47 
     48 static SEM_PC
     49 SEM_FN_NAME (or1k32bf,x_invalid) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
     50 {
     51 #define FLD(f) abuf->fields.sfmt_empty.f
     52   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
     53   int UNUSED written = 0;
     54   IADDR UNUSED pc = abuf->addr;
     55   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
     56 
     57   {
     58     /* Update the recorded pc in the cpu state struct.
     59        Only necessary for WITH_SCACHE case, but to avoid the
     60        conditional compilation ....  */
     61     SET_H_PC (pc);
     62     /* Virtual insns have zero size.  Overwrite vpc with address of next insn
     63        using the default-insn-bitsize spec.  When executing insns in parallel
     64        we may want to queue the fault and continue execution.  */
     65     vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
     66     vpc = sim_engine_invalid_insn (current_cpu, pc, vpc);
     67   }
     68 
     69   return vpc;
     70 #undef FLD
     71 }
     72 
     73 /* x-after: --after-- */
     74 
     75 static SEM_PC
     76 SEM_FN_NAME (or1k32bf,x_after) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
     77 {
     78 #define FLD(f) abuf->fields.sfmt_empty.f
     79   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
     80   int UNUSED written = 0;
     81   IADDR UNUSED pc = abuf->addr;
     82   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
     83 
     84   {
     85 #if WITH_SCACHE_PBB_OR1K32BF
     86     or1k32bf_pbb_after (current_cpu, sem_arg);
     87 #endif
     88   }
     89 
     90   return vpc;
     91 #undef FLD
     92 }
     93 
     94 /* x-before: --before-- */
     95 
     96 static SEM_PC
     97 SEM_FN_NAME (or1k32bf,x_before) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
     98 {
     99 #define FLD(f) abuf->fields.sfmt_empty.f
    100   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    101   int UNUSED written = 0;
    102   IADDR UNUSED pc = abuf->addr;
    103   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
    104 
    105   {
    106 #if WITH_SCACHE_PBB_OR1K32BF
    107     or1k32bf_pbb_before (current_cpu, sem_arg);
    108 #endif
    109   }
    110 
    111   return vpc;
    112 #undef FLD
    113 }
    114 
    115 /* x-cti-chain: --cti-chain-- */
    116 
    117 static SEM_PC
    118 SEM_FN_NAME (or1k32bf,x_cti_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    119 {
    120 #define FLD(f) abuf->fields.sfmt_empty.f
    121   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    122   int UNUSED written = 0;
    123   IADDR UNUSED pc = abuf->addr;
    124   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
    125 
    126   {
    127 #if WITH_SCACHE_PBB_OR1K32BF
    128 #ifdef DEFINE_SWITCH
    129     vpc = or1k32bf_pbb_cti_chain (current_cpu, sem_arg,
    130 			       pbb_br_type, pbb_br_npc);
    131     BREAK (sem);
    132 #else
    133     /* FIXME: Allow provision of explicit ifmt spec in insn spec.  */
    134     vpc = or1k32bf_pbb_cti_chain (current_cpu, sem_arg,
    135 			       CPU_PBB_BR_TYPE (current_cpu),
    136 			       CPU_PBB_BR_NPC (current_cpu));
    137 #endif
    138 #endif
    139   }
    140 
    141   return vpc;
    142 #undef FLD
    143 }
    144 
    145 /* x-chain: --chain-- */
    146 
    147 static SEM_PC
    148 SEM_FN_NAME (or1k32bf,x_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    149 {
    150 #define FLD(f) abuf->fields.sfmt_empty.f
    151   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    152   int UNUSED written = 0;
    153   IADDR UNUSED pc = abuf->addr;
    154   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
    155 
    156   {
    157 #if WITH_SCACHE_PBB_OR1K32BF
    158     vpc = or1k32bf_pbb_chain (current_cpu, sem_arg);
    159 #ifdef DEFINE_SWITCH
    160     BREAK (sem);
    161 #endif
    162 #endif
    163   }
    164 
    165   return vpc;
    166 #undef FLD
    167 }
    168 
    169 /* x-begin: --begin-- */
    170 
    171 static SEM_PC
    172 SEM_FN_NAME (or1k32bf,x_begin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    173 {
    174 #define FLD(f) abuf->fields.sfmt_empty.f
    175   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    176   int UNUSED written = 0;
    177   IADDR UNUSED pc = abuf->addr;
    178   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
    179 
    180   {
    181 #if WITH_SCACHE_PBB_OR1K32BF
    182 #if defined DEFINE_SWITCH || defined FAST_P
    183     /* In the switch case FAST_P is a constant, allowing several optimizations
    184        in any called inline functions.  */
    185     vpc = or1k32bf_pbb_begin (current_cpu, FAST_P);
    186 #else
    187 #if 0 /* cgen engine can't handle dynamic fast/full switching yet.  */
    188     vpc = or1k32bf_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
    189 #else
    190     vpc = or1k32bf_pbb_begin (current_cpu, 0);
    191 #endif
    192 #endif
    193 #endif
    194   }
    195 
    196   return vpc;
    197 #undef FLD
    198 }
    199 
    200 /* l-j: l.j ${disp26} */
    201 
    202 static SEM_PC
    203 SEM_FN_NAME (or1k32bf,l_j) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    204 {
    205 #define FLD(f) abuf->fields.sfmt_l_j.f
    206   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    207   int UNUSED written = 0;
    208   IADDR UNUSED pc = abuf->addr;
    209   SEM_BRANCH_INIT
    210   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    211 
    212 {
    213 {
    214   {
    215     USI opval = FLD (i_disp26);
    216     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
    217     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
    218   }
    219 }
    220 if (GET_H_SYS_CPUCFGR_ND ()) {
    221 if (1)
    222   SEM_SKIP_INSN (current_cpu, sem_arg, vpc);
    223 }
    224 }
    225 
    226   SEM_BRANCH_FINI (vpc);
    227   return vpc;
    228 #undef FLD
    229 }
    230 
    231 /* l-adrp: l.adrp $rD,${disp21} */
    232 
    233 static SEM_PC
    234 SEM_FN_NAME (or1k32bf,l_adrp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    235 {
    236 #define FLD(f) abuf->fields.sfmt_l_adrp.f
    237   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    238   int UNUSED written = 0;
    239   IADDR UNUSED pc = abuf->addr;
    240   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    241 
    242   {
    243     USI opval = FLD (i_disp21);
    244     SET_H_GPR (FLD (f_r1), opval);
    245     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
    246   }
    247 
    248   return vpc;
    249 #undef FLD
    250 }
    251 
    252 /* l-jal: l.jal ${disp26} */
    253 
    254 static SEM_PC
    255 SEM_FN_NAME (or1k32bf,l_jal) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    256 {
    257 #define FLD(f) abuf->fields.sfmt_l_j.f
    258   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    259   int UNUSED written = 0;
    260   IADDR UNUSED pc = abuf->addr;
    261   SEM_BRANCH_INIT
    262   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    263 
    264 {
    265   {
    266     USI opval = ADDSI (pc, ((GET_H_SYS_CPUCFGR_ND ()) ? (4) : (8)));
    267     SET_H_GPR (((UINT) 9), opval);
    268     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
    269   }
    270 {
    271 {
    272   {
    273     USI opval = FLD (i_disp26);
    274     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
    275     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
    276   }
    277 }
    278 if (GET_H_SYS_CPUCFGR_ND ()) {
    279 if (1)
    280   SEM_SKIP_INSN (current_cpu, sem_arg, vpc);
    281 }
    282 }
    283 }
    284 
    285   SEM_BRANCH_FINI (vpc);
    286   return vpc;
    287 #undef FLD
    288 }
    289 
    290 /* l-jr: l.jr $rB */
    291 
    292 static SEM_PC
    293 SEM_FN_NAME (or1k32bf,l_jr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    294 {
    295 #define FLD(f) abuf->fields.sfmt_l_sll.f
    296   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    297   int UNUSED written = 0;
    298   IADDR UNUSED pc = abuf->addr;
    299   SEM_BRANCH_INIT
    300   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    301 
    302 {
    303 {
    304   {
    305     USI opval = GET_H_GPR (FLD (f_r3));
    306     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
    307     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
    308   }
    309 }
    310 if (GET_H_SYS_CPUCFGR_ND ()) {
    311 if (1)
    312   SEM_SKIP_INSN (current_cpu, sem_arg, vpc);
    313 }
    314 }
    315 
    316   SEM_BRANCH_FINI (vpc);
    317   return vpc;
    318 #undef FLD
    319 }
    320 
    321 /* l-jalr: l.jalr $rB */
    322 
    323 static SEM_PC
    324 SEM_FN_NAME (or1k32bf,l_jalr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    325 {
    326 #define FLD(f) abuf->fields.sfmt_l_sll.f
    327   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    328   int UNUSED written = 0;
    329   IADDR UNUSED pc = abuf->addr;
    330   SEM_BRANCH_INIT
    331   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    332 
    333 {
    334   {
    335     USI opval = ADDSI (pc, ((GET_H_SYS_CPUCFGR_ND ()) ? (4) : (8)));
    336     SET_H_GPR (((UINT) 9), opval);
    337     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
    338   }
    339 {
    340 {
    341   {
    342     USI opval = GET_H_GPR (FLD (f_r3));
    343     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
    344     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
    345   }
    346 }
    347 if (GET_H_SYS_CPUCFGR_ND ()) {
    348 if (1)
    349   SEM_SKIP_INSN (current_cpu, sem_arg, vpc);
    350 }
    351 }
    352 }
    353 
    354   SEM_BRANCH_FINI (vpc);
    355   return vpc;
    356 #undef FLD
    357 }
    358 
    359 /* l-bnf: l.bnf ${disp26} */
    360 
    361 static SEM_PC
    362 SEM_FN_NAME (or1k32bf,l_bnf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    363 {
    364 #define FLD(f) abuf->fields.sfmt_l_j.f
    365   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    366   int UNUSED written = 0;
    367   IADDR UNUSED pc = abuf->addr;
    368   SEM_BRANCH_INIT
    369   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    370 
    371 {
    372 if (NOTSI (GET_H_SYS_SR_F ())) {
    373 {
    374   {
    375     USI opval = FLD (i_disp26);
    376     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
    377     written |= (1 << 4);
    378     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
    379   }
    380 }
    381 } else {
    382 if (GET_H_SYS_CPUCFGR_ND ()) {
    383 {
    384   {
    385     USI opval = ADDSI (pc, 4);
    386     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
    387     written |= (1 << 4);
    388     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
    389   }
    390 }
    391 }
    392 }
    393 if (GET_H_SYS_CPUCFGR_ND ()) {
    394 if (1)
    395   SEM_SKIP_INSN (current_cpu, sem_arg, vpc);
    396 }
    397 }
    398 
    399   abuf->written = written;
    400   SEM_BRANCH_FINI (vpc);
    401   return vpc;
    402 #undef FLD
    403 }
    404 
    405 /* l-bf: l.bf ${disp26} */
    406 
    407 static SEM_PC
    408 SEM_FN_NAME (or1k32bf,l_bf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    409 {
    410 #define FLD(f) abuf->fields.sfmt_l_j.f
    411   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    412   int UNUSED written = 0;
    413   IADDR UNUSED pc = abuf->addr;
    414   SEM_BRANCH_INIT
    415   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    416 
    417 {
    418 if (GET_H_SYS_SR_F ()) {
    419 {
    420   {
    421     USI opval = FLD (i_disp26);
    422     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
    423     written |= (1 << 4);
    424     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
    425   }
    426 }
    427 } else {
    428 if (GET_H_SYS_CPUCFGR_ND ()) {
    429 {
    430   {
    431     USI opval = ADDSI (pc, 4);
    432     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
    433     written |= (1 << 4);
    434     CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
    435   }
    436 }
    437 }
    438 }
    439 if (GET_H_SYS_CPUCFGR_ND ()) {
    440 if (1)
    441   SEM_SKIP_INSN (current_cpu, sem_arg, vpc);
    442 }
    443 }
    444 
    445   abuf->written = written;
    446   SEM_BRANCH_FINI (vpc);
    447   return vpc;
    448 #undef FLD
    449 }
    450 
    451 /* l-trap: l.trap ${uimm16} */
    452 
    453 static SEM_PC
    454 SEM_FN_NAME (or1k32bf,l_trap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    455 {
    456 #define FLD(f) abuf->fields.sfmt_empty.f
    457   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    458   int UNUSED written = 0;
    459   IADDR UNUSED pc = abuf->addr;
    460   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    461 
    462 or1k32bf_exception (current_cpu, pc, EXCEPT_TRAP);
    463 
    464   return vpc;
    465 #undef FLD
    466 }
    467 
    468 /* l-sys: l.sys ${uimm16} */
    469 
    470 static SEM_PC
    471 SEM_FN_NAME (or1k32bf,l_sys) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    472 {
    473 #define FLD(f) abuf->fields.sfmt_empty.f
    474   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    475   int UNUSED written = 0;
    476   IADDR UNUSED pc = abuf->addr;
    477   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    478 
    479 or1k32bf_exception (current_cpu, pc, EXCEPT_SYSCALL);
    480 
    481   return vpc;
    482 #undef FLD
    483 }
    484 
    485 /* l-msync: l.msync */
    486 
    487 static SEM_PC
    488 SEM_FN_NAME (or1k32bf,l_msync) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    489 {
    490 #define FLD(f) abuf->fields.sfmt_empty.f
    491   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    492   int UNUSED written = 0;
    493   IADDR UNUSED pc = abuf->addr;
    494   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    495 
    496 ((void) 0); /*nop*/
    497 
    498   return vpc;
    499 #undef FLD
    500 }
    501 
    502 /* l-psync: l.psync */
    503 
    504 static SEM_PC
    505 SEM_FN_NAME (or1k32bf,l_psync) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    506 {
    507 #define FLD(f) abuf->fields.sfmt_empty.f
    508   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    509   int UNUSED written = 0;
    510   IADDR UNUSED pc = abuf->addr;
    511   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    512 
    513 ((void) 0); /*nop*/
    514 
    515   return vpc;
    516 #undef FLD
    517 }
    518 
    519 /* l-csync: l.csync */
    520 
    521 static SEM_PC
    522 SEM_FN_NAME (or1k32bf,l_csync) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    523 {
    524 #define FLD(f) abuf->fields.sfmt_empty.f
    525   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    526   int UNUSED written = 0;
    527   IADDR UNUSED pc = abuf->addr;
    528   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    529 
    530 ((void) 0); /*nop*/
    531 
    532   return vpc;
    533 #undef FLD
    534 }
    535 
    536 /* l-rfe: l.rfe */
    537 
    538 static SEM_PC
    539 SEM_FN_NAME (or1k32bf,l_rfe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    540 {
    541 #define FLD(f) abuf->fields.sfmt_empty.f
    542   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    543   int UNUSED written = 0;
    544   IADDR UNUSED pc = abuf->addr;
    545   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    546 
    547 or1k32bf_rfe (current_cpu);
    548 
    549   return vpc;
    550 #undef FLD
    551 }
    552 
    553 /* l-nop-imm: l.nop ${uimm16} */
    554 
    555 static SEM_PC
    556 SEM_FN_NAME (or1k32bf,l_nop_imm) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    557 {
    558 #define FLD(f) abuf->fields.sfmt_l_mfspr.f
    559   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    560   int UNUSED written = 0;
    561   IADDR UNUSED pc = abuf->addr;
    562   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    563 
    564 or1k32bf_nop (current_cpu, ZEXTSISI (FLD (f_uimm16)));
    565 
    566   return vpc;
    567 #undef FLD
    568 }
    569 
    570 /* l-movhi: l.movhi $rD,$uimm16 */
    571 
    572 static SEM_PC
    573 SEM_FN_NAME (or1k32bf,l_movhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    574 {
    575 #define FLD(f) abuf->fields.sfmt_l_mfspr.f
    576   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    577   int UNUSED written = 0;
    578   IADDR UNUSED pc = abuf->addr;
    579   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    580 
    581   {
    582     USI opval = SLLSI (ZEXTSISI (FLD (f_uimm16)), 16);
    583     SET_H_GPR (FLD (f_r1), opval);
    584     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
    585   }
    586 
    587   return vpc;
    588 #undef FLD
    589 }
    590 
    591 /* l-macrc: l.macrc $rD */
    592 
    593 static SEM_PC
    594 SEM_FN_NAME (or1k32bf,l_macrc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    595 {
    596 #define FLD(f) abuf->fields.sfmt_l_adrp.f
    597   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    598   int UNUSED written = 0;
    599   IADDR UNUSED pc = abuf->addr;
    600   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    601 
    602 {
    603   {
    604     USI opval = GET_H_MAC_MACLO ();
    605     SET_H_GPR (FLD (f_r1), opval);
    606     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
    607   }
    608   {
    609     USI opval = 0;
    610     SET_H_MAC_MACLO (opval);
    611     CGEN_TRACE_RESULT (current_cpu, abuf, "mac-maclo", 'x', opval);
    612   }
    613   {
    614     USI opval = 0;
    615     SET_H_MAC_MACHI (opval);
    616     CGEN_TRACE_RESULT (current_cpu, abuf, "mac-machi", 'x', opval);
    617   }
    618 }
    619 
    620   return vpc;
    621 #undef FLD
    622 }
    623 
    624 /* l-mfspr: l.mfspr $rD,$rA,${uimm16} */
    625 
    626 static SEM_PC
    627 SEM_FN_NAME (or1k32bf,l_mfspr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    628 {
    629 #define FLD(f) abuf->fields.sfmt_l_mfspr.f
    630   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    631   int UNUSED written = 0;
    632   IADDR UNUSED pc = abuf->addr;
    633   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    634 
    635   {
    636     USI opval = or1k32bf_mfspr (current_cpu, ORSI (GET_H_GPR (FLD (f_r2)), ZEXTSISI (FLD (f_uimm16))));
    637     SET_H_GPR (FLD (f_r1), opval);
    638     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
    639   }
    640 
    641   return vpc;
    642 #undef FLD
    643 }
    644 
    645 /* l-mtspr: l.mtspr $rA,$rB,${uimm16-split} */
    646 
    647 static SEM_PC
    648 SEM_FN_NAME (or1k32bf,l_mtspr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    649 {
    650 #define FLD(f) abuf->fields.sfmt_l_mtspr.f
    651   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    652   int UNUSED written = 0;
    653   IADDR UNUSED pc = abuf->addr;
    654   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    655 
    656 or1k32bf_mtspr (current_cpu, ORSI (GET_H_GPR (FLD (f_r2)), ZEXTSISI (FLD (f_uimm16_split))), GET_H_GPR (FLD (f_r3)));
    657 
    658   return vpc;
    659 #undef FLD
    660 }
    661 
    662 /* l-lwz: l.lwz $rD,${simm16}($rA) */
    663 
    664 static SEM_PC
    665 SEM_FN_NAME (or1k32bf,l_lwz) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    666 {
    667 #define FLD(f) abuf->fields.sfmt_l_lwz.f
    668   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    669   int UNUSED written = 0;
    670   IADDR UNUSED pc = abuf->addr;
    671   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    672 
    673   {
    674     USI opval = ZEXTSISI (GETMEMUSI (current_cpu, pc, or1k32bf_make_load_store_addr (current_cpu, GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)), 4)));
    675     SET_H_GPR (FLD (f_r1), opval);
    676     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
    677   }
    678 
    679   return vpc;
    680 #undef FLD
    681 }
    682 
    683 /* l-lws: l.lws $rD,${simm16}($rA) */
    684 
    685 static SEM_PC
    686 SEM_FN_NAME (or1k32bf,l_lws) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    687 {
    688 #define FLD(f) abuf->fields.sfmt_l_lwz.f
    689   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    690   int UNUSED written = 0;
    691   IADDR UNUSED pc = abuf->addr;
    692   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    693 
    694   {
    695     SI opval = EXTSISI (GETMEMSI (current_cpu, pc, or1k32bf_make_load_store_addr (current_cpu, GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)), 4)));
    696     SET_H_GPR (FLD (f_r1), opval);
    697     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
    698   }
    699 
    700   return vpc;
    701 #undef FLD
    702 }
    703 
    704 /* l-lwa: l.lwa $rD,${simm16}($rA) */
    705 
    706 static SEM_PC
    707 SEM_FN_NAME (or1k32bf,l_lwa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    708 {
    709 #define FLD(f) abuf->fields.sfmt_l_lwz.f
    710   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    711   int UNUSED written = 0;
    712   IADDR UNUSED pc = abuf->addr;
    713   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    714 
    715 {
    716   {
    717     USI opval = ZEXTSISI (GETMEMUSI (current_cpu, pc, or1k32bf_make_load_store_addr (current_cpu, GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)), 4)));
    718     SET_H_GPR (FLD (f_r1), opval);
    719     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
    720   }
    721   {
    722     BI opval = 1;
    723     CPU (h_atomic_reserve) = opval;
    724     CGEN_TRACE_RESULT (current_cpu, abuf, "atomic-reserve", 'x', opval);
    725   }
    726   {
    727     SI opval = or1k32bf_make_load_store_addr (current_cpu, GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)), 4);
    728     CPU (h_atomic_address) = opval;
    729     CGEN_TRACE_RESULT (current_cpu, abuf, "atomic-address", 'x', opval);
    730   }
    731 }
    732 
    733   return vpc;
    734 #undef FLD
    735 }
    736 
    737 /* l-lbz: l.lbz $rD,${simm16}($rA) */
    738 
    739 static SEM_PC
    740 SEM_FN_NAME (or1k32bf,l_lbz) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    741 {
    742 #define FLD(f) abuf->fields.sfmt_l_lwz.f
    743   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    744   int UNUSED written = 0;
    745   IADDR UNUSED pc = abuf->addr;
    746   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    747 
    748   {
    749     USI opval = ZEXTQISI (GETMEMUQI (current_cpu, pc, or1k32bf_make_load_store_addr (current_cpu, GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)), 1)));
    750     SET_H_GPR (FLD (f_r1), opval);
    751     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
    752   }
    753 
    754   return vpc;
    755 #undef FLD
    756 }
    757 
    758 /* l-lbs: l.lbs $rD,${simm16}($rA) */
    759 
    760 static SEM_PC
    761 SEM_FN_NAME (or1k32bf,l_lbs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    762 {
    763 #define FLD(f) abuf->fields.sfmt_l_lwz.f
    764   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    765   int UNUSED written = 0;
    766   IADDR UNUSED pc = abuf->addr;
    767   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    768 
    769   {
    770     SI opval = EXTQISI (GETMEMQI (current_cpu, pc, or1k32bf_make_load_store_addr (current_cpu, GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)), 1)));
    771     SET_H_GPR (FLD (f_r1), opval);
    772     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
    773   }
    774 
    775   return vpc;
    776 #undef FLD
    777 }
    778 
    779 /* l-lhz: l.lhz $rD,${simm16}($rA) */
    780 
    781 static SEM_PC
    782 SEM_FN_NAME (or1k32bf,l_lhz) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    783 {
    784 #define FLD(f) abuf->fields.sfmt_l_lwz.f
    785   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    786   int UNUSED written = 0;
    787   IADDR UNUSED pc = abuf->addr;
    788   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    789 
    790   {
    791     USI opval = ZEXTHISI (GETMEMUHI (current_cpu, pc, or1k32bf_make_load_store_addr (current_cpu, GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)), 2)));
    792     SET_H_GPR (FLD (f_r1), opval);
    793     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
    794   }
    795 
    796   return vpc;
    797 #undef FLD
    798 }
    799 
    800 /* l-lhs: l.lhs $rD,${simm16}($rA) */
    801 
    802 static SEM_PC
    803 SEM_FN_NAME (or1k32bf,l_lhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    804 {
    805 #define FLD(f) abuf->fields.sfmt_l_lwz.f
    806   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    807   int UNUSED written = 0;
    808   IADDR UNUSED pc = abuf->addr;
    809   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    810 
    811   {
    812     SI opval = EXTHISI (GETMEMHI (current_cpu, pc, or1k32bf_make_load_store_addr (current_cpu, GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)), 2)));
    813     SET_H_GPR (FLD (f_r1), opval);
    814     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
    815   }
    816 
    817   return vpc;
    818 #undef FLD
    819 }
    820 
    821 /* l-sw: l.sw ${simm16-split}($rA),$rB */
    822 
    823 static SEM_PC
    824 SEM_FN_NAME (or1k32bf,l_sw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    825 {
    826 #define FLD(f) abuf->fields.sfmt_l_sw.f
    827   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    828   int UNUSED written = 0;
    829   IADDR UNUSED pc = abuf->addr;
    830   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    831 
    832 {
    833   SI tmp_addr;
    834   tmp_addr = or1k32bf_make_load_store_addr (current_cpu, GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16_split)), 4);
    835   {
    836     USI opval = TRUNCSISI (GET_H_GPR (FLD (f_r3)));
    837     SETMEMUSI (current_cpu, pc, tmp_addr, opval);
    838     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
    839   }
    840 if (EQSI (ANDSI (tmp_addr, 268435452), CPU (h_atomic_address))) {
    841   {
    842     BI opval = 0;
    843     CPU (h_atomic_reserve) = opval;
    844     written |= (1 << 4);
    845     CGEN_TRACE_RESULT (current_cpu, abuf, "atomic-reserve", 'x', opval);
    846   }
    847 }
    848 }
    849 
    850   abuf->written = written;
    851   return vpc;
    852 #undef FLD
    853 }
    854 
    855 /* l-sb: l.sb ${simm16-split}($rA),$rB */
    856 
    857 static SEM_PC
    858 SEM_FN_NAME (or1k32bf,l_sb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    859 {
    860 #define FLD(f) abuf->fields.sfmt_l_sw.f
    861   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    862   int UNUSED written = 0;
    863   IADDR UNUSED pc = abuf->addr;
    864   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    865 
    866 {
    867   SI tmp_addr;
    868   tmp_addr = or1k32bf_make_load_store_addr (current_cpu, GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16_split)), 1);
    869   {
    870     UQI opval = TRUNCSIQI (GET_H_GPR (FLD (f_r3)));
    871     SETMEMUQI (current_cpu, pc, tmp_addr, opval);
    872     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
    873   }
    874 if (EQSI (ANDSI (tmp_addr, 268435452), CPU (h_atomic_address))) {
    875   {
    876     BI opval = 0;
    877     CPU (h_atomic_reserve) = opval;
    878     written |= (1 << 4);
    879     CGEN_TRACE_RESULT (current_cpu, abuf, "atomic-reserve", 'x', opval);
    880   }
    881 }
    882 }
    883 
    884   abuf->written = written;
    885   return vpc;
    886 #undef FLD
    887 }
    888 
    889 /* l-sh: l.sh ${simm16-split}($rA),$rB */
    890 
    891 static SEM_PC
    892 SEM_FN_NAME (or1k32bf,l_sh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    893 {
    894 #define FLD(f) abuf->fields.sfmt_l_sw.f
    895   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    896   int UNUSED written = 0;
    897   IADDR UNUSED pc = abuf->addr;
    898   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    899 
    900 {
    901   SI tmp_addr;
    902   tmp_addr = or1k32bf_make_load_store_addr (current_cpu, GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16_split)), 2);
    903   {
    904     UHI opval = TRUNCSIHI (GET_H_GPR (FLD (f_r3)));
    905     SETMEMUHI (current_cpu, pc, tmp_addr, opval);
    906     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
    907   }
    908 if (EQSI (ANDSI (tmp_addr, 268435452), CPU (h_atomic_address))) {
    909   {
    910     BI opval = 0;
    911     CPU (h_atomic_reserve) = opval;
    912     written |= (1 << 4);
    913     CGEN_TRACE_RESULT (current_cpu, abuf, "atomic-reserve", 'x', opval);
    914   }
    915 }
    916 }
    917 
    918   abuf->written = written;
    919   return vpc;
    920 #undef FLD
    921 }
    922 
    923 /* l-swa: l.swa ${simm16-split}($rA),$rB */
    924 
    925 static SEM_PC
    926 SEM_FN_NAME (or1k32bf,l_swa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    927 {
    928 #define FLD(f) abuf->fields.sfmt_l_sw.f
    929   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    930   int UNUSED written = 0;
    931   IADDR UNUSED pc = abuf->addr;
    932   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    933 
    934 {
    935   SI tmp_addr;
    936   BI tmp_flag;
    937   tmp_addr = or1k32bf_make_load_store_addr (current_cpu, GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16_split)), 4);
    938   {
    939     USI opval = ANDBI (CPU (h_atomic_reserve), EQSI (tmp_addr, CPU (h_atomic_address)));
    940     SET_H_SYS_SR_F (opval);
    941     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
    942   }
    943 if (GET_H_SYS_SR_F ()) {
    944   {
    945     USI opval = TRUNCSISI (GET_H_GPR (FLD (f_r3)));
    946     SETMEMUSI (current_cpu, pc, tmp_addr, opval);
    947     written |= (1 << 7);
    948     CGEN_TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
    949   }
    950 }
    951   {
    952     BI opval = 0;
    953     CPU (h_atomic_reserve) = opval;
    954     CGEN_TRACE_RESULT (current_cpu, abuf, "atomic-reserve", 'x', opval);
    955   }
    956 }
    957 
    958   abuf->written = written;
    959   return vpc;
    960 #undef FLD
    961 }
    962 
    963 /* l-sll: l.sll $rD,$rA,$rB */
    964 
    965 static SEM_PC
    966 SEM_FN_NAME (or1k32bf,l_sll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    967 {
    968 #define FLD(f) abuf->fields.sfmt_l_sll.f
    969   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    970   int UNUSED written = 0;
    971   IADDR UNUSED pc = abuf->addr;
    972   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    973 
    974   {
    975     USI opval = SLLSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
    976     SET_H_GPR (FLD (f_r1), opval);
    977     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
    978   }
    979 
    980   return vpc;
    981 #undef FLD
    982 }
    983 
    984 /* l-slli: l.slli $rD,$rA,${uimm6} */
    985 
    986 static SEM_PC
    987 SEM_FN_NAME (or1k32bf,l_slli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
    988 {
    989 #define FLD(f) abuf->fields.sfmt_l_slli.f
    990   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
    991   int UNUSED written = 0;
    992   IADDR UNUSED pc = abuf->addr;
    993   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
    994 
    995   {
    996     USI opval = SLLSI (GET_H_GPR (FLD (f_r2)), FLD (f_uimm6));
    997     SET_H_GPR (FLD (f_r1), opval);
    998     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
    999   }
   1000 
   1001   return vpc;
   1002 #undef FLD
   1003 }
   1004 
   1005 /* l-srl: l.srl $rD,$rA,$rB */
   1006 
   1007 static SEM_PC
   1008 SEM_FN_NAME (or1k32bf,l_srl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1009 {
   1010 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1011   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1012   int UNUSED written = 0;
   1013   IADDR UNUSED pc = abuf->addr;
   1014   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1015 
   1016   {
   1017     USI opval = SRLSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   1018     SET_H_GPR (FLD (f_r1), opval);
   1019     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1020   }
   1021 
   1022   return vpc;
   1023 #undef FLD
   1024 }
   1025 
   1026 /* l-srli: l.srli $rD,$rA,${uimm6} */
   1027 
   1028 static SEM_PC
   1029 SEM_FN_NAME (or1k32bf,l_srli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1030 {
   1031 #define FLD(f) abuf->fields.sfmt_l_slli.f
   1032   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1033   int UNUSED written = 0;
   1034   IADDR UNUSED pc = abuf->addr;
   1035   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1036 
   1037   {
   1038     USI opval = SRLSI (GET_H_GPR (FLD (f_r2)), FLD (f_uimm6));
   1039     SET_H_GPR (FLD (f_r1), opval);
   1040     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1041   }
   1042 
   1043   return vpc;
   1044 #undef FLD
   1045 }
   1046 
   1047 /* l-sra: l.sra $rD,$rA,$rB */
   1048 
   1049 static SEM_PC
   1050 SEM_FN_NAME (or1k32bf,l_sra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1051 {
   1052 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1053   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1054   int UNUSED written = 0;
   1055   IADDR UNUSED pc = abuf->addr;
   1056   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1057 
   1058   {
   1059     USI opval = SRASI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   1060     SET_H_GPR (FLD (f_r1), opval);
   1061     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1062   }
   1063 
   1064   return vpc;
   1065 #undef FLD
   1066 }
   1067 
   1068 /* l-srai: l.srai $rD,$rA,${uimm6} */
   1069 
   1070 static SEM_PC
   1071 SEM_FN_NAME (or1k32bf,l_srai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1072 {
   1073 #define FLD(f) abuf->fields.sfmt_l_slli.f
   1074   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1075   int UNUSED written = 0;
   1076   IADDR UNUSED pc = abuf->addr;
   1077   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1078 
   1079   {
   1080     USI opval = SRASI (GET_H_GPR (FLD (f_r2)), FLD (f_uimm6));
   1081     SET_H_GPR (FLD (f_r1), opval);
   1082     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1083   }
   1084 
   1085   return vpc;
   1086 #undef FLD
   1087 }
   1088 
   1089 /* l-ror: l.ror $rD,$rA,$rB */
   1090 
   1091 static SEM_PC
   1092 SEM_FN_NAME (or1k32bf,l_ror) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1093 {
   1094 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1095   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1096   int UNUSED written = 0;
   1097   IADDR UNUSED pc = abuf->addr;
   1098   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1099 
   1100   {
   1101     USI opval = RORSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   1102     SET_H_GPR (FLD (f_r1), opval);
   1103     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1104   }
   1105 
   1106   return vpc;
   1107 #undef FLD
   1108 }
   1109 
   1110 /* l-rori: l.rori $rD,$rA,${uimm6} */
   1111 
   1112 static SEM_PC
   1113 SEM_FN_NAME (or1k32bf,l_rori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1114 {
   1115 #define FLD(f) abuf->fields.sfmt_l_slli.f
   1116   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1117   int UNUSED written = 0;
   1118   IADDR UNUSED pc = abuf->addr;
   1119   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1120 
   1121   {
   1122     USI opval = RORSI (GET_H_GPR (FLD (f_r2)), FLD (f_uimm6));
   1123     SET_H_GPR (FLD (f_r1), opval);
   1124     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1125   }
   1126 
   1127   return vpc;
   1128 #undef FLD
   1129 }
   1130 
   1131 /* l-and: l.and $rD,$rA,$rB */
   1132 
   1133 static SEM_PC
   1134 SEM_FN_NAME (or1k32bf,l_and) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1135 {
   1136 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1137   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1138   int UNUSED written = 0;
   1139   IADDR UNUSED pc = abuf->addr;
   1140   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1141 
   1142   {
   1143     USI opval = ANDSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   1144     SET_H_GPR (FLD (f_r1), opval);
   1145     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1146   }
   1147 
   1148   return vpc;
   1149 #undef FLD
   1150 }
   1151 
   1152 /* l-or: l.or $rD,$rA,$rB */
   1153 
   1154 static SEM_PC
   1155 SEM_FN_NAME (or1k32bf,l_or) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1156 {
   1157 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1158   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1159   int UNUSED written = 0;
   1160   IADDR UNUSED pc = abuf->addr;
   1161   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1162 
   1163   {
   1164     USI opval = ORSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   1165     SET_H_GPR (FLD (f_r1), opval);
   1166     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1167   }
   1168 
   1169   return vpc;
   1170 #undef FLD
   1171 }
   1172 
   1173 /* l-xor: l.xor $rD,$rA,$rB */
   1174 
   1175 static SEM_PC
   1176 SEM_FN_NAME (or1k32bf,l_xor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1177 {
   1178 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1179   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1180   int UNUSED written = 0;
   1181   IADDR UNUSED pc = abuf->addr;
   1182   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1183 
   1184   {
   1185     USI opval = XORSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   1186     SET_H_GPR (FLD (f_r1), opval);
   1187     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1188   }
   1189 
   1190   return vpc;
   1191 #undef FLD
   1192 }
   1193 
   1194 /* l-add: l.add $rD,$rA,$rB */
   1195 
   1196 static SEM_PC
   1197 SEM_FN_NAME (or1k32bf,l_add) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1198 {
   1199 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1200   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1201   int UNUSED written = 0;
   1202   IADDR UNUSED pc = abuf->addr;
   1203   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1204 
   1205 {
   1206 {
   1207   {
   1208     BI opval = ADDCFSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)), 0);
   1209     SET_H_SYS_SR_CY (opval);
   1210     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-cy", 'x', opval);
   1211   }
   1212   {
   1213     BI opval = ADDOFSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)), 0);
   1214     SET_H_SYS_SR_OV (opval);
   1215     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-ov", 'x', opval);
   1216   }
   1217   {
   1218     USI opval = ADDSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   1219     SET_H_GPR (FLD (f_r1), opval);
   1220     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1221   }
   1222 }
   1223 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
   1224 or1k32bf_exception (current_cpu, pc, EXCEPT_RANGE);
   1225 }
   1226 }
   1227 
   1228   return vpc;
   1229 #undef FLD
   1230 }
   1231 
   1232 /* l-sub: l.sub $rD,$rA,$rB */
   1233 
   1234 static SEM_PC
   1235 SEM_FN_NAME (or1k32bf,l_sub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1236 {
   1237 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1238   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1239   int UNUSED written = 0;
   1240   IADDR UNUSED pc = abuf->addr;
   1241   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1242 
   1243 {
   1244 {
   1245   {
   1246     BI opval = SUBCFSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)), 0);
   1247     SET_H_SYS_SR_CY (opval);
   1248     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-cy", 'x', opval);
   1249   }
   1250   {
   1251     BI opval = SUBOFSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)), 0);
   1252     SET_H_SYS_SR_OV (opval);
   1253     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-ov", 'x', opval);
   1254   }
   1255   {
   1256     USI opval = SUBSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   1257     SET_H_GPR (FLD (f_r1), opval);
   1258     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1259   }
   1260 }
   1261 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
   1262 or1k32bf_exception (current_cpu, pc, EXCEPT_RANGE);
   1263 }
   1264 }
   1265 
   1266   return vpc;
   1267 #undef FLD
   1268 }
   1269 
   1270 /* l-addc: l.addc $rD,$rA,$rB */
   1271 
   1272 static SEM_PC
   1273 SEM_FN_NAME (or1k32bf,l_addc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1274 {
   1275 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1276   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1277   int UNUSED written = 0;
   1278   IADDR UNUSED pc = abuf->addr;
   1279   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1280 
   1281 {
   1282 {
   1283   BI tmp_tmp_sys_sr_cy;
   1284   tmp_tmp_sys_sr_cy = GET_H_SYS_SR_CY ();
   1285   {
   1286     BI opval = ADDCFSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)), tmp_tmp_sys_sr_cy);
   1287     SET_H_SYS_SR_CY (opval);
   1288     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-cy", 'x', opval);
   1289   }
   1290   {
   1291     BI opval = ADDOFSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)), tmp_tmp_sys_sr_cy);
   1292     SET_H_SYS_SR_OV (opval);
   1293     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-ov", 'x', opval);
   1294   }
   1295   {
   1296     USI opval = ADDCSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)), tmp_tmp_sys_sr_cy);
   1297     SET_H_GPR (FLD (f_r1), opval);
   1298     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1299   }
   1300 }
   1301 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
   1302 or1k32bf_exception (current_cpu, pc, EXCEPT_RANGE);
   1303 }
   1304 }
   1305 
   1306   return vpc;
   1307 #undef FLD
   1308 }
   1309 
   1310 /* l-mul: l.mul $rD,$rA,$rB */
   1311 
   1312 static SEM_PC
   1313 SEM_FN_NAME (or1k32bf,l_mul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1314 {
   1315 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1316   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1317   int UNUSED written = 0;
   1318   IADDR UNUSED pc = abuf->addr;
   1319   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1320 
   1321 {
   1322 {
   1323   {
   1324     BI opval = MUL2OFSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   1325     SET_H_SYS_SR_OV (opval);
   1326     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-ov", 'x', opval);
   1327   }
   1328   {
   1329     USI opval = MULSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   1330     SET_H_GPR (FLD (f_r1), opval);
   1331     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1332   }
   1333 }
   1334 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
   1335 or1k32bf_exception (current_cpu, pc, EXCEPT_RANGE);
   1336 }
   1337 }
   1338 
   1339   return vpc;
   1340 #undef FLD
   1341 }
   1342 
   1343 /* l-muld: l.muld $rA,$rB */
   1344 
   1345 static SEM_PC
   1346 SEM_FN_NAME (or1k32bf,l_muld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1347 {
   1348 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1349   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1350   int UNUSED written = 0;
   1351   IADDR UNUSED pc = abuf->addr;
   1352   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1353 
   1354 {
   1355   DI tmp_result;
   1356   tmp_result = MULDI (EXTSIDI (GET_H_GPR (FLD (f_r2))), EXTSIDI (GET_H_GPR (FLD (f_r3))));
   1357   {
   1358     SI opval = SUBWORDDISI (tmp_result, 0);
   1359     SET_H_MAC_MACHI (opval);
   1360     CGEN_TRACE_RESULT (current_cpu, abuf, "mac-machi", 'x', opval);
   1361   }
   1362   {
   1363     SI opval = SUBWORDDISI (tmp_result, 1);
   1364     SET_H_MAC_MACLO (opval);
   1365     CGEN_TRACE_RESULT (current_cpu, abuf, "mac-maclo", 'x', opval);
   1366   }
   1367 }
   1368 
   1369   return vpc;
   1370 #undef FLD
   1371 }
   1372 
   1373 /* l-mulu: l.mulu $rD,$rA,$rB */
   1374 
   1375 static SEM_PC
   1376 SEM_FN_NAME (or1k32bf,l_mulu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1377 {
   1378 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1379   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1380   int UNUSED written = 0;
   1381   IADDR UNUSED pc = abuf->addr;
   1382   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1383 
   1384 {
   1385 {
   1386   {
   1387     BI opval = MUL1OFSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   1388     SET_H_SYS_SR_CY (opval);
   1389     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-cy", 'x', opval);
   1390   }
   1391   {
   1392     USI opval = MULSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   1393     SET_H_GPR (FLD (f_r1), opval);
   1394     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1395   }
   1396 }
   1397 if (ANDIF (GET_H_SYS_SR_CY (), GET_H_SYS_SR_OVE ())) {
   1398 or1k32bf_exception (current_cpu, pc, EXCEPT_RANGE);
   1399 }
   1400 }
   1401 
   1402   return vpc;
   1403 #undef FLD
   1404 }
   1405 
   1406 /* l-muldu: l.muldu $rA,$rB */
   1407 
   1408 static SEM_PC
   1409 SEM_FN_NAME (or1k32bf,l_muldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1410 {
   1411 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1412   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1413   int UNUSED written = 0;
   1414   IADDR UNUSED pc = abuf->addr;
   1415   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1416 
   1417 {
   1418   DI tmp_result;
   1419   tmp_result = MULDI (ZEXTSIDI (GET_H_GPR (FLD (f_r2))), ZEXTSIDI (GET_H_GPR (FLD (f_r3))));
   1420   {
   1421     SI opval = SUBWORDDISI (tmp_result, 0);
   1422     SET_H_MAC_MACHI (opval);
   1423     CGEN_TRACE_RESULT (current_cpu, abuf, "mac-machi", 'x', opval);
   1424   }
   1425   {
   1426     SI opval = SUBWORDDISI (tmp_result, 1);
   1427     SET_H_MAC_MACLO (opval);
   1428     CGEN_TRACE_RESULT (current_cpu, abuf, "mac-maclo", 'x', opval);
   1429   }
   1430 }
   1431 
   1432   return vpc;
   1433 #undef FLD
   1434 }
   1435 
   1436 /* l-div: l.div $rD,$rA,$rB */
   1437 
   1438 static SEM_PC
   1439 SEM_FN_NAME (or1k32bf,l_div) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1440 {
   1441 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1442   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1443   int UNUSED written = 0;
   1444   IADDR UNUSED pc = abuf->addr;
   1445   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1446 
   1447 if (NESI (GET_H_GPR (FLD (f_r3)), 0)) {
   1448 {
   1449   {
   1450     BI opval = 0;
   1451     SET_H_SYS_SR_OV (opval);
   1452     written |= (1 << 5);
   1453     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-ov", 'x', opval);
   1454   }
   1455   {
   1456     SI opval = DIVSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   1457     SET_H_GPR (FLD (f_r1), opval);
   1458     written |= (1 << 4);
   1459     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1460   }
   1461 }
   1462 } else {
   1463 {
   1464   {
   1465     BI opval = 1;
   1466     SET_H_SYS_SR_OV (opval);
   1467     written |= (1 << 5);
   1468     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-ov", 'x', opval);
   1469   }
   1470 if (GET_H_SYS_SR_OVE ()) {
   1471 or1k32bf_exception (current_cpu, pc, EXCEPT_RANGE);
   1472 }
   1473 }
   1474 }
   1475 
   1476   abuf->written = written;
   1477   return vpc;
   1478 #undef FLD
   1479 }
   1480 
   1481 /* l-divu: l.divu $rD,$rA,$rB */
   1482 
   1483 static SEM_PC
   1484 SEM_FN_NAME (or1k32bf,l_divu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1485 {
   1486 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1487   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1488   int UNUSED written = 0;
   1489   IADDR UNUSED pc = abuf->addr;
   1490   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1491 
   1492 if (NESI (GET_H_GPR (FLD (f_r3)), 0)) {
   1493 {
   1494   {
   1495     BI opval = 0;
   1496     SET_H_SYS_SR_CY (opval);
   1497     written |= (1 << 5);
   1498     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-cy", 'x', opval);
   1499   }
   1500   {
   1501     USI opval = UDIVSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   1502     SET_H_GPR (FLD (f_r1), opval);
   1503     written |= (1 << 4);
   1504     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1505   }
   1506 }
   1507 } else {
   1508 {
   1509   {
   1510     BI opval = 1;
   1511     SET_H_SYS_SR_CY (opval);
   1512     written |= (1 << 5);
   1513     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-cy", 'x', opval);
   1514   }
   1515 if (GET_H_SYS_SR_OVE ()) {
   1516 or1k32bf_exception (current_cpu, pc, EXCEPT_RANGE);
   1517 }
   1518 }
   1519 }
   1520 
   1521   abuf->written = written;
   1522   return vpc;
   1523 #undef FLD
   1524 }
   1525 
   1526 /* l-ff1: l.ff1 $rD,$rA */
   1527 
   1528 static SEM_PC
   1529 SEM_FN_NAME (or1k32bf,l_ff1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1530 {
   1531 #define FLD(f) abuf->fields.sfmt_l_slli.f
   1532   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1533   int UNUSED written = 0;
   1534   IADDR UNUSED pc = abuf->addr;
   1535   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1536 
   1537   {
   1538     USI opval = or1k32bf_ff1 (current_cpu, GET_H_GPR (FLD (f_r2)));
   1539     SET_H_GPR (FLD (f_r1), opval);
   1540     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1541   }
   1542 
   1543   return vpc;
   1544 #undef FLD
   1545 }
   1546 
   1547 /* l-fl1: l.fl1 $rD,$rA */
   1548 
   1549 static SEM_PC
   1550 SEM_FN_NAME (or1k32bf,l_fl1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1551 {
   1552 #define FLD(f) abuf->fields.sfmt_l_slli.f
   1553   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1554   int UNUSED written = 0;
   1555   IADDR UNUSED pc = abuf->addr;
   1556   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1557 
   1558   {
   1559     USI opval = or1k32bf_fl1 (current_cpu, GET_H_GPR (FLD (f_r2)));
   1560     SET_H_GPR (FLD (f_r1), opval);
   1561     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1562   }
   1563 
   1564   return vpc;
   1565 #undef FLD
   1566 }
   1567 
   1568 /* l-andi: l.andi $rD,$rA,$uimm16 */
   1569 
   1570 static SEM_PC
   1571 SEM_FN_NAME (or1k32bf,l_andi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1572 {
   1573 #define FLD(f) abuf->fields.sfmt_l_mfspr.f
   1574   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1575   int UNUSED written = 0;
   1576   IADDR UNUSED pc = abuf->addr;
   1577   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1578 
   1579   {
   1580     USI opval = ANDSI (GET_H_GPR (FLD (f_r2)), ZEXTSISI (FLD (f_uimm16)));
   1581     SET_H_GPR (FLD (f_r1), opval);
   1582     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1583   }
   1584 
   1585   return vpc;
   1586 #undef FLD
   1587 }
   1588 
   1589 /* l-ori: l.ori $rD,$rA,$uimm16 */
   1590 
   1591 static SEM_PC
   1592 SEM_FN_NAME (or1k32bf,l_ori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1593 {
   1594 #define FLD(f) abuf->fields.sfmt_l_mfspr.f
   1595   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1596   int UNUSED written = 0;
   1597   IADDR UNUSED pc = abuf->addr;
   1598   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1599 
   1600   {
   1601     USI opval = ORSI (GET_H_GPR (FLD (f_r2)), ZEXTSISI (FLD (f_uimm16)));
   1602     SET_H_GPR (FLD (f_r1), opval);
   1603     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1604   }
   1605 
   1606   return vpc;
   1607 #undef FLD
   1608 }
   1609 
   1610 /* l-xori: l.xori $rD,$rA,$simm16 */
   1611 
   1612 static SEM_PC
   1613 SEM_FN_NAME (or1k32bf,l_xori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1614 {
   1615 #define FLD(f) abuf->fields.sfmt_l_lwz.f
   1616   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1617   int UNUSED written = 0;
   1618   IADDR UNUSED pc = abuf->addr;
   1619   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1620 
   1621   {
   1622     USI opval = XORSI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)));
   1623     SET_H_GPR (FLD (f_r1), opval);
   1624     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1625   }
   1626 
   1627   return vpc;
   1628 #undef FLD
   1629 }
   1630 
   1631 /* l-addi: l.addi $rD,$rA,$simm16 */
   1632 
   1633 static SEM_PC
   1634 SEM_FN_NAME (or1k32bf,l_addi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1635 {
   1636 #define FLD(f) abuf->fields.sfmt_l_lwz.f
   1637   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1638   int UNUSED written = 0;
   1639   IADDR UNUSED pc = abuf->addr;
   1640   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1641 
   1642 {
   1643 {
   1644   {
   1645     BI opval = ADDCFSI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)), 0);
   1646     SET_H_SYS_SR_CY (opval);
   1647     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-cy", 'x', opval);
   1648   }
   1649   {
   1650     BI opval = ADDOFSI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)), 0);
   1651     SET_H_SYS_SR_OV (opval);
   1652     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-ov", 'x', opval);
   1653   }
   1654   {
   1655     USI opval = ADDSI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)));
   1656     SET_H_GPR (FLD (f_r1), opval);
   1657     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1658   }
   1659 }
   1660 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
   1661 or1k32bf_exception (current_cpu, pc, EXCEPT_RANGE);
   1662 }
   1663 }
   1664 
   1665   return vpc;
   1666 #undef FLD
   1667 }
   1668 
   1669 /* l-addic: l.addic $rD,$rA,$simm16 */
   1670 
   1671 static SEM_PC
   1672 SEM_FN_NAME (or1k32bf,l_addic) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1673 {
   1674 #define FLD(f) abuf->fields.sfmt_l_lwz.f
   1675   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1676   int UNUSED written = 0;
   1677   IADDR UNUSED pc = abuf->addr;
   1678   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1679 
   1680 {
   1681 {
   1682   BI tmp_tmp_sys_sr_cy;
   1683   tmp_tmp_sys_sr_cy = GET_H_SYS_SR_CY ();
   1684   {
   1685     BI opval = ADDCFSI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)), tmp_tmp_sys_sr_cy);
   1686     SET_H_SYS_SR_CY (opval);
   1687     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-cy", 'x', opval);
   1688   }
   1689   {
   1690     BI opval = ADDOFSI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)), tmp_tmp_sys_sr_cy);
   1691     SET_H_SYS_SR_OV (opval);
   1692     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-ov", 'x', opval);
   1693   }
   1694   {
   1695     SI opval = ADDCSI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)), tmp_tmp_sys_sr_cy);
   1696     SET_H_GPR (FLD (f_r1), opval);
   1697     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1698   }
   1699 }
   1700 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
   1701 or1k32bf_exception (current_cpu, pc, EXCEPT_RANGE);
   1702 }
   1703 }
   1704 
   1705   return vpc;
   1706 #undef FLD
   1707 }
   1708 
   1709 /* l-muli: l.muli $rD,$rA,$simm16 */
   1710 
   1711 static SEM_PC
   1712 SEM_FN_NAME (or1k32bf,l_muli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1713 {
   1714 #define FLD(f) abuf->fields.sfmt_l_lwz.f
   1715   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1716   int UNUSED written = 0;
   1717   IADDR UNUSED pc = abuf->addr;
   1718   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1719 
   1720 {
   1721 {
   1722   {
   1723     USI opval = MUL2OFSI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)));
   1724     SET_H_SYS_SR_OV (opval);
   1725     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-ov", 'x', opval);
   1726   }
   1727   {
   1728     USI opval = MULSI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)));
   1729     SET_H_GPR (FLD (f_r1), opval);
   1730     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1731   }
   1732 }
   1733 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
   1734 or1k32bf_exception (current_cpu, pc, EXCEPT_RANGE);
   1735 }
   1736 }
   1737 
   1738   return vpc;
   1739 #undef FLD
   1740 }
   1741 
   1742 /* l-exths: l.exths $rD,$rA */
   1743 
   1744 static SEM_PC
   1745 SEM_FN_NAME (or1k32bf,l_exths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1746 {
   1747 #define FLD(f) abuf->fields.sfmt_l_slli.f
   1748   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1749   int UNUSED written = 0;
   1750   IADDR UNUSED pc = abuf->addr;
   1751   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1752 
   1753   {
   1754     USI opval = EXTHISI (TRUNCSIHI (GET_H_GPR (FLD (f_r2))));
   1755     SET_H_GPR (FLD (f_r1), opval);
   1756     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1757   }
   1758 
   1759   return vpc;
   1760 #undef FLD
   1761 }
   1762 
   1763 /* l-extbs: l.extbs $rD,$rA */
   1764 
   1765 static SEM_PC
   1766 SEM_FN_NAME (or1k32bf,l_extbs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1767 {
   1768 #define FLD(f) abuf->fields.sfmt_l_slli.f
   1769   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1770   int UNUSED written = 0;
   1771   IADDR UNUSED pc = abuf->addr;
   1772   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1773 
   1774   {
   1775     USI opval = EXTQISI (TRUNCSIQI (GET_H_GPR (FLD (f_r2))));
   1776     SET_H_GPR (FLD (f_r1), opval);
   1777     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1778   }
   1779 
   1780   return vpc;
   1781 #undef FLD
   1782 }
   1783 
   1784 /* l-exthz: l.exthz $rD,$rA */
   1785 
   1786 static SEM_PC
   1787 SEM_FN_NAME (or1k32bf,l_exthz) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1788 {
   1789 #define FLD(f) abuf->fields.sfmt_l_slli.f
   1790   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1791   int UNUSED written = 0;
   1792   IADDR UNUSED pc = abuf->addr;
   1793   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1794 
   1795   {
   1796     USI opval = ZEXTHISI (TRUNCSIHI (GET_H_GPR (FLD (f_r2))));
   1797     SET_H_GPR (FLD (f_r1), opval);
   1798     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1799   }
   1800 
   1801   return vpc;
   1802 #undef FLD
   1803 }
   1804 
   1805 /* l-extbz: l.extbz $rD,$rA */
   1806 
   1807 static SEM_PC
   1808 SEM_FN_NAME (or1k32bf,l_extbz) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1809 {
   1810 #define FLD(f) abuf->fields.sfmt_l_slli.f
   1811   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1812   int UNUSED written = 0;
   1813   IADDR UNUSED pc = abuf->addr;
   1814   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1815 
   1816   {
   1817     USI opval = ZEXTQISI (TRUNCSIQI (GET_H_GPR (FLD (f_r2))));
   1818     SET_H_GPR (FLD (f_r1), opval);
   1819     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1820   }
   1821 
   1822   return vpc;
   1823 #undef FLD
   1824 }
   1825 
   1826 /* l-extws: l.extws $rD,$rA */
   1827 
   1828 static SEM_PC
   1829 SEM_FN_NAME (or1k32bf,l_extws) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1830 {
   1831 #define FLD(f) abuf->fields.sfmt_l_slli.f
   1832   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1833   int UNUSED written = 0;
   1834   IADDR UNUSED pc = abuf->addr;
   1835   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1836 
   1837   {
   1838     USI opval = EXTSISI (TRUNCSISI (GET_H_GPR (FLD (f_r2))));
   1839     SET_H_GPR (FLD (f_r1), opval);
   1840     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1841   }
   1842 
   1843   return vpc;
   1844 #undef FLD
   1845 }
   1846 
   1847 /* l-extwz: l.extwz $rD,$rA */
   1848 
   1849 static SEM_PC
   1850 SEM_FN_NAME (or1k32bf,l_extwz) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1851 {
   1852 #define FLD(f) abuf->fields.sfmt_l_slli.f
   1853   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1854   int UNUSED written = 0;
   1855   IADDR UNUSED pc = abuf->addr;
   1856   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1857 
   1858   {
   1859     USI opval = ZEXTSISI (TRUNCSISI (GET_H_GPR (FLD (f_r2))));
   1860     SET_H_GPR (FLD (f_r1), opval);
   1861     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1862   }
   1863 
   1864   return vpc;
   1865 #undef FLD
   1866 }
   1867 
   1868 /* l-cmov: l.cmov $rD,$rA,$rB */
   1869 
   1870 static SEM_PC
   1871 SEM_FN_NAME (or1k32bf,l_cmov) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1872 {
   1873 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1874   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1875   int UNUSED written = 0;
   1876   IADDR UNUSED pc = abuf->addr;
   1877   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1878 
   1879 if (GET_H_SYS_SR_F ()) {
   1880   {
   1881     USI opval = GET_H_GPR (FLD (f_r2));
   1882     SET_H_GPR (FLD (f_r1), opval);
   1883     written |= (1 << 3);
   1884     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1885   }
   1886 } else {
   1887   {
   1888     USI opval = GET_H_GPR (FLD (f_r3));
   1889     SET_H_GPR (FLD (f_r1), opval);
   1890     written |= (1 << 3);
   1891     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   1892   }
   1893 }
   1894 
   1895   abuf->written = written;
   1896   return vpc;
   1897 #undef FLD
   1898 }
   1899 
   1900 /* l-sfgts: l.sfgts $rA,$rB */
   1901 
   1902 static SEM_PC
   1903 SEM_FN_NAME (or1k32bf,l_sfgts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1904 {
   1905 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1906   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1907   int UNUSED written = 0;
   1908   IADDR UNUSED pc = abuf->addr;
   1909   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1910 
   1911   {
   1912     USI opval = GTSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   1913     SET_H_SYS_SR_F (opval);
   1914     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   1915   }
   1916 
   1917   return vpc;
   1918 #undef FLD
   1919 }
   1920 
   1921 /* l-sfgtsi: l.sfgtsi $rA,$simm16 */
   1922 
   1923 static SEM_PC
   1924 SEM_FN_NAME (or1k32bf,l_sfgtsi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1925 {
   1926 #define FLD(f) abuf->fields.sfmt_l_lwz.f
   1927   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1928   int UNUSED written = 0;
   1929   IADDR UNUSED pc = abuf->addr;
   1930   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1931 
   1932   {
   1933     USI opval = GTSI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)));
   1934     SET_H_SYS_SR_F (opval);
   1935     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   1936   }
   1937 
   1938   return vpc;
   1939 #undef FLD
   1940 }
   1941 
   1942 /* l-sfgtu: l.sfgtu $rA,$rB */
   1943 
   1944 static SEM_PC
   1945 SEM_FN_NAME (or1k32bf,l_sfgtu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1946 {
   1947 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1948   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1949   int UNUSED written = 0;
   1950   IADDR UNUSED pc = abuf->addr;
   1951   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1952 
   1953   {
   1954     USI opval = GTUSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   1955     SET_H_SYS_SR_F (opval);
   1956     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   1957   }
   1958 
   1959   return vpc;
   1960 #undef FLD
   1961 }
   1962 
   1963 /* l-sfgtui: l.sfgtui $rA,$simm16 */
   1964 
   1965 static SEM_PC
   1966 SEM_FN_NAME (or1k32bf,l_sfgtui) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1967 {
   1968 #define FLD(f) abuf->fields.sfmt_l_lwz.f
   1969   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1970   int UNUSED written = 0;
   1971   IADDR UNUSED pc = abuf->addr;
   1972   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1973 
   1974   {
   1975     USI opval = GTUSI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)));
   1976     SET_H_SYS_SR_F (opval);
   1977     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   1978   }
   1979 
   1980   return vpc;
   1981 #undef FLD
   1982 }
   1983 
   1984 /* l-sfges: l.sfges $rA,$rB */
   1985 
   1986 static SEM_PC
   1987 SEM_FN_NAME (or1k32bf,l_sfges) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   1988 {
   1989 #define FLD(f) abuf->fields.sfmt_l_sll.f
   1990   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   1991   int UNUSED written = 0;
   1992   IADDR UNUSED pc = abuf->addr;
   1993   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   1994 
   1995   {
   1996     USI opval = GESI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   1997     SET_H_SYS_SR_F (opval);
   1998     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   1999   }
   2000 
   2001   return vpc;
   2002 #undef FLD
   2003 }
   2004 
   2005 /* l-sfgesi: l.sfgesi $rA,$simm16 */
   2006 
   2007 static SEM_PC
   2008 SEM_FN_NAME (or1k32bf,l_sfgesi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2009 {
   2010 #define FLD(f) abuf->fields.sfmt_l_lwz.f
   2011   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2012   int UNUSED written = 0;
   2013   IADDR UNUSED pc = abuf->addr;
   2014   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2015 
   2016   {
   2017     USI opval = GESI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)));
   2018     SET_H_SYS_SR_F (opval);
   2019     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   2020   }
   2021 
   2022   return vpc;
   2023 #undef FLD
   2024 }
   2025 
   2026 /* l-sfgeu: l.sfgeu $rA,$rB */
   2027 
   2028 static SEM_PC
   2029 SEM_FN_NAME (or1k32bf,l_sfgeu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2030 {
   2031 #define FLD(f) abuf->fields.sfmt_l_sll.f
   2032   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2033   int UNUSED written = 0;
   2034   IADDR UNUSED pc = abuf->addr;
   2035   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2036 
   2037   {
   2038     USI opval = GEUSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   2039     SET_H_SYS_SR_F (opval);
   2040     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   2041   }
   2042 
   2043   return vpc;
   2044 #undef FLD
   2045 }
   2046 
   2047 /* l-sfgeui: l.sfgeui $rA,$simm16 */
   2048 
   2049 static SEM_PC
   2050 SEM_FN_NAME (or1k32bf,l_sfgeui) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2051 {
   2052 #define FLD(f) abuf->fields.sfmt_l_lwz.f
   2053   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2054   int UNUSED written = 0;
   2055   IADDR UNUSED pc = abuf->addr;
   2056   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2057 
   2058   {
   2059     USI opval = GEUSI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)));
   2060     SET_H_SYS_SR_F (opval);
   2061     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   2062   }
   2063 
   2064   return vpc;
   2065 #undef FLD
   2066 }
   2067 
   2068 /* l-sflts: l.sflts $rA,$rB */
   2069 
   2070 static SEM_PC
   2071 SEM_FN_NAME (or1k32bf,l_sflts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2072 {
   2073 #define FLD(f) abuf->fields.sfmt_l_sll.f
   2074   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2075   int UNUSED written = 0;
   2076   IADDR UNUSED pc = abuf->addr;
   2077   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2078 
   2079   {
   2080     USI opval = LTSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   2081     SET_H_SYS_SR_F (opval);
   2082     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   2083   }
   2084 
   2085   return vpc;
   2086 #undef FLD
   2087 }
   2088 
   2089 /* l-sfltsi: l.sfltsi $rA,$simm16 */
   2090 
   2091 static SEM_PC
   2092 SEM_FN_NAME (or1k32bf,l_sfltsi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2093 {
   2094 #define FLD(f) abuf->fields.sfmt_l_lwz.f
   2095   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2096   int UNUSED written = 0;
   2097   IADDR UNUSED pc = abuf->addr;
   2098   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2099 
   2100   {
   2101     USI opval = LTSI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)));
   2102     SET_H_SYS_SR_F (opval);
   2103     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   2104   }
   2105 
   2106   return vpc;
   2107 #undef FLD
   2108 }
   2109 
   2110 /* l-sfltu: l.sfltu $rA,$rB */
   2111 
   2112 static SEM_PC
   2113 SEM_FN_NAME (or1k32bf,l_sfltu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2114 {
   2115 #define FLD(f) abuf->fields.sfmt_l_sll.f
   2116   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2117   int UNUSED written = 0;
   2118   IADDR UNUSED pc = abuf->addr;
   2119   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2120 
   2121   {
   2122     USI opval = LTUSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   2123     SET_H_SYS_SR_F (opval);
   2124     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   2125   }
   2126 
   2127   return vpc;
   2128 #undef FLD
   2129 }
   2130 
   2131 /* l-sfltui: l.sfltui $rA,$simm16 */
   2132 
   2133 static SEM_PC
   2134 SEM_FN_NAME (or1k32bf,l_sfltui) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2135 {
   2136 #define FLD(f) abuf->fields.sfmt_l_lwz.f
   2137   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2138   int UNUSED written = 0;
   2139   IADDR UNUSED pc = abuf->addr;
   2140   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2141 
   2142   {
   2143     USI opval = LTUSI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)));
   2144     SET_H_SYS_SR_F (opval);
   2145     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   2146   }
   2147 
   2148   return vpc;
   2149 #undef FLD
   2150 }
   2151 
   2152 /* l-sfles: l.sfles $rA,$rB */
   2153 
   2154 static SEM_PC
   2155 SEM_FN_NAME (or1k32bf,l_sfles) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2156 {
   2157 #define FLD(f) abuf->fields.sfmt_l_sll.f
   2158   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2159   int UNUSED written = 0;
   2160   IADDR UNUSED pc = abuf->addr;
   2161   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2162 
   2163   {
   2164     USI opval = LESI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   2165     SET_H_SYS_SR_F (opval);
   2166     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   2167   }
   2168 
   2169   return vpc;
   2170 #undef FLD
   2171 }
   2172 
   2173 /* l-sflesi: l.sflesi $rA,$simm16 */
   2174 
   2175 static SEM_PC
   2176 SEM_FN_NAME (or1k32bf,l_sflesi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2177 {
   2178 #define FLD(f) abuf->fields.sfmt_l_lwz.f
   2179   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2180   int UNUSED written = 0;
   2181   IADDR UNUSED pc = abuf->addr;
   2182   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2183 
   2184   {
   2185     USI opval = LESI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)));
   2186     SET_H_SYS_SR_F (opval);
   2187     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   2188   }
   2189 
   2190   return vpc;
   2191 #undef FLD
   2192 }
   2193 
   2194 /* l-sfleu: l.sfleu $rA,$rB */
   2195 
   2196 static SEM_PC
   2197 SEM_FN_NAME (or1k32bf,l_sfleu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2198 {
   2199 #define FLD(f) abuf->fields.sfmt_l_sll.f
   2200   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2201   int UNUSED written = 0;
   2202   IADDR UNUSED pc = abuf->addr;
   2203   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2204 
   2205   {
   2206     USI opval = LEUSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   2207     SET_H_SYS_SR_F (opval);
   2208     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   2209   }
   2210 
   2211   return vpc;
   2212 #undef FLD
   2213 }
   2214 
   2215 /* l-sfleui: l.sfleui $rA,$simm16 */
   2216 
   2217 static SEM_PC
   2218 SEM_FN_NAME (or1k32bf,l_sfleui) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2219 {
   2220 #define FLD(f) abuf->fields.sfmt_l_lwz.f
   2221   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2222   int UNUSED written = 0;
   2223   IADDR UNUSED pc = abuf->addr;
   2224   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2225 
   2226   {
   2227     USI opval = LEUSI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)));
   2228     SET_H_SYS_SR_F (opval);
   2229     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   2230   }
   2231 
   2232   return vpc;
   2233 #undef FLD
   2234 }
   2235 
   2236 /* l-sfeq: l.sfeq $rA,$rB */
   2237 
   2238 static SEM_PC
   2239 SEM_FN_NAME (or1k32bf,l_sfeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2240 {
   2241 #define FLD(f) abuf->fields.sfmt_l_sll.f
   2242   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2243   int UNUSED written = 0;
   2244   IADDR UNUSED pc = abuf->addr;
   2245   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2246 
   2247   {
   2248     USI opval = EQSI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   2249     SET_H_SYS_SR_F (opval);
   2250     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   2251   }
   2252 
   2253   return vpc;
   2254 #undef FLD
   2255 }
   2256 
   2257 /* l-sfeqi: l.sfeqi $rA,$simm16 */
   2258 
   2259 static SEM_PC
   2260 SEM_FN_NAME (or1k32bf,l_sfeqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2261 {
   2262 #define FLD(f) abuf->fields.sfmt_l_lwz.f
   2263   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2264   int UNUSED written = 0;
   2265   IADDR UNUSED pc = abuf->addr;
   2266   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2267 
   2268   {
   2269     USI opval = EQSI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)));
   2270     SET_H_SYS_SR_F (opval);
   2271     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   2272   }
   2273 
   2274   return vpc;
   2275 #undef FLD
   2276 }
   2277 
   2278 /* l-sfne: l.sfne $rA,$rB */
   2279 
   2280 static SEM_PC
   2281 SEM_FN_NAME (or1k32bf,l_sfne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2282 {
   2283 #define FLD(f) abuf->fields.sfmt_l_sll.f
   2284   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2285   int UNUSED written = 0;
   2286   IADDR UNUSED pc = abuf->addr;
   2287   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2288 
   2289   {
   2290     USI opval = NESI (GET_H_GPR (FLD (f_r2)), GET_H_GPR (FLD (f_r3)));
   2291     SET_H_SYS_SR_F (opval);
   2292     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   2293   }
   2294 
   2295   return vpc;
   2296 #undef FLD
   2297 }
   2298 
   2299 /* l-sfnei: l.sfnei $rA,$simm16 */
   2300 
   2301 static SEM_PC
   2302 SEM_FN_NAME (or1k32bf,l_sfnei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2303 {
   2304 #define FLD(f) abuf->fields.sfmt_l_lwz.f
   2305   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2306   int UNUSED written = 0;
   2307   IADDR UNUSED pc = abuf->addr;
   2308   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2309 
   2310   {
   2311     USI opval = NESI (GET_H_GPR (FLD (f_r2)), EXTSISI (FLD (f_simm16)));
   2312     SET_H_SYS_SR_F (opval);
   2313     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   2314   }
   2315 
   2316   return vpc;
   2317 #undef FLD
   2318 }
   2319 
   2320 /* l-mac: l.mac $rA,$rB */
   2321 
   2322 static SEM_PC
   2323 SEM_FN_NAME (or1k32bf,l_mac) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2324 {
   2325 #define FLD(f) abuf->fields.sfmt_l_sll.f
   2326   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2327   int UNUSED written = 0;
   2328   IADDR UNUSED pc = abuf->addr;
   2329   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2330 
   2331 {
   2332 {
   2333   DI tmp_prod;
   2334   DI tmp_mac;
   2335   DI tmp_result;
   2336   tmp_prod = MULDI (EXTSIDI (GET_H_GPR (FLD (f_r2))), EXTSIDI (GET_H_GPR (FLD (f_r3))));
   2337   tmp_mac = JOINSIDI (GET_H_MAC_MACHI (), GET_H_MAC_MACLO ());
   2338   tmp_result = ADDDI (tmp_prod, tmp_mac);
   2339   {
   2340     SI opval = SUBWORDDISI (tmp_result, 0);
   2341     SET_H_MAC_MACHI (opval);
   2342     CGEN_TRACE_RESULT (current_cpu, abuf, "mac-machi", 'x', opval);
   2343   }
   2344   {
   2345     SI opval = SUBWORDDISI (tmp_result, 1);
   2346     SET_H_MAC_MACLO (opval);
   2347     CGEN_TRACE_RESULT (current_cpu, abuf, "mac-maclo", 'x', opval);
   2348   }
   2349   {
   2350     BI opval = ADDOFDI (tmp_prod, tmp_mac, 0);
   2351     SET_H_SYS_SR_OV (opval);
   2352     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-ov", 'x', opval);
   2353   }
   2354 }
   2355 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
   2356 or1k32bf_exception (current_cpu, pc, EXCEPT_RANGE);
   2357 }
   2358 }
   2359 
   2360   return vpc;
   2361 #undef FLD
   2362 }
   2363 
   2364 /* l-maci: l.maci $rA,${simm16} */
   2365 
   2366 static SEM_PC
   2367 SEM_FN_NAME (or1k32bf,l_maci) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2368 {
   2369 #define FLD(f) abuf->fields.sfmt_l_lwz.f
   2370   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2371   int UNUSED written = 0;
   2372   IADDR UNUSED pc = abuf->addr;
   2373   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2374 
   2375 {
   2376 {
   2377   DI tmp_prod;
   2378   DI tmp_mac;
   2379   DI tmp_result;
   2380   tmp_prod = MULDI (EXTSIDI (GET_H_GPR (FLD (f_r2))), EXTSIDI (FLD (f_simm16)));
   2381   tmp_mac = JOINSIDI (GET_H_MAC_MACHI (), GET_H_MAC_MACLO ());
   2382   tmp_result = ADDDI (tmp_mac, tmp_prod);
   2383   {
   2384     SI opval = SUBWORDDISI (tmp_result, 0);
   2385     SET_H_MAC_MACHI (opval);
   2386     CGEN_TRACE_RESULT (current_cpu, abuf, "mac-machi", 'x', opval);
   2387   }
   2388   {
   2389     SI opval = SUBWORDDISI (tmp_result, 1);
   2390     SET_H_MAC_MACLO (opval);
   2391     CGEN_TRACE_RESULT (current_cpu, abuf, "mac-maclo", 'x', opval);
   2392   }
   2393   {
   2394     BI opval = ADDOFDI (tmp_prod, tmp_mac, 0);
   2395     SET_H_SYS_SR_OV (opval);
   2396     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-ov", 'x', opval);
   2397   }
   2398 }
   2399 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
   2400 or1k32bf_exception (current_cpu, pc, EXCEPT_RANGE);
   2401 }
   2402 }
   2403 
   2404   return vpc;
   2405 #undef FLD
   2406 }
   2407 
   2408 /* l-macu: l.macu $rA,$rB */
   2409 
   2410 static SEM_PC
   2411 SEM_FN_NAME (or1k32bf,l_macu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2412 {
   2413 #define FLD(f) abuf->fields.sfmt_l_sll.f
   2414   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2415   int UNUSED written = 0;
   2416   IADDR UNUSED pc = abuf->addr;
   2417   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2418 
   2419 {
   2420 {
   2421   DI tmp_prod;
   2422   DI tmp_mac;
   2423   DI tmp_result;
   2424   tmp_prod = MULDI (ZEXTSIDI (GET_H_GPR (FLD (f_r2))), ZEXTSIDI (GET_H_GPR (FLD (f_r3))));
   2425   tmp_mac = JOINSIDI (GET_H_MAC_MACHI (), GET_H_MAC_MACLO ());
   2426   tmp_result = ADDDI (tmp_prod, tmp_mac);
   2427   {
   2428     SI opval = SUBWORDDISI (tmp_result, 0);
   2429     SET_H_MAC_MACHI (opval);
   2430     CGEN_TRACE_RESULT (current_cpu, abuf, "mac-machi", 'x', opval);
   2431   }
   2432   {
   2433     SI opval = SUBWORDDISI (tmp_result, 1);
   2434     SET_H_MAC_MACLO (opval);
   2435     CGEN_TRACE_RESULT (current_cpu, abuf, "mac-maclo", 'x', opval);
   2436   }
   2437   {
   2438     BI opval = ADDCFDI (tmp_prod, tmp_mac, 0);
   2439     SET_H_SYS_SR_CY (opval);
   2440     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-cy", 'x', opval);
   2441   }
   2442 }
   2443 if (ANDIF (GET_H_SYS_SR_CY (), GET_H_SYS_SR_OVE ())) {
   2444 or1k32bf_exception (current_cpu, pc, EXCEPT_RANGE);
   2445 }
   2446 }
   2447 
   2448   return vpc;
   2449 #undef FLD
   2450 }
   2451 
   2452 /* l-msb: l.msb $rA,$rB */
   2453 
   2454 static SEM_PC
   2455 SEM_FN_NAME (or1k32bf,l_msb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2456 {
   2457 #define FLD(f) abuf->fields.sfmt_l_sll.f
   2458   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2459   int UNUSED written = 0;
   2460   IADDR UNUSED pc = abuf->addr;
   2461   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2462 
   2463 {
   2464 {
   2465   DI tmp_prod;
   2466   DI tmp_mac;
   2467   DI tmp_result;
   2468   tmp_prod = MULDI (EXTSIDI (GET_H_GPR (FLD (f_r2))), EXTSIDI (GET_H_GPR (FLD (f_r3))));
   2469   tmp_mac = JOINSIDI (GET_H_MAC_MACHI (), GET_H_MAC_MACLO ());
   2470   tmp_result = SUBDI (tmp_mac, tmp_prod);
   2471   {
   2472     SI opval = SUBWORDDISI (tmp_result, 0);
   2473     SET_H_MAC_MACHI (opval);
   2474     CGEN_TRACE_RESULT (current_cpu, abuf, "mac-machi", 'x', opval);
   2475   }
   2476   {
   2477     SI opval = SUBWORDDISI (tmp_result, 1);
   2478     SET_H_MAC_MACLO (opval);
   2479     CGEN_TRACE_RESULT (current_cpu, abuf, "mac-maclo", 'x', opval);
   2480   }
   2481   {
   2482     BI opval = SUBOFDI (tmp_mac, tmp_result, 0);
   2483     SET_H_SYS_SR_OV (opval);
   2484     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-ov", 'x', opval);
   2485   }
   2486 }
   2487 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
   2488 or1k32bf_exception (current_cpu, pc, EXCEPT_RANGE);
   2489 }
   2490 }
   2491 
   2492   return vpc;
   2493 #undef FLD
   2494 }
   2495 
   2496 /* l-msbu: l.msbu $rA,$rB */
   2497 
   2498 static SEM_PC
   2499 SEM_FN_NAME (or1k32bf,l_msbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2500 {
   2501 #define FLD(f) abuf->fields.sfmt_l_sll.f
   2502   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2503   int UNUSED written = 0;
   2504   IADDR UNUSED pc = abuf->addr;
   2505   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2506 
   2507 {
   2508 {
   2509   DI tmp_prod;
   2510   DI tmp_mac;
   2511   DI tmp_result;
   2512   tmp_prod = MULDI (ZEXTSIDI (GET_H_GPR (FLD (f_r2))), ZEXTSIDI (GET_H_GPR (FLD (f_r3))));
   2513   tmp_mac = JOINSIDI (GET_H_MAC_MACHI (), GET_H_MAC_MACLO ());
   2514   tmp_result = SUBDI (tmp_mac, tmp_prod);
   2515   {
   2516     SI opval = SUBWORDDISI (tmp_result, 0);
   2517     SET_H_MAC_MACHI (opval);
   2518     CGEN_TRACE_RESULT (current_cpu, abuf, "mac-machi", 'x', opval);
   2519   }
   2520   {
   2521     SI opval = SUBWORDDISI (tmp_result, 1);
   2522     SET_H_MAC_MACLO (opval);
   2523     CGEN_TRACE_RESULT (current_cpu, abuf, "mac-maclo", 'x', opval);
   2524   }
   2525   {
   2526     BI opval = SUBCFDI (tmp_mac, tmp_result, 0);
   2527     SET_H_SYS_SR_CY (opval);
   2528     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-cy", 'x', opval);
   2529   }
   2530 }
   2531 if (ANDIF (GET_H_SYS_SR_CY (), GET_H_SYS_SR_OVE ())) {
   2532 or1k32bf_exception (current_cpu, pc, EXCEPT_RANGE);
   2533 }
   2534 }
   2535 
   2536   return vpc;
   2537 #undef FLD
   2538 }
   2539 
   2540 /* l-cust1: l.cust1 */
   2541 
   2542 static SEM_PC
   2543 SEM_FN_NAME (or1k32bf,l_cust1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2544 {
   2545 #define FLD(f) abuf->fields.sfmt_empty.f
   2546   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2547   int UNUSED written = 0;
   2548   IADDR UNUSED pc = abuf->addr;
   2549   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2550 
   2551 ((void) 0); /*nop*/
   2552 
   2553   return vpc;
   2554 #undef FLD
   2555 }
   2556 
   2557 /* l-cust2: l.cust2 */
   2558 
   2559 static SEM_PC
   2560 SEM_FN_NAME (or1k32bf,l_cust2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2561 {
   2562 #define FLD(f) abuf->fields.sfmt_empty.f
   2563   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2564   int UNUSED written = 0;
   2565   IADDR UNUSED pc = abuf->addr;
   2566   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2567 
   2568 ((void) 0); /*nop*/
   2569 
   2570   return vpc;
   2571 #undef FLD
   2572 }
   2573 
   2574 /* l-cust3: l.cust3 */
   2575 
   2576 static SEM_PC
   2577 SEM_FN_NAME (or1k32bf,l_cust3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2578 {
   2579 #define FLD(f) abuf->fields.sfmt_empty.f
   2580   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2581   int UNUSED written = 0;
   2582   IADDR UNUSED pc = abuf->addr;
   2583   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2584 
   2585 ((void) 0); /*nop*/
   2586 
   2587   return vpc;
   2588 #undef FLD
   2589 }
   2590 
   2591 /* l-cust4: l.cust4 */
   2592 
   2593 static SEM_PC
   2594 SEM_FN_NAME (or1k32bf,l_cust4) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2595 {
   2596 #define FLD(f) abuf->fields.sfmt_empty.f
   2597   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2598   int UNUSED written = 0;
   2599   IADDR UNUSED pc = abuf->addr;
   2600   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2601 
   2602 ((void) 0); /*nop*/
   2603 
   2604   return vpc;
   2605 #undef FLD
   2606 }
   2607 
   2608 /* l-cust5: l.cust5 */
   2609 
   2610 static SEM_PC
   2611 SEM_FN_NAME (or1k32bf,l_cust5) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2612 {
   2613 #define FLD(f) abuf->fields.sfmt_empty.f
   2614   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2615   int UNUSED written = 0;
   2616   IADDR UNUSED pc = abuf->addr;
   2617   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2618 
   2619 ((void) 0); /*nop*/
   2620 
   2621   return vpc;
   2622 #undef FLD
   2623 }
   2624 
   2625 /* l-cust6: l.cust6 */
   2626 
   2627 static SEM_PC
   2628 SEM_FN_NAME (or1k32bf,l_cust6) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2629 {
   2630 #define FLD(f) abuf->fields.sfmt_empty.f
   2631   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2632   int UNUSED written = 0;
   2633   IADDR UNUSED pc = abuf->addr;
   2634   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2635 
   2636 ((void) 0); /*nop*/
   2637 
   2638   return vpc;
   2639 #undef FLD
   2640 }
   2641 
   2642 /* l-cust7: l.cust7 */
   2643 
   2644 static SEM_PC
   2645 SEM_FN_NAME (or1k32bf,l_cust7) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2646 {
   2647 #define FLD(f) abuf->fields.sfmt_empty.f
   2648   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2649   int UNUSED written = 0;
   2650   IADDR UNUSED pc = abuf->addr;
   2651   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2652 
   2653 ((void) 0); /*nop*/
   2654 
   2655   return vpc;
   2656 #undef FLD
   2657 }
   2658 
   2659 /* l-cust8: l.cust8 */
   2660 
   2661 static SEM_PC
   2662 SEM_FN_NAME (or1k32bf,l_cust8) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2663 {
   2664 #define FLD(f) abuf->fields.sfmt_empty.f
   2665   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2666   int UNUSED written = 0;
   2667   IADDR UNUSED pc = abuf->addr;
   2668   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2669 
   2670 ((void) 0); /*nop*/
   2671 
   2672   return vpc;
   2673 #undef FLD
   2674 }
   2675 
   2676 /* lf-add-s: lf.add.s $rDSF,$rASF,$rBSF */
   2677 
   2678 static SEM_PC
   2679 SEM_FN_NAME (or1k32bf,lf_add_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2680 {
   2681 #define FLD(f) abuf->fields.sfmt_l_sll.f
   2682   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2683   int UNUSED written = 0;
   2684   IADDR UNUSED pc = abuf->addr;
   2685   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2686 
   2687   {
   2688     SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3)));
   2689     SET_H_FSR (FLD (f_r1), opval);
   2690     CGEN_TRACE_RESULT (current_cpu, abuf, "fsr", 'f', opval);
   2691   }
   2692 
   2693   return vpc;
   2694 #undef FLD
   2695 }
   2696 
   2697 /* lf-add-d32: lf.add.d $rDD32F,$rAD32F,$rBD32F */
   2698 
   2699 static SEM_PC
   2700 SEM_FN_NAME (or1k32bf,lf_add_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2701 {
   2702 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   2703   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2704   int UNUSED written = 0;
   2705   IADDR UNUSED pc = abuf->addr;
   2706   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2707 
   2708   {
   2709     DF opval = CGEN_CPU_FPU (current_cpu)->ops->adddf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32)));
   2710     SET_H_FD32R (FLD (f_rdd32), opval);
   2711     CGEN_TRACE_RESULT (current_cpu, abuf, "fd32r", 'f', opval);
   2712   }
   2713 
   2714   return vpc;
   2715 #undef FLD
   2716 }
   2717 
   2718 /* lf-sub-s: lf.sub.s $rDSF,$rASF,$rBSF */
   2719 
   2720 static SEM_PC
   2721 SEM_FN_NAME (or1k32bf,lf_sub_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2722 {
   2723 #define FLD(f) abuf->fields.sfmt_l_sll.f
   2724   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2725   int UNUSED written = 0;
   2726   IADDR UNUSED pc = abuf->addr;
   2727   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2728 
   2729   {
   2730     SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3)));
   2731     SET_H_FSR (FLD (f_r1), opval);
   2732     CGEN_TRACE_RESULT (current_cpu, abuf, "fsr", 'f', opval);
   2733   }
   2734 
   2735   return vpc;
   2736 #undef FLD
   2737 }
   2738 
   2739 /* lf-sub-d32: lf.sub.d $rDD32F,$rAD32F,$rBD32F */
   2740 
   2741 static SEM_PC
   2742 SEM_FN_NAME (or1k32bf,lf_sub_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2743 {
   2744 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   2745   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2746   int UNUSED written = 0;
   2747   IADDR UNUSED pc = abuf->addr;
   2748   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2749 
   2750   {
   2751     DF opval = CGEN_CPU_FPU (current_cpu)->ops->subdf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32)));
   2752     SET_H_FD32R (FLD (f_rdd32), opval);
   2753     CGEN_TRACE_RESULT (current_cpu, abuf, "fd32r", 'f', opval);
   2754   }
   2755 
   2756   return vpc;
   2757 #undef FLD
   2758 }
   2759 
   2760 /* lf-mul-s: lf.mul.s $rDSF,$rASF,$rBSF */
   2761 
   2762 static SEM_PC
   2763 SEM_FN_NAME (or1k32bf,lf_mul_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2764 {
   2765 #define FLD(f) abuf->fields.sfmt_l_sll.f
   2766   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2767   int UNUSED written = 0;
   2768   IADDR UNUSED pc = abuf->addr;
   2769   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2770 
   2771   {
   2772     SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3)));
   2773     SET_H_FSR (FLD (f_r1), opval);
   2774     CGEN_TRACE_RESULT (current_cpu, abuf, "fsr", 'f', opval);
   2775   }
   2776 
   2777   return vpc;
   2778 #undef FLD
   2779 }
   2780 
   2781 /* lf-mul-d32: lf.mul.d $rDD32F,$rAD32F,$rBD32F */
   2782 
   2783 static SEM_PC
   2784 SEM_FN_NAME (or1k32bf,lf_mul_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2785 {
   2786 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   2787   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2788   int UNUSED written = 0;
   2789   IADDR UNUSED pc = abuf->addr;
   2790   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2791 
   2792   {
   2793     DF opval = CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32)));
   2794     SET_H_FD32R (FLD (f_rdd32), opval);
   2795     CGEN_TRACE_RESULT (current_cpu, abuf, "fd32r", 'f', opval);
   2796   }
   2797 
   2798   return vpc;
   2799 #undef FLD
   2800 }
   2801 
   2802 /* lf-div-s: lf.div.s $rDSF,$rASF,$rBSF */
   2803 
   2804 static SEM_PC
   2805 SEM_FN_NAME (or1k32bf,lf_div_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2806 {
   2807 #define FLD(f) abuf->fields.sfmt_l_sll.f
   2808   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2809   int UNUSED written = 0;
   2810   IADDR UNUSED pc = abuf->addr;
   2811   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2812 
   2813   {
   2814     SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3)));
   2815     SET_H_FSR (FLD (f_r1), opval);
   2816     CGEN_TRACE_RESULT (current_cpu, abuf, "fsr", 'f', opval);
   2817   }
   2818 
   2819   return vpc;
   2820 #undef FLD
   2821 }
   2822 
   2823 /* lf-div-d32: lf.div.d $rDD32F,$rAD32F,$rBD32F */
   2824 
   2825 static SEM_PC
   2826 SEM_FN_NAME (or1k32bf,lf_div_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2827 {
   2828 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   2829   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2830   int UNUSED written = 0;
   2831   IADDR UNUSED pc = abuf->addr;
   2832   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2833 
   2834   {
   2835     DF opval = CGEN_CPU_FPU (current_cpu)->ops->divdf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32)));
   2836     SET_H_FD32R (FLD (f_rdd32), opval);
   2837     CGEN_TRACE_RESULT (current_cpu, abuf, "fd32r", 'f', opval);
   2838   }
   2839 
   2840   return vpc;
   2841 #undef FLD
   2842 }
   2843 
   2844 /* lf-rem-s: lf.rem.s $rDSF,$rASF,$rBSF */
   2845 
   2846 static SEM_PC
   2847 SEM_FN_NAME (or1k32bf,lf_rem_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2848 {
   2849 #define FLD(f) abuf->fields.sfmt_l_sll.f
   2850   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2851   int UNUSED written = 0;
   2852   IADDR UNUSED pc = abuf->addr;
   2853   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2854 
   2855   {
   2856     SF opval = CGEN_CPU_FPU (current_cpu)->ops->remsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3)));
   2857     SET_H_FSR (FLD (f_r1), opval);
   2858     CGEN_TRACE_RESULT (current_cpu, abuf, "fsr", 'f', opval);
   2859   }
   2860 
   2861   return vpc;
   2862 #undef FLD
   2863 }
   2864 
   2865 /* lf-rem-d32: lf.rem.d $rDD32F,$rAD32F,$rBD32F */
   2866 
   2867 static SEM_PC
   2868 SEM_FN_NAME (or1k32bf,lf_rem_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2869 {
   2870 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   2871   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2872   int UNUSED written = 0;
   2873   IADDR UNUSED pc = abuf->addr;
   2874   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2875 
   2876   {
   2877     DF opval = CGEN_CPU_FPU (current_cpu)->ops->remdf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32)));
   2878     SET_H_FD32R (FLD (f_rdd32), opval);
   2879     CGEN_TRACE_RESULT (current_cpu, abuf, "fd32r", 'f', opval);
   2880   }
   2881 
   2882   return vpc;
   2883 #undef FLD
   2884 }
   2885 
   2886 /* lf-itof-s: lf.itof.s $rDSF,$rA */
   2887 
   2888 static SEM_PC
   2889 SEM_FN_NAME (or1k32bf,lf_itof_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2890 {
   2891 #define FLD(f) abuf->fields.sfmt_l_slli.f
   2892   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2893   int UNUSED written = 0;
   2894   IADDR UNUSED pc = abuf->addr;
   2895   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2896 
   2897   {
   2898     SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), (GET_H_SYS_FPCSR_RM () == 0) ? (1) : (GET_H_SYS_FPCSR_RM () == 1) ? (3) : (GET_H_SYS_FPCSR_RM () == 2) ? (4) : (5), TRUNCSISI (GET_H_GPR (FLD (f_r2))));
   2899     SET_H_FSR (FLD (f_r1), opval);
   2900     CGEN_TRACE_RESULT (current_cpu, abuf, "fsr", 'f', opval);
   2901   }
   2902 
   2903   return vpc;
   2904 #undef FLD
   2905 }
   2906 
   2907 /* lf-itof-d32: lf.itof.d $rDD32F,$rADI */
   2908 
   2909 static SEM_PC
   2910 SEM_FN_NAME (or1k32bf,lf_itof_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2911 {
   2912 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   2913   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2914   int UNUSED written = 0;
   2915   IADDR UNUSED pc = abuf->addr;
   2916   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2917 
   2918   {
   2919     DF opval = CGEN_CPU_FPU (current_cpu)->ops->floatdidf (CGEN_CPU_FPU (current_cpu), (GET_H_SYS_FPCSR_RM () == 0) ? (1) : (GET_H_SYS_FPCSR_RM () == 1) ? (3) : (GET_H_SYS_FPCSR_RM () == 2) ? (4) : (5), GET_H_I64R (FLD (f_rad32)));
   2920     SET_H_FD32R (FLD (f_rdd32), opval);
   2921     CGEN_TRACE_RESULT (current_cpu, abuf, "fd32r", 'f', opval);
   2922   }
   2923 
   2924   return vpc;
   2925 #undef FLD
   2926 }
   2927 
   2928 /* lf-ftoi-s: lf.ftoi.s $rD,$rASF */
   2929 
   2930 static SEM_PC
   2931 SEM_FN_NAME (or1k32bf,lf_ftoi_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2932 {
   2933 #define FLD(f) abuf->fields.sfmt_l_slli.f
   2934   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2935   int UNUSED written = 0;
   2936   IADDR UNUSED pc = abuf->addr;
   2937   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2938 
   2939   {
   2940     SI opval = EXTSISI (CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), (GET_H_SYS_FPCSR_RM () == 0) ? (1) : (GET_H_SYS_FPCSR_RM () == 1) ? (3) : (GET_H_SYS_FPCSR_RM () == 2) ? (4) : (5), GET_H_FSR (FLD (f_r2))));
   2941     SET_H_GPR (FLD (f_r1), opval);
   2942     CGEN_TRACE_RESULT (current_cpu, abuf, "gpr", 'x', opval);
   2943   }
   2944 
   2945   return vpc;
   2946 #undef FLD
   2947 }
   2948 
   2949 /* lf-ftoi-d32: lf.ftoi.d $rDDI,$rAD32F */
   2950 
   2951 static SEM_PC
   2952 SEM_FN_NAME (or1k32bf,lf_ftoi_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2953 {
   2954 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   2955   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2956   int UNUSED written = 0;
   2957   IADDR UNUSED pc = abuf->addr;
   2958   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2959 
   2960   {
   2961     DI opval = CGEN_CPU_FPU (current_cpu)->ops->fixdfdi (CGEN_CPU_FPU (current_cpu), (GET_H_SYS_FPCSR_RM () == 0) ? (1) : (GET_H_SYS_FPCSR_RM () == 1) ? (3) : (GET_H_SYS_FPCSR_RM () == 2) ? (4) : (5), GET_H_FD32R (FLD (f_rad32)));
   2962     SET_H_I64R (FLD (f_rdd32), opval);
   2963     CGEN_TRACE_RESULT (current_cpu, abuf, "i64r", 'D', opval);
   2964   }
   2965 
   2966   return vpc;
   2967 #undef FLD
   2968 }
   2969 
   2970 /* lf-sfeq-s: lf.sfeq.s $rASF,$rBSF */
   2971 
   2972 static SEM_PC
   2973 SEM_FN_NAME (or1k32bf,lf_sfeq_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2974 {
   2975 #define FLD(f) abuf->fields.sfmt_l_sll.f
   2976   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2977   int UNUSED written = 0;
   2978   IADDR UNUSED pc = abuf->addr;
   2979   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   2980 
   2981   {
   2982     BI opval = CGEN_CPU_FPU (current_cpu)->ops->eqsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3)));
   2983     SET_H_SYS_SR_F (opval);
   2984     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   2985   }
   2986 
   2987   return vpc;
   2988 #undef FLD
   2989 }
   2990 
   2991 /* lf-sfeq-d32: lf.sfeq.d $rAD32F,$rBD32F */
   2992 
   2993 static SEM_PC
   2994 SEM_FN_NAME (or1k32bf,lf_sfeq_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   2995 {
   2996 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   2997   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   2998   int UNUSED written = 0;
   2999   IADDR UNUSED pc = abuf->addr;
   3000   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3001 
   3002   {
   3003     BI opval = CGEN_CPU_FPU (current_cpu)->ops->eqdf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32)));
   3004     SET_H_SYS_SR_F (opval);
   3005     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3006   }
   3007 
   3008   return vpc;
   3009 #undef FLD
   3010 }
   3011 
   3012 /* lf-sfne-s: lf.sfne.s $rASF,$rBSF */
   3013 
   3014 static SEM_PC
   3015 SEM_FN_NAME (or1k32bf,lf_sfne_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3016 {
   3017 #define FLD(f) abuf->fields.sfmt_l_sll.f
   3018   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3019   int UNUSED written = 0;
   3020   IADDR UNUSED pc = abuf->addr;
   3021   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3022 
   3023   {
   3024     BI opval = CGEN_CPU_FPU (current_cpu)->ops->nesf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3)));
   3025     SET_H_SYS_SR_F (opval);
   3026     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3027   }
   3028 
   3029   return vpc;
   3030 #undef FLD
   3031 }
   3032 
   3033 /* lf-sfne-d32: lf.sfne.d $rAD32F,$rBD32F */
   3034 
   3035 static SEM_PC
   3036 SEM_FN_NAME (or1k32bf,lf_sfne_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3037 {
   3038 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   3039   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3040   int UNUSED written = 0;
   3041   IADDR UNUSED pc = abuf->addr;
   3042   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3043 
   3044   {
   3045     BI opval = CGEN_CPU_FPU (current_cpu)->ops->nedf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32)));
   3046     SET_H_SYS_SR_F (opval);
   3047     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3048   }
   3049 
   3050   return vpc;
   3051 #undef FLD
   3052 }
   3053 
   3054 /* lf-sfge-s: lf.sfge.s $rASF,$rBSF */
   3055 
   3056 static SEM_PC
   3057 SEM_FN_NAME (or1k32bf,lf_sfge_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3058 {
   3059 #define FLD(f) abuf->fields.sfmt_l_sll.f
   3060   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3061   int UNUSED written = 0;
   3062   IADDR UNUSED pc = abuf->addr;
   3063   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3064 
   3065   {
   3066     BI opval = CGEN_CPU_FPU (current_cpu)->ops->gesf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3)));
   3067     SET_H_SYS_SR_F (opval);
   3068     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3069   }
   3070 
   3071   return vpc;
   3072 #undef FLD
   3073 }
   3074 
   3075 /* lf-sfge-d32: lf.sfge.d $rAD32F,$rBD32F */
   3076 
   3077 static SEM_PC
   3078 SEM_FN_NAME (or1k32bf,lf_sfge_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3079 {
   3080 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   3081   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3082   int UNUSED written = 0;
   3083   IADDR UNUSED pc = abuf->addr;
   3084   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3085 
   3086   {
   3087     BI opval = CGEN_CPU_FPU (current_cpu)->ops->gedf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32)));
   3088     SET_H_SYS_SR_F (opval);
   3089     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3090   }
   3091 
   3092   return vpc;
   3093 #undef FLD
   3094 }
   3095 
   3096 /* lf-sfgt-s: lf.sfgt.s $rASF,$rBSF */
   3097 
   3098 static SEM_PC
   3099 SEM_FN_NAME (or1k32bf,lf_sfgt_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3100 {
   3101 #define FLD(f) abuf->fields.sfmt_l_sll.f
   3102   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3103   int UNUSED written = 0;
   3104   IADDR UNUSED pc = abuf->addr;
   3105   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3106 
   3107   {
   3108     BI opval = CGEN_CPU_FPU (current_cpu)->ops->gtsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3)));
   3109     SET_H_SYS_SR_F (opval);
   3110     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3111   }
   3112 
   3113   return vpc;
   3114 #undef FLD
   3115 }
   3116 
   3117 /* lf-sfgt-d32: lf.sfgt.d $rAD32F,$rBD32F */
   3118 
   3119 static SEM_PC
   3120 SEM_FN_NAME (or1k32bf,lf_sfgt_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3121 {
   3122 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   3123   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3124   int UNUSED written = 0;
   3125   IADDR UNUSED pc = abuf->addr;
   3126   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3127 
   3128   {
   3129     BI opval = CGEN_CPU_FPU (current_cpu)->ops->gtdf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32)));
   3130     SET_H_SYS_SR_F (opval);
   3131     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3132   }
   3133 
   3134   return vpc;
   3135 #undef FLD
   3136 }
   3137 
   3138 /* lf-sflt-s: lf.sflt.s $rASF,$rBSF */
   3139 
   3140 static SEM_PC
   3141 SEM_FN_NAME (or1k32bf,lf_sflt_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3142 {
   3143 #define FLD(f) abuf->fields.sfmt_l_sll.f
   3144   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3145   int UNUSED written = 0;
   3146   IADDR UNUSED pc = abuf->addr;
   3147   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3148 
   3149   {
   3150     BI opval = CGEN_CPU_FPU (current_cpu)->ops->ltsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3)));
   3151     SET_H_SYS_SR_F (opval);
   3152     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3153   }
   3154 
   3155   return vpc;
   3156 #undef FLD
   3157 }
   3158 
   3159 /* lf-sflt-d32: lf.sflt.d $rAD32F,$rBD32F */
   3160 
   3161 static SEM_PC
   3162 SEM_FN_NAME (or1k32bf,lf_sflt_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3163 {
   3164 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   3165   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3166   int UNUSED written = 0;
   3167   IADDR UNUSED pc = abuf->addr;
   3168   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3169 
   3170   {
   3171     BI opval = CGEN_CPU_FPU (current_cpu)->ops->ltdf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32)));
   3172     SET_H_SYS_SR_F (opval);
   3173     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3174   }
   3175 
   3176   return vpc;
   3177 #undef FLD
   3178 }
   3179 
   3180 /* lf-sfle-s: lf.sfle.s $rASF,$rBSF */
   3181 
   3182 static SEM_PC
   3183 SEM_FN_NAME (or1k32bf,lf_sfle_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3184 {
   3185 #define FLD(f) abuf->fields.sfmt_l_sll.f
   3186   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3187   int UNUSED written = 0;
   3188   IADDR UNUSED pc = abuf->addr;
   3189   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3190 
   3191   {
   3192     BI opval = CGEN_CPU_FPU (current_cpu)->ops->lesf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3)));
   3193     SET_H_SYS_SR_F (opval);
   3194     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3195   }
   3196 
   3197   return vpc;
   3198 #undef FLD
   3199 }
   3200 
   3201 /* lf-sfle-d32: lf.sfle.d $rAD32F,$rBD32F */
   3202 
   3203 static SEM_PC
   3204 SEM_FN_NAME (or1k32bf,lf_sfle_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3205 {
   3206 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   3207   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3208   int UNUSED written = 0;
   3209   IADDR UNUSED pc = abuf->addr;
   3210   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3211 
   3212   {
   3213     BI opval = CGEN_CPU_FPU (current_cpu)->ops->ledf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32)));
   3214     SET_H_SYS_SR_F (opval);
   3215     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3216   }
   3217 
   3218   return vpc;
   3219 #undef FLD
   3220 }
   3221 
   3222 /* lf-sfueq-s: lf.sfueq.s $rASF,$rBSF */
   3223 
   3224 static SEM_PC
   3225 SEM_FN_NAME (or1k32bf,lf_sfueq_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3226 {
   3227 #define FLD(f) abuf->fields.sfmt_l_sll.f
   3228   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3229   int UNUSED written = 0;
   3230   IADDR UNUSED pc = abuf->addr;
   3231   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3232 
   3233   {
   3234     BI opval = ORBI (CGEN_CPU_FPU (current_cpu)->ops->unorderedsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3))), CGEN_CPU_FPU (current_cpu)->ops->eqsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3))));
   3235     SET_H_SYS_SR_F (opval);
   3236     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3237   }
   3238 
   3239   return vpc;
   3240 #undef FLD
   3241 }
   3242 
   3243 /* lf-sfueq-d32: lf.sfueq.d $rAD32F,$rBD32F */
   3244 
   3245 static SEM_PC
   3246 SEM_FN_NAME (or1k32bf,lf_sfueq_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3247 {
   3248 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   3249   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3250   int UNUSED written = 0;
   3251   IADDR UNUSED pc = abuf->addr;
   3252   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3253 
   3254   {
   3255     BI opval = ORBI (CGEN_CPU_FPU (current_cpu)->ops->unordereddf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32))), CGEN_CPU_FPU (current_cpu)->ops->eqdf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32))));
   3256     SET_H_SYS_SR_F (opval);
   3257     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3258   }
   3259 
   3260   return vpc;
   3261 #undef FLD
   3262 }
   3263 
   3264 /* lf-sfune-s: lf.sfune.s $rASF,$rBSF */
   3265 
   3266 static SEM_PC
   3267 SEM_FN_NAME (or1k32bf,lf_sfune_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3268 {
   3269 #define FLD(f) abuf->fields.sfmt_l_sll.f
   3270   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3271   int UNUSED written = 0;
   3272   IADDR UNUSED pc = abuf->addr;
   3273   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3274 
   3275   {
   3276     BI opval = ORBI (CGEN_CPU_FPU (current_cpu)->ops->unorderedsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3))), CGEN_CPU_FPU (current_cpu)->ops->nesf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3))));
   3277     SET_H_SYS_SR_F (opval);
   3278     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3279   }
   3280 
   3281   return vpc;
   3282 #undef FLD
   3283 }
   3284 
   3285 /* lf-sfune-d32: lf.sfune.d $rAD32F,$rBD32F */
   3286 
   3287 static SEM_PC
   3288 SEM_FN_NAME (or1k32bf,lf_sfune_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3289 {
   3290 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   3291   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3292   int UNUSED written = 0;
   3293   IADDR UNUSED pc = abuf->addr;
   3294   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3295 
   3296   {
   3297     BI opval = ORBI (CGEN_CPU_FPU (current_cpu)->ops->unordereddf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32))), CGEN_CPU_FPU (current_cpu)->ops->nedf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32))));
   3298     SET_H_SYS_SR_F (opval);
   3299     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3300   }
   3301 
   3302   return vpc;
   3303 #undef FLD
   3304 }
   3305 
   3306 /* lf-sfugt-s: lf.sfugt.s $rASF,$rBSF */
   3307 
   3308 static SEM_PC
   3309 SEM_FN_NAME (or1k32bf,lf_sfugt_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3310 {
   3311 #define FLD(f) abuf->fields.sfmt_l_sll.f
   3312   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3313   int UNUSED written = 0;
   3314   IADDR UNUSED pc = abuf->addr;
   3315   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3316 
   3317   {
   3318     BI opval = ORBI (CGEN_CPU_FPU (current_cpu)->ops->unorderedsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3))), CGEN_CPU_FPU (current_cpu)->ops->gtsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3))));
   3319     SET_H_SYS_SR_F (opval);
   3320     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3321   }
   3322 
   3323   return vpc;
   3324 #undef FLD
   3325 }
   3326 
   3327 /* lf-sfugt-d32: lf.sfugt.d $rAD32F,$rBD32F */
   3328 
   3329 static SEM_PC
   3330 SEM_FN_NAME (or1k32bf,lf_sfugt_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3331 {
   3332 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   3333   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3334   int UNUSED written = 0;
   3335   IADDR UNUSED pc = abuf->addr;
   3336   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3337 
   3338   {
   3339     BI opval = ORBI (CGEN_CPU_FPU (current_cpu)->ops->unordereddf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32))), CGEN_CPU_FPU (current_cpu)->ops->gtdf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32))));
   3340     SET_H_SYS_SR_F (opval);
   3341     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3342   }
   3343 
   3344   return vpc;
   3345 #undef FLD
   3346 }
   3347 
   3348 /* lf-sfuge-s: lf.sfuge.s $rASF,$rBSF */
   3349 
   3350 static SEM_PC
   3351 SEM_FN_NAME (or1k32bf,lf_sfuge_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3352 {
   3353 #define FLD(f) abuf->fields.sfmt_l_sll.f
   3354   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3355   int UNUSED written = 0;
   3356   IADDR UNUSED pc = abuf->addr;
   3357   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3358 
   3359   {
   3360     BI opval = ORBI (CGEN_CPU_FPU (current_cpu)->ops->unorderedsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3))), CGEN_CPU_FPU (current_cpu)->ops->gesf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3))));
   3361     SET_H_SYS_SR_F (opval);
   3362     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3363   }
   3364 
   3365   return vpc;
   3366 #undef FLD
   3367 }
   3368 
   3369 /* lf-sfuge-d32: lf.sfuge.d $rAD32F,$rBD32F */
   3370 
   3371 static SEM_PC
   3372 SEM_FN_NAME (or1k32bf,lf_sfuge_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3373 {
   3374 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   3375   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3376   int UNUSED written = 0;
   3377   IADDR UNUSED pc = abuf->addr;
   3378   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3379 
   3380   {
   3381     BI opval = ORBI (CGEN_CPU_FPU (current_cpu)->ops->unordereddf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32))), CGEN_CPU_FPU (current_cpu)->ops->gedf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32))));
   3382     SET_H_SYS_SR_F (opval);
   3383     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3384   }
   3385 
   3386   return vpc;
   3387 #undef FLD
   3388 }
   3389 
   3390 /* lf-sfult-s: lf.sfult.s $rASF,$rBSF */
   3391 
   3392 static SEM_PC
   3393 SEM_FN_NAME (or1k32bf,lf_sfult_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3394 {
   3395 #define FLD(f) abuf->fields.sfmt_l_sll.f
   3396   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3397   int UNUSED written = 0;
   3398   IADDR UNUSED pc = abuf->addr;
   3399   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3400 
   3401   {
   3402     BI opval = ORBI (CGEN_CPU_FPU (current_cpu)->ops->unorderedsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3))), CGEN_CPU_FPU (current_cpu)->ops->ltsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3))));
   3403     SET_H_SYS_SR_F (opval);
   3404     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3405   }
   3406 
   3407   return vpc;
   3408 #undef FLD
   3409 }
   3410 
   3411 /* lf-sfult-d32: lf.sfult.d $rAD32F,$rBD32F */
   3412 
   3413 static SEM_PC
   3414 SEM_FN_NAME (or1k32bf,lf_sfult_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3415 {
   3416 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   3417   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3418   int UNUSED written = 0;
   3419   IADDR UNUSED pc = abuf->addr;
   3420   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3421 
   3422   {
   3423     BI opval = ORBI (CGEN_CPU_FPU (current_cpu)->ops->unordereddf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32))), CGEN_CPU_FPU (current_cpu)->ops->ltdf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32))));
   3424     SET_H_SYS_SR_F (opval);
   3425     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3426   }
   3427 
   3428   return vpc;
   3429 #undef FLD
   3430 }
   3431 
   3432 /* lf-sfule-s: lf.sfule.s $rASF,$rBSF */
   3433 
   3434 static SEM_PC
   3435 SEM_FN_NAME (or1k32bf,lf_sfule_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3436 {
   3437 #define FLD(f) abuf->fields.sfmt_l_sll.f
   3438   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3439   int UNUSED written = 0;
   3440   IADDR UNUSED pc = abuf->addr;
   3441   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3442 
   3443   {
   3444     BI opval = ORBI (CGEN_CPU_FPU (current_cpu)->ops->unorderedsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3))), CGEN_CPU_FPU (current_cpu)->ops->lesf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3))));
   3445     SET_H_SYS_SR_F (opval);
   3446     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3447   }
   3448 
   3449   return vpc;
   3450 #undef FLD
   3451 }
   3452 
   3453 /* lf-sfule-d32: lf.sfule.d $rAD32F,$rBD32F */
   3454 
   3455 static SEM_PC
   3456 SEM_FN_NAME (or1k32bf,lf_sfule_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3457 {
   3458 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   3459   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3460   int UNUSED written = 0;
   3461   IADDR UNUSED pc = abuf->addr;
   3462   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3463 
   3464   {
   3465     BI opval = ORBI (CGEN_CPU_FPU (current_cpu)->ops->unordereddf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32))), CGEN_CPU_FPU (current_cpu)->ops->ledf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32))));
   3466     SET_H_SYS_SR_F (opval);
   3467     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3468   }
   3469 
   3470   return vpc;
   3471 #undef FLD
   3472 }
   3473 
   3474 /* lf-sfun-s: lf.sfun.s $rASF,$rBSF */
   3475 
   3476 static SEM_PC
   3477 SEM_FN_NAME (or1k32bf,lf_sfun_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3478 {
   3479 #define FLD(f) abuf->fields.sfmt_l_sll.f
   3480   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3481   int UNUSED written = 0;
   3482   IADDR UNUSED pc = abuf->addr;
   3483   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3484 
   3485   {
   3486     BI opval = CGEN_CPU_FPU (current_cpu)->ops->unorderedsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3)));
   3487     SET_H_SYS_SR_F (opval);
   3488     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3489   }
   3490 
   3491   return vpc;
   3492 #undef FLD
   3493 }
   3494 
   3495 /* lf-sfun-d32: lf.sfun.d $rAD32F,$rBD32F */
   3496 
   3497 static SEM_PC
   3498 SEM_FN_NAME (or1k32bf,lf_sfun_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3499 {
   3500 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   3501   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3502   int UNUSED written = 0;
   3503   IADDR UNUSED pc = abuf->addr;
   3504   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3505 
   3506   {
   3507     BI opval = CGEN_CPU_FPU (current_cpu)->ops->unordereddf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32)));
   3508     SET_H_SYS_SR_F (opval);
   3509     CGEN_TRACE_RESULT (current_cpu, abuf, "sys-sr-f", 'x', opval);
   3510   }
   3511 
   3512   return vpc;
   3513 #undef FLD
   3514 }
   3515 
   3516 /* lf-madd-s: lf.madd.s $rDSF,$rASF,$rBSF */
   3517 
   3518 static SEM_PC
   3519 SEM_FN_NAME (or1k32bf,lf_madd_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3520 {
   3521 #define FLD(f) abuf->fields.sfmt_l_sll.f
   3522   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3523   int UNUSED written = 0;
   3524   IADDR UNUSED pc = abuf->addr;
   3525   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3526 
   3527   {
   3528     SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FSR (FLD (f_r2)), GET_H_FSR (FLD (f_r3))), GET_H_FSR (FLD (f_r1)));
   3529     SET_H_FSR (FLD (f_r1), opval);
   3530     CGEN_TRACE_RESULT (current_cpu, abuf, "fsr", 'f', opval);
   3531   }
   3532 
   3533   return vpc;
   3534 #undef FLD
   3535 }
   3536 
   3537 /* lf-madd-d32: lf.madd.d $rDD32F,$rAD32F,$rBD32F */
   3538 
   3539 static SEM_PC
   3540 SEM_FN_NAME (or1k32bf,lf_madd_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3541 {
   3542 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
   3543   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3544   int UNUSED written = 0;
   3545   IADDR UNUSED pc = abuf->addr;
   3546   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3547 
   3548   {
   3549     DF opval = CGEN_CPU_FPU (current_cpu)->ops->adddf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), GET_H_FD32R (FLD (f_rad32)), GET_H_FD32R (FLD (f_rbd32))), GET_H_FD32R (FLD (f_rdd32)));
   3550     SET_H_FD32R (FLD (f_rdd32), opval);
   3551     CGEN_TRACE_RESULT (current_cpu, abuf, "fd32r", 'f', opval);
   3552   }
   3553 
   3554   return vpc;
   3555 #undef FLD
   3556 }
   3557 
   3558 /* lf-cust1-s: lf.cust1.s $rASF,$rBSF */
   3559 
   3560 static SEM_PC
   3561 SEM_FN_NAME (or1k32bf,lf_cust1_s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3562 {
   3563 #define FLD(f) abuf->fields.sfmt_empty.f
   3564   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3565   int UNUSED written = 0;
   3566   IADDR UNUSED pc = abuf->addr;
   3567   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3568 
   3569 ((void) 0); /*nop*/
   3570 
   3571   return vpc;
   3572 #undef FLD
   3573 }
   3574 
   3575 /* lf-cust1-d32: lf.cust1.d */
   3576 
   3577 static SEM_PC
   3578 SEM_FN_NAME (or1k32bf,lf_cust1_d32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   3579 {
   3580 #define FLD(f) abuf->fields.sfmt_empty.f
   3581   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   3582   int UNUSED written = 0;
   3583   IADDR UNUSED pc = abuf->addr;
   3584   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
   3585 
   3586 ((void) 0); /*nop*/
   3587 
   3588   return vpc;
   3589 #undef FLD
   3590 }
   3591 
   3592 /* Table of all semantic fns.  */
   3593 
   3594 static const struct sem_fn_desc sem_fns[] = {
   3595   { OR1K32BF_INSN_X_INVALID, SEM_FN_NAME (or1k32bf,x_invalid) },
   3596   { OR1K32BF_INSN_X_AFTER, SEM_FN_NAME (or1k32bf,x_after) },
   3597   { OR1K32BF_INSN_X_BEFORE, SEM_FN_NAME (or1k32bf,x_before) },
   3598   { OR1K32BF_INSN_X_CTI_CHAIN, SEM_FN_NAME (or1k32bf,x_cti_chain) },
   3599   { OR1K32BF_INSN_X_CHAIN, SEM_FN_NAME (or1k32bf,x_chain) },
   3600   { OR1K32BF_INSN_X_BEGIN, SEM_FN_NAME (or1k32bf,x_begin) },
   3601   { OR1K32BF_INSN_L_J, SEM_FN_NAME (or1k32bf,l_j) },
   3602   { OR1K32BF_INSN_L_ADRP, SEM_FN_NAME (or1k32bf,l_adrp) },
   3603   { OR1K32BF_INSN_L_JAL, SEM_FN_NAME (or1k32bf,l_jal) },
   3604   { OR1K32BF_INSN_L_JR, SEM_FN_NAME (or1k32bf,l_jr) },
   3605   { OR1K32BF_INSN_L_JALR, SEM_FN_NAME (or1k32bf,l_jalr) },
   3606   { OR1K32BF_INSN_L_BNF, SEM_FN_NAME (or1k32bf,l_bnf) },
   3607   { OR1K32BF_INSN_L_BF, SEM_FN_NAME (or1k32bf,l_bf) },
   3608   { OR1K32BF_INSN_L_TRAP, SEM_FN_NAME (or1k32bf,l_trap) },
   3609   { OR1K32BF_INSN_L_SYS, SEM_FN_NAME (or1k32bf,l_sys) },
   3610   { OR1K32BF_INSN_L_MSYNC, SEM_FN_NAME (or1k32bf,l_msync) },
   3611   { OR1K32BF_INSN_L_PSYNC, SEM_FN_NAME (or1k32bf,l_psync) },
   3612   { OR1K32BF_INSN_L_CSYNC, SEM_FN_NAME (or1k32bf,l_csync) },
   3613   { OR1K32BF_INSN_L_RFE, SEM_FN_NAME (or1k32bf,l_rfe) },
   3614   { OR1K32BF_INSN_L_NOP_IMM, SEM_FN_NAME (or1k32bf,l_nop_imm) },
   3615   { OR1K32BF_INSN_L_MOVHI, SEM_FN_NAME (or1k32bf,l_movhi) },
   3616   { OR1K32BF_INSN_L_MACRC, SEM_FN_NAME (or1k32bf,l_macrc) },
   3617   { OR1K32BF_INSN_L_MFSPR, SEM_FN_NAME (or1k32bf,l_mfspr) },
   3618   { OR1K32BF_INSN_L_MTSPR, SEM_FN_NAME (or1k32bf,l_mtspr) },
   3619   { OR1K32BF_INSN_L_LWZ, SEM_FN_NAME (or1k32bf,l_lwz) },
   3620   { OR1K32BF_INSN_L_LWS, SEM_FN_NAME (or1k32bf,l_lws) },
   3621   { OR1K32BF_INSN_L_LWA, SEM_FN_NAME (or1k32bf,l_lwa) },
   3622   { OR1K32BF_INSN_L_LBZ, SEM_FN_NAME (or1k32bf,l_lbz) },
   3623   { OR1K32BF_INSN_L_LBS, SEM_FN_NAME (or1k32bf,l_lbs) },
   3624   { OR1K32BF_INSN_L_LHZ, SEM_FN_NAME (or1k32bf,l_lhz) },
   3625   { OR1K32BF_INSN_L_LHS, SEM_FN_NAME (or1k32bf,l_lhs) },
   3626   { OR1K32BF_INSN_L_SW, SEM_FN_NAME (or1k32bf,l_sw) },
   3627   { OR1K32BF_INSN_L_SB, SEM_FN_NAME (or1k32bf,l_sb) },
   3628   { OR1K32BF_INSN_L_SH, SEM_FN_NAME (or1k32bf,l_sh) },
   3629   { OR1K32BF_INSN_L_SWA, SEM_FN_NAME (or1k32bf,l_swa) },
   3630   { OR1K32BF_INSN_L_SLL, SEM_FN_NAME (or1k32bf,l_sll) },
   3631   { OR1K32BF_INSN_L_SLLI, SEM_FN_NAME (or1k32bf,l_slli) },
   3632   { OR1K32BF_INSN_L_SRL, SEM_FN_NAME (or1k32bf,l_srl) },
   3633   { OR1K32BF_INSN_L_SRLI, SEM_FN_NAME (or1k32bf,l_srli) },
   3634   { OR1K32BF_INSN_L_SRA, SEM_FN_NAME (or1k32bf,l_sra) },
   3635   { OR1K32BF_INSN_L_SRAI, SEM_FN_NAME (or1k32bf,l_srai) },
   3636   { OR1K32BF_INSN_L_ROR, SEM_FN_NAME (or1k32bf,l_ror) },
   3637   { OR1K32BF_INSN_L_RORI, SEM_FN_NAME (or1k32bf,l_rori) },
   3638   { OR1K32BF_INSN_L_AND, SEM_FN_NAME (or1k32bf,l_and) },
   3639   { OR1K32BF_INSN_L_OR, SEM_FN_NAME (or1k32bf,l_or) },
   3640   { OR1K32BF_INSN_L_XOR, SEM_FN_NAME (or1k32bf,l_xor) },
   3641   { OR1K32BF_INSN_L_ADD, SEM_FN_NAME (or1k32bf,l_add) },
   3642   { OR1K32BF_INSN_L_SUB, SEM_FN_NAME (or1k32bf,l_sub) },
   3643   { OR1K32BF_INSN_L_ADDC, SEM_FN_NAME (or1k32bf,l_addc) },
   3644   { OR1K32BF_INSN_L_MUL, SEM_FN_NAME (or1k32bf,l_mul) },
   3645   { OR1K32BF_INSN_L_MULD, SEM_FN_NAME (or1k32bf,l_muld) },
   3646   { OR1K32BF_INSN_L_MULU, SEM_FN_NAME (or1k32bf,l_mulu) },
   3647   { OR1K32BF_INSN_L_MULDU, SEM_FN_NAME (or1k32bf,l_muldu) },
   3648   { OR1K32BF_INSN_L_DIV, SEM_FN_NAME (or1k32bf,l_div) },
   3649   { OR1K32BF_INSN_L_DIVU, SEM_FN_NAME (or1k32bf,l_divu) },
   3650   { OR1K32BF_INSN_L_FF1, SEM_FN_NAME (or1k32bf,l_ff1) },
   3651   { OR1K32BF_INSN_L_FL1, SEM_FN_NAME (or1k32bf,l_fl1) },
   3652   { OR1K32BF_INSN_L_ANDI, SEM_FN_NAME (or1k32bf,l_andi) },
   3653   { OR1K32BF_INSN_L_ORI, SEM_FN_NAME (or1k32bf,l_ori) },
   3654   { OR1K32BF_INSN_L_XORI, SEM_FN_NAME (or1k32bf,l_xori) },
   3655   { OR1K32BF_INSN_L_ADDI, SEM_FN_NAME (or1k32bf,l_addi) },
   3656   { OR1K32BF_INSN_L_ADDIC, SEM_FN_NAME (or1k32bf,l_addic) },
   3657   { OR1K32BF_INSN_L_MULI, SEM_FN_NAME (or1k32bf,l_muli) },
   3658   { OR1K32BF_INSN_L_EXTHS, SEM_FN_NAME (or1k32bf,l_exths) },
   3659   { OR1K32BF_INSN_L_EXTBS, SEM_FN_NAME (or1k32bf,l_extbs) },
   3660   { OR1K32BF_INSN_L_EXTHZ, SEM_FN_NAME (or1k32bf,l_exthz) },
   3661   { OR1K32BF_INSN_L_EXTBZ, SEM_FN_NAME (or1k32bf,l_extbz) },
   3662   { OR1K32BF_INSN_L_EXTWS, SEM_FN_NAME (or1k32bf,l_extws) },
   3663   { OR1K32BF_INSN_L_EXTWZ, SEM_FN_NAME (or1k32bf,l_extwz) },
   3664   { OR1K32BF_INSN_L_CMOV, SEM_FN_NAME (or1k32bf,l_cmov) },
   3665   { OR1K32BF_INSN_L_SFGTS, SEM_FN_NAME (or1k32bf,l_sfgts) },
   3666   { OR1K32BF_INSN_L_SFGTSI, SEM_FN_NAME (or1k32bf,l_sfgtsi) },
   3667   { OR1K32BF_INSN_L_SFGTU, SEM_FN_NAME (or1k32bf,l_sfgtu) },
   3668   { OR1K32BF_INSN_L_SFGTUI, SEM_FN_NAME (or1k32bf,l_sfgtui) },
   3669   { OR1K32BF_INSN_L_SFGES, SEM_FN_NAME (or1k32bf,l_sfges) },
   3670   { OR1K32BF_INSN_L_SFGESI, SEM_FN_NAME (or1k32bf,l_sfgesi) },
   3671   { OR1K32BF_INSN_L_SFGEU, SEM_FN_NAME (or1k32bf,l_sfgeu) },
   3672   { OR1K32BF_INSN_L_SFGEUI, SEM_FN_NAME (or1k32bf,l_sfgeui) },
   3673   { OR1K32BF_INSN_L_SFLTS, SEM_FN_NAME (or1k32bf,l_sflts) },
   3674   { OR1K32BF_INSN_L_SFLTSI, SEM_FN_NAME (or1k32bf,l_sfltsi) },
   3675   { OR1K32BF_INSN_L_SFLTU, SEM_FN_NAME (or1k32bf,l_sfltu) },
   3676   { OR1K32BF_INSN_L_SFLTUI, SEM_FN_NAME (or1k32bf,l_sfltui) },
   3677   { OR1K32BF_INSN_L_SFLES, SEM_FN_NAME (or1k32bf,l_sfles) },
   3678   { OR1K32BF_INSN_L_SFLESI, SEM_FN_NAME (or1k32bf,l_sflesi) },
   3679   { OR1K32BF_INSN_L_SFLEU, SEM_FN_NAME (or1k32bf,l_sfleu) },
   3680   { OR1K32BF_INSN_L_SFLEUI, SEM_FN_NAME (or1k32bf,l_sfleui) },
   3681   { OR1K32BF_INSN_L_SFEQ, SEM_FN_NAME (or1k32bf,l_sfeq) },
   3682   { OR1K32BF_INSN_L_SFEQI, SEM_FN_NAME (or1k32bf,l_sfeqi) },
   3683   { OR1K32BF_INSN_L_SFNE, SEM_FN_NAME (or1k32bf,l_sfne) },
   3684   { OR1K32BF_INSN_L_SFNEI, SEM_FN_NAME (or1k32bf,l_sfnei) },
   3685   { OR1K32BF_INSN_L_MAC, SEM_FN_NAME (or1k32bf,l_mac) },
   3686   { OR1K32BF_INSN_L_MACI, SEM_FN_NAME (or1k32bf,l_maci) },
   3687   { OR1K32BF_INSN_L_MACU, SEM_FN_NAME (or1k32bf,l_macu) },
   3688   { OR1K32BF_INSN_L_MSB, SEM_FN_NAME (or1k32bf,l_msb) },
   3689   { OR1K32BF_INSN_L_MSBU, SEM_FN_NAME (or1k32bf,l_msbu) },
   3690   { OR1K32BF_INSN_L_CUST1, SEM_FN_NAME (or1k32bf,l_cust1) },
   3691   { OR1K32BF_INSN_L_CUST2, SEM_FN_NAME (or1k32bf,l_cust2) },
   3692   { OR1K32BF_INSN_L_CUST3, SEM_FN_NAME (or1k32bf,l_cust3) },
   3693   { OR1K32BF_INSN_L_CUST4, SEM_FN_NAME (or1k32bf,l_cust4) },
   3694   { OR1K32BF_INSN_L_CUST5, SEM_FN_NAME (or1k32bf,l_cust5) },
   3695   { OR1K32BF_INSN_L_CUST6, SEM_FN_NAME (or1k32bf,l_cust6) },
   3696   { OR1K32BF_INSN_L_CUST7, SEM_FN_NAME (or1k32bf,l_cust7) },
   3697   { OR1K32BF_INSN_L_CUST8, SEM_FN_NAME (or1k32bf,l_cust8) },
   3698   { OR1K32BF_INSN_LF_ADD_S, SEM_FN_NAME (or1k32bf,lf_add_s) },
   3699   { OR1K32BF_INSN_LF_ADD_D32, SEM_FN_NAME (or1k32bf,lf_add_d32) },
   3700   { OR1K32BF_INSN_LF_SUB_S, SEM_FN_NAME (or1k32bf,lf_sub_s) },
   3701   { OR1K32BF_INSN_LF_SUB_D32, SEM_FN_NAME (or1k32bf,lf_sub_d32) },
   3702   { OR1K32BF_INSN_LF_MUL_S, SEM_FN_NAME (or1k32bf,lf_mul_s) },
   3703   { OR1K32BF_INSN_LF_MUL_D32, SEM_FN_NAME (or1k32bf,lf_mul_d32) },
   3704   { OR1K32BF_INSN_LF_DIV_S, SEM_FN_NAME (or1k32bf,lf_div_s) },
   3705   { OR1K32BF_INSN_LF_DIV_D32, SEM_FN_NAME (or1k32bf,lf_div_d32) },
   3706   { OR1K32BF_INSN_LF_REM_S, SEM_FN_NAME (or1k32bf,lf_rem_s) },
   3707   { OR1K32BF_INSN_LF_REM_D32, SEM_FN_NAME (or1k32bf,lf_rem_d32) },
   3708   { OR1K32BF_INSN_LF_ITOF_S, SEM_FN_NAME (or1k32bf,lf_itof_s) },
   3709   { OR1K32BF_INSN_LF_ITOF_D32, SEM_FN_NAME (or1k32bf,lf_itof_d32) },
   3710   { OR1K32BF_INSN_LF_FTOI_S, SEM_FN_NAME (or1k32bf,lf_ftoi_s) },
   3711   { OR1K32BF_INSN_LF_FTOI_D32, SEM_FN_NAME (or1k32bf,lf_ftoi_d32) },
   3712   { OR1K32BF_INSN_LF_SFEQ_S, SEM_FN_NAME (or1k32bf,lf_sfeq_s) },
   3713   { OR1K32BF_INSN_LF_SFEQ_D32, SEM_FN_NAME (or1k32bf,lf_sfeq_d32) },
   3714   { OR1K32BF_INSN_LF_SFNE_S, SEM_FN_NAME (or1k32bf,lf_sfne_s) },
   3715   { OR1K32BF_INSN_LF_SFNE_D32, SEM_FN_NAME (or1k32bf,lf_sfne_d32) },
   3716   { OR1K32BF_INSN_LF_SFGE_S, SEM_FN_NAME (or1k32bf,lf_sfge_s) },
   3717   { OR1K32BF_INSN_LF_SFGE_D32, SEM_FN_NAME (or1k32bf,lf_sfge_d32) },
   3718   { OR1K32BF_INSN_LF_SFGT_S, SEM_FN_NAME (or1k32bf,lf_sfgt_s) },
   3719   { OR1K32BF_INSN_LF_SFGT_D32, SEM_FN_NAME (or1k32bf,lf_sfgt_d32) },
   3720   { OR1K32BF_INSN_LF_SFLT_S, SEM_FN_NAME (or1k32bf,lf_sflt_s) },
   3721   { OR1K32BF_INSN_LF_SFLT_D32, SEM_FN_NAME (or1k32bf,lf_sflt_d32) },
   3722   { OR1K32BF_INSN_LF_SFLE_S, SEM_FN_NAME (or1k32bf,lf_sfle_s) },
   3723   { OR1K32BF_INSN_LF_SFLE_D32, SEM_FN_NAME (or1k32bf,lf_sfle_d32) },
   3724   { OR1K32BF_INSN_LF_SFUEQ_S, SEM_FN_NAME (or1k32bf,lf_sfueq_s) },
   3725   { OR1K32BF_INSN_LF_SFUEQ_D32, SEM_FN_NAME (or1k32bf,lf_sfueq_d32) },
   3726   { OR1K32BF_INSN_LF_SFUNE_S, SEM_FN_NAME (or1k32bf,lf_sfune_s) },
   3727   { OR1K32BF_INSN_LF_SFUNE_D32, SEM_FN_NAME (or1k32bf,lf_sfune_d32) },
   3728   { OR1K32BF_INSN_LF_SFUGT_S, SEM_FN_NAME (or1k32bf,lf_sfugt_s) },
   3729   { OR1K32BF_INSN_LF_SFUGT_D32, SEM_FN_NAME (or1k32bf,lf_sfugt_d32) },
   3730   { OR1K32BF_INSN_LF_SFUGE_S, SEM_FN_NAME (or1k32bf,lf_sfuge_s) },
   3731   { OR1K32BF_INSN_LF_SFUGE_D32, SEM_FN_NAME (or1k32bf,lf_sfuge_d32) },
   3732   { OR1K32BF_INSN_LF_SFULT_S, SEM_FN_NAME (or1k32bf,lf_sfult_s) },
   3733   { OR1K32BF_INSN_LF_SFULT_D32, SEM_FN_NAME (or1k32bf,lf_sfult_d32) },
   3734   { OR1K32BF_INSN_LF_SFULE_S, SEM_FN_NAME (or1k32bf,lf_sfule_s) },
   3735   { OR1K32BF_INSN_LF_SFULE_D32, SEM_FN_NAME (or1k32bf,lf_sfule_d32) },
   3736   { OR1K32BF_INSN_LF_SFUN_S, SEM_FN_NAME (or1k32bf,lf_sfun_s) },
   3737   { OR1K32BF_INSN_LF_SFUN_D32, SEM_FN_NAME (or1k32bf,lf_sfun_d32) },
   3738   { OR1K32BF_INSN_LF_MADD_S, SEM_FN_NAME (or1k32bf,lf_madd_s) },
   3739   { OR1K32BF_INSN_LF_MADD_D32, SEM_FN_NAME (or1k32bf,lf_madd_d32) },
   3740   { OR1K32BF_INSN_LF_CUST1_S, SEM_FN_NAME (or1k32bf,lf_cust1_s) },
   3741   { OR1K32BF_INSN_LF_CUST1_D32, SEM_FN_NAME (or1k32bf,lf_cust1_d32) },
   3742   { 0, 0 }
   3743 };
   3744 
   3745 /* Add the semantic fns to IDESC_TABLE.  */
   3746 
   3747 void
   3748 SEM_FN_NAME (or1k32bf,init_idesc_table) (SIM_CPU *current_cpu)
   3749 {
   3750   IDESC *idesc_table = CPU_IDESC (current_cpu);
   3751   const struct sem_fn_desc *sf;
   3752   int mach_num = MACH_NUM (CPU_MACH (current_cpu));
   3753 
   3754   for (sf = &sem_fns[0]; sf->fn != 0; ++sf)
   3755     {
   3756       const CGEN_INSN *insn = idesc_table[sf->index].idata;
   3757       int valid_p = (CGEN_INSN_VIRTUAL_P (insn)
   3758 		     || CGEN_INSN_MACH_HAS_P (insn, mach_num));
   3759 #if FAST_P
   3760       if (valid_p)
   3761 	idesc_table[sf->index].sem_fast = sf->fn;
   3762       else
   3763 	idesc_table[sf->index].sem_fast = SEM_FN_NAME (or1k32bf,x_invalid);
   3764 #else
   3765       if (valid_p)
   3766 	idesc_table[sf->index].sem_full = sf->fn;
   3767       else
   3768 	idesc_table[sf->index].sem_full = SEM_FN_NAME (or1k32bf,x_invalid);
   3769 #endif
   3770     }
   3771 }
   3772 
   3773