I started writing support for 64-bit proc declaration with my own macros. nasmx.inc doesn't actually cover this. Look at its argd macro, it just identifies labels with offsets. There's some logic for the register conventions in its invoke macro, maybe that's what you're thinking of.
Now I think I discovered %local is incorrect for 64 bit builds, it identifies labels with ebp offsets instead of rbp. Not only that, the offsets seem to be incorrect in general. Here's a 32-bit case:
%local l1:qword, l2:dword, l3:dword, l4:qword
mov eax, l1
mov eax, l2
mov eax, l3
mov eax, l4
generates:
mov eax, (ebp-4)
mov eax, (ebp-12)
mov eax, (ebp-16)
mov eax, (ebp-20)
Shouldn't those be ebp-8, ebp-12, ebp-24, respectively. I checked the preproc.c file, what looks wrong is it advances the offset after defining the label.