summaryrefslogtreecommitdiff
path: root/test/MC/MBlaze
diff options
context:
space:
mode:
authorWesley Peck <peckw@wesleypeck.com>2010-11-11 21:40:53 +0000
committerWesley Peck <peckw@wesleypeck.com>2010-11-11 21:40:53 +0000
commitef5b390263ebe6e22c89cb16faebf0fb3c4ce1ee (patch)
tree1d4946ca7413ccd7faba3d7125319378758918ff /test/MC/MBlaze
parent57dac88f775c1191a98cff89abd1f7ad33df5e29 (diff)
downloadllvm-ef5b390263ebe6e22c89cb16faebf0fb3c4ce1ee.tar.gz
llvm-ef5b390263ebe6e22c89cb16faebf0fb3c4ce1ee.tar.bz2
llvm-ef5b390263ebe6e22c89cb16faebf0fb3c4ce1ee.tar.xz
Fix tblgen instruction errors exposed by MC asm parser tests
Fix minimum 16-bit signed value error exposed by MC asm parser tests Add initial MC asm parser tests for the MBlaze backend git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118844 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC/MBlaze')
-rw-r--r--test/MC/MBlaze/dg.exp5
-rw-r--r--test/MC/MBlaze/mblaze_fsl.s245
-rw-r--r--test/MC/MBlaze/mblaze_imm.s194
-rw-r--r--test/MC/MBlaze/mblaze_operands.s328
-rw-r--r--test/MC/MBlaze/mblaze_typea.s72
-rw-r--r--test/MC/MBlaze/mblaze_typeb.s37
6 files changed, 881 insertions, 0 deletions
diff --git a/test/MC/MBlaze/dg.exp b/test/MC/MBlaze/dg.exp
new file mode 100644
index 0000000000..0c4e78e88d
--- /dev/null
+++ b/test/MC/MBlaze/dg.exp
@@ -0,0 +1,5 @@
+load_lib llvm.exp
+
+if { [llvm_supports_target MBlaze] } {
+ RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,c,cpp,s}]]
+}
diff --git a/test/MC/MBlaze/mblaze_fsl.s b/test/MC/MBlaze/mblaze_fsl.s
new file mode 100644
index 0000000000..da86824c82
--- /dev/null
+++ b/test/MC/MBlaze/mblaze_fsl.s
@@ -0,0 +1,245 @@
+# RUN: llvm-mc -triple mblaze-unknown-unknown -show-encoding %s | FileCheck %s
+
+# Test to ensure that all FSL immediate operands and FSL instructions
+# can be parsed by the assembly parser correctly.
+
+# TYPE F: OPCODE RD NCTAE FSL
+# BINARY: 011011 00000 000000 00000 000000 0000
+
+# TYPE FD: OPCODE RD RB NCTAE
+# BINARY: 011011 00000 00000 00000 0 00000 00000
+
+# CHECK: get
+# BINARY: 011011 00000 000000 00000 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x00,0x00]
+ get r0, rfsl0
+
+# CHECK: nget
+# BINARY: 011011 00000 000000 10000 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x40,0x00]
+ nget r0, rfsl0
+
+# CHECK: cget
+# BINARY: 011011 00000 000000 01000 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x20,0x00]
+ cget r0, rfsl0
+
+# CHECK: ncget
+# BINARY: 011011 00000 000000 11000 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x60,0x00]
+ ncget r0, rfsl0
+
+# CHECK: tget
+# BINARY: 011011 00000 000000 00100 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x10,0x00]
+ tget r0, rfsl0
+
+# CHECK: tnget
+# BINARY: 011011 00000 000000 10100 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x50,0x00]
+ tnget r0, rfsl0
+
+# CHECK: tcget
+# BINARY: 011011 00000 000000 01100 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x30,0x00]
+ tcget r0, rfsl0
+
+# CHECK: tncget
+# BINARY: 011011 00000 000000 11100 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x70,0x00]
+ tncget r0, rfsl0
+
+# CHECK: aget
+# BINARY: 011011 00000 000000 00010 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x08,0x00]
+ aget r0, rfsl0
+
+# CHECK: naget
+# BINARY: 011011 00000 000000 10010 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x48,0x00]
+ naget r0, rfsl0
+
+# CHECK: caget
+# BINARY: 011011 00000 000000 01010 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x28,0x00]
+ caget r0, rfsl0
+
+# CHECK: ncaget
+# BINARY: 011011 00000 000000 11010 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x68,0x00]
+ ncaget r0, rfsl0
+
+# CHECK: taget
+# BINARY: 011011 00000 000000 00110 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x18,0x00]
+ taget r0, rfsl0
+
+# CHECK: tnaget
+# BINARY: 011011 00000 000000 10110 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x58,0x00]
+ tnaget r0, rfsl0
+
+# CHECK: tcaget
+# BINARY: 011011 00000 000000 01110 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x38,0x00]
+ tcaget r0, rfsl0
+
+# CHECK: tncaget
+# BINARY: 011011 00000 000000 11110 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x78,0x00]
+ tncaget r0, rfsl0
+
+# CHECK: eget
+# BINARY: 011011 00000 000000 00001 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x04,0x00]
+ eget r0, rfsl0
+
+# CHECK: neget
+# BINARY: 011011 00000 000000 10001 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x44,0x00]
+ neget r0, rfsl0
+
+# CHECK: ecget
+# BINARY: 011011 00000 000000 01001 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x24,0x00]
+ ecget r0, rfsl0
+
+# CHECK: necget
+# BINARY: 011011 00000 000000 11001 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x64,0x00]
+ necget r0, rfsl0
+
+# CHECK: teget
+# BINARY: 011011 00000 000000 00101 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x14,0x00]
+ teget r0, rfsl0
+
+# CHECK: tneget
+# BINARY: 011011 00000 000000 10101 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x54,0x00]
+ tneget r0, rfsl0
+
+# CHECK: tecget
+# BINARY: 011011 00000 000000 01101 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x34,0x00]
+ tecget r0, rfsl0
+
+# CHECK: tnecget
+# BINARY: 011011 00000 000000 11101 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x74,0x00]
+ tnecget r0, rfsl0
+
+# CHECK: eaget
+# BINARY: 011011 00000 000000 00011 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x0c,0x00]
+ eaget r0, rfsl0
+
+# CHECK: neaget
+# BINARY: 011011 00000 000000 10011 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x4c,0x00]
+ neaget r0, rfsl0
+
+# CHECK: ecaget
+# BINARY: 011011 00000 000000 01011 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x2c,0x00]
+ ecaget r0, rfsl0
+
+# CHECK: necaget
+# BINARY: 011011 00000 000000 11011 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x6c,0x00]
+ necaget r0, rfsl0
+
+# CHECK: teaget
+# BINARY: 011011 00000 000000 00111 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x1c,0x00]
+ teaget r0, rfsl0
+
+# CHECK: tneaget
+# BINARY: 011011 00000 000000 10111 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x5c,0x00]
+ tneaget r0, rfsl0
+
+# CHECK: tecaget
+# BINARY: 011011 00000 000000 01111 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x3c,0x00]
+ tecaget r0, rfsl0
+
+# CHECK: tnecaget
+# BINARY: 011011 00000 000000 11111 000000 0000
+# CHECK: encoding: [0x6c,0x00,0x7c,0x00]
+ tnecaget r0, rfsl0
+
+# CHECK: get
+# BINARY: 011011 00000 000000 00000 000000 0001
+# CHECK: encoding: [0x6c,0x00,0x00,0x01]
+ get r0, rfsl1
+
+# CHECK: get
+# BINARY: 011011 00000 000000 00000 000000 0010
+# CHECK: encoding: [0x6c,0x00,0x00,0x02]
+ get r0, rfsl2
+
+# CHECK: get
+# BINARY: 011011 00000 000000 00000 000000 0011
+# CHECK: encoding: [0x6c,0x00,0x00,0x03]
+ get r0, rfsl3
+
+# CHECK: get
+# BINARY: 011011 00000 000000 00000 000000 0100
+# CHECK: encoding: [0x6c,0x00,0x00,0x04]
+ get r0, rfsl4
+
+# CHECK: get
+# BINARY: 011011 00000 000000 00000 000000 0101
+# CHECK: encoding: [0x6c,0x00,0x00,0x05]
+ get r0, rfsl5
+
+# CHECK: get
+# BINARY: 011011 00000 000000 00000 000000 0110
+# CHECK: encoding: [0x6c,0x00,0x00,0x06]
+ get r0, rfsl6
+
+# CHECK: get
+# BINARY: 011011 00000 000000 00000 000000 0111
+# CHECK: encoding: [0x6c,0x00,0x00,0x07]
+ get r0, rfsl7
+
+# CHECK: get
+# BINARY: 011011 00000 000000 00000 000000 1000
+# CHECK: encoding: [0x6c,0x00,0x00,0x08]
+ get r0, rfsl8
+
+# CHECK: get
+# BINARY: 011011 00000 000000 00000 000000 1001
+# CHECK: encoding: [0x6c,0x00,0x00,0x09]
+ get r0, rfsl9
+
+# CHECK: get
+# BINARY: 011011 00000 000000 00000 000000 1010
+# CHECK: encoding: [0x6c,0x00,0x00,0x0a]
+ get r0, rfsl10
+
+# CHECK: get
+# BINARY: 011011 00000 000000 00000 000000 1011
+# CHECK: encoding: [0x6c,0x00,0x00,0x0b]
+ get r0, rfsl11
+
+# CHECK: get
+# BINARY: 011011 00000 000000 00000 000000 1100
+# CHECK: encoding: [0x6c,0x00,0x00,0x0c]
+ get r0, rfsl12
+
+# CHECK: get
+# BINARY: 011011 00000 000000 00000 000000 1101
+# CHECK: encoding: [0x6c,0x00,0x00,0x0d]
+ get r0, rfsl13
+
+# CHECK: get
+# BINARY: 011011 00000 000000 00000 000000 1110
+# CHECK: encoding: [0x6c,0x00,0x00,0x0e]
+ get r0, rfsl14
+
+# CHECK: get
+# BINARY: 011011 00000 000000 00000 000000 1111
+# CHECK: encoding: [0x6c,0x00,0x00,0x0f]
+ get r0, rfsl15
diff --git a/test/MC/MBlaze/mblaze_imm.s b/test/MC/MBlaze/mblaze_imm.s
new file mode 100644
index 0000000000..08b8a0f268
--- /dev/null
+++ b/test/MC/MBlaze/mblaze_imm.s
@@ -0,0 +1,194 @@
+# RUN: llvm-mc -triple mblaze-unknown-unknown -show-encoding %s | FileCheck %s
+
+# In the microblaze instruction set, any TYPE-B instruction with a
+# signed immediate value requiring more than 16-bits must be prefixed
+# with an IMM instruction that contains the high 16-bits. The higher
+# 16-bits are then combined with the lower 16-bits in the original
+# instruction to form a 32-bit immediate value.
+#
+# The generation of IMM instructions is handled automatically by the
+# code emitter. Test to ensure that IMM instructions are generated
+# when they are suppose to and are not generated when they are not
+# needed.
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000000000000
+# CHECK: encoding: [0x20,0x00,0x00,0x00]
+ addi r0, r0, 0x00000000
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000000000001
+# CHECK: encoding: [0x20,0x00,0x00,0x01]
+ addi r0, r0, 0x00000001
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000000000010
+# CHECK: encoding: [0x20,0x00,0x00,0x02]
+ addi r0, r0, 0x00000002
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000000000100
+# CHECK: encoding: [0x20,0x00,0x00,0x04]
+ addi r0, r0, 0x00000004
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000000001000
+# CHECK: encoding: [0x20,0x00,0x00,0x08]
+ addi r0, r0, 0x00000008
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000000010000
+# CHECK: encoding: [0x20,0x00,0x00,0x10]
+ addi r0, r0, 0x00000010
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000000100000
+# CHECK: encoding: [0x20,0x00,0x00,0x20]
+ addi r0, r0, 0x00000020
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000001000000
+# CHECK: encoding: [0x20,0x00,0x00,0x40]
+ addi r0, r0, 0x00000040
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000010000000
+# CHECK: encoding: [0x20,0x00,0x00,0x80]
+ addi r0, r0, 0x00000080
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000100000000
+# CHECK: encoding: [0x20,0x00,0x01,0x00]
+ addi r0, r0, 0x00000100
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000001000000000
+# CHECK: encoding: [0x20,0x00,0x02,0x00]
+ addi r0, r0, 0x00000200
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000010000000000
+# CHECK: encoding: [0x20,0x00,0x04,0x00]
+ addi r0, r0, 0x00000400
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000100000000000
+# CHECK: encoding: [0x20,0x00,0x08,0x00]
+ addi r0, r0, 0x00000800
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0001000000000000
+# CHECK: encoding: [0x20,0x00,0x10,0x00]
+ addi r0, r0, 0x00001000
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0010000000000000
+# CHECK: encoding: [0x20,0x00,0x20,0x00]
+ addi r0, r0, 0x00002000
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0100000000000000
+# CHECK: encoding: [0x20,0x00,0x40,0x00]
+ addi r0, r0, 0x00004000
+
+# CHECK: addi
+# BINARY: 101100 00000 00000 0000000000000000
+# BINARY: 001000 00000 00000 1000000000000000
+# CHECK: encoding: [0xb0,0x00,0x00,0x00,0x20,0x00,0x80,0x00]
+ addi r0, r0, 0x00008000
+
+# CHECK: addi
+# BINARY: 101100 00000 00000 0000000000000001
+# 001000 00000 00000 0000000000000000
+# CHECK: encoding: [0xb0,0x00,0x00,0x01,0x20,0x00,0x00,0x00]
+ addi r0, r0, 0x00010000
+
+# CHECK: addi
+# BINARY: 101100 00000 00000 0000000000000010
+# 001000 00000 00000 0000000000000000
+# CHECK: encoding: [0xb0,0x00,0x00,0x02,0x20,0x00,0x00,0x00]
+ addi r0, r0, 0x00020000
+
+# CHECK: addi
+# BINARY: 101100 00000 00000 0000000000000100
+# 001000 00000 00000 0000000000000000
+# CHECK: encoding: [0xb0,0x00,0x00,0x04,0x20,0x00,0x00,0x00]
+ addi r0, r0, 0x00040000
+
+# CHECK: addi
+# BINARY: 101100 00000 00000 0000000000001000
+# 001000 00000 00000 0000000000000000
+# CHECK: encoding: [0xb0,0x00,0x00,0x08,0x20,0x00,0x00,0x00]
+ addi r0, r0, 0x00080000
+
+# CHECK: addi
+# BINARY: 101100 00000 00000 0000000000010000
+# 001000 00000 00000 0000000000000000
+# CHECK: encoding: [0xb0,0x00,0x00,0x10,0x20,0x00,0x00,0x00]
+ addi r0, r0, 0x00100000
+
+# CHECK: addi
+# BINARY: 101100 00000 00000 0000000000100000
+# 001000 00000 00000 0000000000000000
+# CHECK: encoding: [0xb0,0x00,0x00,0x20,0x20,0x00,0x00,0x00]
+ addi r0, r0, 0x00200000
+
+# CHECK: addi
+# BINARY: 101100 00000 00000 0000000001000000
+# 001000 00000 00000 0000000000000000
+# CHECK: encoding: [0xb0,0x00,0x00,0x40,0x20,0x00,0x00,0x00]
+ addi r0, r0, 0x00400000
+
+# CHECK: addi
+# BINARY: 101100 00000 00000 0000000010000000
+# 001000 00000 00000 0000000000000000
+# CHECK: encoding: [0xb0,0x00,0x00,0x80,0x20,0x00,0x00,0x00]
+ addi r0, r0, 0x00800000
+
+# CHECK: addi
+# BINARY: 101100 00000 00000 0000000100000000
+# 001000 00000 00000 0000000000000000
+# CHECK: encoding: [0xb0,0x00,0x01,0x00,0x20,0x00,0x00,0x00]
+ addi r0, r0, 0x01000000
+
+# CHECK: addi
+# BINARY: 101100 00000 00000 0000001000000000
+# 001000 00000 00000 0000000000000000
+# CHECK: encoding: [0xb0,0x00,0x02,0x00,0x20,0x00,0x00,0x00]
+ addi r0, r0, 0x02000000
+
+# CHECK: addi
+# BINARY: 101100 00000 00000 0000010000000000
+# 001000 00000 00000 0000000000000000
+# CHECK: encoding: [0xb0,0x00,0x04,0x00,0x20,0x00,0x00,0x00]
+ addi r0, r0, 0x04000000
+
+# CHECK: addi
+# BINARY: 101100 00000 00000 0000100000000000
+# 001000 00000 00000 0000000000000000
+# CHECK: encoding: [0xb0,0x00,0x08,0x00,0x20,0x00,0x00,0x00]
+ addi r0, r0, 0x08000000
+
+# CHECK: addi
+# BINARY: 101100 00000 00000 0001000000000000
+# 001000 00000 00000 0000000000000000
+# CHECK: encoding: [0xb0,0x00,0x10,0x00,0x20,0x00,0x00,0x00]
+ addi r0, r0, 0x10000000
+
+# CHECK: addi
+# BINARY: 101100 00000 00000 0010000000000000
+# 001000 00000 00000 0000000000000000
+# CHECK: encoding: [0xb0,0x00,0x20,0x00,0x20,0x00,0x00,0x00]
+ addi r0, r0, 0x20000000
+
+# CHECK: addi
+# BINARY: 101100 00000 00000 0100000000000000
+# 001000 00000 00000 0000000000000000
+# CHECK: encoding: [0xb0,0x00,0x40,0x00,0x20,0x00,0x00,0x00]
+ addi r0, r0, 0x40000000
+
+# CHECK: addi
+# BINARY: 101100 00000 00000 1000000000000000
+# 001000 00000 00000 0000000000000000
+# CHECK: encoding: [0xb0,0x00,0x80,0x00,0x20,0x00,0x00,0x00]
+ addi r0, r0, 0x80000000
diff --git a/test/MC/MBlaze/mblaze_operands.s b/test/MC/MBlaze/mblaze_operands.s
new file mode 100644
index 0000000000..d5f1d8059f
--- /dev/null
+++ b/test/MC/MBlaze/mblaze_operands.s
@@ -0,0 +1,328 @@
+# RUN: llvm-mc -triple mblaze-unknown-unknown -show-encoding %s | FileCheck %s
+
+# Test to ensure that all register and immediate operands can be parsed by
+# the assembly parser correctly. Testing the parsing of FSL immediate
+# values is done in a different test.
+
+# TYPE A: OPCODE RD RA RB FLAGS
+# BINARY: 000000 00000 00000 00000 00000000000
+
+# CHECK: add
+# BINARY: 000000 00000 00000 00000 00000000000
+# CHECK: encoding: [0x00,0x00,0x00,0x00]
+ add r0, r0, r0
+
+# CHECK: add
+# BINARY: 000000 00001 00001 00001 00000000000
+# CHECK: encoding: [0x00,0x21,0x08,0x00]
+ add r1, r1, r1
+
+# CHECK: add
+# BINARY: 000000 00010 00010 00010 00000000000
+# CHECK: encoding: [0x00,0x42,0x10,0x00]
+ add r2, r2, r2
+
+# CHECK: add
+# BINARY: 000000 00011 00011 00011 00000000000
+# CHECK: encoding: [0x00,0x63,0x18,0x00]
+ add r3, r3, r3
+
+# CHECK: add
+# BINARY: 000000 00100 00100 00100 00000000000
+# CHECK: encoding: [0x00,0x84,0x20,0x00]
+ add r4, r4, r4
+
+# CHECK: add
+# BINARY: 000000 00101 00101 00101 00000000000
+# CHECK: encoding: [0x00,0xa5,0x28,0x00]
+ add r5, r5, r5
+
+# CHECK: add
+# BINARY: 000000 00110 00110 00110 00000000000
+# CHECK: encoding: [0x00,0xc6,0x30,0x00]
+ add r6, r6, r6
+
+# CHECK: add
+# BINARY: 000000 00111 00111 00111 00000000000
+# CHECK: encoding: [0x00,0xe7,0x38,0x00]
+ add r7, r7, r7
+
+# CHECK: add
+# BINARY: 000000 01000 01000 01000 00000000000
+# CHECK: encoding: [0x01,0x08,0x40,0x00]
+ add r8, r8, r8
+
+# CHECK: add
+# BINARY: 000000 01001 01001 01001 00000000000
+# CHECK: encoding: [0x01,0x29,0x48,0x00]
+ add r9, r9, r9
+
+# CHECK: add
+# BINARY: 000000 01010 01010 01010 00000000000
+# CHECK: encoding: [0x01,0x4a,0x50,0x00]
+ add r10, r10, r10
+
+# CHECK: add
+# BINARY: 000000 01011 01011 01011 00000000000
+# CHECK: encoding: [0x01,0x6b,0x58,0x00]
+ add r11, r11, r11
+
+# CHECK: add
+# BINARY: 000000 01100 01100 01100 00000000000
+# CHECK: encoding: [0x01,0x8c,0x60,0x00]
+ add r12, r12, r12
+
+# CHECK: add
+# BINARY: 000000 01101 01101 01101 00000000000
+# CHECK: encoding: [0x01,0xad,0x68,0x00]
+ add r13, r13, r13
+
+# CHECK: add
+# BINARY: 000000 01110 01110 01110 00000000000
+# CHECK: encoding: [0x01,0xce,0x70,0x00]
+ add r14, r14, r14
+
+# CHECK: add
+# BINARY: 000000 01111 01111 01111 00000000000
+# CHECK: encoding: [0x01,0xef,0x78,0x00]
+ add r15, r15, r15
+
+# CHECK: add
+# BINARY: 000000 10000 10000 10000 00000000000
+# CHECK: encoding: [0x02,0x10,0x80,0x00]
+ add r16, r16, r16
+
+# CHECK: add
+# BINARY: 000000 10001 10001 10001 00000000000
+# CHECK: encoding: [0x02,0x31,0x88,0x00]
+ add r17, r17, r17
+
+# CHECK: add
+# BINARY: 000000 10010 10010 10010 00000000000
+# CHECK: encoding: [0x02,0x52,0x90,0x00]
+ add r18, r18, r18
+
+# CHECK: add
+# BINARY: 000000 10011 10011 10011 00000000000
+# CHECK: encoding: [0x02,0x73,0x98,0x00]
+ add r19, r19, r19
+
+# CHECK: add
+# BINARY: 000000 10100 10100 10100 00000000000
+# CHECK: encoding: [0x02,0x94,0xa0,0x00]
+ add r20, r20, r20
+
+# CHECK: add
+# BINARY: 000000 10101 10101 10101 00000000000
+# CHECK: encoding: [0x02,0xb5,0xa8,0x00]
+ add r21, r21, r21
+
+# CHECK: add
+# BINARY: 000000 10110 10110 10110 00000000000
+# CHECK: encoding: [0x02,0xd6,0xb0,0x00]
+ add r22, r22, r22
+
+# CHECK: add
+# BINARY: 000000 10111 10111 10111 00000000000
+# CHECK: encoding: [0x02,0xf7,0xb8,0x00]
+ add r23, r23, r23
+
+# CHECK: add
+# BINARY: 000000 11000 11000 11000 00000000000
+# CHECK: encoding: [0x03,0x18,0xc0,0x00]
+ add r24, r24, r24
+
+# CHECK: add
+# BINARY: 000000 11001 11001 11001 00000000000
+# CHECK: encoding: [0x03,0x39,0xc8,0x00]
+ add r25, r25, r25
+
+# CHECK: add
+# BINARY: 000000 11010 11010 11010 00000000000
+# CHECK: encoding: [0x03,0x5a,0xd0,0x00]
+ add r26, r26, r26
+
+# CHECK: add
+# BINARY: 000000 11011 11011 11011 00000000000
+# CHECK: encoding: [0x03,0x7b,0xd8,0x00]
+ add r27, r27, r27
+
+# CHECK: add
+# BINARY: 000000 11100 11100 11100 00000000000
+# CHECK: encoding: [0x03,0x9c,0xe0,0x00]
+ add r28, r28, r28
+
+# CHECK: add
+# BINARY: 000000 11101 11101 11101 00000000000
+# CHECK: encoding: [0x03,0xbd,0xe8,0x00]
+ add r29, r29, r29
+
+# CHECK: add
+# BINARY: 000000 11110 11110 11110 00000000000
+# CHECK: encoding: [0x03,0xde,0xf0,0x00]
+ add r30, r30, r30
+
+# CHECK: add
+# BINARY: 000000 11111 11111 11111 00000000000
+# CHECK: encoding: [0x03,0xff,0xf8,0x00]
+ add r31, r31, r31
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000000000000
+# CHECK: encoding: [0x20,0x00,0x00,0x00]
+ addi r0, r0, 0
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000000000001
+# CHECK: encoding: [0x20,0x00,0x00,0x01]
+ addi r0, r0, 1
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000000000010
+# CHECK: encoding: [0x20,0x00,0x00,0x02]
+ addi r0, r0, 2
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000000000100
+# CHECK: encoding: [0x20,0x00,0x00,0x04]
+ addi r0, r0, 4
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000000001000
+# CHECK: encoding: [0x20,0x00,0x00,0x08]
+ addi r0, r0, 8
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000000010000
+# CHECK: encoding: [0x20,0x00,0x00,0x10]
+ addi r0, r0, 16
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000000100000
+# CHECK: encoding: [0x20,0x00,0x00,0x20]
+ addi r0, r0, 32
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000001000000
+# CHECK: encoding: [0x20,0x00,0x00,0x40]
+ addi r0, r0, 64
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000010000000
+# CHECK: encoding: [0x20,0x00,0x00,0x80]
+ addi r0, r0, 128
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000000100000000
+# CHECK: encoding: [0x20,0x00,0x01,0x00]
+ addi r0, r0, 256
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000001000000000
+# CHECK: encoding: [0x20,0x00,0x02,0x00]
+ addi r0, r0, 512
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000010000000000
+# CHECK: encoding: [0x20,0x00,0x04,0x00]
+ addi r0, r0, 1024
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0000100000000000
+# CHECK: encoding: [0x20,0x00,0x08,0x00]
+ addi r0, r0, 2048
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0001000000000000
+# CHECK: encoding: [0x20,0x00,0x10,0x00]
+ addi r0, r0, 4096
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0010000000000000
+# CHECK: encoding: [0x20,0x00,0x20,0x00]
+ addi r0, r0, 8192
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 0100000000000000
+# CHECK: encoding: [0x20,0x00,0x40,0x00]
+ addi r0, r0, 16384
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 1111111111111111
+# CHECK: encoding: [0x20,0x00,0xff,0xff]
+ addi r0, r0, -1
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 1111111111111110
+# CHECK: encoding: [0x20,0x00,0xff,0xfe]
+ addi r0, r0, -2
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 1111111111111100
+# CHECK: encoding: [0x20,0x00,0xff,0xfc]
+ addi r0, r0, -4
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 1111111111111000
+# CHECK: encoding: [0x20,0x00,0xff,0xf8]
+ addi r0, r0, -8
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 1111111111110000
+# CHECK: encoding: [0x20,0x00,0xff,0xf0]
+ addi r0, r0, -16
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 1111111111100000
+# CHECK: encoding: [0x20,0x00,0xff,0xe0]
+ addi r0, r0, -32
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 1111111111000000
+# CHECK: encoding: [0x20,0x00,0xff,0xc0]
+ addi r0, r0, -64
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 1111111110000000
+# CHECK: encoding: [0x20,0x00,0xff,0x80]
+ addi r0, r0, -128
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 1111111100000000
+# CHECK: encoding: [0x20,0x00,0xff,0x00]
+ addi r0, r0, -256
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 1111111000000000
+# CHECK: encoding: [0x20,0x00,0xfe,0x00]
+ addi r0, r0, -512
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 1111110000000000
+# CHECK: encoding: [0x20,0x00,0xfc,0x00]
+ addi r0, r0, -1024
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 1111100000000000
+# CHECK: encoding: [0x20,0x00,0xf8,0x00]
+ addi r0, r0, -2048
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 1111000000000000
+# CHECK: encoding: [0x20,0x00,0xf0,0x00]
+ addi r0, r0, -4096
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 1110000000000000
+# CHECK: encoding: [0x20,0x00,0xe0,0x00]
+ addi r0, r0, -8192
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 1100000000000000
+# CHECK: encoding: [0x20,0x00,0xc0,0x00]
+ addi r0, r0, -16384
+
+# CHECK: addi
+# BINARY: 001000 00000 00000 1000000000000000
+# CHECK: encoding: [0x20,0x00,0x80,0x00]
+ addi r0, r0, -32768
diff --git a/test/MC/MBlaze/mblaze_typea.s b/test/MC/MBlaze/mblaze_typea.s
new file mode 100644
index 0000000000..8e0c7e8bda
--- /dev/null
+++ b/test/MC/MBlaze/mblaze_typea.s
@@ -0,0 +1,72 @@
+# 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: beq
+# BINARY: 100111 00000 00010 00011 00000000000
+# CHECK: encoding: [0x9c,0x02,0x18,0x00]
+ beq r2, r3
+
+# CHECK: bge
+# BINARY: 100111 00101 00010 00011 00000000000
+# CHECK: encoding: [0x9c,0xa2,0x18,0x00]
+ bge r2, r3
+
+# CHECK: bgt
+# BINARY: 100111 00100 00010 00011 00000000000
+# CHECK: encoding: [0x9c,0x82,0x18,0x00]
+ bgt r2, r3
+
+# CHECK: ble
+# BINARY: 100111 00011 00010 00011 00000000000
+# CHECK: encoding: [0x9c,0x62,0x18,0x00]
+ ble r2, r3
+
+# CHECK: blt
+# BINARY: 100111 00010 00010 00011 00000000000
+# CHECK: encoding: [0x9c,0x42,0x18,0x00]
+ blt r2, r3
+
+# CHECK: bne
+# BINARY: 100111 00001 00010 00011 00000000000
+# CHECK: encoding: [0x9c,0x22,0x18,0x00]
+ bne r2, r3
+
+# CHECK: nop
+# BINARY: 100000 00000 00000 00000 00000000000
+# CHECK: encoding: [0x80,0x00,0x00,0x00]
+ nop
diff --git a/test/MC/MBlaze/mblaze_typeb.s b/test/MC/MBlaze/mblaze_typeb.s
new file mode 100644
index 0000000000..bc24e24b79
--- /dev/null
+++ b/test/MC/MBlaze/mblaze_typeb.s
@@ -0,0 +1,37 @@
+# RUN: llvm-mc -triple mblaze-unknown-unknown -show-encoding %s | FileCheck %s
+
+# Test to make sure that all of the TYPE-B instructions supported by
+# the Microblaze can be parsed by the assembly parser.
+
+# TYPE B: OPCODE RD RA IMMEDIATE
+# 000000 00000 00000 0000000000000000
+
+# CHECK: addi
+# BINARY: 001000 00001 00010 0000000000001111
+# CHECK: encoding: [0x20,0x22,0x00,0x0f]
+ addi r1, r2, 0x000F
+
+# CHECK: addic
+# BINARY: 001010 00001 00010 0000000000001111
+# CHECK: encoding: [0x28,0x22,0x00,0x0f]
+ addic r1, r2, 0x000F
+
+# CHECK: addik
+# BINARY: 001100 00001 00010 0000000000001111
+# CHECK: encoding: [0x30,0x22,0x00,0x0f]
+ addik r1, r2, 0x000F
+
+# CHECK: addikc
+# BINARY: 001110 00001 00010 0000000000001111
+# CHECK: encoding: [0x38,0x22,0x00,0x0f]
+ addikc r1, r2, 0x000F
+
+# CHECK: andi
+# BINARY: 101001 00001 00010 0000000000001111
+# CHECK: encoding: [0xa4,0x22,0x00,0x0f]
+ andi r1, r2, 0x000F
+
+# CHECK: andni
+# BINARY: 101011 00001 00010 0000000000001111
+# CHECK: encoding: [0xac,0x22,0x00,0x0f]
+ andni r1, r2, 0x000F