Fix function which calculates the carry flag.
--HG-- extra : convert_revision : aeb4f2d4c3936089421dbe80647f28ae36178283
This commit is contained in:
parent
0baae59c09
commit
ee22bcd609
|
@ -32,6 +32,7 @@
|
||||||
#define __BASE_CONDCODE_HH__
|
#define __BASE_CONDCODE_HH__
|
||||||
|
|
||||||
#include "base/bitfield.hh"
|
#include "base/bitfield.hh"
|
||||||
|
#include "base/trace.hh"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate the carry flag from an addition. This should work even when
|
* Calculate the carry flag from an addition. This should work even when
|
||||||
|
@ -41,7 +42,9 @@ inline
|
||||||
bool
|
bool
|
||||||
findCarry(int width, uint64_t dest, uint64_t src1, uint64_t src2) {
|
findCarry(int width, uint64_t dest, uint64_t src1, uint64_t src2) {
|
||||||
int shift = width - 1;
|
int shift = width - 1;
|
||||||
return (~(dest >> shift) + (src1 >> shift) + (src2 >> shift)) & 0x2;
|
return ((~(dest >> shift) & 1) +
|
||||||
|
((src1 >> shift) & 1) +
|
||||||
|
((src2 >> shift) & 1)) & 0x2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue