1 # RUN: llvm-mc %s -arch=mips -mcpu=mips32 -show-encoding |\
2 # RUN: FileCheck %s -check-prefix=ALL -check-prefix=NORMAL -check-prefix=O32
4 # RUN: llvm-mc %s -arch=mips -mcpu=mips64 -target-abi n32 -show-encoding |\
5 # RUN: FileCheck %s -check-prefix=ALL -check-prefix=NORMAL -check-prefix=N32
7 # RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 -target-abi n64 -show-encoding |\
8 # RUN: FileCheck %s -check-prefix=ALL -check-prefix=NORMAL -check-prefix=N64
10 # RUN: llvm-mc %s -arch=mips -mcpu=mips32 -mattr=micromips -show-encoding |\
11 # RUN: FileCheck %s -check-prefix=ALL -check-prefix=MICROMIPS -check-prefix=O32-MICROMIPS
13 # RUN: llvm-mc %s -arch=mips -mcpu=mips64 -target-abi n32 -mattr=micromips -show-encoding |\
14 # RUN: FileCheck %s -check-prefix=ALL -check-prefix=MICROMIPS -check-prefix=N32-MICROMIPS
16 # RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 -target-abi n64 -mattr=micromips -show-encoding |\
17 # RUN: FileCheck %s -check-prefix=ALL -check-prefix=MICROMIPS -check-prefix=N64-MICROMIPS
41 # local labels ($tmp symbols)
52 # Expanding "jal local_label":
53 # O32: lw $25, %got(local_label)($gp) # encoding: [0x8f,0x99,A,A]
54 # O32: # fixup A - offset: 0, value: local_label@GOT, kind: fixup_Mips_GOT_Local
55 # O32: addiu $25, $25, %lo(local_label) # encoding: [0x27,0x39,A,A]
56 # O32: # fixup A - offset: 0, value: local_label@ABS_LO, kind: fixup_Mips_LO16
58 # N32: lw $25, %got_disp(local_label)($gp) # encoding: [0x8f,0x99,A,A]
59 # N32: # fixup A - offset: 0, value: local_label@GOT_DISP, kind: fixup_Mips_GOT_DISP
61 # N64: ld $25, %got_disp(local_label)($gp) # encoding: [0xdf,0x99,A,A]
62 # N64: # fixup A - offset: 0, value: local_label@GOT_DISP, kind: fixup_Mips_GOT_DISP
64 # O32-MICROMIPS: lw $25, %got(local_label)($gp) # encoding: [0xff,0x3c,A,A]
65 # O32-MICROMIPS: # fixup A - offset: 0, value: local_label@GOT, kind: fixup_MICROMIPS_GOT16
66 # O32-MICROMIPS: addiu $25, $25, %lo(local_label) # encoding: [0x33,0x39,A,A]
67 # O32-MICROMIPS: # fixup A - offset: 0, value: local_label@ABS_LO, kind: fixup_MICROMIPS_LO16
69 # N32-MICROMIPS: lw $25, %got_disp(local_label)($gp) # encoding: [0xff,0x3c,A,A]
70 # N32-MICROMIPS: # fixup A - offset: 0, value: local_label@GOT_DISP, kind: fixup_MICROMIPS_GOT_DISP
72 # N64-MICROMIPS: ld $25, %got_disp(local_label)($gp) # encoding: [0xdf,0x99,A,A]
73 # N64-MICROMIPS: # fixup A - offset: 0, value: local_label@GOT_DISP, kind: fixup_MICROMIPS_GOT_DISP
75 # NORMAL: jalr $25 # encoding: [0x03,0x20,0xf8,0x09]
76 # MICROMIPS: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c]
77 # ALL: nop # encoding: [0x00,0x00,0x00,0x00]
80 # Expanding "jal weak_label":
81 # O32: lw $25, %call16(weak_label)($gp) # encoding: [0x8f,0x99,A,A]
82 # O32: # fixup A - offset: 0, value: weak_label@GOT_CALL, kind: fixup_Mips_CALL16
84 # N32: lw $25, %call16(weak_label)($gp) # encoding: [0x8f,0x99,A,A]
85 # N32: # fixup A - offset: 0, value: weak_label@GOT_CALL, kind: fixup_Mips_CALL16
87 # N64: ld $25, %call16(weak_label)($gp) # encoding: [0xdf,0x99,A,A]
88 # N64: # fixup A - offset: 0, value: weak_label@GOT_CALL, kind: fixup_Mips_CALL16
90 # O32-MICROMIPS: lw $25, %call16(weak_label)($gp) # encoding: [0xff,0x3c,A,A]
91 # O32-MICROMIPS: # fixup A - offset: 0, value: weak_label@GOT_CALL, kind: fixup_MICROMIPS_CALL16
93 # N32-MICROMIPS: lw $25, %call16(weak_label)($gp) # encoding: [0xff,0x3c,A,A]
94 # N32-MICROMIPS: # fixup A - offset: 0, value: weak_label@GOT_CALL, kind: fixup_MICROMIPS_CALL16
96 # N64-MICROMIPS: ld $25, %call16(weak_label)($gp) # encoding: [0xdf,0x99,A,A]
97 # N64-MICROMIPS: # fixup A - offset: 0, value: weak_label@GOT_CALL, kind: fixup_MICROMIPS_CALL16
99 # NORMAL: jalr $25 # encoding: [0x03,0x20,0xf8,0x09]
100 # MICROMIPS: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c]
101 # ALL: nop # encoding: [0x00,0x00,0x00,0x00]
104 # Expanding "jal global_label":
105 # O32: lw $25, %call16(global_label)($gp) # encoding: [0x8f,0x99,A,A]
106 # O32: # fixup A - offset: 0, value: global_label@GOT_CALL, kind: fixup_Mips_CALL16
108 # N32: lw $25, %call16(global_label)($gp) # encoding: [0x8f,0x99,A,A]
109 # N32: # fixup A - offset: 0, value: global_label@GOT_CALL, kind: fixup_Mips_CALL16
111 # N64: ld $25, %call16(global_label)($gp) # encoding: [0xdf,0x99,A,A]
112 # N64: # fixup A - offset: 0, value: global_label@GOT_CALL, kind: fixup_Mips_CALL16
114 # O32-MICROMIPS: lw $25, %call16(global_label)($gp) # encoding: [0xff,0x3c,A,A]
115 # O32-MICROMIPS: # fixup A - offset: 0, value: global_label@GOT_CALL, kind: fixup_MICROMIPS_CALL16
117 # N32-MICROMIPS: lw $25, %call16(global_label)($gp) # encoding: [0xff,0x3c,A,A]
118 # N32-MICROMIPS: # fixup A - offset: 0, value: global_label@GOT_CALL, kind: fixup_MICROMIPS_CALL16
120 # N64-MICROMIPS: ld $25, %call16(global_label)($gp) # encoding: [0xdf,0x99,A,A]
121 # N64-MICROMIPS: # fixup A - offset: 0, value: global_label@GOT_CALL, kind: fixup_MICROMIPS_CALL16
123 # NORMAL: jalr $25 # encoding: [0x03,0x20,0xf8,0x09]
124 # MICROMIPS: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c]
125 # ALL: nop # encoding: [0x00,0x00,0x00,0x00]
128 # FIXME: The .text section MCSymbol isn't created when printing assembly. However,
129 # it is created when generating an ELF object file.
130 # Expanding "jal .text":
131 # O32-FIXME: lw $25, %got(.text)($gp) # encoding: [0x8f,0x99,A,A]
132 # O32-FIXME: # fixup A - offset: 0, value: .text@GOT, kind: fixup_Mips_GOT_Local
133 # O32-FIXME: addiu $25, $25, %lo(.text) # encoding: [0x27,0x39,A,A]
134 # O32-FIXME: # fixup A - offset: 0, value: .text@ABS_LO, kind: fixup_Mips_LO16
136 # N32-FIXME: lw $25, %got_disp(.text)($gp) # encoding: [0x8f,0x99,A,A]
137 # N32-FIXME: # fixup A - offset: 0, value: .text@GOT_DISP, kind: fixup_Mips_GOT_DISP
139 # N64-FIXME: ld $25, %got_disp(.text)($gp) # encoding: [0xdf,0x99,A,A]
140 # N64-FIXME: # fixup A - offset: 0, value: .text@GOT_DISP, kind: fixup_Mips_GOT_DISP
142 # O32-MICROMIPS-FIXME: lw $25, %got(.text)($gp) # encoding: [0xff,0x3c,A,A]
143 # O32-MICROMIPS-FIXME: # fixup A - offset: 0, value: .text@GOT, kind: fixup_MICROMIPS_GOT16
144 # O32-MICROMIPS-FIXME: addiu $25, $25, %lo(.text) # encoding: [0x33,0x39,A,A]
145 # O32-MICROMIPS-FIXME: # fixup A - offset: 0, value: .text@ABS_LO, kind: fixup_MICROMIPS_LO16
147 # N32-MICROMIPS-FIXME: lw $25, %got_disp(.text)($gp) # encoding: [0xff,0x3c,A,A]
148 # N32-MICROMIPS-FIXME: # fixup A - offset: 0, value: .text@GOT_DISP, kind: fixup_MICROMIPS_GOT_DISP
150 # N64-MICROMIPS-FIXME: ld $25, %got_disp(.text)($gp) # encoding: [0xdf,0x99,A,A]
151 # N64-MICROMIPS-FIXME: # fixup A - offset: 0, value: .text@GOT_DISP, kind: fixup_MICROMIPS_GOT_DISP
153 # NORMAL: jalr $25 # encoding: [0x03,0x20,0xf8,0x09]
154 # MICROMIPS: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c]
155 # ALL: nop # encoding: [0x00,0x00,0x00,0x00]
158 # Expanding "jal 1f":
159 # O32: lw $25, %got($tmp0)($gp) # encoding: [0x8f,0x99,A,A]
160 # O32: # fixup A - offset: 0, value: ($tmp0)@GOT, kind: fixup_Mips_GOT_Local
161 # O32: addiu $25, $25, %lo($tmp0) # encoding: [0x27,0x39,A,A]
162 # O32: # fixup A - offset: 0, value: ($tmp0)@ABS_LO, kind: fixup_Mips_LO16
164 # N32: lw $25, %got_disp($tmp0)($gp) # encoding: [0x8f,0x99,A,A]
165 # N32: # fixup A - offset: 0, value: ($tmp0)@GOT_DISP, kind: fixup_Mips_GOT_DISP
167 # N64: ld $25, %got_disp($tmp0)($gp) # encoding: [0xdf,0x99,A,A]
168 # N64: # fixup A - offset: 0, value: ($tmp0)@GOT_DISP, kind: fixup_Mips_GOT_DISP
170 # O32-MICROMIPS: lw $25, %got($tmp0)($gp) # encoding: [0xff,0x3c,A,A]
171 # O32-MICROMIPS: # fixup A - offset: 0, value: ($tmp0)@GOT, kind: fixup_MICROMIPS_GOT16
172 # O32-MICROMIPS: addiu $25, $25, %lo($tmp0) # encoding: [0x33,0x39,A,A]
173 # O32-MICROMIPS: # fixup A - offset: 0, value: ($tmp0)@ABS_LO, kind: fixup_MICROMIPS_LO16
175 # N32-MICROMIPS: lw $25, %got_disp($tmp0)($gp) # encoding: [0xff,0x3c,A,A]
176 # N32-MICROMIPS: # fixup A - offset: 0, value: ($tmp0)@GOT_DISP, kind: fixup_MICROMIPS_GOT_DISP
178 # N64-MICROMIPS: ld $25, %got_disp($tmp0)($gp) # encoding: [0xdf,0x99,A,A]
179 # N64-MICROMIPS: # fixup A - offset: 0, value: ($tmp0)@GOT_DISP, kind: fixup_MICROMIPS_GOT_DISP
181 # NORMAL: jalr $25 # encoding: [0x03,0x20,0xf8,0x09]
182 # MICROMIPS: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c]
183 # ALL: nop # encoding: [0x00,0x00,0x00,0x00]