-- comparisons of the insn_code for the instruction with a few constants.
type insn_code is (
-- The following instructions don't have an RB operand or access FPRs
- INSN_illegal,
+ INSN_illegal, -- 0
INSN_fetch_fail,
INSN_addi,
INSN_addic,
INSN_addpcis,
INSN_addze,
INSN_andi_dot,
- INSN_andis_dot,
+ INSN_andis_dot, -- 10
INSN_attn,
INSN_b,
INSN_bc,
INSN_cbcdtd,
INSN_cdtbcd,
INSN_cmpi,
- INSN_cmpli,
+ INSN_cmpli, -- 20
INSN_cntlzw,
INSN_cntlzd,
INSN_cnttzw,
INSN_creqv,
INSN_crnand,
INSN_crnor,
- INSN_cror,
+ INSN_cror, -- 30
INSN_crorc,
INSN_crxor,
INSN_darn,
INSN_extsw,
INSN_extswsli,
INSN_isync,
- INSN_lbz,
+ INSN_lbz, -- 40
INSN_lbzu,
INSN_ld,
INSN_ldu,
INSN_lhzu,
INSN_lwa,
INSN_lwz,
- INSN_lwzu,
+ INSN_lwzu, -- 50
INSN_mcrf,
INSN_mcrfs,
INSN_mcrxrx,
INSN_mtcrf,
INSN_mtfsb,
INSN_mtfsfi,
- INSN_mtmsr,
+ INSN_mtmsr, -- 60
INSN_mtmsrd,
INSN_mtspr,
INSN_mulli,
INSN_oris,
INSN_popcntb,
INSN_popcntw,
- INSN_popcntd,
+ INSN_popcntd, -- 70
INSN_prtyw,
INSN_prtyd,
INSN_rfid,
INSN_rldimi,
INSN_rlwimi,
INSN_rlwinm,
- INSN_sc,
+ INSN_sc, -- 80
INSN_setb,
INSN_slbia,
INSN_sradi,
INSN_std,
INSN_stdu,
INSN_sth,
- INSN_sthu,
+ INSN_sthu, -- 90
INSN_stw,
INSN_stwu,
INSN_subfic,
INSN_tdi,
INSN_tlbsync,
INSN_twi,
- INSN_wait,
+ INSN_wait, -- 100
INSN_xori,
INSN_xoris,
INSN_and,
INSN_andc,
INSN_bperm,
- INSN_cmp,
+ INSN_cmp, -- 120
INSN_cmpb,
INSN_cmpeqb,
INSN_cmpl,
INSN_dcbt,
INSN_dcbtst,
INSN_dcbz,
- INSN_divd,
+ INSN_divd, -- 130
INSN_divdu,
INSN_divde,
INSN_divdeu,
INSN_divweu,
INSN_eqv,
INSN_icbi,
- INSN_icbt,
+ INSN_icbt, -- 140
INSN_isel,
INSN_lbarx,
INSN_lbzcix,
INSN_ldbrx,
INSN_ldcix,
INSN_ldx,
- INSN_ldux,
+ INSN_ldux, -- 150
INSN_lharx,
INSN_lhax,
INSN_lhaux,
INSN_lhzux,
INSN_lwarx,
INSN_lwax,
- INSN_lwaux,
+ INSN_lwaux, -- 160
INSN_lwbrx,
INSN_lwzcix,
INSN_lwzx,
INSN_moduw,
INSN_modud,
INSN_mulhw,
- INSN_mulhwu,
+ INSN_mulhwu, -- 170
INSN_mulhd,
INSN_mulhdu,
INSN_mullw,
INSN_or,
INSN_orc,
INSN_rldcl,
- INSN_rldcr,
+ INSN_rldcr, -- 180
INSN_rlwnm,
INSN_slw,
INSN_sld,
INSN_srd,
INSN_stbcix,
INSN_stbcx,
- INSN_stbx,
+ INSN_stbx, -- 190
INSN_stbux,
INSN_stdbrx,
INSN_stdcix,
INSN_sthbrx,
INSN_sthcix,
INSN_sthcx,
- INSN_sthx,
+ INSN_sthx, -- 200
INSN_sthux,
INSN_stwbrx,
INSN_stwcix,
INSN_subf,
INSN_subfc,
INSN_subfe,
- INSN_td,
+ INSN_td, -- 210
INSN_tlbie,
INSN_tlbiel,
INSN_tw,
INSN_stfdu,
INSN_stfs,
INSN_stfsu,
- INSN_stfdux,
+ INSN_stfdux, -- 260
INSN_stfdx,
INSN_stfiwx,
INSN_stfsux,
INSN_lfs,
INSN_lfsu,
INSN_lfdx,
- INSN_lfdux,
+ INSN_lfdux, -- 270
INSN_lfiwax,
INSN_lfiwzx,
INSN_lfsx,
INSN_fadd,
INSN_fadds,
INSN_fcfid,
- INSN_fcfids,
+ INSN_fcfids, -- 280
INSN_fcfidu,
INSN_fcfidus,
INSN_fcmpo,
INSN_fctidz,
INSN_fctidu,
INSN_fctiduz,
- INSN_fctiw,
+ INSN_fctiw, -- 290
INSN_fctiwz,
INSN_fctiwu,
INSN_fctiwuz,
INSN_fmrgew,
INSN_fmrgow,
INSN_fnabs,
- INSN_fneg,
+ INSN_fneg, -- 300
INSN_fre,
INSN_fres,
INSN_frim,
INSN_frsp,
INSN_frsqrte,
INSN_frsqrtes,
- INSN_fsqrt,
+ INSN_fsqrt, -- 310
INSN_fsqrts,
INSN_fsub,
INSN_fsubs,
INSN_318, INSN_319,
-- The following instructions access FRA, FRB (possibly) and FRC operands
- INSN_fmul,
+ INSN_fmul, -- 320
INSN_fmuls,
INSN_fmadd,
INSN_fmadds,
INSN_fnmadds,
INSN_fnmsub,
INSN_fnmsubs,
- INSN_fsel
+ INSN_fsel -- 330
);
constant INSN_first_rb : insn_code := INSN_add;
-- fit into 2048 entries, the columns are remapped so that 16-24 are
-- stored here as 8-15; in other words the address bits are
-- 1, insn(10..6), 1, insn(5), insn(3..1)
+ -- Columns 16-17 here are opcode 19 columns 0-1
+ -- Columns 24-31 here are opcode 19 columns 16-23
2#1_10000_11000# => INSN_bcctr,
2#1_00000_11000# => INSN_bclr,
2#1_10001_11000# => INSN_bctar,
2#1_00000_11010# => INSN_rfid,
-- Major opcode 59
+ -- Address bits are 1, insn(10..6), 1, 0, insn(3..1)
-- Only column 14 is valid here; columns 16-31 are handled in the major table
- -- Column 14 is mapped to column 6 of the space which is
- -- mostly used for opcode 19.
+ -- Column 14 is mapped to column 22.
+ -- Columns 20-23 here are opcode 59 columns 12-15
2#1_11010_10110# => INSN_fcfids,
2#1_11110_10110# => INSN_fcfidus,
-- Major opcode 63
-- Columns 0-15 are mapped here; columns 16-31 are in the major table.
-- Address bits are 1, insn(10:6), 0, insn(4:1)
+ -- Columns 0-15 here are opcode 63 columns 0-15
2#1_00000_00000# => INSN_fcmpu,
2#1_00001_00000# => INSN_fcmpo,
2#1_00010_00000# => INSN_mcrfs,