Internals: Fix some missing branch prediction

This commit is contained in:
Wilson Snyder 2010-03-22 19:07:03 -04:00
parent c3887efbf3
commit eb5c035dde

View File

@ -833,7 +833,7 @@ void VL_READMEM_W(bool hex, int width, int depth, int array_lsb, int fnwords,
} else { } else {
needinc = true; needinc = true;
//printf(" Value width=%d @%x = %c\n", width, addr, c); //printf(" Value width=%d @%x = %c\n", width, addr, c);
if (addr >= (IData)(depth+array_lsb) || addr < (IData)(array_lsb)) { if (VL_UNLIKELY(addr >= (IData)(depth+array_lsb) || addr < (IData)(array_lsb))) {
vl_fatal (ofilenamez, linenum, "", "$readmem file address beyond bounds of array"); vl_fatal (ofilenamez, linenum, "", "$readmem file address beyond bounds of array");
} else { } else {
int entry = addr - array_lsb; int entry = addr - array_lsb;
@ -861,7 +861,7 @@ void VL_READMEM_W(bool hex, int width, int depth, int array_lsb, int fnwords,
_VL_SHIFTL_INPLACE_W(width, datap, (IData)shift); _VL_SHIFTL_INPLACE_W(width, datap, (IData)shift);
datap[0] |= value; datap[0] |= value;
} }
if (value>=(1<<shift)) { if (VL_UNLIKELY(value>=(1<<shift))) {
vl_fatal (ofilenamez, linenum, "", "$readmemb (binary) file contains hex characters"); vl_fatal (ofilenamez, linenum, "", "$readmemb (binary) file contains hex characters");
} }
} }
@ -878,7 +878,7 @@ void VL_READMEM_W(bool hex, int width, int depth, int array_lsb, int fnwords,
// Final checks // Final checks
fclose(fp); fclose(fp);
if (end != VL_UL(0xffffffff) && addr != (end+1)) { if (VL_UNLIKELY(end != VL_UL(0xffffffff) && addr != (end+1))) {
vl_fatal (ofilenamez, linenum, "", "$readmem file ended before specified ending-address"); vl_fatal (ofilenamez, linenum, "", "$readmem file ended before specified ending-address");
} }
} }
@ -1049,10 +1049,10 @@ void VerilatedScope::exportInsert(int finalize, const char* namep, void* cb) {
// Alternative is to dynamically stretch the array, which is more code, and slower. // Alternative is to dynamically stretch the array, which is more code, and slower.
if (funcnum >= m_funcnumMax) { m_funcnumMax = funcnum+1; } if (funcnum >= m_funcnumMax) { m_funcnumMax = funcnum+1; }
} else { } else {
if (funcnum >= m_funcnumMax) { if (VL_UNLIKELY(funcnum >= m_funcnumMax)) {
vl_fatal(__FILE__,__LINE__,"","Internal: Bad funcnum vs. pre-finalize maximum"); vl_fatal(__FILE__,__LINE__,"","Internal: Bad funcnum vs. pre-finalize maximum");
} }
if (!m_callbacksp) { // First allocation if (VL_UNLIKELY(!m_callbacksp)) { // First allocation
m_callbacksp = new void* [m_funcnumMax]; m_callbacksp = new void* [m_funcnumMax];
memset(m_callbacksp, 0, m_funcnumMax*sizeof(void*)); memset(m_callbacksp, 0, m_funcnumMax*sizeof(void*));
} }