root/usr/src/tools/smatch/src/validation/optim/shift-shift.c
unsigned int shl0(unsigned int x)
{
        return x << 15 << 15;
}

unsigned int shl1(unsigned int x)
{
        return x << 16 << 15;
}

unsigned int shl2(unsigned int x)
{
        return x << 16 << 16;
}

unsigned int shl3(unsigned int x)
{
        return x << 12 << 10 << 10;
}


unsigned int lsr0(unsigned int x)
{
        return x >> 15 >> 15;
}

unsigned int lsr1(unsigned int x)
{
        return x >> 16 >> 15;
}

unsigned int lsr2(unsigned int x)
{
        return x >> 16 >> 16;
}

unsigned int lsr3(unsigned int x)
{
        return x >> 12 >> 10 >> 10;
}


int asr0(int x)
{
        return x >> 15 >> 15;
}

int asr1(int x)
{
        return x >> 16 >> 15;
}

int asr2(int x)
{
        return x >> 16 >> 16;
}

int asr3(int x)
{
        return x >> 12 >> 10 >> 10;
}

/*
 * check-name: shift-shift
 * check-command: test-linearize -Wno-decl $file
 *
 * check-output-start
shl0:
.L0:
        <entry-point>
        shl.32      %r3 <- %arg1, $30
        ret.32      %r3


shl1:
.L2:
        <entry-point>
        shl.32      %r7 <- %arg1, $31
        ret.32      %r7


shl2:
.L4:
        <entry-point>
        ret.32      $0


shl3:
.L6:
        <entry-point>
        ret.32      $0


lsr0:
.L8:
        <entry-point>
        lsr.32      %r20 <- %arg1, $30
        ret.32      %r20


lsr1:
.L10:
        <entry-point>
        lsr.32      %r24 <- %arg1, $31
        ret.32      %r24


lsr2:
.L12:
        <entry-point>
        ret.32      $0


lsr3:
.L14:
        <entry-point>
        ret.32      $0


asr0:
.L16:
        <entry-point>
        asr.32      %r37 <- %arg1, $30
        ret.32      %r37


asr1:
.L18:
        <entry-point>
        asr.32      %r41 <- %arg1, $31
        ret.32      %r41


asr2:
.L20:
        <entry-point>
        asr.32      %r45 <- %arg1, $31
        ret.32      %r45


asr3:
.L22:
        <entry-point>
        asr.32      %r50 <- %arg1, $31
        ret.32      %r50


 * check-output-end
 */