aboutsummaryrefslogtreecommitdiff
path: root/sys/libkern
diff options
context:
space:
mode:
authorDoug Rabson <dfr@FreeBSD.org>2001-10-06 08:35:05 +0000
committerDoug Rabson <dfr@FreeBSD.org>2001-10-06 08:35:05 +0000
commit79b2d7690fc194d18374df147918437b27036402 (patch)
treebddf85fac63fbaeb967df3434e1786ec162fadef /sys/libkern
parent0f153072bee566758a59b162bb7884f6848cd381 (diff)
downloadsrc-79b2d7690fc194d18374df147918437b27036402.tar.gz
src-79b2d7690fc194d18374df147918437b27036402.zip
Implement these using mux1 and extr.u. I'll update the userland versions
similarly. Actually, they should be inline on gcc.
Notes
Notes: svn path=/head/; revision=84579
Diffstat (limited to 'sys/libkern')
-rw-r--r--sys/libkern/ia64/byte_swap_2.S8
-rw-r--r--sys/libkern/ia64/byte_swap_4.S13
2 files changed, 7 insertions, 14 deletions
diff --git a/sys/libkern/ia64/byte_swap_2.S b/sys/libkern/ia64/byte_swap_2.S
index c7581846b83d..fbee3c862515 100644
--- a/sys/libkern/ia64/byte_swap_2.S
+++ b/sys/libkern/ia64/byte_swap_2.S
@@ -39,9 +39,9 @@
*
* Argument is an unsigned 2-byte integer (u_int16_t).
*/
-ENTRY(NAME, 1) /* in0 = 0x0123 */
- extr.u ret0=in0,8,8 /* ret0 = 0x 01 */
- ;;
- dep ret0=ret0,in0,8,8 /* ret0 = 0x2301 */
+ENTRY(NAME, 1)
+ mux1 r16=in0,@rev
+ ;;
+ extr.u r8=r16,48,16
br.ret.sptk.few rp
END(NAME)
diff --git a/sys/libkern/ia64/byte_swap_4.S b/sys/libkern/ia64/byte_swap_4.S
index b96f3e8fcf4b..d1836442c287 100644
--- a/sys/libkern/ia64/byte_swap_4.S
+++ b/sys/libkern/ia64/byte_swap_4.S
@@ -39,16 +39,9 @@
*
* Argument is an unsigned 4-byte integer (u_int32_t).
*/
-ENTRY(NAME, 1) /* in0 = 0x01234567 */
- extr.u r16=in0,0,8 /* r16 = 0x 67 */
- extr.u r17=in0,8,8 /* r17 = 0x 45 */
- extr.u r18=in0,16,8 /* r18 = 0x 23 */
- extr.u ret0=in0,24,8 /* ret0 = 0x 01 */
+ENTRY(NAME, 1)
+ mux1 r16=in0,@rev
;;
- dep ret0=ret0,r16,24,8 /* ret0 = 0x67 01 */
- ;;
- dep ret0=ret0,r17,16,8 /* ret0 = 0x6745 01 */
- ;;
- dep ret0=ret0,r16,8,8 /* ret0 = 0x67452301 */
+ extr.u r8=r16,32,32
br.ret.sptk.few rp
END(NAME)