mirror of
https://github.com/TomHarte/CLK.git
synced 2025-02-19 07:31:15 +00:00
Test synchronising loads and stores, further expand documentation.
This commit is contained in:
parent
6330caffde
commit
d5f7650ac1
@ -42,13 +42,7 @@ enum class BranchOption: uint32_t {
|
|||||||
//
|
//
|
||||||
// Dec_ prefix => decrement the CTR;
|
// Dec_ prefix => decrement the CTR;
|
||||||
// condition starting NotZero or Zero => test CTR;
|
// condition starting NotZero or Zero => test CTR;
|
||||||
// condition ending Set or Clear => test for condition bit.
|
// condition ending Set or Clear => test the condition bit.
|
||||||
//
|
|
||||||
// Numerical suffixes are present because there's some redundancy
|
|
||||||
// in encodings.
|
|
||||||
//
|
|
||||||
// Note that the encodings themselves may suggest alternative means
|
|
||||||
// of interpretation than mapping via this enum.
|
|
||||||
Dec_NotZeroAndClear = 0b0000,
|
Dec_NotZeroAndClear = 0b0000,
|
||||||
Dec_ZeroAndClear = 0b0001,
|
Dec_ZeroAndClear = 0b0001,
|
||||||
Clear = 0b0010,
|
Clear = 0b0010,
|
||||||
@ -346,17 +340,38 @@ enum class Operation: uint8_t {
|
|||||||
lfsux, lfsx, lha, lhau,
|
lfsux, lfsx, lha, lhau,
|
||||||
|
|
||||||
/// Load half-word algebraic with update indexed.
|
/// Load half-word algebraic with update indexed.
|
||||||
|
/// lhaux
|
||||||
|
/// rD(), rA(), rB()
|
||||||
lhaux,
|
lhaux,
|
||||||
|
|
||||||
/// Load half-word algebraic indexed.
|
/// Load half-word algebraic indexed.
|
||||||
|
/// lhax
|
||||||
|
/// rD(), rA(), rB()
|
||||||
lhax,
|
lhax,
|
||||||
|
|
||||||
lhbrx, lhz, lhzu,
|
/// Load half word byte-reverse indexed.
|
||||||
|
/// lhbrx
|
||||||
|
/// rD(), rA(), rB()
|
||||||
|
lhbrx,
|
||||||
|
|
||||||
|
/// Load half word and zero.
|
||||||
|
/// lhz
|
||||||
|
/// rD(), d()[ rA() ]
|
||||||
|
lhz,
|
||||||
|
|
||||||
|
/// Load half-word and zero with update.
|
||||||
|
/// lhzu
|
||||||
|
/// rD(), d()[ rA() ]
|
||||||
|
lhzu,
|
||||||
|
|
||||||
/// Load half-word and zero with update indexed.
|
/// Load half-word and zero with update indexed.
|
||||||
|
/// lhzux
|
||||||
|
/// rD(), rA(), rB()
|
||||||
lhzux,
|
lhzux,
|
||||||
|
|
||||||
/// Load half-word and zero indexed.
|
/// Load half-word and zero indexed.
|
||||||
|
/// lhzx
|
||||||
|
/// rD(), rA(), rB()
|
||||||
lhzx,
|
lhzx,
|
||||||
|
|
||||||
lmw,
|
lmw,
|
||||||
@ -435,16 +450,47 @@ enum class Operation: uint8_t {
|
|||||||
/// rA(), rS(), rB() [rc()]
|
/// rA(), rS(), rB() [rc()]
|
||||||
srwx,
|
srwx,
|
||||||
|
|
||||||
stb, stbu,
|
/// Store byte.
|
||||||
|
/// stb
|
||||||
|
/// rS(), d() [ rA() ]
|
||||||
|
stb,
|
||||||
|
|
||||||
|
/// Store byte with update.
|
||||||
|
/// stbu
|
||||||
|
/// rS(), d() [ rA() ]
|
||||||
|
stbu,
|
||||||
|
|
||||||
/// Store byte with update indexed.
|
/// Store byte with update indexed.
|
||||||
|
/// stbux
|
||||||
|
/// rS(), rA(), rB()
|
||||||
stbux,
|
stbux,
|
||||||
|
|
||||||
/// Store byte indexed.
|
/// Store byte indexed.
|
||||||
|
/// stbx
|
||||||
|
/// rS(), rA(), rB()
|
||||||
stbx,
|
stbx,
|
||||||
|
|
||||||
stfd, stfdu,
|
/// Store floating point double precision.
|
||||||
stfdux, stfdx, stfs, stfsu, stfsux, stfsx, sth, sthbrx, sthu,
|
/// stfd
|
||||||
|
/// frS(), d() [ rA() ]
|
||||||
|
stfd,
|
||||||
|
|
||||||
|
/// Store floating point double precision with update.
|
||||||
|
/// stfdu
|
||||||
|
/// frS(), d() [ rA() ]
|
||||||
|
stfdu,
|
||||||
|
|
||||||
|
/// Store floating point double precision with update indexed.
|
||||||
|
/// stfdux
|
||||||
|
/// frS(), rA(), rB()
|
||||||
|
stfdux,
|
||||||
|
|
||||||
|
/// Store floating point double precision indexed.
|
||||||
|
/// stfdux
|
||||||
|
/// frS(), rA(), rB()
|
||||||
|
stfdx,
|
||||||
|
|
||||||
|
stfs, stfsu, stfsux, stfsx, sth, sthbrx, sthu,
|
||||||
|
|
||||||
/// Store half-word with update indexed.
|
/// Store half-word with update indexed.
|
||||||
sthux,
|
sthux,
|
||||||
@ -512,7 +558,34 @@ enum class Operation: uint8_t {
|
|||||||
extswx,
|
extswx,
|
||||||
|
|
||||||
fcfidx, fctidx, fctidzx, tdi, mulhdux,
|
fcfidx, fctidx, fctidzx, tdi, mulhdux,
|
||||||
ldx, sldx, ldux, td, mulhdx, ldarx, stdx, stdux, mulld, lwax, lwaux,
|
ldx, sldx, ldux, td, mulhdx, ldarx,
|
||||||
|
|
||||||
|
/// Store double.
|
||||||
|
/// std
|
||||||
|
/// rS(), ds() [ rA() ]
|
||||||
|
std,
|
||||||
|
|
||||||
|
/// Store double word conditional indexed.
|
||||||
|
/// stdcx.
|
||||||
|
/// rS(), rA(), rB()
|
||||||
|
stdcx_,
|
||||||
|
|
||||||
|
/// Store double word with update.
|
||||||
|
/// stdu
|
||||||
|
/// rS(), ds() [ rA() ]
|
||||||
|
stdu,
|
||||||
|
|
||||||
|
/// Store double word with update indexed.
|
||||||
|
/// stdux
|
||||||
|
/// rS(), rA(), rB()
|
||||||
|
stdux,
|
||||||
|
|
||||||
|
/// Store double word indexed.
|
||||||
|
/// stdx
|
||||||
|
/// rS(), rA(), rB()
|
||||||
|
stdx,
|
||||||
|
|
||||||
|
mulld, lwax, lwaux,
|
||||||
sradix, srdx,
|
sradix, srdx,
|
||||||
|
|
||||||
/// Shift right algebraic double word.
|
/// Shift right algebraic double word.
|
||||||
@ -520,7 +593,7 @@ enum class Operation: uint8_t {
|
|||||||
/// rA(), rS(), rB() [rc()]
|
/// rA(), rS(), rB() [rc()]
|
||||||
sradx,
|
sradx,
|
||||||
|
|
||||||
fsqrtsx, std, stdu, stdcx_,
|
fsqrtsx
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -369,6 +369,12 @@ NSString *condition(uint32_t code) {
|
|||||||
ABCz(lhaux);
|
ABCz(lhaux);
|
||||||
ABCz(sthx);
|
ABCz(sthx);
|
||||||
ABCz(sthux);
|
ABCz(sthux);
|
||||||
|
ABCz(lhbrx);
|
||||||
|
ABCz(lwbrx);
|
||||||
|
ABCz(lwarx);
|
||||||
|
ABCz(stwcx_);
|
||||||
|
ABCz(stwbrx);
|
||||||
|
ABCz(sthbrx);
|
||||||
|
|
||||||
#undef ABCz
|
#undef ABCz
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user