brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.6 KiB · 143b0fc Raw
232 lines · plain
1# REQUIRES: aarch642# RUN: llvm-mc -filetype=obj -triple=aarch64-unknown-freebsd %s -o %t3# RUN: echo '.globl zero; zero = 0' | llvm-mc -filetype=obj -triple=aarch64-unknown-freebsd -o %t2.o4# RUN: ld.lld %t %t2.o -o %t25# RUN: llvm-objdump --no-print-imm-hex -d %t2 | FileCheck %s6 7.section .R_AARCH64_ADR_PREL_LO21,"ax",@progbits8.globl _start9_start:10  adr x1,msg11msg:  .asciz  "Hello, world\n"12msgend:13 14# CHECK: Disassembly of section .R_AARCH64_ADR_PREL_LO21:15# CHECK-EMPTY:16# CHECK: <_start>:17# CHECK:        0:       10000021        adr     x1, 0x21012418# CHECK: <msg>:19# CHECK:        4:20# #4 is the adr immediate value.21 22.section .R_AARCH64_ADR_PREL_PG_HI21,"ax",@progbits23  adrp x1,mystr24mystr:25  .asciz "blah"26  .size mystr, 427 28# CHECK: Disassembly of section .R_AARCH64_ADR_PREL_PG_HI21:29# CHECK-EMPTY:30# CHECK-NEXT: <.R_AARCH64_ADR_PREL_PG_HI21>:31# CHECK-NEXT:   adrp    x1, 0x21000032 33.section .R_AARCH64_ADD_ABS_LO12_NC,"ax",@progbits34  add x0, x0, :lo12:.L.str35.L.str:36  .asciz "blah"37  .size mystr, 438 39# S = 0x21013b, A = 0x440# R = (S + A) & 0xFFF = 31941#42# CHECK: Disassembly of section .R_AARCH64_ADD_ABS_LO12_NC:43# CHECK-EMPTY:44# CHECK-NEXT: <.R_AARCH64_ADD_ABS_LO12_NC>:45# CHECK-NEXT:   210140: 91051000 add x0, x0, #32446 47.section .R_AARCH64_LDST64_ABS_LO12_NC,"ax",@progbits48  ldr x28, [x27, :lo12:foo]49foo:50  .asciz "foo"51  .size mystr, 352 53# S = 0x210144, A = 0x454# R = ((S + A) & 0xFFF) << 7 = 0x0000a40055# 0x0000a400 | 0xf940177c = 0xf940a77c56# CHECK: Disassembly of section .R_AARCH64_LDST64_ABS_LO12_NC:57# CHECK-EMPTY:58# CHECK-NEXT: <.R_AARCH64_LDST64_ABS_LO12_NC>:59# CHECK-NEXT:   21014c:       f940ab7c        ldr     x28, [x27, #336]60 61.section .SUB,"ax",@progbits62  nop63sub:64  nop65.section .R_AARCH64_CALL26,"ax",@progbits66call26:67        bl sub68        b sub69 70# CHECK: Disassembly of section .R_AARCH64_CALL26:71# CHECK-EMPTY:72# CHECK-NEXT: <call26>:73# CHECK-NEXT:   bl {{.*}} <sub>74# CHECK-NEXT:   b {{.*}} <sub>75 76.section .R_AARCH64_LDST32_ABS_LO12_NC,"ax",@progbits77ldst32:78  ldr s4, [x5, :lo12:foo32]79foo32:80  .asciz "foo"81  .size mystr, 382 83# S = 0x21015c, A = 0x484# R = ((S + A) & 0xFFC) << 8 = 0x0001600085# 0x00016000 | 0xbd4000a4 = 0xbd4160a486# CHECK: Disassembly of section .R_AARCH64_LDST32_ABS_LO12_NC:87# CHECK-EMPTY:88# CHECK-NEXT: <ldst32>:89# CHECK-NEXT:   210164:       bd4168a4     	  ldr	s4, [x5, #360]90 91.section .R_AARCH64_LDST8_ABS_LO12_NC,"ax",@progbits92ldst8:93  ldrsb x11, [x13, :lo12:foo8]94foo8:95  .asciz "foo"96  .size mystr, 397 98# S = 0x210164, A = 0x499# R = ((S + A) & 0xFFF) << 10 = 0x0005a000100# 0x0005a000 | 0x398001ab = 0x3985a1ab101# CHECK: Disassembly of section .R_AARCH64_LDST8_ABS_LO12_NC:102# CHECK-EMPTY:103# CHECK-NEXT: <ldst8>:104# CHECK-NEXT:   21016c:       3985c1ab     	  ldrsb	x11, [x13, #368]105 106.section .R_AARCH64_LDST128_ABS_LO12_NC,"ax",@progbits107ldst128:108  ldr q20, [x19, #:lo12:foo128]109  .balign 16110foo128:111  .asciz "foo"112  .size mystr, 3113 114# S = 210180, A = 0x4115# R = ((S + A) & 0xFF8) << 6 = 0x00006000116# 0x00006000 | 0x3dc00274 = 0x3dc06274117# CHECK: Disassembly of section .R_AARCH64_LDST128_ABS_LO12_NC:118# CHECK-EMPTY:119# CHECK: <ldst128>:120# CHECK:   210180:       3dc06674     	 ldr	   q20, [x19, #400]121#foo128:122# CHECK: <foo128>:123# CHECK-NEXT:  210190:       66 6f 6f 00     .word124 125.section .R_AARCH64_LDST16_ABS_LO12_NC,"ax",@progbits126ldst16:127  ldr h17, [x19, :lo12:foo16]128  ldrh w1, [x19, :lo12:foo16]129  ldrh w2, [x19, :lo12:foo16 + 2]130foo16:131  .asciz "foo"132  .size mystr, 4133 134# S = 0x210174, A = 0x4135# R = ((S + A) & 0x0FFC) << 9 = 0x2f000136# 0x2f000 | 0x7d400271 = 0x7d430271137# CHECK: Disassembly of section .R_AARCH64_LDST16_ABS_LO12_NC:138# CHECK-EMPTY:139# CHECK-NEXT: <ldst16>:140# CHECK-NEXT:   210194:       7d434271     	  ldr	    h17, [x19, #416]141# CHECK-NEXT:   210198:       79434261     	  ldrh	  w1, [x19, #416]142# CHECK-NEXT:   21019c:       79434662     	  ldrh	  w2, [x19, #418]143 144.section .R_AARCH64_MOVW_UABS,"ax",@progbits145movz1:146   movk x12, #:abs_g0:zero+0xC147   movk x12, #:abs_g0_nc:zero+0xF000E000D000C148   movk x13, #:abs_g1:zero+0xD000C149   movk x13, #:abs_g1_nc:zero+0xF000E000D000C150   movk x14, #:abs_g2:zero+0xE000D000C151   movk x14, #:abs_g2_nc:zero+0xF000E000D000C152   movz x15, #:abs_g3:zero+0xF000E000D000C153   movk x16, #:abs_g3:zero+0xF000E000D000C154 155## 4222124650659840 == (0xF << 48)156# CHECK: Disassembly of section .R_AARCH64_MOVW_UABS:157# CHECK-EMPTY:158# CHECK-NEXT: <movz1>:159# CHECK-NEXT:   movk  x12, #12160# CHECK-NEXT:   movk  x12, #12161# CHECK-NEXT:   movk  x13, #13, lsl #16162# CHECK-NEXT:   movk  x13, #13, lsl #16163# CHECK-NEXT:   movk  x14, #14, lsl #32164# CHECK-NEXT:   movk  x14, #14, lsl #32165# CHECK-NEXT:   mov x15, #4222124650659840166# CHECK-NEXT:   movk  x16, #15, lsl #48167 168.section .R_AARCH64_MOVW_SABS,"ax",@progbits169   movz x1, #:abs_g0_s:zero+1170   movz x1, #:abs_g0_s:zero-1171   movz x2, #:abs_g1_s:zero+0x20000172   movz x2, #:abs_g1_s:zero-0x20000173   movz x3, #:abs_g2_s:zero+0x300000000174   movz x3, #:abs_g2_s:zero-0x300000000175 176# CHECK: Disassembly of section .R_AARCH64_MOVW_SABS:177# CHECK-EMPTY:178# CHECK-NEXT: :179# CHECK-NEXT:   mov x1, #1180# CHECK-NEXT:   mov x1, #-1181# CHECK-NEXT:   mov x2, #131072182## -65537 = 0xfffffffffffeffff183# CHECK-NEXT:   mov x2, #-65537184## 12884901888 = 0x300000000185# CHECK-NEXT:   mov x3, #12884901888186## -8589934593 = #0xfffffffdffffffff187# CHECK-NEXT:   mov x3, #-8589934593188 189.section .R_AARCH64_MOVW_PREL,"ax",@progbits190   movz x1, #:prel_g0:.+1191   movz x1, #:prel_g0_nc:.-1192   movk x1, #:prel_g0:.+1193   movk x1, #:prel_g0_nc:.-1194   movz x2, #:prel_g1:.+0x20000195   movz x2, #:prel_g1_nc:.-0x20000196   movk x2, #:prel_g1:.+0x20000197   movk x2, #:prel_g1_nc:.-0x20000198   movz x3, #:prel_g2:.+0x300000000199   movz x3, #:prel_g2_nc:.-0x300000000200   movk x3, #:prel_g2:.+0x300000000201   movk x3, #:prel_g2_nc:.-0x300000000202   movz x3, #:prel_g2:.+0x300000000203   movz x4, #:prel_g3:.+0x4000000000000204   movz x4, #:prel_g3:.-0x4000000000000205   movk x4, #:prel_g3:.+0x4000000000000206   movk x4, #:prel_g3:.-0x4000000000000207 208# CHECK: Disassembly of section .R_AARCH64_MOVW_PREL:209# CHECK-EMPTY:210# CHECK-NEXT: :211# CHECK-NEXT:   mov	x1, #1212# CHECK-NEXT:   mov	x1, #-1213# CHECK-NEXT:   movk	x1, #1214# CHECK-NEXT:   movk	x1, #65535215# CHECK-NEXT:   mov	x2, #131072216## -65537 = 0xfffffffffffeffff217# CHECK-NEXT:   mov	x2, #-65537218# CHECK-NEXT:   movk	x2, #2, lsl #16219# CHECK-NEXT:   movk	x2, #65534, lsl #16220## 12884901888 = 0x300000000221# CHECK-NEXT:   mov	x3, #12884901888222## -8589934593 = #0xfffffffdffffffff223# CHECK-NEXT:   mov	x3, #-8589934593224# CHECK-NEXT:   movk	x3, #3, lsl #32225# CHECK-NEXT:   movk	x3, #65533, lsl #32226# CHECK-NEXT:   mov	x3, #12884901888227## 1125899906842624 = 0x4000000000000228# CHECK-NEXT:   mov	x4, #1125899906842624229# CHECK-NEXT:   mov	x4, #-1125899906842624230# CHECK-NEXT:   movk	x4, #4, lsl #48231# CHECK-NEXT:   movk	x4, #65532, lsl #48232