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