Halfwords load with lhz
A u16 is two bytes, what PowerPC calls a halfword, and reading one uses lhz (load halfword and zero). It works like lbz but a byte wider, clearing the top 16 bits:
lhz r3, 0(r3) # two bytes, zero-extended into r3
blr
Unsigned means the zeroing happens inside the load, so lhz needs no follow-up to clean the register. Bytes and words load the same way, through lbz and lwz respectively.
Your task
Write load_u16 to match the target assembly above.