- Added definitions for all instructions in the 21264 (EV6) ISA
The `make sim-tests' regression tests worked fine.
I generated optimized SPECINT95 binaries on the EV56 box
here using `cc.alt -arch ev56 -non_shared -O4' and all of them
ran fine using sim-safe. Sim-outorder runs also completed.
I haven't tried SPECFP95 (mainly 'cos the machine doesn't have
a native Fortran compiler installed and I haven't got around to
compiling f2c for Alpha).
My EV56 binaries pretty much needed only the AMASK instruction since BWX
(load-store byte/word) support was already there in alpha-bwx.def provided
by Todd. I tested the EV6 extensions using hand-coded assembly: the native
assembler understood these instructions and they were emulated by the OS
(I did not have access to an EV6 box at the time). Sim-safe's output matched
that of the native Alpha. It would be great to get some binaries that
actually make heavy use of these instructions, for testing purposes.
I have not added any PALcode instructions and have not done any
testing of the existing instruction definitions.
- Added: (40 instructions)
([xxxx] refers to the instruction group name in the Alpha manual)
- [INTL] AMASK, IMPLVER
- [MISC] EXCB, WMB, RC, ECB, WH64
- [ITFP] (FIX extensions) ITOF{S,T},SQRT{S,T}
(and added unimplemented entries for ITOFF,SQRT{F,G})
- [FPTI] (FIX extensions) FTOI{S,T}
(CIX extensions) CTPOP, CT{L,T}Z
(MVI extensions) PERR, PK{W,L}B,UNPKB{W,L},{MIN,MAX}{U,S}{B8,W4}
- Implemented: (7 instructions)
- FETCH, FETCH_M, RPCC, RS (=>NOPs)
- CMPTUN
- MUL{Q,L}/V (changed INTM's mask to map MUL{Q,L}/V to MUL{Q,L})
- Fixed:
- [alpha.h] Changed MD_MAX_MASK from 1024 to 2048
- [alpha.h] Added md_fault_invalid for SQRT(-ve) traps
- [alpha.h] Added macro to test for IEEE FP NaN (for CMPTUN)
- Final status:
- ALL EV6 ISA instructions have entries in alpha-ev6.def
(including all extensions: BWX, FIX, CIX, MVI)
- The following instructions generate md_fault_unimpl faults:
- VAX FP loads/stores
- All VAX FP operate instructions
- The following instructions are NOPs:
- [barriers] TRAPB, EXCB, MB, WMB
- [cache hints] FETCH, FETCH_M, ECB, WH64
- [misc] RPCC, RC, RS
- Instruction qualifiers (trap+rounding) are currently ignored, and the
FPCR is not read/written by any FP instruction (apart from M{T,F}_FPCR)
- Some single-precision FP operations execute using double-precision
- LD{L,Q}_L and ST{L,Q}_C are not fully implemented