I just checked the HW behavior regarding this bit-shift stuff. When you write an id (id28:0) to the registers A1R: (id15:0) A2R: (id28:16) you get the following on the physical bus: (SOF)(id28:18)(SRR)(IDE)(id17:0)(RTR)..... So, if this is what the application requires, the bit-shifting macros from the library are not required.