sth is the 16-bit store
The halfword store is sth (store halfword), writing the low 16 bits of a register:
sth r4, 6(r3) # table[3] = val
blr
Here a function writes to index 3 of a u16 array (offset 6 bytes). The pointer is in r3, the value in r4.
The store family mirrors the load family by width: stb for bytes, sth for halfwords, stw for words. None of them care about sign — they all just truncate to their width and copy. If you later read the value back signed, the load is where sign-extension happens, never the store.
Your task
Write store_u16, taking a u16* and a u16, to produce a single sth.