Thread (9 messages) 9 messages, 2 authors, 2016-01-06

[PATCH 1/2] arm64: add macro to handle large immediates

flat view
DORMANTno replies

From: mark.rutland@arm.com (Mark Rutland)
Date: 2016-01-06 12:37:41

quoted
quoted
Ack for the general idea, but for correctness, you should pair the
movk instructions with the _nc relocations (i.e., keep movz first, but
invert the order of the relocs)
Ah, I hadn't spotted the restriction. I'll change that to:

        movz    \dst, :abs_g3:\val
        movk    \dst, :abs_g2:\val
        movk    \dst, :abs_g1:\val
        movk    \dst, :abs_g0:\val
Yes, but with the _nc suffix on the latter three.
Yup.
quoted
That raises a related question. Is it the linker's responsibility to
fill in the shift encoding in the hw field as part of the g{3,2,1}
relocs?
This

movz x0, :abs_g3:val
movk x0, :abs_g2_nc:val
movk x0, :abs_g1_nc:val
movk x0, :abs_g0_nc:val

assembles to

0000000000000000 <.text>:
   0: d2e00000 movz x0, #0x0, lsl #48
   4: f2c00000 movk x0, #0x0, lsl #32
   8: f2a00000 movk x0, #0x0, lsl #16
   c: f2800000 movk x0, #0x0

so it is in fact the assembler that sets the hw field.
Interesting!

As I mentioned in another reply, for the moment I'm going to drop mov_l
unless we have another need for it.

Thanks,
Mark.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help