Browse Source

Revert "[xcc, sim] added slei/sleui in lieu of slti/sltiu"

This reverts commit bf5406d4df625678bc6ec20ce1d48541541dba54.

We found a clever way to efficiently implement slti/sltiu despite the
reversed operands.  The trick is because of the following fact:

(a < b) === !(b <= a) === !(b-1 < a)

So just turn off the carry-in when doing the subtraction for the comparison.
cs250
Andrew Waterman 16 years ago
parent
commit
a71855cfd6
  1. 4
      riscv/execute.h
  2. 1
      riscv/insns/slei.h
  3. 1
      riscv/insns/sleiu.h
  4. 1
      riscv/insns/slti.h
  5. 1
      riscv/insns/sltiu.h

4
riscv/execute.h

@ -480,12 +480,12 @@ switch((insn.bits >> 0x19) & 0x7f)
}
case 0x2:
{
#include "insns/slei.h"
#include "insns/slti.h"
break;
}
case 0x3:
{
#include "insns/sleiu.h"
#include "insns/sltiu.h"
break;
}
case 0x4:

1
riscv/insns/slei.h

@ -1 +0,0 @@
RA = !(sreg_t(cmp_trunc(SIMM)) < sreg_t(cmp_trunc(RB)));

1
riscv/insns/sleiu.h

@ -1 +0,0 @@
RA = !(cmp_trunc(SIMM) < cmp_trunc(RB));

1
riscv/insns/slti.h

@ -0,0 +1 @@
RA = sreg_t(cmp_trunc(RB)) < sreg_t(cmp_trunc(SIMM));

1
riscv/insns/sltiu.h

@ -0,0 +1 @@
RA = cmp_trunc(RB) < cmp_trunc(SIMM);
Loading…
Cancel
Save