Annotation of qemu/tests/cris/check_lz.c, revision 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.