#include #include static void test_dr(void) { register int32_t r0 asm("r0") = -1; register int32_t r1 asm("r1") = -4241; int32_t b = 101, q, r; asm("dr %[r0],%[b]" : [r0] "+r" (r0), [r1] "+r" (r1) : [b] "r" (b) : "cc"); q = r1; r = r0; assert(q == -41); assert(r == -100); } static void test_dlr(void) { register uint32_t r0 asm("r0") = 0; register uint32_t r1 asm("r1") = 4243; uint32_t b = 101, q, r; asm("dlr %[r0],%[b]" : [r0] "+r" (r0), [r1] "+r" (r1) : [b] "r" (b) : "cc"); q = r1; r = r0; assert(q == 42); assert(r == 1); } int main(void) { test_dr(); test_dlr(); }