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.