more
[ICEs.git] / bfin-strcmp / test.i.3
1 typedef long unsigned int size_t;
2 extern int printf(__const char *__restrict __format, ...);
3 size_t errors = 0;
4 static void check(int thing, int number)
5 {
6 if (!thing) {
7 ++errors;
8 }
9 }
10 int _strcmp(const char *cs, const char *ct)
11 {
12 int __res1, __res2;
13 __asm__("1:\t%2 = B[%0++] (Z);\n\t" "%3 = B[%1++] (Z);\n\t" "CC = %2 == %3;\n\t" "if ! cc jump 2f;\n\t" "CC = %2;\n\t" "if cc jump 1b (bp);\n\t" "jump.s 3f;\n" "2:\t%2 = %2 - %3;\n" "3:\n": "+&a"(cs), "+&a"(ct), "=&d"(__res1), "=&d"(__res2): :"CC");
14 return __res1;
15 }
16 void test_strcmp(void)
17 {
18 {
19 char buf1[0x40], buf2[0x40];
20 int i, j;
21 {
22 {
23 check(_strcmp(buf1 + i, buf2 + j) > 0, 2);
24 }
25 }
26 }
27 }
28 int main(int argc, char *argv[])
29 {
30 test_strcmp();
31 if (errors == 0) {
32 } else {
33 printf("TEST FAIL.\n");
34 }
35 }