xref: /llvm-project/llvm/test/MC/Mips/mul-macro-variants.s (revision 7c5d2bec762550d305018de4292470c12015ecb5)
1df943b02SSimon Dardis# RUN: llvm-mc  %s -triple mips-unknown-linux -show-encoding -mcpu=mips64r2 | FileCheck %s
2df943b02SSimon Dardis# RUN: llvm-mc  %s -triple mips-unknown-linux -show-encoding -mcpu=mips64r3 | FileCheck %s
3df943b02SSimon Dardis# RUN: llvm-mc  %s -triple mips-unknown-linux -show-encoding -mcpu=mips64r5 | FileCheck %s
4df943b02SSimon Dardis
5df943b02SSimon Dardis# RUN: llvm-mc  %s -triple mips-unknown-linux -show-encoding -mattr=use-tcc-in-div -mcpu=mips64 | FileCheck %s --check-prefix=CHECK-TRAP
6df943b02SSimon Dardis# RUN: llvm-mc  %s -triple mips-unknown-linux -show-encoding -mattr=use-tcc-in-div -mcpu=mips64r2 | FileCheck %s --check-prefix=CHECK-TRAP
7df943b02SSimon Dardis# RUN: llvm-mc  %s -triple mips-unknown-linux -show-encoding -mattr=use-tcc-in-div -mcpu=mips64r3 | FileCheck %s --check-prefix=CHECK-TRAP
8df943b02SSimon Dardis# RUN: llvm-mc  %s -triple mips-unknown-linux -show-encoding -mattr=use-tcc-in-div -mcpu=mips64r5 | FileCheck %s --check-prefix=CHECK-TRAP
9df943b02SSimon Dardis
10df943b02SSimon Dardis.text
11df943b02SSimon Dardistext_label:
12df943b02SSimon Dardis
13df943b02SSimon Dardis  mul  $4, $5
14df943b02SSimon Dardis# CHECK:        mul     $4, $4, $5              # encoding: [0x70,0x85,0x20,0x02]
15df943b02SSimon Dardis# CHECK-TRAP:   mul     $4, $4, $5              # encoding: [0x70,0x85,0x20,0x02]
16df943b02SSimon Dardis  mul   $4, $5, $6
17df943b02SSimon Dardis# CHECK:        mul     $4, $5, $6              # encoding: [0x70,0xa6,0x20,0x02]
18df943b02SSimon Dardis# CHECK-TRAP:   mul     $4, $5, $6              # encoding: [0x70,0xa6,0x20,0x02]
19df943b02SSimon Dardis  mul  $4, $5, 0
20df943b02SSimon Dardis# CHECK:        addiu   $1, $zero, 0            # encoding: [0x24,0x01,0x00,0x00]
21df943b02SSimon Dardis# CHECK:        mult    $5, $1                  # encoding: [0x00,0xa1,0x00,0x18]
22df943b02SSimon Dardis# CHECK:        mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
23df943b02SSimon Dardis# CHECK-TRAP:   addiu   $1, $zero, 0            # encoding: [0x24,0x01,0x00,0x00]
24df943b02SSimon Dardis# CHECK-TRAP:   mult    $5, $1                  # encoding: [0x00,0xa1,0x00,0x18]
25df943b02SSimon Dardis# CHECK-TRAP:   mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
26df943b02SSimon Dardis  mul   $4, $5, 1
27df943b02SSimon Dardis# CHECK:        addiu   $1, $zero, 1            # encoding: [0x24,0x01,0x00,0x01]
28df943b02SSimon Dardis# CHECK:        mult    $5, $1                  # encoding: [0x00,0xa1,0x00,0x18]
29df943b02SSimon Dardis# CHECK:        mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
30df943b02SSimon Dardis# CHECK-TRAP:   addiu   $1, $zero, 1            # encoding: [0x24,0x01,0x00,0x01]
31df943b02SSimon Dardis# CHECK-TRAP:   mult    $5, $1                  # encoding: [0x00,0xa1,0x00,0x18]
32df943b02SSimon Dardis# CHECK-TRAP:   mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
33df943b02SSimon Dardis  mul  $4, $5, 0x8000
34df943b02SSimon Dardis# CHECK:        ori     $1, $zero, 32768        # encoding: [0x34,0x01,0x80,0x00]
35df943b02SSimon Dardis# CHECK:        mult    $5, $1                  # encoding: [0x00,0xa1,0x00,0x18]
36df943b02SSimon Dardis# CHECK:        mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
37df943b02SSimon Dardis# CHECK-TRAP:   ori     $1, $zero, 32768        # encoding: [0x34,0x01,0x80,0x00]
38df943b02SSimon Dardis# CHECK-TRAP:   mult    $5, $1                  # encoding: [0x00,0xa1,0x00,0x18]
39df943b02SSimon Dardis# CHECK-TRAP:   mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
40df943b02SSimon Dardis  mul  $4, $5, -0x8000
41df943b02SSimon Dardis# CHECK:        addiu   $1, $zero, -32768       # encoding: [0x24,0x01,0x80,0x00]
42df943b02SSimon Dardis# CHECK:        mult    $5, $1                  # encoding: [0x00,0xa1,0x00,0x18]
43df943b02SSimon Dardis# CHECK:        mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
44df943b02SSimon Dardis# CHECK-TRAP:   addiu   $1, $zero, -32768       # encoding: [0x24,0x01,0x80,0x00]
45df943b02SSimon Dardis# CHECK-TRAP:   mult    $5, $1                  # encoding: [0x00,0xa1,0x00,0x18]
46df943b02SSimon Dardis# CHECK-TRAP:   mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
47df943b02SSimon Dardis  mul  $4, $5, 0x10000
48df943b02SSimon Dardis# CHECK:        lui     $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
49df943b02SSimon Dardis# CHECK:        mult    $5, $1                  # encoding: [0x00,0xa1,0x00,0x18]
50df943b02SSimon Dardis# CHECK:        mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
51df943b02SSimon Dardis# CHECK-TRAP:   lui     $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
52df943b02SSimon Dardis# CHECK-TRAP:   mult    $5, $1                  # encoding: [0x00,0xa1,0x00,0x18]
53df943b02SSimon Dardis# CHECK-TRAP:   mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
54df943b02SSimon Dardis  mul  $4, $5, 0x1a5a5
55df943b02SSimon Dardis# CHECK:        lui     $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
56df943b02SSimon Dardis# CHECK:        ori     $1, $1, 42405           # encoding: [0x34,0x21,0xa5,0xa5]
57df943b02SSimon Dardis# CHECK:        mult    $5, $1                  # encoding: [0x00,0xa1,0x00,0x18]
58df943b02SSimon Dardis# CHECK:        mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
59df943b02SSimon Dardis# CHECK-TRAP:   lui     $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
60df943b02SSimon Dardis# CHECK-TRAP:   ori     $1, $1, 42405           # encoding: [0x34,0x21,0xa5,0xa5]
61df943b02SSimon Dardis# CHECK-TRAP:   mult    $5, $1                  # encoding: [0x00,0xa1,0x00,0x18]
62df943b02SSimon Dardis# CHECK-TRAP:   mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
63df943b02SSimon Dardis  mulo  $4, $5
64df943b02SSimon Dardis# CHECK:        mult    $4, $5                  # encoding: [0x00,0x85,0x00,0x18]
65df943b02SSimon Dardis# CHECK:        mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
66df943b02SSimon Dardis# CHECK:        sra     $4, $4, 31              # encoding: [0x00,0x04,0x27,0xc3]
67df943b02SSimon Dardis# CHECK:        mfhi    $1                      # encoding: [0x00,0x00,0x08,0x10]
68df943b02SSimon Dardis# CHECK:        beq     $4, $1, $tmp0           # encoding: [0x10,0x81,A,A]
69df943b02SSimon Dardis# CHECK:        nop                             # encoding: [0x00,0x00,0x00,0x00]
70df943b02SSimon Dardis# CHECK:        break   6                       # encoding: [0x00,0x06,0x00,0x0d]
71df943b02SSimon Dardis# CHECK:        mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
72df943b02SSimon Dardis# CHECK-TRAP:   mult    $4, $5                  # encoding: [0x00,0x85,0x00,0x18]
73df943b02SSimon Dardis# CHECK-TRAP:   mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
74df943b02SSimon Dardis# CHECK-TRAP:   sra     $4, $4, 31              # encoding: [0x00,0x04,0x27,0xc3]
75df943b02SSimon Dardis# CHECK-TRAP:   mfhi    $1                      # encoding: [0x00,0x00,0x08,0x10]
76df943b02SSimon Dardis# CHECK-TRAP:   tne     $4, $1, 6               # encoding: [0x00,0x81,0x01,0xb6]
77df943b02SSimon Dardis# CHECK-TRAP:   mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
78df943b02SSimon Dardis
79df943b02SSimon Dardis  mulo  $4, $5, $6
80df943b02SSimon Dardis# CHECK:        mult    $5, $6                  # encoding: [0x00,0xa6,0x00,0x18]
81df943b02SSimon Dardis# CHECK:        mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
82df943b02SSimon Dardis# CHECK:        sra     $4, $4, 31              # encoding: [0x00,0x04,0x27,0xc3]
83df943b02SSimon Dardis# CHECK:        mfhi    $1                      # encoding: [0x00,0x00,0x08,0x10]
84df943b02SSimon Dardis# CHECK:        beq     $4, $1, $tmp1           # encoding: [0x10,0x81,A,A]
85df943b02SSimon Dardis# CHECK:        nop                             # encoding: [0x00,0x00,0x00,0x00]
86df943b02SSimon Dardis# CHECK:        break   6                       # encoding: [0x00,0x06,0x00,0x0d]
87df943b02SSimon Dardis# CHECK:        mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
88df943b02SSimon Dardis# CHECK-TRAP:   mult    $5, $6                  # encoding: [0x00,0xa6,0x00,0x18]
89df943b02SSimon Dardis# CHECK-TRAP:   mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
90df943b02SSimon Dardis# CHECK-TRAP:   sra     $4, $4, 31              # encoding: [0x00,0x04,0x27,0xc3]
91df943b02SSimon Dardis# CHECK-TRAP:   mfhi    $1                      # encoding: [0x00,0x00,0x08,0x10]
92df943b02SSimon Dardis# CHECK-TRAP:   tne     $4, $1, 6               # encoding: [0x00,0x81,0x01,0xb6]
93df943b02SSimon Dardis# CHECK-TRAP:   mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
94df943b02SSimon Dardis mulou  $4,$5
95df943b02SSimon Dardis# CHECK:        multu   $4, $5                  # encoding: [0x00,0x85,0x00,0x19]
96df943b02SSimon Dardis# CHECK:        mfhi    $1                      # encoding: [0x00,0x00,0x08,0x10]
97df943b02SSimon Dardis# CHECK:        mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
98df943b02SSimon Dardis# CHECK:        beqz    $1, $tmp2               # encoding: [0x10,0x20,A,A]
99df943b02SSimon Dardis# CHECK:        nop                             # encoding: [0x00,0x00,0x00,0x00]
100df943b02SSimon Dardis# CHECK:        break   6                       # encoding: [0x00,0x06,0x00,0x0d]
101df943b02SSimon Dardis# CHECK-TRAP:   multu   $4, $5                  # encoding: [0x00,0x85,0x00,0x19]
102df943b02SSimon Dardis# CHECK-TRAP:   mfhi    $1                      # encoding: [0x00,0x00,0x08,0x10]
103df943b02SSimon Dardis# CHECK-TRAP:   mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
104df943b02SSimon Dardis# CHECK-TRAP:   tne     $1, $zero, 6            # encoding: [0x00,0x20,0x01,0xb6]
105df943b02SSimon Dardis mulou $4, $5, $6
106df943b02SSimon Dardis# CHECK:        multu   $5, $6                  # encoding: [0x00,0xa6,0x00,0x19]
107df943b02SSimon Dardis# CHECK:        mfhi    $1                      # encoding: [0x00,0x00,0x08,0x10]
108df943b02SSimon Dardis# CHECK:        mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
109df943b02SSimon Dardis# CHECK:        beqz    $1, $tmp3               # encoding: [0x10,0x20,A,A]
110df943b02SSimon Dardis# CHECK:        nop                             # encoding: [0x00,0x00,0x00,0x00]
111df943b02SSimon Dardis# CHECK:        break   6                       # encoding: [0x00,0x06,0x00,0x0d]
112df943b02SSimon Dardis# CHECK-TRAP:   multu   $5, $6                  # encoding: [0x00,0xa6,0x00,0x19]
113df943b02SSimon Dardis# CHECK-TRAP:   mfhi    $1                      # encoding: [0x00,0x00,0x08,0x10]
114df943b02SSimon Dardis# CHECK-TRAP:   mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
115df943b02SSimon Dardis# CHECK-TRAP:   tne     $1, $zero, 6            # encoding: [0x00,0x20,0x01,0xb6]
116df943b02SSimon Dardis
117df943b02SSimon Dardis dmul $4, $5, $6
118df943b02SSimon Dardis# CHECK:        dmultu  $5, $6                  # encoding: [0x00,0xa6,0x00,0x1d]
119df943b02SSimon Dardis# CHECK:        mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
120*7c5d2becSJonathan Roelofs# CHECK-TRAP:   dmultu  $5, $6                  # encoding: [0x00,0xa6,0x00,0x1d]
121df943b02SSimon Dardis# CHECK-TRAP:   mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
122df943b02SSimon Dardis dmul $4, $5, 1
123df943b02SSimon Dardis# CHECK:        addiu   $1, $zero, 1            # encoding: [0x24,0x01,0x00,0x01]
124df943b02SSimon Dardis# CHECK:        dmult   $5, $1                  # encoding: [0x00,0xa1,0x00,0x1c]
125df943b02SSimon Dardis# CHECK:        mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
126df943b02SSimon Dardis# CHECK-TRAP:   addiu   $1, $zero, 1            # encoding: [0x24,0x01,0x00,0x01]
127df943b02SSimon Dardis# CHECK-TRAP:   dmult   $5, $1                  # encoding: [0x00,0xa1,0x00,0x1c]
128df943b02SSimon Dardis# CHECK-TRAP:   mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
129df943b02SSimon Dardis dmulo $4, $5, $6
130df943b02SSimon Dardis# CHECK:        dmult   $5, $6                  # encoding: [0x00,0xa6,0x00,0x1c]
131df943b02SSimon Dardis# CHECK:        mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
132df943b02SSimon Dardis# CHECK:        dsra32  $4, $4, 31              # encoding: [0x00,0x04,0x27,0xff]
133df943b02SSimon Dardis# CHECK:        mfhi    $1                      # encoding: [0x00,0x00,0x08,0x10]
134df943b02SSimon Dardis# CHECK:        beq     $4, $1, $tmp4           # encoding: [0x10,0x81,A,A]
135df943b02SSimon Dardis# CHECK:        nop                             # encoding: [0x00,0x00,0x00,0x00]
136df943b02SSimon Dardis# CHECK:        break   6                       # encoding: [0x00,0x06,0x00,0x0d]
137df943b02SSimon Dardis# CHECK:        mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
138df943b02SSimon Dardis# CHECK-TRAP:   dmult   $5, $6                  # encoding: [0x00,0xa6,0x00,0x1c]
139df943b02SSimon Dardis# CHECK-TRAP:   mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
140df943b02SSimon Dardis# CHECK-TRAP:   dsra32  $4, $4, 31              # encoding: [0x00,0x04,0x27,0xff]
141df943b02SSimon Dardis# CHECK-TRAP:   mfhi    $1                      # encoding: [0x00,0x00,0x08,0x10]
142df943b02SSimon Dardis# CHECK-TRAP:   tne     $4, $1, 6               # encoding: [0x00,0x81,0x01,0xb6]
143df943b02SSimon Dardis# CHECK-TRAP:   mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
144df943b02SSimon Dardis dmulou  $4,$5,$6
145df943b02SSimon Dardis# CHECK:        dmultu  $5, $6                  # encoding: [0x00,0xa6,0x00,0x1d]
146df943b02SSimon Dardis# CHECK:        mfhi    $1                      # encoding: [0x00,0x00,0x08,0x10]
147df943b02SSimon Dardis# CHECK:        mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
148df943b02SSimon Dardis# CHECK:        beqz    $1, $tmp5               # encoding: [0x10,0x20,A,A]
149df943b02SSimon Dardis# CHECK:        nop                             # encoding: [0x00,0x00,0x00,0x00]
150df943b02SSimon Dardis# CHECK:        break   6                       # encoding: [0x00,0x06,0x00,0x0d]
151df943b02SSimon Dardis# CHECK-TRAP:   dmultu  $5, $6                  # encoding: [0x00,0xa6,0x00,0x1d]
152df943b02SSimon Dardis# CHECK-TRAP:   mfhi    $1                      # encoding: [0x00,0x00,0x08,0x10]
153df943b02SSimon Dardis# CHECK-TRAP:   mflo    $4                      # encoding: [0x00,0x00,0x20,0x12]
154df943b02SSimon Dardis# CHECK-TRAP:   tne     $1, $zero, 6            # encoding: [0x00,0x20,0x01,0xb6]
155