powerpc/64: optimise LOAD_REG_IMMEDIATE_SYM()
Optimise LOAD_REG_IMMEDIATE_SYM() using a temporary register to parallelise operations. It reduces the path from 5 to 3 instructions. Suggested-by: Segher Boessenkool <segher@kernel.crashing.org> Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/bad41ed02531bb0382420cbab50a0d7153b71767.1566311636.git.christophe.leroy@c-s.fr
This commit is contained in:

committed by
Michael Ellerman

parent
ba18025fb0
commit
d7fb5b18a5
@@ -347,12 +347,12 @@ n:
|
||||
|
||||
#define LOAD_REG_IMMEDIATE(reg, expr) __LOAD_REG_IMMEDIATE reg, expr
|
||||
|
||||
#define LOAD_REG_IMMEDIATE_SYM(reg,expr) \
|
||||
lis reg,(expr)@highest; \
|
||||
ori reg,reg,(expr)@higher; \
|
||||
rldicr reg,reg,32,31; \
|
||||
oris reg,reg,(expr)@__AS_ATHIGH; \
|
||||
ori reg,reg,(expr)@l;
|
||||
#define LOAD_REG_IMMEDIATE_SYM(reg, tmp, expr) \
|
||||
lis tmp, (expr)@highest; \
|
||||
lis reg, (expr)@__AS_ATHIGH; \
|
||||
ori tmp, tmp, (expr)@higher; \
|
||||
ori reg, reg, (expr)@l; \
|
||||
rldimi reg, tmp, 32, 0
|
||||
|
||||
#define LOAD_REG_ADDR(reg,name) \
|
||||
ld reg,name@got(r2)
|
||||
|
Reference in New Issue
Block a user