1 #include <assert.h> 2 #include <stdint.h> 3 4 static void test_dr(void) 5 { 6 register int32_t r0 asm("r0") = -1; 7 register int32_t r1 asm("r1") = -4241; 8 int32_t b = 101, q, r; 9 10 asm("dr %[r0],%[b]" 11 : [r0] "+r" (r0), [r1] "+r" (r1) 12 : [b] "r" (b) 13 : "cc"); 14 q = r1; 15 r = r0; 16 assert(q == -41); 17 assert(r == -100); 18 } 19 20 static void test_dlr(void) 21 { 22 register uint32_t r0 asm("r0") = 0; 23 register uint32_t r1 asm("r1") = 4243; 24 uint32_t b = 101, q, r; 25 26 asm("dlr %[r0],%[b]" 27 : [r0] "+r" (r0), [r1] "+r" (r1) 28 : [b] "r" (b) 29 : "cc"); 30 q = r1; 31 r = r0; 32 assert(q == 42); 33 assert(r == 1); 34 } 35 36 int main(void) 37 { 38 test_dr(); 39 test_dlr(); 40 } 41