6 test(int64_t op1_init
, int64_t op2_init
, int64_t op3_init
, int expected_cc
)
8 register int64_t op1
asm("8") = op1_init
;
9 register int64_t op3
asm("9") = op3_init
;
11 int64_t op2
= op2_init
;
12 int cc
= 1 - expected_cc
;
14 printf("before op1 = %#lx\n", op1
);
15 printf("before op2 = %#lx\n", op2
);
16 printf("before op3 = %#lx\n", op3
);
22 : "=d" (cc
), "+Q" (op2
), "+d"(op1
), "+d"(op3
)
26 printf("after op1 = %#lx\n", op1
);
27 printf("after op2 = %#lx\n", op2
);
28 printf("after op3 = %#lx\n", op3
);
29 printf("cc = %d\n", cc
);
31 if (cc
!= expected_cc
) {
32 printf("condition code is incorrect\n");
34 if (expected_cc
== 0) {
36 printf("operand #2 not updated\n");
40 printf("operand #1 not updated\n");
47 test(0x1000000000000000ull
, 0x1000000000000000ull
, 0x1234567887654321ull
, 0);
48 test(0x1000000000000000ull
, 0x2000000000000000ull
, 0x1234567887654321ull
, 1);