Bug 894

Summary: Issues with TOC immediate loading being redundant with PowerISA v3.1 pld R=1 and being CISC
Product: Libre-SOC's first SoC Reporter: Jacob Lifshay <programmerjake>
Component: SpecificationAssignee: Luke Kenneth Casson Leighton <lkcl>
Status: CONFIRMED ---    
Severity: normal CC: libre-soc-isa, programmerjake
Priority: ---    
Version: unspecified   
Hardware: PC   
OS: Linux   
URL: https://libre-soc.org/openpower/sv/toc_data_pointer/
See Also: https://bugs.libre-soc.org/show_bug.cgi?id=286
NLnet milestone: --- total budget (EUR) for completion of task and all subtasks: 0
budget (EUR) for this task, excluding subtasks' budget: 0 parent task for budget allocation:
child tasks for budget allocation: The table of payments (in EUR) for this task; TOML format:
Bug Depends on:    
Bug Blocks: 286    

Description Jacob Lifshay 2022-07-27 04:18:49 BST
Reposting my complaint here, so it doesn't get forgotten:

https://git.libre-soc.org/?p=libreriscv.git;a=blob;f=openpower/sv/toc_data_pointer.mdwn;h=74b1c9d1f2162463593ce7e0b458474039ccc361;hb=HEAD

if you have:
cmpi r3, {TOC + 8}
imho that's basically the same as x86_64's CISC-style register-memory instruction:
cmp rax, [rip+0x1234]

imho a better approach is to instead just use the pc-relative loads added as part of v3.1 -- pld with R=1:
pld r4, 0x1234(0), 1 # r4 = load_64(pc + 0x1234)
cmp r3, r4

no TOC needed.