integer: Add ADDS test
Moved to inline asm by Normmatt.
This commit is contained in:
parent
72471ea31f
commit
c54a879de9
@ -11,6 +11,7 @@ static bool Add() {
|
|||||||
unsigned int output = 0;
|
unsigned int output = 0;
|
||||||
unsigned int rm = 0;
|
unsigned int rm = 0;
|
||||||
unsigned int rn = 0;
|
unsigned int rn = 0;
|
||||||
|
unsigned int badflags = 0;
|
||||||
|
|
||||||
// Generic addition
|
// Generic addition
|
||||||
asm volatile ("LDR r0, =420\n"
|
asm volatile ("LDR r0, =420\n"
|
||||||
@ -26,7 +27,24 @@ static bool Add() {
|
|||||||
if (output != 0)
|
if (output != 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// TODO: ADC, ADCS, ADDW, and ADDS variants.
|
// ADDS
|
||||||
|
badflags = 0;
|
||||||
|
rm = std::numeric_limits<unsigned int>::max() - 1;
|
||||||
|
rn = 1;
|
||||||
|
asm volatile ("ADDS %[Rm], %[Rm], %[Rn]\n"
|
||||||
|
"ORRCS %[out], %[out], #1\n"
|
||||||
|
"ORRPL %[out], %[out], #2\n"
|
||||||
|
"ORRVS %[out], %[out], #4\n"
|
||||||
|
"ORREQ %[out], %[out], #8\n"
|
||||||
|
"ADDS %[Rm], %[Rm], %[Rn]\n"
|
||||||
|
"ORRCC %[out], %[out], #1\n"
|
||||||
|
"ORRMI %[out], %[out], #2\n"
|
||||||
|
"ORRVS %[out], %[out], #4\n"
|
||||||
|
"ORRNE %[out], %[out], #8" : [out] "+r"(badflags), [Rm] "+r"(rm) : [Rn] "r"(rn));
|
||||||
|
if (badflags != 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// TODO: ADC, ADCS, ADDW variants.
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user