1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00
llvm-mirror/test/MC/AArch64/fixup-absolute.s
Eli Friedman 56c9e329fb [MC] [AArch64] Correctly resolve ":abs_g1:3" etc.
We have to treat constructs like this as if they were "symbolic", to use
the correct codepath to resolve them.  This mostly only affects movz
etc. because the other uses of classifySymbolRef conservatively treat
everything that isn't a constant as if it were a symbol.

Differential Revision: https://reviews.llvm.org/D55906

llvm-svn: 349800
2018-12-20 19:46:14 +00:00

41 lines
1.3 KiB
ArmAsm

// RUN: llvm-mc -triple aarch64--none-eabi -filetype obj < %s -o - | llvm-objdump -d - | FileCheck %s
onepart_before = 0x1234
twopart_before = 0x12345678
threepart_before = 0x1234567890AB
fourpart_before = 0x1234567890ABCDEF
// CHECK: mov x0, #1311673391471656960
// CHECK: mov x0, #1311673391471656960
movz x0, #:abs_g3:fourpart_before
movz x0, #:abs_g3:fourpart_after
// CHECK: mov x0, #20014547599360
// CHECK: mov x0, #20014547599360
movz x0, #:abs_g2:threepart_before
movz x0, #:abs_g2:threepart_after
// CHECK: movk x0, #22136, lsl #32
// CHECK: movk x0, #22136, lsl #32
movk x0, #:abs_g2_nc:fourpart_before
movk x0, #:abs_g2_nc:fourpart_after
// CHECK: mov x0, #305397760
// CHECK: mov x0, #305397760
movz x0, #:abs_g1:twopart_before
movz x0, #:abs_g1:twopart_after
// CHECK: movk x0, #37035, lsl #16
// CHECK: movk x0, #37035, lsl #16
movk x0, #:abs_g1_nc:fourpart_before
movk x0, #:abs_g1_nc:fourpart_after
// CHECK: mov x0, #4660
// CHECK: mov x0, #4660
movz x0, #:abs_g0:onepart_before
movz x0, #:abs_g0:onepart_after
// CHECK: movk x0, #52719
// CHECK: movk x0, #52719
movk x0, #:abs_g0_nc:fourpart_before
movk x0, #:abs_g0_nc:fourpart_after
onepart_after = 0x1234
twopart_after = 0x12345678
threepart_after = 0x1234567890AB
fourpart_after = 0x1234567890ABCDEF