187d13e5eSZoran Jovanovic# RUN: llvm-mc %s -triple=mipsel -show-encoding -mattr=micromips | \ 287d13e5eSZoran Jovanovic# RUN: FileCheck -check-prefix=CHECK-EL %s 387d13e5eSZoran Jovanovic# RUN: llvm-mc %s -triple=mips -show-encoding -mattr=micromips | \ 487d13e5eSZoran Jovanovic# RUN: FileCheck -check-prefix=CHECK-EB %s 587d13e5eSZoran Jovanovic# Check that the assembler can handle the documented syntax 687d13e5eSZoran Jovanovic# for arithmetic and logical instructions. 787d13e5eSZoran Jovanovic#------------------------------------------------------------------------------ 887d13e5eSZoran Jovanovic# MicroMIPS 16-bit Instructions 987d13e5eSZoran Jovanovic#------------------------------------------------------------------------------ 1087d13e5eSZoran Jovanovic# Little endian 1187d13e5eSZoran Jovanovic#------------------------------------------------------------------------------ 12592239d4SZoran Jovanovic# CHECK-EL: addu16 $6, $17, $4 # encoding: [0x42,0x07] 13592239d4SZoran Jovanovic# CHECK-EL: subu16 $5, $16, $3 # encoding: [0xb1,0x06] 148853171bSZoran Jovanovic# CHECK-EL: andi16 $16, $2, 31 # encoding: [0x29,0x2c] 1581ceebc5SZoran Jovanovic# CHECK-EL: and16 $16, $2 # encoding: [0x82,0x44] 1681ceebc5SZoran Jovanovic# CHECK-EL: not16 $17, $3 # encoding: [0x0b,0x44] 1781ceebc5SZoran Jovanovic# CHECK-EL: or16 $16, $4 # encoding: [0xc4,0x44] 1881ceebc5SZoran Jovanovic# CHECK-EL: xor16 $17, $5 # encoding: [0x4d,0x44] 194a00fdc2SZoran Jovanovic# CHECK-EL: sll16 $3, $16, 5 # encoding: [0x8a,0x25] 204a00fdc2SZoran Jovanovic# CHECK-EL: srl16 $4, $17, 6 # encoding: [0x1d,0x26] 21e8c9d1eaSJozef Kolek# CHECK-EL: lbu16 $3, 4($17) # encoding: [0x94,0x09] 22315e7ecaSJozef Kolek# CHECK-EL: lbu16 $3, -1($16) # encoding: [0x8f,0x09] 23e8c9d1eaSJozef Kolek# CHECK-EL: lhu16 $3, 4($16) # encoding: [0x82,0x29] 24e8c9d1eaSJozef Kolek# CHECK-EL: lw16 $4, 8($17) # encoding: [0x12,0x6a] 25e8c9d1eaSJozef Kolek# CHECK-EL: sb16 $3, 4($16) # encoding: [0x84,0x89] 26e8c9d1eaSJozef Kolek# CHECK-EL: sh16 $4, 8($17) # encoding: [0x14,0xaa] 27e8c9d1eaSJozef Kolek# CHECK-EL: sw16 $4, 4($17) # encoding: [0x11,0xea] 28e8c9d1eaSJozef Kolek# CHECK-EL: sw16 $zero, 4($17) # encoding: [0x11,0xe8] 29e10a02ecSJozef Kolek# CHECK-EL: lw $3, 32($gp) # encoding: [0x88,0x65] 3012c6982bSJozef Kolek# CHECK-EL: lw $3, 32($sp) # encoding: [0x68,0x48] 3112c6982bSJozef Kolek# CHECK-EL: sw $4, 124($sp) # encoding: [0x9f,0xc8] 329bda2f19SZoran Jovanovic# CHECK-EL: li16 $3, -1 # encoding: [0xff,0xed] 339bda2f19SZoran Jovanovic# CHECK-EL: li16 $3, 126 # encoding: [0xfe,0xed] 3442b84443SZoran Jovanovic# CHECK-EL: addiur1sp $7, 4 # encoding: [0x83,0x6f] 35bac3619bSZoran Jovanovic# CHECK-EL: addiur2 $6, $7, -1 # encoding: [0x7e,0x6f] 36bac3619bSZoran Jovanovic# CHECK-EL: addiur2 $6, $7, 12 # encoding: [0x76,0x6f] 37b26f889aSZoran Jovanovic# CHECK-EL: addius5 $7, -2 # encoding: [0xfc,0x4c] 38b682ddf3SVladimir Medic# CHECK-EL: addiusp -1028 # encoding: [0xff,0x4f] 39b682ddf3SVladimir Medic# CHECK-EL: addiusp -1032 # encoding: [0xfd,0x4f] 40b682ddf3SVladimir Medic# CHECK-EL: addiusp 1024 # encoding: [0x01,0x4c] 41b682ddf3SVladimir Medic# CHECK-EL: addiusp 1028 # encoding: [0x03,0x4c] 4298bd58caSZoran Jovanovic# CHECK-EL: addiusp -16 # encoding: [0xf9,0x4f] 43*0fad58cbSSimon Dardis# CHECK-EL: mfhi16 $9 # encoding: [0x09,0x46] 44*0fad58cbSSimon Dardis# CHECK-EL: mflo16 $9 # encoding: [0x49,0x46] 4587d13e5eSZoran Jovanovic# CHECK-EL: move $25, $1 # encoding: [0x21,0x0f] 4641688679SZoran Jovanovic# CHECK-EL: movep $5, $6, $2, $3 # encoding: [0x34,0x84] 47b39a174fSZoran Jovanovic# CHECK-EL: jrc $9 # encoding: [0xa9,0x45] 48b39a174fSZoran Jovanovic# CHECK-NEXT: jalr $9 # encoding: [0xc9,0x45] 49c74e3eb9SZoran Jovanovic# CHECK-EL: jraddiusp 20 # encoding: [0x05,0x47] 5011bdb8bfSJozef Kolek# CHECK-NEXT: jalrs16 $9 # encoding: [0xe9,0x45] 51c7e220f6SJozef Kolek# CHECK-EL: nop # encoding: [0x00,0x0c] 5295e14e71SZoran Jovanovic# CHECK-EL: jr16 $9 # encoding: [0x89,0x45] 5395e14e71SZoran Jovanovic# CHECK-EL: nop # encoding: [0x00,0x00,0x00,0x00] 549761e96bSJozef Kolek# CHECK-EL: beqz16 $6, 20 # encoding: [0x0a,0x8f] 559761e96bSJozef Kolek# CHECK-EL: nop # encoding: [0x00,0x00,0x00,0x00] 569761e96bSJozef Kolek# CHECK-EL: bnez16 $6, 20 # encoding: [0x0a,0xaf] 579761e96bSJozef Kolek# CHECK-EL: nop # encoding: [0x00,0x00,0x00,0x00] 585cfebddeSJozef Kolek# CHECK-EL: b16 132 # encoding: [0x42,0xcc] 595cfebddeSJozef Kolek# CHECK-EL: nop 605cfebddeSJozef Kolek# CHECK-EL: b16 132 # encoding: [0x42,0xcc] 615cfebddeSJozef Kolek# CHECK-EL: nop 6256a6a7d3SJozef Kolek# CHECK-EL: break16 8 # encoding: [0x88,0x46] 6356a6a7d3SJozef Kolek# CHECK-EL: sdbbp16 14 # encoding: [0xce,0x46] 6487d13e5eSZoran Jovanovic#------------------------------------------------------------------------------ 6587d13e5eSZoran Jovanovic# Big endian 6687d13e5eSZoran Jovanovic#------------------------------------------------------------------------------ 67592239d4SZoran Jovanovic# CHECK-EB: addu16 $6, $17, $4 # encoding: [0x07,0x42] 68592239d4SZoran Jovanovic# CHECK-EB: subu16 $5, $16, $3 # encoding: [0x06,0xb1] 698853171bSZoran Jovanovic# CHECK-EB: andi16 $16, $2, 31 # encoding: [0x2c,0x29] 7081ceebc5SZoran Jovanovic# CHECK-EB: and16 $16, $2 # encoding: [0x44,0x82] 7181ceebc5SZoran Jovanovic# CHECK-EB: not16 $17, $3 # encoding: [0x44,0x0b] 7281ceebc5SZoran Jovanovic# CHECK-EB: or16 $16, $4 # encoding: [0x44,0xc4] 7381ceebc5SZoran Jovanovic# CHECK-EB: xor16 $17, $5 # encoding: [0x44,0x4d] 744a00fdc2SZoran Jovanovic# CHECK-EB: sll16 $3, $16, 5 # encoding: [0x25,0x8a] 754a00fdc2SZoran Jovanovic# CHECK-EB: srl16 $4, $17, 6 # encoding: [0x26,0x1d] 76e8c9d1eaSJozef Kolek# CHECK-EB: lbu16 $3, 4($17) # encoding: [0x09,0x94] 77315e7ecaSJozef Kolek# CHECK-EB: lbu16 $3, -1($16) # encoding: [0x09,0x8f] 78e8c9d1eaSJozef Kolek# CHECK-EB: lhu16 $3, 4($16) # encoding: [0x29,0x82] 79e8c9d1eaSJozef Kolek# CHECK-EB: lw16 $4, 8($17) # encoding: [0x6a,0x12] 80e8c9d1eaSJozef Kolek# CHECK-EB: sb16 $3, 4($16) # encoding: [0x89,0x84] 81e8c9d1eaSJozef Kolek# CHECK-EB: sh16 $4, 8($17) # encoding: [0xaa,0x14] 82e8c9d1eaSJozef Kolek# CHECK-EB: sw16 $4, 4($17) # encoding: [0xea,0x11] 83e8c9d1eaSJozef Kolek# CHECK-EB: sw16 $zero, 4($17) # encoding: [0xe8,0x11] 84e10a02ecSJozef Kolek# CHECK-EB: lw $3, 32($gp) # encoding: [0x65,0x88] 8512c6982bSJozef Kolek# CHECK-EB: lw $3, 32($sp) # encoding: [0x48,0x68] 8612c6982bSJozef Kolek# CHECK-EB: sw $4, 124($sp) # encoding: [0xc8,0x9f] 879bda2f19SZoran Jovanovic# CHECK-EB: li16 $3, -1 # encoding: [0xed,0xff] 889bda2f19SZoran Jovanovic# CHECK-EB: li16 $3, 126 # encoding: [0xed,0xfe] 8942b84443SZoran Jovanovic# CHECK-EB: addiur1sp $7, 4 # encoding: [0x6f,0x83] 90bac3619bSZoran Jovanovic# CHECK-EB: addiur2 $6, $7, -1 # encoding: [0x6f,0x7e] 91bac3619bSZoran Jovanovic# CHECK-EB: addiur2 $6, $7, 12 # encoding: [0x6f,0x76] 92b26f889aSZoran Jovanovic# CHECK-EB: addius5 $7, -2 # encoding: [0x4c,0xfc] 93b682ddf3SVladimir Medic# CHECK-EB: addiusp -1028 # encoding: [0x4f,0xff] 94b682ddf3SVladimir Medic# CHECK-EB: addiusp -1032 # encoding: [0x4f,0xfd] 95b682ddf3SVladimir Medic# CHECK-EB: addiusp 1024 # encoding: [0x4c,0x01] 96b682ddf3SVladimir Medic# CHECK-EB: addiusp 1028 # encoding: [0x4c,0x03] 9798bd58caSZoran Jovanovic# CHECK-EB: addiusp -16 # encoding: [0x4f,0xf9] 98*0fad58cbSSimon Dardis# CHECK-EB: mfhi16 $9 # encoding: [0x46,0x09] 99*0fad58cbSSimon Dardis# CHECK-EB: mflo16 $9 # encoding: [0x46,0x49] 10087d13e5eSZoran Jovanovic# CHECK-EB: move $25, $1 # encoding: [0x0f,0x21] 10141688679SZoran Jovanovic# CHECK-EB: movep $5, $6, $2, $3 # encoding: [0x84,0x34] 102b39a174fSZoran Jovanovic# CHECK-EB: jrc $9 # encoding: [0x45,0xa9] 103b39a174fSZoran Jovanovic# CHECK-NEXT: jalr $9 # encoding: [0x45,0xc9] 104c74e3eb9SZoran Jovanovic# CHECK-EB: jraddiusp 20 # encoding: [0x47,0x05] 10511bdb8bfSJozef Kolek# CHECK-NEXT: jalrs16 $9 # encoding: [0x45,0xe9] 106c7e220f6SJozef Kolek# CHECK-EB: nop # encoding: [0x0c,0x00] 10795e14e71SZoran Jovanovic# CHECK-EB: jr16 $9 # encoding: [0x45,0x89] 10895e14e71SZoran Jovanovic# CHECK-EB: nop # encoding: [0x00,0x00,0x00,0x00] 1099761e96bSJozef Kolek# CHECK-EB: beqz16 $6, 20 # encoding: [0x8f,0x0a] 1109761e96bSJozef Kolek# CHECK-EB: nop # encoding: [0x00,0x00,0x00,0x00] 1119761e96bSJozef Kolek# CHECK-EB: bnez16 $6, 20 # encoding: [0xaf,0x0a] 1129761e96bSJozef Kolek# CHECK-EB: nop # encoding: [0x00,0x00,0x00,0x00] 1135cfebddeSJozef Kolek# CHECK-EB: b16 132 # encoding: [0xcc,0x42] 1145cfebddeSJozef Kolek# CHECK-EB: nop 1155cfebddeSJozef Kolek# CHECK-EB: b16 132 # encoding: [0xcc,0x42] 1165cfebddeSJozef Kolek# CHECK-EB: nop 11756a6a7d3SJozef Kolek# CHECK-EB: break16 8 # encoding: [0x46,0x88] 11856a6a7d3SJozef Kolek# CHECK-EB: sdbbp16 14 # encoding: [0x46,0xce] 11987d13e5eSZoran Jovanovic 120592239d4SZoran Jovanovic addu16 $6, $17, $4 121592239d4SZoran Jovanovic subu16 $5, $16, $3 1228853171bSZoran Jovanovic andi16 $16, $2, 31 12381ceebc5SZoran Jovanovic and16 $16, $2 12481ceebc5SZoran Jovanovic not16 $17, $3 12581ceebc5SZoran Jovanovic or16 $16, $4 12681ceebc5SZoran Jovanovic xor16 $17, $5 1274a00fdc2SZoran Jovanovic sll16 $3, $16, 5 1284a00fdc2SZoran Jovanovic srl16 $4, $17, 6 129e8c9d1eaSJozef Kolek lbu16 $3, 4($17) 130315e7ecaSJozef Kolek lbu16 $3, -1($16) 131e8c9d1eaSJozef Kolek lhu16 $3, 4($16) 132e8c9d1eaSJozef Kolek lw16 $4, 8($17) 133e8c9d1eaSJozef Kolek sb16 $3, 4($16) 134e8c9d1eaSJozef Kolek sh16 $4, 8($17) 135e8c9d1eaSJozef Kolek sw16 $4, 4($17) 136e8c9d1eaSJozef Kolek sw16 $0, 4($17) 137e10a02ecSJozef Kolek lw $3, 32($gp) 13812c6982bSJozef Kolek lw $3, 32($sp) 13912c6982bSJozef Kolek sw $4, 124($sp) 1409bda2f19SZoran Jovanovic li16 $3, -1 1419bda2f19SZoran Jovanovic li16 $3, 126 14242b84443SZoran Jovanovic addiur1sp $7, 4 143bac3619bSZoran Jovanovic addiur2 $6, $7, -1 144bac3619bSZoran Jovanovic addiur2 $6, $7, 12 145b26f889aSZoran Jovanovic addius5 $7, -2 146b682ddf3SVladimir Medic addiusp -1028 147b682ddf3SVladimir Medic addiusp -1032 148b682ddf3SVladimir Medic addiusp 1024 149b682ddf3SVladimir Medic addiusp 1028 15098bd58caSZoran Jovanovic addiusp -16 151*0fad58cbSSimon Dardis mfhi16 $9 152*0fad58cbSSimon Dardis mflo16 $9 15387d13e5eSZoran Jovanovic move $25, $1 15441688679SZoran Jovanovic movep $5, $6, $2, $3 155b39a174fSZoran Jovanovic jrc $9 15687d13e5eSZoran Jovanovic jalr $9 157c74e3eb9SZoran Jovanovic jraddiusp 20 1586097bad3SZoran Jovanovic jalrs16 $9 15995e14e71SZoran Jovanovic jr16 $9 1609761e96bSJozef Kolek beqz16 $6, 20 1619761e96bSJozef Kolek bnez16 $6, 20 1625cfebddeSJozef Kolek b 132 1635cfebddeSJozef Kolek b16 132 16456a6a7d3SJozef Kolek break16 8 16556a6a7d3SJozef Kolek sdbbp16 14 166