Avoid shifts by using convh functions.
.function audio_orc_pack_u8
.dest 1 d1 guint8
.source 4 s1 gint32
-.const 4 c2 24
.const 4 c1 0x80000000
.temp 4 t1
.temp 2 t2
xorl t1, s1, c1
-shrul t1, t1, c2
-convlw t2, t1
-convwb d1, t2
-
+convhlw t2, t1
+convhwb d1, t2
.function audio_orc_pack_s8
.dest 1 d1 guint8
.source 4 s1 gint32
-.const 4 c1 24
-.temp 4 t1
.temp 2 t2
-shrsl t1, s1, c1
-convlw t2, t1
-convwb d1, t2
-
+convhlw t2, s1
+convhwb d1, t2
.function audio_orc_pack_u16
.dest 2 d1 guint8
.source 4 s1 gint32
-.const 4 c2 16
.const 4 c1 0x80000000
.temp 4 t1
xorl t1, s1, c1
-shrul t1, t1, c2
-convlw d1, t1
-
+convhlw d1, t1
.function audio_orc_pack_s16
.dest 2 d1 guint8
.source 4 s1 gint32
-.const 4 c1 16
-.temp 4 t1
-
-shrsl t1, s1, c1
-convlw d1, t1
+convhlw d1, s1
.function audio_orc_pack_u16_swap
.dest 2 d1 guint8
.source 4 s1 gint32
.const 4 c1 0x80000000
-.const 4 c2 16
.temp 4 t1
.temp 2 t2
xorl t1, s1, c1
-shrul t1, t1, c2
-convlw t2, t1
+convhlw t2, t1
swapw d1, t2
-
.function audio_orc_pack_s16_swap
.dest 2 d1 guint8
.source 4 s1 gint32
-.const 4 c1 16
-.temp 4 t1
.temp 2 t2
-shrsl t1, s1, c1
-convlw t2, t1
+convhlw t2, s1
swapw d1, t2
.function audio_orc_pack_u24_32