1# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r2 | \ 2# RUN: FileCheck %s --check-prefix=CHECK-NOTRAP 3# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r2 \ 4# RUN: -mattr=+use-tcc-in-div | FileCheck %s --check-prefix=CHECK-TRAP 5 6 div $25,$11 7# CHECK-NOTRAP: bnez $11, $tmp0 # encoding: [0x15,0x60,A,A] 8# CHECK-NOTRAP: # fixup A - offset: 0, value: ($tmp0)-4, kind: fixup_Mips_PC16 9# CHECK-NOTRAP: div $zero, $25, $11 # encoding: [0x03,0x2b,0x00,0x1a] 10# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] 11# CHECK-NOTRAP: $tmp0: 12# CHECK-NOTRAP: addiu $1, $zero, -1 # encoding: [0x24,0x01,0xff,0xff] 13# CHECK-NOTRAP: bne $11, $1, $tmp1 # encoding: [0x15,0x61,A,A] 14# CHECK-NOTRAP: # fixup A - offset: 0, value: ($tmp1)-4, kind: fixup_Mips_PC16 15# CHECK-NOTRAP: lui $1, 32768 # encoding: [0x3c,0x01,0x80,0x00] 16# CHECK-NOTRAP: bne $25, $1, $tmp1 # encoding: [0x17,0x21,A,A] 17# CHECK-NOTRAP: # fixup A - offset: 0, value: ($tmp1)-4, kind: fixup_Mips_PC16 18# CHECK-NOTRAP: nop # encoding: [0x00,0x00,0x00,0x00] 19# CHECK-NOTRAP: break 6 # encoding: [0x00,0x06,0x00,0x0d] 20# CHECK-NOTRAP: $tmp1: 21# CHECK-NOTRAP: mflo $25 # encoding: [0x00,0x00,0xc8,0x12] 22# CHECK-TRAP: teq $11, $zero, 7 # encoding: [0x01,0x60,0x01,0xf4] 23# CHECK-TRAP: div $zero, $25, $11 # encoding: [0x03,0x2b,0x00,0x1a] 24# CHECK-TRAP: addiu $1, $zero, -1 # encoding: [0x24,0x01,0xff,0xff] 25# CHECK-TRAP: bne $11, $1, $tmp0 # encoding: [0x15,0x61,A,A] 26# CHECK-TRAP: # fixup A - offset: 0, value: ($tmp0)-4, kind: fixup_Mips_PC16 27# CHECK-TRAP: lui $1, 32768 # encoding: [0x3c,0x01,0x80,0x00] 28# CHECK-TRAP: teq $25, $1, 6 # encoding: [0x03,0x21,0x01,0xb4] 29# CHECK-TRAP: $tmp0: 30# CHECK-TRAP: mflo $25 # encoding: [0x00,0x00,0xc8,0x12] 31 32 div $24,$12 33# CHECK-NOTRAP: bnez $12, $tmp2 # encoding: [0x15,0x80,A,A] 34# CHECK-NOTRAP: # fixup A - offset: 0, value: ($tmp2)-4, kind: fixup_Mips_PC16 35# CHECK-NOTRAP: div $zero, $24, $12 # encoding: [0x03,0x0c,0x00,0x1a] 36# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] 37# CHECK-NOTRAP: $tmp2: 38# CHECK-NOTRAP: addiu $1, $zero, -1 # encoding: [0x24,0x01,0xff,0xff] 39# CHECK-NOTRAP: bne $12, $1, $tmp3 # encoding: [0x15,0x81,A,A] 40# CHECK-NOTRAP: # fixup A - offset: 0, value: ($tmp3)-4, kind: fixup_Mips_PC16 41# CHECK-NOTRAP: lui $1, 32768 # encoding: [0x3c,0x01,0x80,0x00] 42# CHECK-NOTRAP: bne $24, $1, $tmp3 # encoding: [0x17,0x01,A,A] 43# CHECK-NOTRAP: # fixup A - offset: 0, value: ($tmp3)-4, kind: fixup_Mips_PC16 44# CHECK-NOTRAP: nop # encoding: [0x00,0x00,0x00,0x00] 45# CHECK-NOTRAP: break 6 # encoding: [0x00,0x06,0x00,0x0d] 46# CHECK-NOTRAP: $tmp3: 47# CHECK-NOTRAP: mflo $24 # encoding: [0x00,0x00,0xc0,0x12] 48# CHECK-TRAP: teq $12, $zero, 7 # encoding: [0x01,0x80,0x01,0xf4] 49# CHECK-TRAP: div $zero, $24, $12 # encoding: [0x03,0x0c,0x00,0x1a] 50# CHECK-TRAP: addiu $1, $zero, -1 # encoding: [0x24,0x01,0xff,0xff] 51# CHECK-TRAP: bne $12, $1, $tmp1 # encoding: [0x15,0x81,A,A] 52# CHECK-TRAP: # fixup A - offset: 0, value: ($tmp1)-4, kind: fixup_Mips_PC16 53# CHECK-TRAP: lui $1, 32768 # encoding: [0x3c,0x01,0x80,0x00] 54# CHECK-TRAP: teq $24, $1, 6 # encoding: [0x03,0x01,0x01,0xb4] 55# CHECK-TRAP: $tmp1: 56# CHECK-TRAP: mflo $24 # encoding: [0x00,0x00,0xc0,0x12] 57 58 div $25,$0 59# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] 60# CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] 61 62 div $0,$9 63# CHECK-NOTRAP: div $zero, $zero, $9 # encoding: [0x00,0x09,0x00,0x1a] 64# CHECK-TRAP: div $zero, $zero, $9 # encoding: [0x00,0x09,0x00,0x1a] 65 66 div $0,$0 67# CHECK-NOTRAP: div $zero, $zero, $zero # encoding: [0x00,0x00,0x00,0x1a] 68# CHECK-TRAP: div $zero, $zero, $zero # encoding: [0x00,0x00,0x00,0x1a] 69 70 div $4,0 71# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] 72# CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] 73 74 div $0,0 75# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] 76# CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] 77 78 div $4,1 79# CHECK-NOTRAP: move $4, $4 # encoding: [0x00,0x80,0x20,0x25] 80# CHECK-TRAP: move $4, $4 # encoding: [0x00,0x80,0x20,0x25] 81 82 div $4,-1 83# CHECK-NOTRAP: neg $4, $4 # encoding: [0x00,0x04,0x20,0x22] 84# CHECK-TRAP: neg $4, $4 # encoding: [0x00,0x04,0x20,0x22] 85 86 div $4,2 87# CHECK-NOTRAP: addiu $1, $zero, 2 # encoding: [0x24,0x01,0x00,0x02] 88# CHECK-NOTRAP: div $zero, $4, $1 # encoding: [0x00,0x81,0x00,0x1a] 89# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 90# CHECK-TRAP: addiu $1, $zero, 2 # encoding: [0x24,0x01,0x00,0x02] 91# CHECK-TRAP: div $zero, $4, $1 # encoding: [0x00,0x81,0x00,0x1a] 92# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 93 94 div $4,0x8000 95# CHECK-NOTRAP: ori $1, $zero, 32768 # encoding: [0x34,0x01,0x80,0x00] 96# CHECK-NOTRAP: div $zero, $4, $1 # encoding: [0x00,0x81,0x00,0x1a] 97# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 98# CHECK-TRAP: ori $1, $zero, 32768 # encoding: [0x34,0x01,0x80,0x00] 99# CHECK-TRAP: div $zero, $4, $1 # encoding: [0x00,0x81,0x00,0x1a] 100# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 101 102 div $4,-0x8000 103# CHECK-NOTRAP: addiu $1, $zero, -32768 # encoding: [0x24,0x01,0x80,0x00] 104# CHECK-NOTRAP: div $zero, $4, $1 # encoding: [0x00,0x81,0x00,0x1a] 105# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 106# CHECK-TRAP: addiu $1, $zero, -32768 # encoding: [0x24,0x01,0x80,0x00] 107# CHECK-TRAP: div $zero, $4, $1 # encoding: [0x00,0x81,0x00,0x1a] 108# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 109 110 div $4,0x10000 111# CHECK-NOTRAP: lui $1, 1 # encoding: [0x3c,0x01,0x00,0x01] 112# CHECK-NOTRAP: div $zero, $4, $1 # encoding: [0x00,0x81,0x00,0x1a] 113# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 114# CHECK-TRAP: lui $1, 1 # encoding: [0x3c,0x01,0x00,0x01] 115# CHECK-TRAP: div $zero, $4, $1 # encoding: [0x00,0x81,0x00,0x1a] 116# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 117 118 div $4,0x1a5a5 119# CHECK-NOTRAP: lui $1, 1 # encoding: [0x3c,0x01,0x00,0x01] 120# CHECK-NOTRAP: ori $1, $1, 42405 # encoding: [0x34,0x21,0xa5,0xa5] 121# CHECK-NOTRAP: div $zero, $4, $1 # encoding: [0x00,0x81,0x00,0x1a] 122# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 123# CHECK-TRAP: lui $1, 1 # encoding: [0x3c,0x01,0x00,0x01] 124# CHECK-TRAP: ori $1, $1, 42405 # encoding: [0x34,0x21,0xa5,0xa5] 125# CHECK-TRAP: div $zero, $4, $1 # encoding: [0x00,0x81,0x00,0x1a] 126# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 127 128 div $4,$5,$6 129# CHECK-NOTRAP: bnez $6, $tmp4 # encoding: [0x14,0xc0,A,A] 130# CHECK-NOTRAP: # fixup A - offset: 0, value: ($tmp4)-4, kind: fixup_Mips_PC16 131# CHECK-NOTRAP: div $zero, $5, $6 # encoding: [0x00,0xa6,0x00,0x1a] 132# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] 133# CHECK-NOTRAP: $tmp4: 134# CHECK-NOTRAP: addiu $1, $zero, -1 # encoding: [0x24,0x01,0xff,0xff] 135# CHECK-NOTRAP: bne $6, $1, $tmp5 # encoding: [0x14,0xc1,A,A] 136# CHECK-NOTRAP: # fixup A - offset: 0, value: ($tmp5)-4, kind: fixup_Mips_PC16 137# CHECK-NOTRAP: lui $1, 32768 # encoding: [0x3c,0x01,0x80,0x00] 138# CHECK-NOTRAP: bne $5, $1, $tmp5 # encoding: [0x14,0xa1,A,A] 139# CHECK-NOTRAP: # fixup A - offset: 0, value: ($tmp5)-4, kind: fixup_Mips_PC16 140# CHECK-NOTRAP: nop # encoding: [0x00,0x00,0x00,0x00] 141# CHECK-NOTRAP: break 6 # encoding: [0x00,0x06,0x00,0x0d] 142# CHECK-NOTRAP: $tmp5: 143# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 144# CHECK-TRAP: teq $6, $zero, 7 # encoding: [0x00,0xc0,0x01,0xf4] 145# CHECK-TRAP: div $zero, $5, $6 # encoding: [0x00,0xa6,0x00,0x1a] 146# CHECK-TRAP: addiu $1, $zero, -1 # encoding: [0x24,0x01,0xff,0xff] 147# CHECK-TRAP: bne $6, $1, $tmp2 # encoding: [0x14,0xc1,A,A] 148# CHECK-TRAP: # fixup A - offset: 0, value: ($tmp2)-4, kind: fixup_Mips_PC16 149# CHECK-TRAP: lui $1, 32768 # encoding: [0x3c,0x01,0x80,0x00] 150# CHECK-TRAP: teq $5, $1, 6 # encoding: [0x00,0xa1,0x01,0xb4] 151# CHECK-TRAP: $tmp2: 152# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 153 154 div $4,$5,$0 155# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] 156# CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] 157 158 div $4,$0,$0 159# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] 160# CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] 161 162 div $0,$4,$5 163# CHECK-NOTRAP: div $zero, $4, $5 # encoding: [0x00,0x85,0x00,0x1a] 164# CHECK-TRAP: div $zero, $4, $5 # encoding: [0x00,0x85,0x00,0x1a] 165 166 div $4,$5,0 167# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] 168# CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] 169 170 div $4,$0,0 171# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] 172# CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] 173 174 div $4,$5,1 175# CHECK-NOTRAP: move $4, $5 # encoding: [0x00,0xa0,0x20,0x25] 176# CHECK-TRAP: move $4, $5 # encoding: [0x00,0xa0,0x20,0x25] 177 178 div $4,$5,-1 179# CHECK-NOTRAP: neg $4, $5 # encoding: [0x00,0x05,0x20,0x22] 180# CHECK-TRAP: neg $4, $5 # encoding: [0x00,0x05,0x20,0x22] 181 182 div $4,$5,2 183# CHECK-NOTRAP: addiu $1, $zero, 2 # encoding: [0x24,0x01,0x00,0x02] 184# CHECK-NOTRAP: div $zero, $5, $1 # encoding: [0x00,0xa1,0x00,0x1a] 185# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 186# CHECK-TRAP: addiu $1, $zero, 2 # encoding: [0x24,0x01,0x00,0x02] 187# CHECK-TRAP: div $zero, $5, $1 # encoding: [0x00,0xa1,0x00,0x1a] 188# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 189 190 div $4,$5,0x8000 191# CHECK-NOTRAP: ori $1, $zero, 32768 # encoding: [0x34,0x01,0x80,0x00] 192# CHECK-NOTRAP: div $zero, $5, $1 # encoding: [0x00,0xa1,0x00,0x1a] 193# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 194# CHECK-TRAP: ori $1, $zero, 32768 # encoding: [0x34,0x01,0x80,0x00] 195# CHECK-TRAP: div $zero, $5, $1 # encoding: [0x00,0xa1,0x00,0x1a] 196# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 197 198 div $4,$5,-0x8000 199# CHECK-NOTRAP: addiu $1, $zero, -32768 # encoding: [0x24,0x01,0x80,0x00] 200# CHECK-NOTRAP: div $zero, $5, $1 # encoding: [0x00,0xa1,0x00,0x1a] 201# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 202# CHECK-TRAP: addiu $1, $zero, -32768 # encoding: [0x24,0x01,0x80,0x00] 203# CHECK-TRAP: div $zero, $5, $1 # encoding: [0x00,0xa1,0x00,0x1a] 204# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 205 206 div $4,$5,0x10000 207# CHECK-NOTRAP: lui $1, 1 # encoding: [0x3c,0x01,0x00,0x01] 208# CHECK-NOTRAP: div $zero, $5, $1 # encoding: [0x00,0xa1,0x00,0x1a] 209# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 210# CHECK-TRAP: lui $1, 1 # encoding: [0x3c,0x01,0x00,0x01] 211# CHECK-TRAP: div $zero, $5, $1 # encoding: [0x00,0xa1,0x00,0x1a] 212# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 213 214 div $4,$5,0x1a5a5 215# CHECK-NOTRAP: lui $1, 1 # encoding: [0x3c,0x01,0x00,0x01] 216# CHECK-NOTRAP: ori $1, $1, 42405 # encoding: [0x34,0x21,0xa5,0xa5] 217# CHECK-NOTRAP: div $zero, $5, $1 # encoding: [0x00,0xa1,0x00,0x1a] 218# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 219# CHECK-TRAP: lui $1, 1 # encoding: [0x3c,0x01,0x00,0x01] 220# CHECK-TRAP: ori $1, $1, 42405 # encoding: [0x34,0x21,0xa5,0xa5] 221# CHECK-TRAP: div $zero, $5, $1 # encoding: [0x00,0xa1,0x00,0x1a] 222# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] 223