Go to the documentation of this file.
29 #ifndef __ARCH_MIPS_DSP_HH__
30 #define __ARCH_MIPS_DSP_HH__
85 { 0x0000003f, 0x00001f80, 0x00002000,
86 0x00ff0000, 0x0f000000, 0x00004000 };
131 int32_t
bitrev(int32_t value);
132 uint64_t
dspSaturate(uint64_t value, int32_t fmt, int32_t sign,
134 uint64_t
checkOverflow(uint64_t value, int32_t fmt, int32_t sign,
136 uint64_t
signExtend(uint64_t value, int32_t signpos);
137 uint64_t
addHalfLsb(uint64_t value, int32_t lsbpos);
138 int32_t
dspAbs(int32_t
a, int32_t fmt, uint32_t *dspctl);
139 int32_t
dspAdd(int32_t
a, int32_t
b, int32_t fmt, int32_t saturate,
140 int32_t sign, uint32_t *dspctl);
141 int32_t
dspAddh(int32_t
a, int32_t
b, int32_t fmt, int32_t round,
143 int32_t
dspSub(int32_t
a, int32_t
b, int32_t fmt, int32_t saturate,
144 int32_t sign, uint32_t *dspctl);
145 int32_t
dspSubh(int32_t
a, int32_t
b, int32_t fmt, int32_t round,
147 int32_t
dspShll(int32_t
a, uint32_t
sa, int32_t fmt, int32_t saturate,
148 int32_t sign, uint32_t *dspctl);
149 int32_t
dspShrl(int32_t
a, uint32_t
sa, int32_t fmt, int32_t sign);
150 int32_t
dspShra(int32_t
a, uint32_t
sa, int32_t fmt, int32_t round,
151 int32_t sign, uint32_t *dspctl);
152 int32_t
dspMul(int32_t
a, int32_t
b, int32_t fmt, int32_t saturate,
154 int32_t
dspMulq(int32_t
a, int32_t
b, int32_t fmt, int32_t saturate,
155 int32_t round, uint32_t *dspctl);
156 int32_t
dspMuleu(int32_t
a, int32_t
b, int32_t
mode, uint32_t *dspctl);
157 int32_t
dspMuleq(int32_t
a, int32_t
b, int32_t
mode, uint32_t *dspctl);
158 int64_t
dspDpaq(int64_t dspac, int32_t
a, int32_t
b, int32_t
ac,
159 int32_t infmt, int32_t outfmt, int32_t postsat, int32_t
mode,
161 int64_t
dspDpsq(int64_t dspac, int32_t
a, int32_t
b, int32_t
ac,
162 int32_t infmt, int32_t outfmt, int32_t postsat, int32_t
mode,
164 int64_t
dspDpa(int64_t dspac, int32_t
a, int32_t
b, int32_t
ac, int32_t fmt,
165 int32_t sign, int32_t
mode);
166 int64_t
dspDps(int64_t dspac, int32_t
a, int32_t
b, int32_t
ac, int32_t fmt,
167 int32_t sign, int32_t
mode);
168 int64_t
dspMaq(int64_t dspac, int32_t
a, int32_t
b, int32_t
ac,
169 int32_t fmt, int32_t
mode, int32_t saturate, uint32_t *dspctl);
170 int64_t
dspMulsa(int64_t dspac, int32_t
a, int32_t
b, int32_t
ac, int32_t fmt);
171 int64_t
dspMulsaq(int64_t dspac, int32_t
a, int32_t
b, int32_t
ac, int32_t fmt,
173 void dspCmp(int32_t
a, int32_t
b, int32_t fmt, int32_t sign, int32_t
op,
175 int32_t
dspCmpg(int32_t
a, int32_t
b, int32_t fmt, int32_t sign, int32_t
op);
176 int32_t
dspCmpgd(int32_t
a, int32_t
b, int32_t fmt, int32_t sign, int32_t
op,
178 int32_t
dspPrece(int32_t
a, int32_t infmt, int32_t insign, int32_t outfmt,
179 int32_t outsign, int32_t
mode);
180 int32_t
dspPrecrqu(int32_t
a, int32_t
b, uint32_t *dspctl);
181 int32_t
dspPrecrq(int32_t
a, int32_t
b, int32_t fmt, uint32_t *dspctl);
184 int32_t
dspPick(int32_t
a, int32_t
b, int32_t fmt, uint32_t *dspctl);
185 int32_t
dspPack(int32_t
a, int32_t
b, int32_t fmt);
186 int32_t
dspExtr(int64_t dspac, int32_t fmt, int32_t
sa, int32_t round,
187 int32_t saturate, uint32_t *dspctl);
188 int32_t
dspExtp(int64_t dspac, int32_t size, uint32_t *dspctl);
189 int32_t
dspExtpd(int64_t dspac, int32_t size, uint32_t *dspctl);
192 void simdPack(uint64_t *values_ptr, int32_t *
reg, int32_t fmt);
193 void simdUnpack(int32_t
reg, uint64_t *values_ptr, int32_t fmt, int32_t sign);
201 #endif // __ARCH_MIPS_DSP_HH__
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 uint32_t SIMD_LOG2N[SIMD_NUM_FMTS]
int32_t dspAddh(int32_t a, int32_t b, int32_t fmt, int32_t round, int32_t sign)
uint64_t dspSaturate(uint64_t value, int32_t fmt, int32_t sign, uint32_t *overflow)
int32_t dspExtp(int64_t dspac, int32_t size, uint32_t *dspctl)
const uint64_t FIXED_B_UMIN
const uint32_t SIMD_NVALS[SIMD_NUM_FMTS]
int32_t dspMulq(int32_t a, int32_t b, int32_t fmt, int32_t saturate, int32_t round, uint32_t *dspctl)
static void overflow(double &c, const scfx_params ¶ms, bool &o_flag)
uint64_t signExtend(uint64_t value, int32_t signpos)
const uint32_t DSP_CTL_POS[DSP_NUM_FIELDS]
int32_t dspPrecrSra(int32_t a, int32_t b, int32_t sa, int32_t fmt, int32_t round)
int32_t dspAbs(int32_t a, int32_t fmt, uint32_t *dspctl)
const uint64_t FIXED_H_UMIN
int32_t dspPrece(int32_t a, int32_t infmt, int32_t insign, int32_t outfmt, int32_t outsign, int32_t mode)
const uint64_t FIXED_B_UMAX
const uint32_t DSP_CTL_MASK[DSP_NUM_FIELDS]
int32_t dspMul(int32_t a, int32_t b, int32_t fmt, int32_t saturate, uint32_t *dspctl)
uint64_t checkOverflow(uint64_t value, int32_t fmt, int32_t sign, uint32_t *overflow)
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)
int32_t dspSub(int32_t a, int32_t b, int32_t fmt, int32_t saturate, int32_t sign, uint32_t *dspctl)
int32_t dspPrecrq(int32_t a, int32_t b, int32_t fmt, uint32_t *dspctl)
const uint64_t FIXED_L_SMAX
const uint64_t FIXED_W_SMIN
uint32_t readDSPControl(uint32_t *dspctl, uint32_t mask)
const uint64_t FIXED_W_SMAX
ThreadContext is the external interface to all thread state for anything outside of the CPU.
const uint64_t FIXED_B_SMAX
int32_t dspShra(int32_t a, uint32_t sa, int32_t fmt, int32_t round, int32_t sign, uint32_t *dspctl)
int32_t dspShrl(int32_t a, uint32_t sa, int32_t fmt, int32_t sign)
const uint64_t FIXED_SMIN[SIMD_NUM_FMTS]
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)
int32_t dspExtpd(int64_t dspac, int32_t size, uint32_t *dspctl)
const uint64_t FIXED_H_SMAX
void simdPack(uint64_t *values_ptr, int32_t *reg, int32_t fmt)
const uint32_t SIMD_NBITS[SIMD_NUM_FMTS]
const uint64_t FIXED_H_UMAX
int32_t dspCmpg(int32_t a, int32_t b, int32_t fmt, int32_t sign, int32_t op)
void simdUnpack(int32_t reg, uint64_t *values_ptr, int32_t fmt, int32_t sign)
int32_t dspPrecrqu(int32_t a, int32_t b, uint32_t *dspctl)
const uint64_t FIXED_H_SMIN
int32_t dspCmpgd(int32_t a, int32_t b, int32_t fmt, int32_t sign, int32_t op, uint32_t *dspctl)
const uint64_t FIXED_UMAX[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 dspMuleq(int32_t a, int32_t b, int32_t mode, uint32_t *dspctl)
uint64_t addHalfLsb(uint64_t value, int32_t lsbpos)
const uint64_t FIXED_SMAX[SIMD_NUM_FMTS]
int32_t bitrev(int32_t value)
void writeDSPControl(uint32_t *dspctl, uint32_t value, uint32_t mask)
int64_t dspMulsa(int64_t dspac, int32_t a, int32_t b, int32_t ac, int32_t fmt)
const uint64_t FIXED_UMIN[SIMD_NUM_FMTS]
const uint64_t FIXED_L_UMAX
const uint64_t FIXED_W_UMAX
const uint32_t SIMD_MAX_VALS
int32_t dspExtr(int64_t dspac, int32_t fmt, int32_t sa, int32_t round, int32_t saturate, uint32_t *dspctl)
void dspCmp(int32_t a, int32_t b, int32_t fmt, int32_t sign, int32_t op, uint32_t *dspctl)
int64_t dspMulsaq(int64_t dspac, int32_t a, int32_t b, int32_t ac, int32_t fmt, uint32_t *dspctl)
const uint64_t FIXED_W_UMIN
int32_t dspMuleu(int32_t a, int32_t b, int32_t mode, uint32_t *dspctl)
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_L_UMIN
int64_t dspDpa(int64_t dspac, int32_t a, int32_t b, int32_t ac, int32_t fmt, int32_t sign, int32_t mode)
const uint64_t FIXED_B_SMIN
int32_t dspPack(int32_t a, int32_t b, int32_t fmt)
#define ULL(N)
uint64_t constant
int32_t dspPick(int32_t a, int32_t b, int32_t fmt, uint32_t *dspctl)
const uint64_t FIXED_L_SMIN
int32_t dspSubh(int32_t a, int32_t b, int32_t fmt, int32_t round, int32_t sign)
int64_t dspDps(int64_t dspac, int32_t a, int32_t b, int32_t ac, int32_t fmt, int32_t sign, int32_t mode)
Generated on Wed Sep 30 2020 14:02:07 for gem5 by doxygen 1.8.17