audiopack: improve pack functions
authorWim Taymans <wtaymans@redhat.com>
Tue, 3 Nov 2015 10:57:32 +0000 (11:57 +0100)
committerWim Taymans <wtaymans@redhat.com>
Tue, 3 Nov 2015 11:12:08 +0000 (12:12 +0100)
Avoid shifts by using convh functions.

gst-libs/gst/audio/gstaudiopack.orc

index 9945827..89b2627 100644 (file)
@@ -171,74 +171,54 @@ swapq d1, s1
 .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