# ========== Copyright Header Begin ==========================================
# OpenSPARC T2 Processor File: SS_InstrFpu.py
# Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
# The above named program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public
# License version 2 as published by the Free Software Foundation.
# The above named program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
# You should have received a copy of the GNU General Public
# License along with this work; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
# ========== Copyright Header End ============================================
from SS_InstrFpop
import *
# @ fabs, fneg, fmov can be implemented more efficiently
# @ n2 fpop do unfinished traps .... need to implement that
# @ fp disabled should be a separate flag so we don;t have to do andcc
# @ check fsr gsr restore
#============================================================================
# ToDo: movn & mova can be optimised
#============================================================================
class SS_fmovcc(SS_fpop
):
def __init__(self
,opc
,cc
,ccr
):
SS_InstrAsm
.__init
__(self
,opc
+cc
+'_'+ccr
)
def gen_exe_tbl(self
,file,mode
):
file.write(' %s_exe_%s,\n' % (mode
,self
.name
))
def run_exe_s(self
,file):
if self
.ccr
[:3] != 'fcc':
self
.ld_frf(file,'%g2','%f0')
self
.ld_drf(file,'%g2','%f0')
self
.ld_frf(file,'%g3','%f8')
self
.ld_drf(file,'%g3','%f8')
if self
.ccr
[:3] != 'fcc':
self
.opr(file,self
.opc
+self
.cc
,'%'+self
.ccr
,'%f0','%f8')
self
.fpop_fini_cc_f(file,self
.cc
,self
.ccr
)
self
.fpop_fini_cc_d(file,self
.cc
,self
.ccr
)
def run_exe_c(self
,file):
file.write('#if defined(ARCH_X64)\n')
self
.c_code_beg(file,'run_exe_')
file.write(' if (s->sim_state.fp_disabled())\n')
file.write(' return (s->trap)(pc,npc,s,i,SS_Trap::FP_DISABLED);\n')
if (self
.ccr
[:3] == 'fcc'):
if (self
.opc
[-1] == 's'):
file.write(' s->get_frf(i->rd) = s->get_frf(i->rs2);\n')
file.write(' s->get_drf(i->rd) = s->get_drf(i->rs2);\n')
file.write(' s->set_fprs(i->rd);\n')
file.write(' s->fsr_run.ftt(0);\n')
file.write(' s->fsr_exc.cexc(0);\n')
file.write(' s->npc = npc+4;\n')
file.write(' return npc;\n')
file.write('extern "C" SS_Vaddr run_exe_%s( SS_Vaddr, SS_Vaddr, SS_Strand*, SS_Instr* );\n' % (self
.name
))
def run_dec_c(self
,file):
self
.c_code_dec_beg(file,'run_dec_')
file.write(' i->flg = SS_Instr::NON_LSU;\n')
self
.dec_f0f(file,' ','idx_exe_'+self
.name
)
self
.dec_d0d(file,' ','idx_exe_'+self
.name
)
def gen_exe_tbl(self
,file,mode
):
file.write(' trc_exe_f0f, /* '+self
.name
+' */\n')
file.write(' trc_exe_d0d, /* '+self
.name
+' */\n')
file.write(' run_exe_v8plus_to_v9, /* run_exe_'+self
.name
+' */\n')
SS_Instr
.gen_exe_tbl(self
,file,mode
)
#============================================================================
# ToDo fmovr does not have to use floating point at all.
#============================================================================
def __init__(self
,opc
,cc
):
SS_InstrAsm
.__init
__(self
,opc
+cc
)
def gen_exe_tbl(self
,file,mode
):
file.write(' %s_exe_%s,\n' % (mode
,self
.name
))
def run_exe_s(self
,file):
self
.ld_irf(file,'%g1','%g1')
self
.ld_frf(file,'%g2','%f0')
self
.ld_frf(file,'%g3','%f8')
self
.ld_drf(file,'%g2','%f0')
self
.ld_drf(file,'%g3','%f8')
self
.opr(file,self
.opc
+self
.cc
,'%g1','%f0','%f8')
self
.fpop_fini_cc_f(file,'r'+self
.cc
,'g1')
self
.fpop_fini_cc_d(file,'r'+self
.cc
,'g1')
def run_exe_c(self
,file):
file.write('#if defined(ARCH_X64)\n')
self
.c_code_beg(file,'run_exe_')
file.write(' if (s->sim_state.fp_disabled())\n')
file.write(' return (s->trap)(pc,npc,s,i,SS_Trap::FP_DISABLED);\n')
if (self
.opc
[-1] == 's'):
file.write(' s->get_frf(i->rd) = s->get_frf(i->rs2);\n')
file.write(' s->get_drf(i->rd) = s->get_drf(i->rs2);\n')
file.write(' s->set_fprs(i->rd);\n')
file.write(' s->fsr_run.ftt(0);\n')
file.write(' s->fsr_exc.cexc(0);\n')
file.write(' s->npc = npc+4;\n')
file.write(' return npc;\n')
file.write('extern "C" SS_Vaddr run_exe_%s( SS_Vaddr, SS_Vaddr, SS_Strand*, SS_Instr* );\n' % (self
.name
))
def run_dec_c(self
,file):
self
.c_code_dec_beg(file,'run_dec_')
file.write(' i->flg = SS_Instr::NON_LSU;\n')
self
.dec_frf(file,' ','idx_exe_'+self
.name
)
self
.dec_drd(file,' ','idx_exe_'+self
.name
)
def gen_exe_tbl(self
,file,mode
):
file.write(' trc_exe_frf, /* '+self
.name
+' */\n')
file.write(' trc_exe_drd, /* '+self
.name
+' */\n')
file.write(' run_exe_v8plus_to_v9, /* run_exe_'+self
.name
+' */\n')
SS_Instr
.gen_exe_tbl(self
,file,mode
)
#============================================================================
#============================================================================
SS_fpop
.__init
__(self
,opc
)
def run_exe_c(self
,file,product
='run'):
SS_fpop
.run_exe_c(self
,file,setup
.product
.lower())
def run_dec_c(self
,file):
self
.c_code_dec_beg_name(file,'run_dec_'+self
.opc
)
file.write(' i->flg = SS_Instr::NON_LSU;\n')
file.write(' if (o.get_rd() < 4)\n')
self
.dec_nff(file,' ','idx_exe_'+self
.opc
)
self
.dec_ndd(file,' ','idx_exe_'+self
.opc
)
file.write(' return (s->trap)(pc,npc,s,i,SS_Trap::ILLEGAL_INSTRUCTION);\n')
def gen_exe_tbl(self
,file,mode
):
file.write(' trc_exe_0ff, /* '+self
.name
+' */\n')
file.write(' trc_exe_0dd, /* '+self
.name
+' */\n')
SS_fpop
.gen_exe_tbl(self
,file,mode
)
#============================================================================
#============================================================================
ss_fpop1
= SS_InstrGroup('10_110100_fpop1',5,0x1ff)
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_fp_f0f('fmovs'))
ss_fpop1
.append(SS_fp_d0d('fmovd'))
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_fp_f0f('fnegs'))
ss_fpop1
.append(SS_fp_d0d('fnegd'))
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_fp_f0f('fabss'))
ss_fpop1
.append(SS_fp_d0d('fabsd'))
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_fp_f0f('fsqrts'))
ss_fpop1
.append(SS_fp_d0d('fsqrtd'))
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
if setup
.product
== 'N2':
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_fp_fff('fadds'))
ss_fpop1
.append(SS_fp_ddd('faddd'))
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_fp_fff('fsubs'))
ss_fpop1
.append(SS_fp_ddd('fsubd'))
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_fp_fff('fmuls'))
ss_fpop1
.append(SS_fp_ddd('fmuld'))
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_fp_fff('fdivs'))
ss_fpop1
.append(SS_fp_ddd('fdivd'))
ss_fpop1
.append(SS_ill())
if setup
.product
in ['N2']:
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
if setup
.product
in ['N2']:
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
if setup
.product
in ['N2']:
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_fp_dff('fsmuld'))
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
if setup
.product
in ['N2']:
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_fp_d0f('fstox'))
ss_fpop1
.append(SS_fp_d0d('fdtox'))
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_fp_f0d('fxtos'))
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_fp_d0d('fxtod'))
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_fp_f0f('fitos'))
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_fp_f0d('fdtos'))
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_fp_d0f('fitod'))
ss_fpop1
.append(SS_fp_d0f('fstod'))
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_fp_f0f('fstoi'))
ss_fpop1
.append(SS_fp_f0d('fdtoi'))
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
ss_fpop1
.append(SS_ill())
#============================================================================
#============================================================================
ss_fmovsfcc0
= SS_InstrGroup('10_110101_000000001_fmovsfcc0',14,0x1f)
ss_fmovsfcc1
= SS_InstrGroup('10_110101_001000001_fmovsfcc1',14,0x1f)
ss_fmovsfcc2
= SS_InstrGroup('10_110101_010000001_fmovsfcc2',14,0x1f)
ss_fmovsfcc3
= SS_InstrGroup('10_110101_011000001_fmovsfcc3',14,0x1f)
ss_fmovsicc
= SS_InstrGroup('10_110101_100000001_fmovsicc',14,0x1f)
ss_fmovsxcc
= SS_InstrGroup('10_110101_110000001_fmovsxcc',14,0x1f)
ss_fmovdfcc0
= SS_InstrGroup('10_110101_000000010_fmovsfcc0',14,0x1f)
ss_fmovdfcc1
= SS_InstrGroup('10_110101_001000010_fmovsfcc1',14,0x1f)
ss_fmovdfcc2
= SS_InstrGroup('10_110101_010000010_fmovsfcc2',14,0x1f)
ss_fmovdfcc3
= SS_InstrGroup('10_110101_011000010_fmovsfcc3',14,0x1f)
ss_fmovdicc
= SS_InstrGroup('10_110101_100000010_fmovsicc',14,0x1f)
ss_fmovdxcc
= SS_InstrGroup('10_110101_110000010_fmovsxcc',14,0x1f)
ss_fmovsfcc0
.append(SS_fmovcc('fmovs',cc
,'fcc0'))
ss_fmovsfcc1
.append(SS_fmovcc('fmovs',cc
,'fcc1'))
ss_fmovsfcc2
.append(SS_fmovcc('fmovs',cc
,'fcc2'))
ss_fmovsfcc3
.append(SS_fmovcc('fmovs',cc
,'fcc3'))
ss_fmovdfcc0
.append(SS_fmovcc('fmovd',cc
,'fcc0'))
ss_fmovdfcc1
.append(SS_fmovcc('fmovd',cc
,'fcc1'))
ss_fmovdfcc2
.append(SS_fmovcc('fmovd',cc
,'fcc2'))
ss_fmovdfcc3
.append(SS_fmovcc('fmovd',cc
,'fcc3'))
ss_fmovsicc
.append(SS_fmovcc('fmovs',cc
,'icc'))
ss_fmovdicc
.append(SS_fmovcc('fmovd',cc
,'icc'))
ss_fmovsxcc
.append(SS_fmovcc('fmovs',cc
,'xcc'))
ss_fmovdxcc
.append(SS_fmovcc('fmovd',cc
,'xcc'))
ss_fmovsfcc0
.append(SS_ill())
ss_fmovsfcc1
.append(SS_ill())
ss_fmovsfcc2
.append(SS_ill())
ss_fmovsfcc3
.append(SS_ill())
ss_fmovdfcc0
.append(SS_ill())
ss_fmovdfcc1
.append(SS_ill())
ss_fmovdfcc2
.append(SS_ill())
ss_fmovdfcc3
.append(SS_ill())
ss_fmovsicc
.append(SS_ill())
ss_fmovdicc
.append(SS_ill())
ss_fmovsxcc
.append(SS_ill())
ss_fmovdxcc
.append(SS_ill())
ss_fpop2
= SS_InstrGroup('10_110101_fpop2',5,0x1ff)
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(ss_fmovsfcc0
)
ss_fpop2
.append(ss_fmovdfcc0
)
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_fmovr('fmovrs','z'))
ss_fpop2
.append(SS_fmovr('fmovrd','z'))
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(ss_fmovsfcc1
)
ss_fpop2
.append(ss_fmovdfcc1
)
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_fmovr('fmovrs','lez'))
ss_fpop2
.append(SS_fmovr('fmovrd','lez'))
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_fcmp('fcmps'))
ss_fpop2
.append(SS_fcmp('fcmpd'))
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_fcmp('fcmpes'))
ss_fpop2
.append(SS_fcmp('fcmped'))
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_fmovr('fmovrs','lz'))
ss_fpop2
.append(SS_fmovr('fmovrd','lz'))
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(ss_fmovsfcc2
)
ss_fpop2
.append(ss_fmovdfcc2
)
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_fmovr('fmovrs','nz'))
ss_fpop2
.append(SS_fmovr('fmovrd','nz'))
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(ss_fmovsfcc3
)
ss_fpop2
.append(ss_fmovdfcc3
)
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_fmovr('fmovrs','gz'))
ss_fpop2
.append(SS_fmovr('fmovrd','gz'))
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_fmovr('fmovrs','gez'))
ss_fpop2
.append(SS_fmovr('fmovrd','gez'))
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(ss_fmovsicc
)
ss_fpop2
.append(ss_fmovdicc
)
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(ss_fmovsxcc
)
ss_fpop2
.append(ss_fmovdxcc
)
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
ss_fpop2
.append(SS_ill())
#============================================================================
#============================================================================
ss_fmaf
= SS_InstrGroup('10_110111_fmaf',5,0xf)
ss_fmau
= SS_InstrGroup('10_111111_fmau',5,0xf)
if setup
.product
in ['N2']:
if setup
.product
in ['N2']: