585 lines · plain
1# RUN: llvm-mc %s -triple=mips64el-unknown-linux -mcpu=mips64r2 -mattr=-xgot \2# RUN: -show-encoding | FileCheck --check-prefixes=CHECK,GOT %s3# RUN: llvm-mc %s -triple=mips64el-unknown-linux -mcpu=mips64r2 -mattr=+xgot \4# RUN: -show-encoding | FileCheck --check-prefixes=CHECK,XGOT %s5 6# Check that signed negative 32-bit immediates are loaded correctly:7 li $10, ~(0x101010)8# CHECK: lui $10, 65519 # encoding: [0xef,0xff,0x0a,0x3c]9# CHECK: ori $10, $10, 61423 # encoding: [0xef,0xef,0x4a,0x35]10# CHECK-NOT: dsll11 12# Test bne with an immediate as the 2nd operand.13 bne $2, 0x100010001, 133214# CHECK: addiu $1, $zero, 1 # encoding: [0x01,0x00,0x01,0x24]15# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]16# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]17# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]18# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]19# CHECK: bne $2, $1, 1332 # encoding: [0x4d,0x01,0x41,0x14]20# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]21 22 bne $2, 0x1000100010001, 133223# CHECK: lui $1, 1 # encoding: [0x01,0x00,0x01,0x3c]24# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]25# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]26# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]27# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]28# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]29# CHECK: bne $2, $1, 1332 # encoding: [0x4d,0x01,0x41,0x14]30# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]31 32 bne $2, -0x100010001, 133233# CHECK: addiu $1, $zero, -2 # encoding: [0xfe,0xff,0x01,0x24]34# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]35# CHECK: ori $1, $1, 65534 # encoding: [0xfe,0xff,0x21,0x34]36# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]37# CHECK: ori $1, $1, 65535 # encoding: [0xff,0xff,0x21,0x34]38# CHECK: bne $2, $1, 1332 # encoding: [0x4d,0x01,0x41,0x14]39# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]40 41 bne $2, -0x1000100010001, 133242# CHECK: lui $1, 65534 # encoding: [0xfe,0xff,0x01,0x3c]43# CHECK: ori $1, $1, 65534 # encoding: [0xfe,0xff,0x21,0x34]44# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]45# CHECK: ori $1, $1, 65534 # encoding: [0xfe,0xff,0x21,0x34]46# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]47# CHECK: ori $1, $1, 65535 # encoding: [0xff,0xff,0x21,0x34]48# CHECK: bne $2, $1, 1332 # encoding: [0x4d,0x01,0x41,0x14]49# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]50 51# Test beq with an immediate as the 2nd operand.52 beq $2, 0x100010001, 133253# CHECK: addiu $1, $zero, 1 # encoding: [0x01,0x00,0x01,0x24]54# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]55# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]56# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]57# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]58# CHECK: beq $2, $1, 1332 # encoding: [0x4d,0x01,0x41,0x10]59# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]60 61 beq $2, 0x1000100010001, 133262# CHECK: lui $1, 1 # encoding: [0x01,0x00,0x01,0x3c]63# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]64# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]65# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]66# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]67# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]68# CHECK: beq $2, $1, 1332 # encoding: [0x4d,0x01,0x41,0x10]69# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]70 71 beq $2, -0x100010001, 133272# CHECK: addiu $1, $zero, -2 # encoding: [0xfe,0xff,0x01,0x24]73# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]74# CHECK: ori $1, $1, 65534 # encoding: [0xfe,0xff,0x21,0x34]75# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]76# CHECK: ori $1, $1, 65535 # encoding: [0xff,0xff,0x21,0x34]77# CHECK: beq $2, $1, 1332 # encoding: [0x4d,0x01,0x41,0x10]78# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]79 80 beq $2, -0x1000100010001, 133281# CHECK: lui $1, 65534 # encoding: [0xfe,0xff,0x01,0x3c]82# CHECK: ori $1, $1, 65534 # encoding: [0xfe,0xff,0x21,0x34]83# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]84# CHECK: ori $1, $1, 65534 # encoding: [0xfe,0xff,0x21,0x34]85# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]86# CHECK: ori $1, $1, 65535 # encoding: [0xff,0xff,0x21,0x34]87# CHECK: beq $2, $1, 1332 # encoding: [0x4d,0x01,0x41,0x10]88# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]89 90# Test one with a symbol in the third operand.91sym:92 bne $2, 0x100010001, sym93# CHECK: addiu $1, $zero, 1 # encoding: [0x01,0x00,0x01,0x24]94# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]95# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]96# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]97# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]98# CHECK: bne $2, $1, sym # encoding: [A,A,0x41,0x14]99# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]100 101# Test ulhu with 64-bit immediate addresses.102 ulhu $8, 0x100010001103# CHECK: addiu $1, $zero, 1 # encoding: [0x01,0x00,0x01,0x24]104# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]105# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]106# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]107# CHECK: lbu $8, 1($1) # encoding: [0x01,0x00,0x28,0x90]108# CHECK: lbu $1, 0($1) # encoding: [0x00,0x00,0x21,0x90]109# CHECK: sll $8, $8, 8 # encoding: [0x00,0x42,0x08,0x00]110# CHECK: or $8, $8, $1 # encoding: [0x25,0x40,0x01,0x01]111 112 ulhu $8, 0x1000100010001113# CHECK: lui $1, 1 # encoding: [0x01,0x00,0x01,0x3c]114# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]115# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]116# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]117# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]118# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]119# CHECK: lbu $8, 1($1) # encoding: [0x01,0x00,0x28,0x90]120# CHECK: lbu $1, 0($1) # encoding: [0x00,0x00,0x21,0x90]121# CHECK: sll $8, $8, 8 # encoding: [0x00,0x42,0x08,0x00]122# CHECK: or $8, $8, $1 # encoding: [0x25,0x40,0x01,0x01]123 124 ulhu $8, -0x100010001125# CHECK: addiu $1, $zero, -2 # encoding: [0xfe,0xff,0x01,0x24]126# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]127# CHECK: ori $1, $1, 65534 # encoding: [0xfe,0xff,0x21,0x34]128# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]129# CHECK: ori $1, $1, 65535 # encoding: [0xff,0xff,0x21,0x34]130# CHECK: lbu $8, 1($1) # encoding: [0x01,0x00,0x28,0x90]131# CHECK: lbu $1, 0($1) # encoding: [0x00,0x00,0x21,0x90]132# CHECK: sll $8, $8, 8 # encoding: [0x00,0x42,0x08,0x00]133# CHECK: or $8, $8, $1 # encoding: [0x25,0x40,0x01,0x01]134 135 ulhu $8, -0x1000100010001136# CHECK: lui $1, 65534 # encoding: [0xfe,0xff,0x01,0x3c]137# CHECK: ori $1, $1, 65534 # encoding: [0xfe,0xff,0x21,0x34]138# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]139# CHECK: ori $1, $1, 65534 # encoding: [0xfe,0xff,0x21,0x34]140# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]141# CHECK: ori $1, $1, 65535 # encoding: [0xff,0xff,0x21,0x34]142# CHECK: lbu $8, 1($1) # encoding: [0x01,0x00,0x28,0x90]143# CHECK: lbu $1, 0($1) # encoding: [0x00,0x00,0x21,0x90]144# CHECK: sll $8, $8, 8 # encoding: [0x00,0x42,0x08,0x00]145# CHECK: or $8, $8, $1 # encoding: [0x25,0x40,0x01,0x01]146 147# Test ulhu with source register and 64-bit immediate offset.148 ulhu $8, 0x100010001($9)149# CHECK: addiu $1, $zero, 1 # encoding: [0x01,0x00,0x01,0x24]150# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]151# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]152# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]153# CHECK: daddu $1, $1, $9 # encoding: [0x2d,0x08,0x29,0x00]154# CHECK: lbu $8, 1($1) # encoding: [0x01,0x00,0x28,0x90]155# CHECK: lbu $1, 0($1) # encoding: [0x00,0x00,0x21,0x90]156# CHECK: sll $8, $8, 8 # encoding: [0x00,0x42,0x08,0x00]157# CHECK: or $8, $8, $1 # encoding: [0x25,0x40,0x01,0x01]158 159 ulhu $8, 0x1000100010001($9)160# CHECK: lui $1, 1 # encoding: [0x01,0x00,0x01,0x3c]161# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]162# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]163# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]164# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]165# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]166# CHECK: daddu $1, $1, $9 # encoding: [0x2d,0x08,0x29,0x00]167# CHECK: lbu $8, 1($1) # encoding: [0x01,0x00,0x28,0x90]168# CHECK: lbu $1, 0($1) # encoding: [0x00,0x00,0x21,0x90]169# CHECK: sll $8, $8, 8 # encoding: [0x00,0x42,0x08,0x00]170# CHECK: or $8, $8, $1 # encoding: [0x25,0x40,0x01,0x01]171 172 ulhu $8, -0x100010001($9)173# CHECK: addiu $1, $zero, -2 # encoding: [0xfe,0xff,0x01,0x24]174# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]175# CHECK: ori $1, $1, 65534 # encoding: [0xfe,0xff,0x21,0x34]176# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]177# CHECK: daddu $1, $1, $9 # encoding: [0x2d,0x08,0x29,0x00]178# CHECK: lbu $8, 1($1) # encoding: [0x01,0x00,0x28,0x90]179# CHECK: lbu $1, 0($1) # encoding: [0x00,0x00,0x21,0x90]180# CHECK: sll $8, $8, 8 # encoding: [0x00,0x42,0x08,0x00]181# CHECK: or $8, $8, $1 # encoding: [0x25,0x40,0x01,0x01]182 183 ulhu $8, -0x1000100010001($9)184# CHECK: lui $1, 65534 # encoding: [0xfe,0xff,0x01,0x3c]185# CHECK: ori $1, $1, 65534 # encoding: [0xfe,0xff,0x21,0x34]186# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]187# CHECK: ori $1, $1, 65534 # encoding: [0xfe,0xff,0x21,0x34]188# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]189# CHECK: ori $1, $1, 65535 # encoding: [0xff,0xff,0x21,0x34]190# CHECK: daddu $1, $1, $9 # encoding: [0x2d,0x08,0x29,0x00]191# CHECK: lbu $8, 1($1) # encoding: [0x01,0x00,0x28,0x90]192# CHECK: lbu $1, 0($1) # encoding: [0x00,0x00,0x21,0x90]193# CHECK: sll $8, $8, 8 # encoding: [0x00,0x42,0x08,0x00]194# CHECK: or $8, $8, $1 # encoding: [0x25,0x40,0x01,0x01]195 196# Test ulw with 64-bit immediate addresses.197 ulw $8, 0x100010001198# CHECK: addiu $1, $zero, 1 # encoding: [0x01,0x00,0x01,0x24]199# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]200# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]201# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]202# CHECK: lwl $8, 3($1) # encoding: [0x03,0x00,0x28,0x88]203# CHECK: lwr $8, 0($1) # encoding: [0x00,0x00,0x28,0x98]204 205 ulw $8, 0x1000100010001206# CHECK: lui $1, 1 # encoding: [0x01,0x00,0x01,0x3c]207# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]208# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]209# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]210# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]211# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]212# CHECK: lwl $8, 3($1) # encoding: [0x03,0x00,0x28,0x88]213# CHECK: lwr $8, 0($1) # encoding: [0x00,0x00,0x28,0x98]214 215 ulw $8, -0x100010001216# CHECK: addiu $1, $zero, -2 # encoding: [0xfe,0xff,0x01,0x24]217# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]218# CHECK: ori $1, $1, 65534 # encoding: [0xfe,0xff,0x21,0x34]219# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]220# CHECK: ori $1, $1, 65535 # encoding: [0xff,0xff,0x21,0x34]221# CHECK: lwl $8, 3($1) # encoding: [0x03,0x00,0x28,0x88]222# CHECK: lwr $8, 0($1) # encoding: [0x00,0x00,0x28,0x98]223 224 ulw $8, -0x1000100010001225# CHECK: lui $1, 65534 # encoding: [0xfe,0xff,0x01,0x3c]226# CHECK: ori $1, $1, 65534 # encoding: [0xfe,0xff,0x21,0x34]227# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]228# CHECK: ori $1, $1, 65534 # encoding: [0xfe,0xff,0x21,0x34]229# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]230# CHECK: ori $1, $1, 65535 # encoding: [0xff,0xff,0x21,0x34]231# CHECK: lwl $8, 3($1) # encoding: [0x03,0x00,0x28,0x88]232# CHECK: lwr $8, 0($1) # encoding: [0x00,0x00,0x28,0x98]233 234# Test ulw with source register and 64-bit immediate offset.235 ulw $8, 0x100010001($9)236# CHECK: addiu $1, $zero, 1 # encoding: [0x01,0x00,0x01,0x24]237# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]238# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]239# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]240# CHECK: daddu $1, $1, $9 # encoding: [0x2d,0x08,0x29,0x00]241# CHECK: lwl $8, 3($1) # encoding: [0x03,0x00,0x28,0x88]242# CHECK: lwr $8, 0($1) # encoding: [0x00,0x00,0x28,0x98]243 244 ulw $8, 0x1000100010001($9)245# CHECK: lui $1, 1 # encoding: [0x01,0x00,0x01,0x3c]246# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]247# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]248# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]249# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]250# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34]251# CHECK: daddu $1, $1, $9 # encoding: [0x2d,0x08,0x29,0x00]252# CHECK: lwl $8, 3($1) # encoding: [0x03,0x00,0x28,0x88]253# CHECK: lwr $8, 0($1) # encoding: [0x00,0x00,0x28,0x98]254 255 ulw $8, -0x100010001($9)256# CHECK: addiu $1, $zero, -2 # encoding: [0xfe,0xff,0x01,0x24]257# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]258# CHECK: ori $1, $1, 65534 # encoding: [0xfe,0xff,0x21,0x34]259# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]260# CHECK: ori $1, $1, 65535 # encoding: [0xff,0xff,0x21,0x34]261# CHECK: daddu $1, $1, $9 # encoding: [0x2d,0x08,0x29,0x00]262# CHECK: lwl $8, 3($1) # encoding: [0x03,0x00,0x28,0x88]263# CHECK: lwr $8, 0($1) # encoding: [0x00,0x00,0x28,0x98]264 265 ulw $8, -0x1000100010001($9)266# CHECK: lui $1, 65534 # encoding: [0xfe,0xff,0x01,0x3c]267# CHECK: ori $1, $1, 65534 # encoding: [0xfe,0xff,0x21,0x34]268# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]269# CHECK: ori $1, $1, 65534 # encoding: [0xfe,0xff,0x21,0x34]270# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00]271# CHECK: ori $1, $1, 65535 # encoding: [0xff,0xff,0x21,0x34]272# CHECK: daddu $1, $1, $9 # encoding: [0x2d,0x08,0x29,0x00]273# CHECK: lwl $8, 3($1) # encoding: [0x03,0x00,0x28,0x88]274# CHECK: lwr $8, 0($1) # encoding: [0x00,0x00,0x28,0x98]275 276# Test lb/sb/ld/sd/lld with offsets exceeding 16-bits in size.277 278 ld $4, 0x8000279# CHECK: lui $4, 1280# CHECK-NEXT: ld $4, -32768($4)281 282 ld $4, 0x20008($3)283# CHECK: lui $4, 2284# CHECK-NEXT: addu $4, $4, $3285# CHECK-NEXT: ld $4, 8($4)286 287 ld $4,0x100010004288# CHECK: addiu $4, $zero, 1289# CHECK-NEXT: dsll $4, $4, 16290# CHECK-NEXT: ori $4, $4, 1291# CHECK-NEXT: dsll $4, $4, 16292# CHECK-NEXT: ld $4, 4($4)293 294 ld $4,0x1800180018004295# CHECK: lui $4, 1296# CHECK-NEXT: ori $4, $4, 32769297# CHECK-NEXT: dsll $4, $4, 16298# CHECK-NEXT: ori $4, $4, 32770299# CHECK-NEXT: dsll $4, $4, 16300# CHECK-NEXT: ld $4, -32764($4)301 302 ld $4,0x1800180018004($3)303# CHECK: lui $4, 1304# CHECK-NEXT: ori $4, $4, 32769305# CHECK-NEXT: dsll $4, $4, 16306# CHECK-NEXT: ori $4, $4, 32770307# CHECK-NEXT: dsll $4, $4, 16308# CHECK-NEXT: daddu $4, $4, $3309# CHECK-NEXT: ld $4, -32764($4)310 311 sd $4, 0x8000312# CHECK: lui $1, 1313# CHECK-NEXT: sd $4, -32768($1)314 315 sd $4, 0x20008($3)316# CHECK: lui $1, 2317# CHECK-NEXT: addu $1, $1, $3318# CHECK-NEXT: sd $4, 8($1)319 320 sd $4,0x100010004321# CHECK: addiu $1, $zero, 1322# CHECK-NEXT: dsll $1, $1, 16323# CHECK-NEXT: ori $1, $1, 1324# CHECK-NEXT: dsll $1, $1, 16325# CHECK-NEXT: sd $4, 4($1)326 327 sd $4,0x1800180018004328# CHECK: lui $1, 1329# CHECK-NEXT: ori $1, $1, 32769330# CHECK-NEXT: dsll $1, $1, 16331# CHECK-NEXT: ori $1, $1, 32770332# CHECK-NEXT: dsll $1, $1, 16333# CHECK-NEXT: sd $4, -32764($1)334 335 sd $4,0x1800180018004($3)336# CHECK: lui $1, 1337# CHECK-NEXT: ori $1, $1, 32769338# CHECK-NEXT: dsll $1, $1, 16339# CHECK-NEXT: ori $1, $1, 32770340# CHECK-NEXT: dsll $1, $1, 16341# CHECK-NEXT: daddu $1, $1, $3342# CHECK-NEXT: sd $4, -32764($1)343 344 lld $4, 0x8000345# CHECK: lui $4, 1346# CHECK-NEXT: lld $4, -32768($4)347 348 lld $4, 0x20008($3)349# CHECK: lui $4, 2350# CHECK-NEXT: addu $4, $4, $3351# CHECK-NEXT: lld $4, 8($4)352 353 lld $4,0x100010004354# CHECK: addiu $4, $zero, 1355# CHECK-NEXT: dsll $4, $4, 16356# CHECK-NEXT: ori $4, $4, 1357# CHECK-NEXT: dsll $4, $4, 16358# CHECK-NEXT: lld $4, 4($4)359 360 lld $4,0x1800180018004361# CHECK: lui $4, 1362# CHECK-NEXT: ori $4, $4, 32769363# CHECK-NEXT: dsll $4, $4, 16364# CHECK-NEXT: ori $4, $4, 32770365# CHECK-NEXT: dsll $4, $4, 16366# CHECK-NEXT: lld $4, -32764($4)367 368 lld $4,0x1800180018004($3)369# CHECK: lui $4, 1370# CHECK-NEXT: ori $4, $4, 32769371# CHECK-NEXT: dsll $4, $4, 16372# CHECK-NEXT: ori $4, $4, 32770373# CHECK-NEXT: dsll $4, $4, 16374# CHECK-NEXT: daddu $4, $4, $3375# CHECK-NEXT: lld $4, -32764($4)376 377 lb $4,0x100010004378# CHECK: addiu $4, $zero, 1379# CHECK-NEXT: dsll $4, $4, 16380# CHECK-NEXT: ori $4, $4, 1381# CHECK-NEXT: dsll $4, $4, 16382# CHECK-NEXT: lb $4, 4($4)383 384 lb $4,0x1800180018004385# CHECK: lui $4, 1386# CHECK-NEXT: ori $4, $4, 32769387# CHECK-NEXT: dsll $4, $4, 16388# CHECK-NEXT: ori $4, $4, 32770389# CHECK-NEXT: dsll $4, $4, 16390# CHECK-NEXT: lb $4, -32764($4)391 392 lb $4,0x1800180018004($3)393# CHECK: lui $4, 1394# CHECK-NEXT: ori $4, $4, 32769395# CHECK-NEXT: dsll $4, $4, 16396# CHECK-NEXT: ori $4, $4, 32770397# CHECK-NEXT: dsll $4, $4, 16398# CHECK-NEXT: daddu $4, $4, $3399# CHECK-NEXT: lb $4, -32764($4)400 401 sb $4,0x100010004402# CHECK: addiu $1, $zero, 1403# CHECK-NEXT: dsll $1, $1, 16404# CHECK-NEXT: ori $1, $1, 1405# CHECK-NEXT: dsll $1, $1, 16406# CHECK-NEXT: sb $4, 4($1)407 408 sb $4,0x1800180018004409# CHECK: lui $1, 1410# CHECK-NEXT: ori $1, $1, 32769411# CHECK-NEXT: dsll $1, $1, 16412# CHECK-NEXT: ori $1, $1, 32770413# CHECK-NEXT: dsll $1, $1, 16414# CHECK-NEXT: sb $4, -32764($1)415 416 sb $4,0x1800180018004($3)417# CHECK: lui $1, 1418# CHECK-NEXT: ori $1, $1, 32769419# CHECK-NEXT: dsll $1, $1, 16420# CHECK-NEXT: ori $1, $1, 32770421# CHECK-NEXT: dsll $1, $1, 16422# CHECK-NEXT: daddu $1, $1, $3423# CHECK-NEXT: sb $4, -32764($1)424 425 lh $4,0x100010004426# CHECK: addiu $4, $zero, 1427# CHECK-NEXT: dsll $4, $4, 16428# CHECK-NEXT: ori $4, $4, 1429# CHECK-NEXT: dsll $4, $4, 16430# CHECK-NEXT: lh $4, 4($4)431 432 lh $4,0x1800180018004433# CHECK: lui $4, 1434# CHECK-NEXT: ori $4, $4, 32769435# CHECK-NEXT: dsll $4, $4, 16436# CHECK-NEXT: ori $4, $4, 32770437# CHECK-NEXT: dsll $4, $4, 16438# CHECK-NEXT: lh $4, -32764($4)439 440 lh $4,0x1800180018004($3)441# CHECK: lui $4, 1442# CHECK-NEXT: ori $4, $4, 32769443# CHECK-NEXT: dsll $4, $4, 16444# CHECK-NEXT: ori $4, $4, 32770445# CHECK-NEXT: dsll $4, $4, 16446# CHECK-NEXT: daddu $4, $4, $3447# CHECK-NEXT: lh $4, -32764($4)448 449 lhu $4,0x100010004450# CHECK: addiu $4, $zero, 1451# CHECK-NEXT: dsll $4, $4, 16452# CHECK-NEXT: ori $4, $4, 1453# CHECK-NEXT: dsll $4, $4, 16454# CHECK-NEXT: lhu $4, 4($4)455 456 lhu $4,0x1800180018004457# CHECK: lui $4, 1458# CHECK-NEXT: ori $4, $4, 32769459# CHECK-NEXT: dsll $4, $4, 16460# CHECK-NEXT: ori $4, $4, 32770461# CHECK-NEXT: dsll $4, $4, 16462# CHECK-NEXT: lhu $4, -32764($4)463 464 lhu $4,0x1800180018004($3)465# CHECK: lui $4, 1466# CHECK-NEXT: ori $4, $4, 32769467# CHECK-NEXT: dsll $4, $4, 16468# CHECK-NEXT: ori $4, $4, 32770469# CHECK-NEXT: dsll $4, $4, 16470# CHECK-NEXT: daddu $4, $4, $3471# CHECK-NEXT: lhu $4, -32764($4)472 473# LW/SW and LDC1/SDC1 of symbol address, done by MipsAsmParser::expandMemInst():474 .option pic2475 lw $10, symbol($4)476# GOT: ld $10, %got_disp(symbol)($gp) # encoding: [A,A,0x8a,0xdf]477# GOT-NEXT: # fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP478# GOT-NEXT: daddu $10, $10, $4 # encoding: [0x2d,0x50,0x44,0x01]479# GOT-NEXT: lw $10, 0($10) # encoding: [0x00,0x00,0x4a,0x8d]480 481# XGOT: lui $10, %got_hi(symbol) # encoding: [A,A,0x0a,0x3c]482# XGOT-NEXT: # fixup A - offset: 0, value: %got_hi(symbol), kind: fixup_Mips_GOT_HI16483# XGOT-NEXT: daddu $10, $10, $gp # encoding: [0x2d,0x50,0x5c,0x01]484# XGOT-NEXT: ld $10, %got_lo(symbol)($10) # encoding: [A,A,0x4a,0xdd]485# XGOT-NEXT: # fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO16486# XGOT-NEXT: daddu $10, $10, $4 # encoding: [0x2d,0x50,0x44,0x01]487# XGOT-NEXT: lw $10, 0($10) # encoding: [0x00,0x00,0x4a,0x8d]488 489 sw $10, symbol($9)490# GOT: ld $1, %got_disp(symbol)($gp) # encoding: [A,A,0x81,0xdf]491# GOT-NEXT: # fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP492# GOT-NEXT: daddu $1, $1, $9 # encoding: [0x2d,0x08,0x29,0x00]493# GOT-NEXT: sw $10, 0($1) # encoding: [0x00,0x00,0x2a,0xac]494 495# XGOT: lui $1, %got_hi(symbol) # encoding: [A,A,0x01,0x3c]496# XGOT-NEXT: # fixup A - offset: 0, value: %got_hi(symbol), kind: fixup_Mips_GOT_HI16497# XGOT-NEXT: daddu $1, $1, $gp # encoding: [0x2d,0x08,0x3c,0x00]498# XGOT-NEXT: ld $1, %got_lo(symbol)($1) # encoding: [A,A,0x21,0xdc]499# XGOT-NEXT: # fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO16500# XGOT-NEXT: daddu $1, $1, $9 # encoding: [0x2d,0x08,0x29,0x00]501# XGOT-NEXT: sw $10, 0($1) # encoding: [0x00,0x00,0x2a,0xac]502 503 lw $8, sym+8504# GOT: ld $8, %got_disp(sym)($gp) # encoding: [A,A,0x88,0xdf]505# GOT-NEXT: # fixup A - offset: 0, value: %got_disp(sym), kind: fixup_Mips_GOT_DISP506# GOT-NEXT: lw $8, 8($8) # encoding: [0x08,0x00,0x08,0x8d]507 508# XGOT: ld $8, %got_disp(sym)($gp) # encoding: [A,A,0x88,0xdf]509# XGOT-NEXT: # fixup A - offset: 0, value: %got_disp(sym), kind: fixup_Mips_GOT_DISP510# XGOT-NEXT: lw $8, 8($8) # encoding: [0x08,0x00,0x08,0x8d]511 512 sw $8, sym+8513# GOT: ld $1, %got_disp(sym)($gp) # encoding: [A,A,0x81,0xdf]514# GOT-NEXT: # fixup A - offset: 0, value: %got_disp(sym), kind: fixup_Mips_GOT_DISP515# GOT-NEXT: sw $8, 8($1) # encoding: [0x08,0x00,0x28,0xac]516 517# XGOT: ld $1, %got_disp(sym)($gp) # encoding: [A,A,0x81,0xdf]518# XGOT-NEXT: # fixup A - offset: 0, value: %got_disp(sym), kind: fixup_Mips_GOT_DISP519# XGOT-NEXT: sw $8, 8($1) # encoding: [0x08,0x00,0x28,0xac]520 521 lw $10, 655483($4)522# GOT: lui $10, 10 # encoding: [0x0a,0x00,0x0a,0x3c]523# GOT-NEXT: daddu $10, $10, $4 # encoding: [0x2d,0x50,0x44,0x01]524# GOT-NEXT: lw $10, 123($10) # encoding: [0x7b,0x00,0x4a,0x8d]525 526# XGOT: lui $10, 10 # encoding: [0x0a,0x00,0x0a,0x3c]527# XGOT-NEXT: daddu $10, $10, $4 # encoding: [0x2d,0x50,0x44,0x01]528# XGOT-NEXT: lw $10, 123($10) # encoding: [0x7b,0x00,0x4a,0x8d]529 sw $10, 123456($9)530# GOT: lui $1, 2 # encoding: [0x02,0x00,0x01,0x3c]531# GOT-NEXT: daddu $1, $1, $9 # encoding: [0x2d,0x08,0x29,0x00]532# GOT-NEXT: sw $10, -7616($1) # encoding: [0x40,0xe2,0x2a,0xac]533 534# XGOT: lui $1, 2 # encoding: [0x02,0x00,0x01,0x3c]535# XGOT-NEXT: daddu $1, $1, $9 # encoding: [0x2d,0x08,0x29,0x00]536# XGOT-NEXT: sw $10, -7616($1) # encoding: [0x40,0xe2,0x2a,0xac]537 538 lw $8, symbol+8539# GOT: ld $8, %got_disp(symbol)($gp) # encoding: [A,A,0x88,0xdf]540# GOT-NEXT: # fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP541# GOT-NEXT: lw $8, 8($8) # encoding: [0x08,0x00,0x08,0x8d]542 543# XGOT: lui $8, %got_hi(symbol) # encoding: [A,A,0x08,0x3c]544# XGOT-NEXT: # fixup A - offset: 0, value: %got_hi(symbol), kind: fixup_Mips_GOT_HI16545# XGOT-NEXT: daddu $8, $8, $gp # encoding: [0x2d,0x40,0x1c,0x01]546# XGOT-NEXT: ld $8, %got_lo(symbol)($8) # encoding: [A,A,0x08,0xdd]547# XGOT-NEXT: # fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO16548# XGOT-NEXT: lw $8, 8($8) # encoding: [0x08,0x00,0x08,0x8d]549 550 sw $8, symbol+8551# GOT: ld $1, %got_disp(symbol)($gp) # encoding: [A,A,0x81,0xdf]552# GOT-NEXT: # fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP553# GOT-NEXT: sw $8, 8($1) # encoding: [0x08,0x00,0x28,0xac]554 555# XGOT: lui $1, %got_hi(symbol) # encoding: [A,A,0x01,0x3c]556# XGOT-NEXT: # fixup A - offset: 0, value: %got_hi(symbol), kind: fixup_Mips_GOT_HI16557# XGOT-NEXT: daddu $1, $1, $gp # encoding: [0x2d,0x08,0x3c,0x00]558# XGOT-NEXT: ld $1, %got_lo(symbol)($1) # encoding: [A,A,0x21,0xdc]559# XGOT-NEXT: # fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO16560# XGOT-NEXT: sw $8, 8($1) # encoding: [0x08,0x00,0x28,0xac]561 562 ldc1 $f0, symbol563# GOT: ld $1, %got_disp(symbol)($gp) # encoding: [A,A,0x81,0xdf]564# GOT-NEXT: # fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP565# GOT-NEXT: ldc1 $f0, 0($1) # encoding: [0x00,0x00,0x20,0xd4]566 567# XGOT: lui $1, %got_hi(symbol) # encoding: [A,A,0x01,0x3c]568# XGOT-NEXT: # fixup A - offset: 0, value: %got_hi(symbol), kind: fixup_Mips_GOT_HI16569# XGOT-NEXT: daddu $1, $1, $gp # encoding: [0x2d,0x08,0x3c,0x00]570# XGOT-NEXT: ld $1, %got_lo(symbol)($1) # encoding: [A,A,0x21,0xdc]571# XGOT-NEXT: # fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO16572# XGOT-NEXT: ldc1 $f0, 0($1) # encoding: [0x00,0x00,0x20,0xd4]573 574 sdc1 $f0, symbol575# GOT: ld $1, %got_disp(symbol)($gp) # encoding: [A,A,0x81,0xdf]576# GOT-NEXT: # fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP577# GOT-NEXT: sdc1 $f0, 0($1) # encoding: [0x00,0x00,0x20,0xf4]578 579# XGOT: lui $1, %got_hi(symbol) # encoding: [A,A,0x01,0x3c]580# XGOT-NEXT: # fixup A - offset: 0, value: %got_hi(symbol), kind: fixup_Mips_GOT_HI16581# XGOT-NEXT: daddu $1, $1, $gp # encoding: [0x2d,0x08,0x3c,0x00]582# XGOT-NEXT: ld $1, %got_lo(symbol)($1) # encoding: [A,A,0x21,0xdc]583# XGOT-NEXT: # fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO16584# XGOT-NEXT: sdc1 $f0, 0($1) # encoding: [0x00,0x00,0x20,0xf4]585