Is it correct to say: "all branchless code runs in constant time, but not all constant time code is branchless"?
Writing truly constant time code on modern processors ranges is difficult at best, and usually less efficient than variable-time code.
No - e.g. division is not constant time.
You have to have branchless code and only use certain instructions.
E.g. here is the list for RISC-V.
https://github.com/rvkrypto/riscv-zkt-list/blob/main/zkt-lis...
Most things except div/rem, branches and floating point are ok. Oh and obviously store/load.