176584fb2ddaac708b981e8484637778339937b4
[oota-llvm.git] / test / MC / Mips / micromips-16-bit-instructions.s
1 # RUN: llvm-mc %s -triple=mipsel -show-encoding -mattr=micromips | \
2 # RUN: FileCheck -check-prefix=CHECK-EL %s
3 # RUN: llvm-mc %s -triple=mips -show-encoding -mattr=micromips | \
4 # RUN: FileCheck -check-prefix=CHECK-EB %s
5 # Check that the assembler can handle the documented syntax
6 # for arithmetic and logical instructions.
7 #------------------------------------------------------------------------------
8 # MicroMIPS 16-bit Instructions
9 #------------------------------------------------------------------------------
10 # Little endian
11 #------------------------------------------------------------------------------
12 # CHECK-EL: addu16  $6, $17, $4     # encoding: [0x42,0x07]
13 # CHECK-EL: subu16  $5, $16, $3     # encoding: [0xb1,0x06]
14 # CHECK-EL: andi16  $16, $2, 31     # encoding: [0x29,0x2c]
15 # CHECK-EL: and16   $16, $2         # encoding: [0x82,0x44]
16 # CHECK-EL: not16   $17, $3         # encoding: [0x0b,0x44]
17 # CHECK-EL: or16    $16, $4         # encoding: [0xc4,0x44]
18 # CHECK-EL: xor16   $17, $5         # encoding: [0x4d,0x44]
19 # CHECK-EL: sll16   $3, $16, 5      # encoding: [0x8a,0x25]
20 # CHECK-EL: srl16   $4, $17, 6      # encoding: [0x1d,0x26]
21 # CHECK-EL: lbu16   $3, 4($17)      # encoding: [0x94,0x09]
22 # CHECK-EL: lhu16   $3, 4($16)      # encoding: [0x82,0x29]
23 # CHECK-EL: lw16    $4, 8($17)      # encoding: [0x12,0x6a]
24 # CHECK-EL: sb16    $3, 4($16)      # encoding: [0x84,0x89]
25 # CHECK-EL: sh16    $4, 8($17)      # encoding: [0x14,0xaa]
26 # CHECK-EL: sw16    $4, 4($17)      # encoding: [0x11,0xea]
27 # CHECK-EL: sw16    $zero, 4($17)   # encoding: [0x11,0xe8]
28 # CHECK-EL: li16    $3, -1          # encoding: [0xff,0xed]
29 # CHECK-EL: li16    $3, 126         # encoding: [0xfe,0xed]
30 # CHECK-EL: addiur1sp $7, 4         # encoding: [0x83,0x6f]
31 # CHECK-EL: addiur2 $6, $7, -1      # encoding: [0x7e,0x6f]
32 # CHECK-EL: addiur2 $6, $7, 12      # encoding: [0x76,0x6f]
33 # CHECK-EL: addius5 $7, -2          # encoding: [0xfc,0x4c]
34 # CHECK-EL: addiusp -16             # encoding: [0xf9,0x4f]
35 # CHECK-EL: mfhi    $9              # encoding: [0x09,0x46]
36 # CHECK-EL: mflo    $9              # encoding: [0x49,0x46]
37 # CHECK-EL: move    $25, $1         # encoding: [0x21,0x0f]
38 # CHECK-EL: jrc     $9              # encoding: [0xa9,0x45]
39 # CHECK-NEXT: jalr    $9            # encoding: [0xc9,0x45]
40 # CHECK-EL: jraddiusp 20            # encoding: [0x05,0x47]
41 # CHECK-EL: nop                     # encoding: [0x00,0x00,0x00,0x00]
42 # CHECK-EL: jalrs16 $9              # encoding: [0xe9,0x45]
43 # CHECK-EL: move    $zero, $zero    # encoding: [0x00,0x0c]
44 # CHECK-EL: jr16    $9              # encoding: [0x89,0x45]
45 # CHECK-EL: nop                     # encoding: [0x00,0x00,0x00,0x00]
46 #------------------------------------------------------------------------------
47 # Big endian
48 #------------------------------------------------------------------------------
49 # CHECK-EB: addu16  $6, $17, $4     # encoding: [0x07,0x42]
50 # CHECK-EB: subu16  $5, $16, $3     # encoding: [0x06,0xb1]
51 # CHECK-EB: andi16  $16, $2, 31     # encoding: [0x2c,0x29]
52 # CHECK-EB: and16   $16, $2         # encoding: [0x44,0x82]
53 # CHECK-EB: not16   $17, $3         # encoding: [0x44,0x0b]
54 # CHECK-EB: or16    $16, $4         # encoding: [0x44,0xc4]
55 # CHECK-EB: xor16   $17, $5         # encoding: [0x44,0x4d]
56 # CHECK-EB: sll16   $3, $16, 5      # encoding: [0x25,0x8a]
57 # CHECK-EB: srl16   $4, $17, 6      # encoding: [0x26,0x1d]
58 # CHECK-EB: lbu16   $3, 4($17)      # encoding: [0x09,0x94]
59 # CHECK-EB: lhu16   $3, 4($16)      # encoding: [0x29,0x82]
60 # CHECK-EB: lw16    $4, 8($17)      # encoding: [0x6a,0x12]
61 # CHECK-EB: sb16    $3, 4($16)      # encoding: [0x89,0x84]
62 # CHECK-EB: sh16    $4, 8($17)      # encoding: [0xaa,0x14]
63 # CHECK-EB: sw16    $4, 4($17)      # encoding: [0xea,0x11]
64 # CHECK-EB: sw16    $zero, 4($17)   # encoding: [0xe8,0x11]
65 # CHECK-EB: li16    $3, -1          # encoding: [0xed,0xff]
66 # CHECK-EB: li16    $3, 126         # encoding: [0xed,0xfe]
67 # CHECK-EB: addiur1sp $7, 4         # encoding: [0x6f,0x83]
68 # CHECK-EB: addiur2 $6, $7, -1      # encoding: [0x6f,0x7e]
69 # CHECK-EB: addiur2 $6, $7, 12      # encoding: [0x6f,0x76]
70 # CHECK-EB: addius5 $7, -2          # encoding: [0x4c,0xfc]
71 # CHECK-EB: addiusp -16             # encoding: [0x4f,0xf9]
72 # CHECK-EB: mfhi    $9              # encoding: [0x46,0x09]
73 # CHECK-EB: mflo    $9              # encoding: [0x46,0x49]
74 # CHECK-EB: move    $25, $1         # encoding: [0x0f,0x21]
75 # CHECK-EB: jrc     $9              # encoding: [0x45,0xa9]
76 # CHECK-NEXT: jalr    $9            # encoding: [0x45,0xc9]
77 # CHECK-EB: jraddiusp 20            # encoding: [0x47,0x05]
78 # CHECK-EB: nop                     # encoding: [0x00,0x00,0x00,0x00]
79 # CHECK-EB: jalrs16 $9              # encoding: [0x45,0xe9]
80 # CHECK-EB: move    $zero, $zero    # encoding: [0x0c,0x00]
81 # CHECK-EB: jr16    $9              # encoding: [0x45,0x89]
82 # CHECK-EB: nop                     # encoding: [0x00,0x00,0x00,0x00]
83
84     addu16  $6, $17, $4
85     subu16  $5, $16, $3
86     andi16  $16, $2, 31
87     and16   $16, $2
88     not16   $17, $3
89     or16    $16, $4
90     xor16   $17, $5
91     sll16   $3, $16, 5
92     srl16   $4, $17, 6
93     lbu16   $3, 4($17)
94     lhu16   $3, 4($16)
95     lw16    $4, 8($17)
96     sb16    $3, 4($16)
97     sh16    $4, 8($17)
98     sw16    $4, 4($17)
99     sw16    $0, 4($17)
100     li16    $3, -1
101     li16    $3, 126
102     addiur1sp $7, 4
103     addiur2 $6, $7, -1
104     addiur2 $6, $7, 12
105     addius5 $7, -2
106     addiusp -16
107     mfhi    $9
108     mflo    $9
109     move    $25, $1
110     jrc     $9
111     jalr    $9
112     jraddiusp 20
113     jalrs16 $9
114     jr16    $9