High registers allocation count for very simple DXR closesthit/anyhit shader

I have a basically empty closesthit and anyhit shader, a very simple payload struct (a float3). However, Nsight graphics show this shader takes 65 registers, so warps are register limited.
If I keep adding a few simple codes, the register allocation keeps increasing, and will take around 128 after I add a simple material graph (for example a simple PBR material setup with 2 texture fetch, few ALU for diffuse/specular setup, etc…), only half of the wraps are active at the end.
My question is it normal for high register count allocation for ray tracing shaders? A similar pixel shader only takes less than 32 registers.
I also inspect the register allocation in Nsight graphics shader profiler, the live registers does not match the result from range profiler, which is much lesser.
Here are the result from shader profiler, it’s weird that the register is not count from zero?

Here is the result from another view