Go to the documentation of this file.
29 #ifndef __ARCH_MIPS_DSP_HH__
30 #define __ARCH_MIPS_DSP_HH__
91 { 0x0000003f, 0x00001f80, 0x00002000,
92 0x00ff0000, 0x0f000000, 0x00004000 };
137 int32_t
bitrev(int32_t value);
138 uint64_t
dspSaturate(uint64_t value, int32_t fmt, int32_t sign,
140 uint64_t
checkOverflow(uint64_t value, int32_t fmt, int32_t sign,
142 uint64_t
signExtend(uint64_t value, int32_t signpos);
143 uint64_t
addHalfLsb(uint64_t value, int32_t lsbpos);
144 int32_t
dspAbs(int32_t
a, int32_t fmt, uint32_t *dspctl);
145 int32_t
dspAdd(int32_t
a, int32_t
b, int32_t fmt, int32_t saturate,
146 int32_t sign, uint32_t *dspctl);
147 int32_t
dspAddh(int32_t
a, int32_t
b, int32_t fmt, int32_t round,
149 int32_t
dspSub(int32_t
a, int32_t
b, int32_t fmt, int32_t saturate,
150 int32_t sign, uint32_t *dspctl);
151 int32_t
dspSubh(int32_t
a, int32_t
b, int32_t fmt, int32_t round,
153 int32_t
dspShll(int32_t
a, uint32_t
sa, int32_t fmt, int32_t saturate,
154 int32_t sign, uint32_t *dspctl);
155 int32_t
dspShrl(int32_t
a, uint32_t
sa, int32_t fmt, int32_t sign);
156 int32_t
dspShra(int32_t
a, uint32_t
sa, int32_t fmt, int32_t round,
157 int32_t sign, uint32_t *dspctl);
158 int32_t
dspMul(int32_t
a, int32_t
b, int32_t fmt, int32_t saturate,
160 int32_t
dspMulq(int32_t
a, int32_t
b, int32_t fmt, int32_t saturate,
161 int32_t round, uint32_t *dspctl);
162 int32_t
dspMuleu(int32_t
a, int32_t
b, int32_t
mode, uint32_t *dspctl);
163 int32_t
dspMuleq(int32_t
a, int32_t
b, int32_t
mode, uint32_t *dspctl);
164 int64_t
dspDpaq(int64_t dspac, int32_t
a, int32_t
b, int32_t
ac,
165 int32_t infmt, int32_t outfmt, int32_t postsat, int32_t
mode,
167 int64_t
dspDpsq(int64_t dspac, int32_t
a, int32_t
b, int32_t
ac,
168 int32_t infmt, int32_t outfmt, int32_t postsat, int32_t
mode,
170 int64_t
dspDpa(int64_t dspac, int32_t
a, int32_t
b, int32_t
ac, int32_t fmt,
171 int32_t sign, int32_t
mode);
172 int64_t
dspDps(int64_t dspac, int32_t
a, int32_t
b, int32_t
ac, int32_t fmt,
173 int32_t sign, int32_t
mode);
174 int64_t
dspMaq(int64_t dspac, int32_t
a, int32_t
b, int32_t
ac,
175 int32_t fmt, int32_t
mode, int32_t saturate, uint32_t *dspctl);
176 int64_t
dspMulsa(int64_t dspac, int32_t
a, int32_t
b, int32_t
ac, int32_t fmt);
177 int64_t
dspMulsaq(int64_t dspac, int32_t
a, int32_t
b, int32_t
ac, int32_t fmt,
179 void dspCmp(int32_t
a, int32_t
b, int32_t fmt, int32_t sign, int32_t
op,
181 int32_t
dspCmpg(int32_t
a, int32_t
b, int32_t fmt, int32_t sign, int32_t
op);
182 int32_t
dspCmpgd(int32_t
a, int32_t
b, int32_t fmt, int32_t sign, int32_t
op,
184 int32_t
dspPrece(int32_t
a, int32_t infmt, int32_t insign, int32_t outfmt,
185 int32_t outsign, int32_t
mode);
186 int32_t
dspPrecrqu(int32_t
a, int32_t
b, uint32_t *dspctl);
187 int32_t
dspPrecrq(int32_t
a, int32_t
b, int32_t fmt, uint32_t *dspctl);
190 int32_t
dspPick(int32_t
a, int32_t
b, int32_t fmt, uint32_t *dspctl);
191 int32_t
dspPack(int32_t
a, int32_t
b, int32_t fmt);
192 int32_t
dspExtr(int64_t dspac, int32_t fmt, int32_t
sa, int32_t round,
193 int32_t saturate, uint32_t *dspctl);
194 int32_t
dspExtp(int64_t dspac, int32_t size, uint32_t *dspctl);
195 int32_t
dspExtpd(int64_t dspac, int32_t size, uint32_t *dspctl);
198 void simdPack(uint64_t *values_ptr, int32_t *
reg, int32_t fmt);
199 void simdUnpack(int32_t
reg, uint64_t *values_ptr, int32_t fmt, int32_t sign);
208 #endif // __ARCH_MIPS_DSP_HH__
const uint32_t DSP_CTL_MASK[DSP_NUM_FIELDS]
const uint64_t FIXED_W_UMIN
const uint32_t SIMD_LOG2N[SIMD_NUM_FMTS]
int32_t dspShrl(int32_t a, uint32_t sa, int32_t fmt, int32_t sign)
const uint32_t SIMD_MAX_VALS
int32_t dspExtp(int64_t dspac, int32_t size, uint32_t *dspctl)
int32_t dspExtpd(int64_t dspac, int32_t size, uint32_t *dspctl)
int32_t dspMul(int32_t a, int32_t b, int32_t fmt, int32_t saturate, uint32_t *dspctl)
int32_t dspCmpg(int32_t a, int32_t b, int32_t fmt, int32_t sign, int32_t op)
int32_t dspMuleq(int32_t a, int32_t b, int32_t mode, uint32_t *dspctl)
int32_t dspMulq(int32_t a, int32_t b, int32_t fmt, int32_t saturate, int32_t round, uint32_t *dspctl)
void writeDSPControl(uint32_t *dspctl, uint32_t value, uint32_t mask)
const uint64_t FIXED_W_SMAX
static void overflow(double &c, const scfx_params ¶ms, bool &o_flag)
const uint64_t FIXED_H_SMAX
const uint32_t SIMD_NBITS[SIMD_NUM_FMTS]
int32_t bitrev(int32_t value)
const uint64_t FIXED_SMIN[SIMD_NUM_FMTS]
void dspCmp(int32_t a, int32_t b, int32_t fmt, int32_t sign, int32_t op, uint32_t *dspctl)
int32_t dspCmpgd(int32_t a, int32_t b, int32_t fmt, int32_t sign, int32_t op, uint32_t *dspctl)
const uint32_t DSP_CTL_POS[DSP_NUM_FIELDS]
uint64_t checkOverflow(uint64_t value, int32_t fmt, int32_t sign, uint32_t *overflow)
const uint64_t FIXED_L_SMIN
const uint64_t FIXED_W_SMIN
int64_t dspDpa(int64_t dspac, int32_t a, int32_t b, int32_t ac, int32_t fmt, int32_t sign, int32_t mode)
int32_t dspSubh(int32_t a, int32_t b, int32_t fmt, int32_t round, int32_t sign)
int64_t dspMaq(int64_t dspac, int32_t a, int32_t b, int32_t ac, int32_t fmt, int32_t mode, int32_t saturate, uint32_t *dspctl)
const uint64_t FIXED_W_UMAX
const uint64_t FIXED_L_SMAX
int64_t dspDps(int64_t dspac, int32_t a, int32_t b, int32_t ac, int32_t fmt, int32_t sign, int32_t mode)
int32_t dspPrece(int32_t a, int32_t infmt, int32_t insign, int32_t outfmt, int32_t outsign, int32_t mode)
int32_t dspMuleu(int32_t a, int32_t b, int32_t mode, uint32_t *dspctl)
int64_t dspDpsq(int64_t dspac, int32_t a, int32_t b, int32_t ac, int32_t infmt, int32_t outfmt, int32_t postsat, int32_t mode, uint32_t *dspctl)
const uint64_t FIXED_L_UMAX
const uint64_t FIXED_L_UMIN
int32_t dspSub(int32_t a, int32_t b, int32_t fmt, int32_t saturate, int32_t sign, uint32_t *dspctl)
uint32_t readDSPControl(uint32_t *dspctl, uint32_t mask)
uint64_t signExtend(uint64_t value, int32_t signpos)
const uint64_t FIXED_H_UMAX
const uint64_t FIXED_B_UMIN
int64_t dspMulsa(int64_t dspac, int32_t a, int32_t b, int32_t ac, int32_t fmt)
int32_t dspPrecrqu(int32_t a, int32_t b, uint32_t *dspctl)
const uint64_t FIXED_UMAX[SIMD_NUM_FMTS]
int32_t dspAbs(int32_t a, int32_t fmt, uint32_t *dspctl)
uint64_t dspSaturate(uint64_t value, int32_t fmt, int32_t sign, uint32_t *overflow)
const uint64_t FIXED_B_SMIN
const uint64_t FIXED_H_UMIN
int32_t dspPrecrq(int32_t a, int32_t b, int32_t fmt, uint32_t *dspctl)
const uint64_t FIXED_UMIN[SIMD_NUM_FMTS]
int32_t dspAddh(int32_t a, int32_t b, int32_t fmt, int32_t round, int32_t sign)
const uint64_t FIXED_B_SMAX
int32_t dspPick(int32_t a, int32_t b, int32_t fmt, uint32_t *dspctl)
const uint64_t FIXED_SMAX[SIMD_NUM_FMTS]
int32_t dspAdd(int32_t a, int32_t b, int32_t fmt, int32_t saturate, int32_t sign, uint32_t *dspctl)
int32_t dspShra(int32_t a, uint32_t sa, int32_t fmt, int32_t round, int32_t sign, uint32_t *dspctl)
int64_t dspDpaq(int64_t dspac, int32_t a, int32_t b, int32_t ac, int32_t infmt, int32_t outfmt, int32_t postsat, int32_t mode, uint32_t *dspctl)
uint64_t addHalfLsb(uint64_t value, int32_t lsbpos)
const uint32_t SIMD_NVALS[SIMD_NUM_FMTS]
int32_t dspPack(int32_t a, int32_t b, int32_t fmt)
void simdUnpack(int32_t reg, uint64_t *values_ptr, int32_t fmt, int32_t sign)
const uint64_t FIXED_B_UMAX
void simdPack(uint64_t *values_ptr, int32_t *reg, int32_t fmt)
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
int32_t dspPrecrSra(int32_t a, int32_t b, int32_t sa, int32_t fmt, int32_t round)
int32_t dspShll(int32_t a, uint32_t sa, int32_t fmt, int32_t saturate, int32_t sign, uint32_t *dspctl)
const uint64_t FIXED_H_SMIN
int32_t dspExtr(int64_t dspac, int32_t fmt, int32_t sa, int32_t round, int32_t saturate, uint32_t *dspctl)
int64_t dspMulsaq(int64_t dspac, int32_t a, int32_t b, int32_t ac, int32_t fmt, uint32_t *dspctl)
Generated on Wed May 4 2022 12:13:50 for gem5 by doxygen 1.8.17