brintos

brintos / llvm-project-archived public Read only

0
0
Text · 16.5 KiB · 1875952 Raw
280 lines · plain
1# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding \2# RUN:            -mcpu=mips32r2 | FileCheck -check-prefix=O32 %s3# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding \4# RUN:            -mcpu=mips32r6 | FileCheck -check-prefix=O32 %s5 6# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding \7# RUN:            -mattr=+xgot -mcpu=mips32r2 \8# RUN:   | FileCheck -check-prefixes=XGOT,XO32 %s9 10# RUN: llvm-mc %s -triple=mipsn32 -show-encoding \11# RUN:            -mcpu=mips64r2 | FileCheck -check-prefix=N32 %s12 13# RUN: llvm-mc %s -triple=mipsn32 -show-encoding \14# RUN:            -mattr=+xgot -mcpu=mips64r2 \15# RUN:   | FileCheck -check-prefixes=XGOT,XN32 %s16 17# N64 should be acceptable too but we cannot convert la to dla yet.18 19.option pic220la $5, symbol21# O32: lw $5, %got(symbol)($gp)    # encoding: [0x8f,0x85,A,A]22# O32:                             #   fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT23 24# XGOT: lui  $5, %got_hi(symbol)      # encoding: [0x3c,0x05,A,A]25# XGOT:                               #   fixup A - offset: 0, value: %got_hi(symbol), kind: fixup_Mips_GOT_HI1626# XGOT: addu $5, $5, $gp              # encoding: [0x00,0xbc,0x28,0x21]27# XGOT: lw   $5, %got_lo(symbol)($5)  # encoding: [0x8c,0xa5,A,A]28# XGOT:                               #   fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO1629 30# N32: lw $5, %got_disp(symbol)($gp)  # encoding: [0x8f,0x85,A,A]31                                      #   fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP32 33la $5, symbol($6)34# O32: lw $5, %got(symbol)($gp)    # encoding: [0x8f,0x85,A,A]35# O32:                             #   fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT36# O32: addu $5, $5, $6             # encoding: [0x00,0xa6,0x28,0x21]37 38# XGOT: lui  $5, %got_hi(symbol)      # encoding: [0x3c,0x05,A,A]39# XGOT:                               #   fixup A - offset: 0, value: %got_hi(symbol), kind: fixup_Mips_GOT_HI1640# XGOT: addu $5, $5, $gp              # encoding: [0x00,0xbc,0x28,0x21]41# XGOT: lw   $5, %got_lo(symbol)($5)  # encoding: [0x8c,0xa5,A,A]42# XGOT:                               #   fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO1643# XGOT: addu $5, $5, $6               # encoding: [0x00,0xa6,0x28,0x21]44 45# N32: lw   $5, %got_disp(symbol)($gp)  # encoding: [0x8f,0x85,A,A]46# N32:                                  #   fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP47# N32: addu $5, $5, $6                  # encoding: [0x00,0xa6,0x28,0x21]48 49la $6, symbol($6)50# O32: lw $1, %got(symbol)($gp)    # encoding: [0x8f,0x81,A,A]51# O32:                             #   fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT52# O32: addu $6, $1, $6             # encoding: [0x00,0x26,0x30,0x21]53 54# XGOT: lui  $1, %got_hi(symbol)      # encoding: [0x3c,0x01,A,A]55# XGOT:                               #   fixup A - offset: 0, value: %got_hi(symbol), kind: fixup_Mips_GOT_HI1656# XGOT: addu $1, $1, $gp              # encoding: [0x00,0x3c,0x08,0x21]57# XGOT: lw   $1, %got_lo(symbol)($1)  # encoding: [0x8c,0x21,A,A]58# XGOT:                               #   fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO1659# XGOT: addu $6, $1, $6               # encoding: [0x00,0x26,0x30,0x21]60 61# N32: lw $1, %got_disp(symbol)($gp)  # encoding: [0x8f,0x81,A,A]62# N32:                                #   fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP63# N32: addu $6, $1, $6                # encoding: [0x00,0x26,0x30,0x21]64 65la $5, symbol+866# O32: lw $5, %got(symbol)($gp)    # encoding: [0x8f,0x85,A,A]67# O32:                             #   fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT68# O32: addiu $5, $5, 8             # encoding: [0x24,0xa5,0x00,0x08]69 70# XGOT: lui   $5, %got_hi(symbol+8)   # encoding: [0x3c,0x05,A,A]71# XGOT:                               #   fixup A - offset: 0, value: %got_hi(symbol+8), kind: fixup_Mips_GOT_HI1672# XGOT: addu  $5, $5, $gp             # encoding: [0x00,0xbc,0x28,0x21]73# XGOT: lw    $5, %got_lo(symbol)($5) # encoding: [0x8c,0xa5,A,A]74# XGOT:                               #   fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO1675# XGOT: addiu $5, $5, 8               # encoding: [0x24,0xa5,0x00,0x08]76 77# N32: lw $5, %got_disp(symbol)($gp)  # encoding: [0x8f,0x85,A,A]78# N32:                                #   fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP79# N32: addiu $5, $5, 8                # encoding: [0x24,0xa5,0x00,0x08]80 81la $5, symbol+8($6)82# O32: lw $5, %got(symbol)($gp)    # encoding: [0x8f,0x85,A,A]83# O32:                             #   fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT84# O32: addiu $5, $5, 8             # encoding: [0x24,0xa5,0x00,0x08]85# O32: addu $5, $5, $6             # encoding: [0x00,0xa6,0x28,0x21]86 87# XGOT: lui   $5, %got_hi(symbol+8)   # encoding: [0x3c,0x05,A,A]88# XGOT:                               #   fixup A - offset: 0, value: %got_hi(symbol+8), kind: fixup_Mips_GOT_HI1689# XGOT: addu  $5, $5, $gp             # encoding: [0x00,0xbc,0x28,0x21]90# XGOT: lw    $5, %got_lo(symbol)($5) # encoding: [0x8c,0xa5,A,A]91# XGOT:                               #   fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO1692# XGOT: addiu $5, $5, 8               # encoding: [0x24,0xa5,0x00,0x08]93# XGOT: addu  $5, $5, $6              # encoding: [0x00,0xa6,0x28,0x21]94 95# N32: lw $5, %got_disp(symbol)($gp)  # encoding: [0x8f,0x85,A,A]96# N32:                                #   fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP97# N32: addiu $5, $5, 8                # encoding: [0x24,0xa5,0x00,0x08]98# N32: addu $5, $5, $6                # encoding: [0x00,0xa6,0x28,0x21]99 100la $6, symbol+8($6)101# O32: lw $1, %got(symbol)($gp)    # encoding: [0x8f,0x81,A,A]102# O32:                             #   fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT103# O32: addiu $1, $1, 8             # encoding: [0x24,0x21,0x00,0x08]104# O32: addu $6, $1, $6             # encoding: [0x00,0x26,0x30,0x21]105 106# XGOT: lui   $1, %got_hi(symbol+8)   # encoding: [0x3c,0x01,A,A]107# XGOT:                               #   fixup A - offset: 0, value: %got_hi(symbol+8), kind: fixup_Mips_GOT_HI16108# XGOT: addu  $1, $1, $gp             # encoding: [0x00,0x3c,0x08,0x21]109# XGOT: lw    $1, %got_lo(symbol)($1) # encoding: [0x8c,0x21,A,A]110# XGOT:                               #   fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO16111# XGOT: addiu $1, $1, 8               # encoding: [0x24,0x21,0x00,0x08]112# XGOT: addu  $6, $1, $6              # encoding: [0x00,0x26,0x30,0x21]113 114# N32: lw $1, %got_disp(symbol)($gp)  # encoding: [0x8f,0x81,A,A]115# N32:                                #   fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP116# N32: addiu $1, $1, 8                # encoding: [0x24,0x21,0x00,0x08]117# N32: addu $6, $1, $6                # encoding: [0x00,0x26,0x30,0x21]118 119la $5, 1f120# O32: lw $5, %got($tmp0)($gp)     # encoding: [0x8f,0x85,A,A]121# O32:                             #   fixup A - offset: 0, value: %got($tmp0), kind: fixup_Mips_GOT122# O32: addiu $5, $5, %lo($tmp0)    # encoding: [0x24,0xa5,A,A]123# O32:                             #   fixup A - offset: 0, value: %lo($tmp0), kind: fixup_Mips_LO16124 125# XO32: lw    $5, %got($tmp0)($gp)    # encoding: [0x8f,0x85,A,A]126# XO32:                               #   fixup A - offset: 0, value: %got($tmp0), kind: fixup_Mips_GOT127# XO32: addiu $5, $5, %lo($tmp0)      # encoding: [0x24,0xa5,A,A]128# XO32:                               #   fixup A - offset: 0, value: %lo($tmp0), kind: fixup_Mips_LO16129 130# N32: lw     $5, %got_disp(.Ltmp0)($gp)  # encoding: [0x8f,0x85,A,A]131# N32:                                    #   fixup A - offset: 0, value: %got_disp(.Ltmp0), kind: fixup_Mips_GOT_DISP132 133## FIXME: GAS generates R_MIPS_GOT_PAGE / R_MIPS_GOT_OFST pair of relocations134## in case of using N32 ABI + XGOT.135# XN32: lw    $5, %got_disp(.Ltmp0)($gp)  # encoding: [0x8f,0x85,A,A]136# XN32:                                   #   fixup A - offset: 0, value: %got_disp(.Ltmp0), kind: fixup_Mips_GOT_DISP1371:138 139# PIC expansions involving $25 are special.140la $25, symbol141# O32: lw $25, %call16(symbol)($gp) # encoding: [0x8f,0x99,A,A]142# O32:                              #   fixup A - offset: 0, value: %call16(symbol), kind: fixup_Mips_CALL16143 144# XGOT: lui  $25, %call_hi(symbol)      # encoding: [0x3c,0x19,A,A]145# XGOT:                                 #   fixup A - offset: 0, value: %call_hi(symbol), kind: fixup_Mips_CALL_HI16146# XGOT: addu $25, $25, $gp              # encoding: [0x03,0x3c,0xc8,0x21]147# XGOT: lw   $25, %call_lo(symbol)($25) # encoding: [0x8f,0x39,A,A]148# XGOT:                                 #   fixup A - offset: 0, value: %call_lo(symbol), kind: fixup_Mips_CALL_LO16149 150# N32: lw $25, %call16(symbol)($gp) # encoding: [0x8f,0x99,A,A]151# N32:                              #   fixup A - offset: 0, value: %call16(symbol), kind: fixup_Mips_CALL16152 153la $25, symbol($6)154# O32: lw $25, %got(symbol)($gp)    # encoding: [0x8f,0x99,A,A]155# O32:                              #   fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT156# O32: addu $25, $25, $6            # encoding: [0x03,0x26,0xc8,0x21]157 158# XGOT: lui  $25, %got_hi(symbol)       # encoding: [0x3c,0x19,A,A]159# XGOT:                                 #   fixup A - offset: 0, value: %got_hi(symbol), kind: fixup_Mips_GOT_HI16160# XGOT: addu $25, $25, $gp              # encoding: [0x03,0x3c,0xc8,0x21]161# XGOT: lw   $25, %got_lo(symbol)($25)  # encoding: [0x8f,0x39,A,A]162# XGOT:                                 #   fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO16163# XGOT: addu $25, $25, $6               # encoding: [0x03,0x26,0xc8,0x21]164 165# N32: lw $25, %got_disp(symbol)($gp)   # encoding: [0x8f,0x99,A,A]166# N32:                                  #   fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP167# N32: addu $25, $25, $6                # encoding: [0x03,0x26,0xc8,0x21]168 169la $25, symbol($25)170# O32: lw $1, %got(symbol)($gp)     # encoding: [0x8f,0x81,A,A]171# O32:                              #   fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT172# O32: addu $25, $1, $25            # encoding: [0x00,0x39,0xc8,0x21]173 174# XGOT: lui  $1, %got_hi(symbol)      # encoding: [0x3c,0x01,A,A]175# XGOT:                               #   fixup A - offset: 0, value: %got_hi(symbol), kind: fixup_Mips_GOT_HI16176# XGOT: addu $1, $1, $gp              # encoding: [0x00,0x3c,0x08,0x21]177# XGOT: lw   $1, %got_lo(symbol)($1)  # encoding: [0x8c,0x21,A,A]178# XGOT:                               #   fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO16179# XGOT: addu $25, $1, $25             # encoding: [0x00,0x39,0xc8,0x21]180 181# N32: lw $1, %got_disp(symbol)($gp)  # encoding: [0x8f,0x81,A,A]182# N32:                                #   fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP183# N32: addu $25, $1, $25              # encoding: [0x00,0x39,0xc8,0x21]184 185la $25, symbol+8186# O32: lw $25, %got(symbol)($gp)    # encoding: [0x8f,0x99,A,A]187# O32:                              #   fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT188# O32: addiu $25, $25, 8            # encoding: [0x27,0x39,0x00,0x08]189 190# XGOT: lui   $25, %got_hi(symbol+8)    # encoding: [0x3c,0x19,A,A]191# XGOT:                                 #   fixup A - offset: 0, value: %got_hi(symbol+8), kind: fixup_Mips_GOT_HI16192# XGOT: addu  $25, $25, $gp             # encoding: [0x03,0x3c,0xc8,0x21]193# XGOT: lw    $25, %got_lo(symbol)($25) # encoding: [0x8f,0x39,A,A]194# XGOT:                                 #   fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO16195# XGOT: addiu $25, $25, 8               # encoding: [0x27,0x39,0x00,0x08]196 197# N32: lw $25, %got_disp(symbol)($gp)   # encoding: [0x8f,0x99,A,A]198# N32:                                  #   fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP199# N32: addiu $25, $25, 8                # encoding: [0x27,0x39,0x00,0x08]200 201la $25, symbol+8($6)202# O32: lw $25, %got(symbol)($gp)    # encoding: [0x8f,0x99,A,A]203# O32:                              #   fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT204# O32: addiu $25, $25, 8            # encoding: [0x27,0x39,0x00,0x08]205# O32: addu $25, $25, $6            # encoding: [0x03,0x26,0xc8,0x21]206 207# XGOT: lui   $25, %got_hi(symbol+8)    # encoding: [0x3c,0x19,A,A]208# XGOT:                                 #   fixup A - offset: 0, value: %got_hi(symbol+8), kind: fixup_Mips_GOT_HI16209# XGOT: addu  $25, $25, $gp             # encoding: [0x03,0x3c,0xc8,0x21]210# XGOT: lw    $25, %got_lo(symbol)($25) # encoding: [0x8f,0x39,A,A]211# XGOT:                                 #   fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO16212# XGOT: addiu $25, $25, 8               # encoding: [0x27,0x39,0x00,0x08]213# XGOT: addu  $25, $25, $6              # encoding: [0x03,0x26,0xc8,0x21]214 215# N32: lw $25, %got_disp(symbol)($gp)   # encoding: [0x8f,0x99,A,A]216# N32:                                  #   fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP217# N32: addiu $25, $25, 8                # encoding: [0x27,0x39,0x00,0x08]218# N32: addu $25, $25, $6                # encoding: [0x03,0x26,0xc8,0x21]219 220la $25, symbol+8($25)221# O32: lw $1, %got(symbol)($gp)     # encoding: [0x8f,0x81,A,A]222# O32:                              #   fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT223# O32: addiu $1, $1, 8              # encoding: [0x24,0x21,0x00,0x08]224# O32: addu $25, $1, $25            # encoding: [0x00,0x39,0xc8,0x21]225 226# XGOT: lui   $1, %got_hi(symbol+8)   # encoding: [0x3c,0x01,A,A]227# XGOT:                               #   fixup A - offset: 0, value: %got_hi(symbol+8), kind: fixup_Mips_GOT_HI16228# XGOT: addu  $1, $1, $gp             # encoding: [0x00,0x3c,0x08,0x21]229# XGOT: lw    $1, %got_lo(symbol)($1) # encoding: [0x8c,0x21,A,A]230# XGOT:                               #   fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO16231# XGOT: addiu $1, $1, 8               # encoding: [0x24,0x21,0x00,0x08]232# XGOT: addu  $25, $1, $25            # encoding: [0x00,0x39,0xc8,0x21]233 234# N32: lw $1, %got_disp(symbol)($gp)  # encoding: [0x8f,0x81,A,A]235# N32:                                #   fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP236# N32: addiu $1, $1, 8                # encoding: [0x24,0x21,0x00,0x08]237# N32: addu $25, $1, $25              # encoding: [0x00,0x39,0xc8,0x21]238 239la $25, 2f240# O32: lw $25, %got($tmp1)($gp)     # encoding: [0x8f,0x99,A,A]241# O32:                              #   fixup A - offset: 0, value: %got($tmp1), kind: fixup_Mips_GOT242# O32: addiu $25, $25, %lo($tmp1)   # encoding: [0x27,0x39,A,A]243# O32:                              #   fixup A - offset: 0, value: %lo($tmp1), kind: fixup_Mips_LO16244 245# XO32: lw    $25, %got($tmp1)($gp) # encoding: [0x8f,0x99,A,A]246# XO32:                             #   fixup A - offset: 0, value: %got($tmp1), kind: fixup_Mips_GOT247# XO32: addiu $25, $25, %lo($tmp1)  # encoding: [0x27,0x39,A,A]248# XO32:                             #   fixup A - offset: 0, value: %lo($tmp1), kind: fixup_Mips_LO16249 250# N32: lw $25, %got_disp(.Ltmp1)($gp) # encoding: [0x8f,0x99,A,A]251# N32:                                #   fixup A - offset: 0, value: %got_disp(.Ltmp1), kind: fixup_Mips_GOT_DISP252 253## FIXME: GAS generates R_MIPS_GOT_PAGE / R_MIPS_GOT_OFST pair of relocations254## in case of using N32 ABI + XGOT.255# XN32: lw $25, %got_disp(.Ltmp1)($gp)  # encoding: [0x8f,0x99,A,A]256# XN32:                                 #   fixup A - offset: 0, value: %got_disp(.Ltmp1), kind: fixup_Mips_GOT_DISP2572:258 259la $2,.Lstr260# O32:      lw      $2, %got(.Lstr)($gp)          # encoding: [0x8f,0x82,A,A]261# O32-NEXT:                           #   fixup A - offset: 0, value: %got(.Lstr), kind: fixup_Mips_GOT262# O32-NEXT: addiu   $2, $2, %lo(.Lstr)            # encoding: [0x24,0x42,A,A]263# O32-NEXT:                           #   fixup A - offset: 0, value: %lo(.Lstr), kind: fixup_Mips_LO16264 265# N32:      lw      $2, %got_disp(.Lstr)($gp)     # encoding: [0x8f,0x82,A,A]266# N32-NEXT:                           #   fixup A - offset: 0, value: %got_disp(.Lstr), kind: fixup_Mips_GOT_DISP267 268la $2,$str2269# O32:      lw      $2, %got($str2)($gp)          # encoding: [0x8f,0x82,A,A]270# O32-NEXT: #   fixup A - offset: 0, value: %got($str2), kind: fixup_Mips_GOT271# O32-NEXT: addiu   $2, $2, %lo($str2)            # encoding: [0x24,0x42,A,A]272# O32-NEXT: #   fixup A - offset: 0, value: %lo($str2), kind: fixup_Mips_LO16273 274# N32:      lw      $2, %got_disp($str2)($gp)     # encoding: [0x8f,0x82,A,A]275# N32-NEXT:                           #   fixup A - offset: 0, value: %got_disp($str2), kind: fixup_Mips_GOT_DISP276 277.rodata278.Lstr: .4byte 0279$str2: .4byte 0280