mblaze_typea.s   [plain text]


# RUN: llvm-mc -triple mblaze-unknown-unknown -show-encoding %s | FileCheck %s

# Test to make sure that all of the TYPE-A instructions supported by
# the Microblaze can be parsed by the assembly parser.

# TYPE A:   OPCODE RD    RA    RB    FLAGS
# BINARY:   000000 00000 00000 00000 00000000000

# CHECK:    add
# BINARY:   000000 00001 00010 00011 00000000000
# CHECK:    encoding: [0x00,0x22,0x18,0x00]
            add     r1, r2, r3

# CHECK:    addc
# BINARY:   000010 00001 00010 00011 00000000000
# CHECK:    encoding: [0x08,0x22,0x18,0x00]
            addc    r1, r2, r3

# CHECK:    addk
# BINARY:   000100 00001 00010 00011 00000000000
# CHECK:    encoding: [0x10,0x22,0x18,0x00]
            addk    r1, r2, r3

# CHECK:    addkc
# BINARY:   000110 00001 00010 00011 00000000000
# CHECK:    encoding: [0x18,0x22,0x18,0x00]
            addkc   r1, r2, r3

# CHECK:    and
# BINARY:   100001 00001 00010 00011 00000000000
# CHECK:    encoding: [0x84,0x22,0x18,0x00]
            and     r1, r2, r3

# CHECK:    andn
# BINARY:   100011 00001 00010 00011 00000000000
# CHECK:    encoding: [0x8c,0x22,0x18,0x00]
            andn    r1, r2, r3

# CHECK:    cmp
# BINARY:   000101 00001 00010 00011 00000000001
# CHECK:    encoding: [0x14,0x22,0x18,0x01]
            cmp     r1, r2, r3

# CHECK:    cmpu
# BINARY:   000101 00001 00010 00011 00000000011
# CHECK:    encoding: [0x14,0x22,0x18,0x03]
            cmpu    r1, r2, r3

# CHECK:    idiv
# BINARY:   010010 00001 00010 00011 00000000000
# CHECK:    encoding: [0x48,0x22,0x18,0x00]
            idiv    r1, r2, r3

# CHECK:    idivu
# BINARY:   010010 00001 00010 00011 00000000010
# CHECK:    encoding: [0x48,0x22,0x18,0x02]
            idivu   r1, r2, r3

# CHECK:    mul
# BINARY:   010000 00001 00010 00011 00000000000
# CHECK:    encoding: [0x40,0x22,0x18,0x00]
            mul    r1, r2, r3

# CHECK:    mulh
# BINARY:   010000 00001 00010 00011 00000000001
# CHECK:    encoding: [0x40,0x22,0x18,0x01]
            mulh   r1, r2, r3

# CHECK:    mulhu
# BINARY:   010000 00001 00010 00011 00000000011
# CHECK:    encoding: [0x40,0x22,0x18,0x03]
            mulhu  r1, r2, r3

# CHECK:    mulhsu
# BINARY:   010000 00001 00010 00011 00000000010
# CHECK:    encoding: [0x40,0x22,0x18,0x02]
            mulhsu r1, r2, r3

# CHECK:    or
# BINARY:   100000 00001 00010 00011 00000000000
# CHECK:    encoding: [0x80,0x22,0x18,0x00]
            or      r1, r2, r3

# CHECK:    rsub
# BINARY:   000001 00001 00010 00011 00000000000
# CHECK:    encoding: [0x04,0x22,0x18,0x00]
            rsub    r1, r2, r3

# CHECK:    rsubc
# BINARY:   000011 00001 00010 00011 00000000000
# CHECK:    encoding: [0x0c,0x22,0x18,0x00]
            rsubc   r1, r2, r3

# CHECK:    rsubk
# BINARY:   000101 00001 00010 00011 00000000000
# CHECK:    encoding: [0x14,0x22,0x18,0x00]
            rsubk   r1, r2, r3

# CHECK:    rsubkc
# BINARY:   000111 00001 00010 00011 00000000000
# CHECK:    encoding: [0x1c,0x22,0x18,0x00]
            rsubkc  r1, r2, r3

# CHECK:    sext16
# BINARY:   100100 00001 00010 00000 00001100001
# CHECK:    encoding: [0x90,0x22,0x00,0x61]
            sext16  r1, r2

# CHECK:    sext8
# BINARY:   100100 00001 00010 00000 00001100000
# CHECK:    encoding: [0x90,0x22,0x00,0x60]
            sext8   r1, r2

# CHECK:    xor
# BINARY:   100010 00001 00010 00011 00000000000
# CHECK:    encoding: [0x88,0x22,0x18,0x00]
            xor     r1, r2, r3

# CHECK:    nop
# BINARY:   100000 00000 00000 00000 00000000000
# CHECK:    encoding: [0x80,0x00,0x00,0x00]
        nop