Are pointers in kernel argument list shared among all threads?

I have a long list of device pointers in the kernel argument list, sth. like:
global void kernel(float *a, float b, floatc, float *d…).

They really are the same value for all threads and they won’t be changed in the kernel.
But it seems to me they each are assigned a register in every thread, which causes a lot of register pressure.
It there a way to share them among all threads?

Thanks!

Kernel arguments should either be stored in shared memory or constant memory, depending on which architecture generation you are using. They should not consume any registers.

I believe, register is used when dereferencing a pointer