Annotation of qemu/tests/cris/check_lz.c, revision 1.1.1.1

1.1       root        1: #include <stdio.h>
                      2: #include <stdlib.h>
                      3: #include <stdint.h>
                      4: #include "sys.h"
                      5: 
                      6: extern inline int cris_lz(int x)
                      7: {
                      8:        int r;
                      9:        asm ("lz\t%1, %0\n" : "=r" (r) : "r" (x));
                     10:        return r;
                     11: }
                     12: 
                     13: void check_lz(void)
                     14: {
                     15:        int i;
                     16: 
                     17:        if (cris_lz(0) != 32)
                     18:                err();
                     19:        if (cris_lz(1) != 31)
                     20:                err();
                     21:        if (cris_lz(2) != 30)
                     22:                err();
                     23:        if (cris_lz(4) != 29)
                     24:                err();
                     25:        if (cris_lz(8) != 28)
                     26:                err();
                     27: 
                     28:        /* try all positions with a single bit.  */
                     29:        for (i = 1; i < 32; i++) {
                     30:                if (cris_lz(1 << (i-1)) != (32 - i))
                     31:                        err();
                     32:        }
                     33: 
                     34:        /* try all positions with all bits.  */
                     35:        for (i = 1; i < 32; i++) {
                     36:                /* split up this computation to clarify it.  */
                     37:                uint32_t val;
                     38:                val = (unsigned int)-1 >> (32 - i);
                     39:                if (cris_lz(val) != (32 - i))
                     40:                        err();
                     41:        }
                     42: }
                     43: 
                     44: int main(void)
                     45: {
                     46:        check_lz();
                     47:        pass();
                     48:        exit(0);
                     49: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.