2005-04-16 15:20:36 -07:00
/ *
* arch/ i a64 / l i b / x o r . S
*
* Optimized R A I D - 5 c h e c k s u m m i n g f u n c t i o n s f o r I A - 6 4 .
*
* This p r o g r a m i s f r e e s o f t w a r e ; you can redistribute it and/or modify
* it u n d e r t h e t e r m s o f t h e G N U G e n e r a l P u b l i c L i c e n s e a s p u b l i s h e d b y
* the F r e e S o f t w a r e F o u n d a t i o n ; either version 2, or (at your option)
* any l a t e r v e r s i o n .
*
* You s h o u l d h a v e r e c e i v e d a c o p y o f t h e G N U G e n e r a l P u b l i c L i c e n s e
* ( for e x a m p l e / u s r / s r c / l i n u x / C O P Y I N G ) ; if not, write to the Free
* Software F o u n d a t i o n , I n c . , 6 7 5 M a s s A v e , C a m b r i d g e , M A 0 2 1 3 9 , U S A .
* /
# include < a s m / a s m m a c r o . h >
2016-01-17 01:13:41 -05:00
# include < a s m / e x p o r t . h >
2005-04-16 15:20:36 -07:00
GLOBAL_ E N T R Y ( x o r _ i a64 _ 2 )
.prologue
.fframe 0
.save ar. p f s , r31
alloc r31 = a r . p f s , 3 , 0 , 1 3 , 1 6
.save ar. l c , r30
mov r30 = a r . l c
.save pr, r29
mov r29 = p r
;;
.body
mov r8 = i n 1
mov a r . e c = 6 + 2
shr i n 0 = i n 0 , 3
;;
adds i n 0 = - 1 , i n 0
mov r16 = i n 1
mov r17 = i n 2
;;
mov a r . l c = i n 0
mov p r . r o t = 1 < < 1 6
;;
.rotr s1 [ 6 + 1 ] , s2 [ 6 + 1 ] , d [ 2 ]
.rotp p[ 6 + 2 ]
0 :
( p[ 0 ] ) l d8 . n t a s1 [ 0 ] = [ r16 ] , 8
( p[ 0 ] ) l d8 . n t a s2 [ 0 ] = [ r17 ] , 8
( p[ 6 ] ) x o r d [ 0 ] = s1 [ 6 ] , s2 [ 6 ]
( p[ 6 + 1 ] ) s t 8 . n t a [ r8 ] = d [ 1 ] , 8
nop. f 0
br. c t o p . d p t k . f e w 0 b
;;
mov a r . l c = r30
mov p r = r29 , - 1
br. r e t . s p t k . f e w r p
END( x o r _ i a64 _ 2 )
2016-01-17 01:13:41 -05:00
EXPORT_ S Y M B O L ( x o r _ i a64 _ 2 )
2005-04-16 15:20:36 -07:00
GLOBAL_ E N T R Y ( x o r _ i a64 _ 3 )
.prologue
.fframe 0
.save ar. p f s , r31
alloc r31 = a r . p f s , 4 , 0 , 2 0 , 2 4
.save ar. l c , r30
mov r30 = a r . l c
.save pr, r29
mov r29 = p r
;;
.body
mov r8 = i n 1
mov a r . e c = 6 + 2
shr i n 0 = i n 0 , 3
;;
adds i n 0 = - 1 , i n 0
mov r16 = i n 1
mov r17 = i n 2
;;
mov r18 = i n 3
mov a r . l c = i n 0
mov p r . r o t = 1 < < 1 6
;;
.rotr s1 [ 6 + 1 ] , s2 [ 6 + 1 ] , s3 [ 6 + 1 ] , d [ 2 ]
.rotp p[ 6 + 2 ]
0 :
( p[ 0 ] ) l d8 . n t a s1 [ 0 ] = [ r16 ] , 8
( p[ 0 ] ) l d8 . n t a s2 [ 0 ] = [ r17 ] , 8
( p[ 6 ] ) x o r d [ 0 ] = s1 [ 6 ] , s2 [ 6 ]
;;
( p[ 0 ] ) l d8 . n t a s3 [ 0 ] = [ r18 ] , 8
( p[ 6 + 1 ] ) s t 8 . n t a [ r8 ] = d [ 1 ] , 8
( p[ 6 ] ) x o r d [ 0 ] = d [ 0 ] , s3 [ 6 ]
br. c t o p . d p t k . f e w 0 b
;;
mov a r . l c = r30
mov p r = r29 , - 1
br. r e t . s p t k . f e w r p
END( x o r _ i a64 _ 3 )
2016-01-17 01:13:41 -05:00
EXPORT_ S Y M B O L ( x o r _ i a64 _ 3 )
2005-04-16 15:20:36 -07:00
GLOBAL_ E N T R Y ( x o r _ i a64 _ 4 )
.prologue
.fframe 0
.save ar. p f s , r31
alloc r31 = a r . p f s , 5 , 0 , 2 7 , 3 2
.save ar. l c , r30
mov r30 = a r . l c
.save pr, r29
mov r29 = p r
;;
.body
mov r8 = i n 1
mov a r . e c = 6 + 2
shr i n 0 = i n 0 , 3
;;
adds i n 0 = - 1 , i n 0
mov r16 = i n 1
mov r17 = i n 2
;;
mov r18 = i n 3
mov a r . l c = i n 0
mov p r . r o t = 1 < < 1 6
mov r19 = i n 4
;;
.rotr s1 [ 6 + 1 ] , s2 [ 6 + 1 ] , s3 [ 6 + 1 ] , s4 [ 6 + 1 ] , d [ 2 ]
.rotp p[ 6 + 2 ]
0 :
( p[ 0 ] ) l d8 . n t a s1 [ 0 ] = [ r16 ] , 8
( p[ 0 ] ) l d8 . n t a s2 [ 0 ] = [ r17 ] , 8
( p[ 6 ] ) x o r d [ 0 ] = s1 [ 6 ] , s2 [ 6 ]
( p[ 0 ] ) l d8 . n t a s3 [ 0 ] = [ r18 ] , 8
( p[ 0 ] ) l d8 . n t a s4 [ 0 ] = [ r19 ] , 8
( p[ 6 ] ) x o r r20 = s3 [ 6 ] , s4 [ 6 ]
;;
( p[ 6 + 1 ] ) s t 8 . n t a [ r8 ] = d [ 1 ] , 8
( p[ 6 ] ) x o r d [ 0 ] = d [ 0 ] , r20
br. c t o p . d p t k . f e w 0 b
;;
mov a r . l c = r30
mov p r = r29 , - 1
br. r e t . s p t k . f e w r p
END( x o r _ i a64 _ 4 )
2016-01-17 01:13:41 -05:00
EXPORT_ S Y M B O L ( x o r _ i a64 _ 4 )
2005-04-16 15:20:36 -07:00
GLOBAL_ E N T R Y ( x o r _ i a64 _ 5 )
.prologue
.fframe 0
.save ar. p f s , r31
alloc r31 = a r . p f s , 6 , 0 , 3 4 , 4 0
.save ar. l c , r30
mov r30 = a r . l c
.save pr, r29
mov r29 = p r
;;
.body
mov r8 = i n 1
mov a r . e c = 6 + 2
shr i n 0 = i n 0 , 3
;;
adds i n 0 = - 1 , i n 0
mov r16 = i n 1
mov r17 = i n 2
;;
mov r18 = i n 3
mov a r . l c = i n 0
mov p r . r o t = 1 < < 1 6
mov r19 = i n 4
mov r20 = i n 5
;;
.rotr s1 [ 6 + 1 ] , s2 [ 6 + 1 ] , s3 [ 6 + 1 ] , s4 [ 6 + 1 ] , s5 [ 6 + 1 ] , d [ 2 ]
.rotp p[ 6 + 2 ]
0 :
( p[ 0 ] ) l d8 . n t a s1 [ 0 ] = [ r16 ] , 8
( p[ 0 ] ) l d8 . n t a s2 [ 0 ] = [ r17 ] , 8
( p[ 6 ] ) x o r d [ 0 ] = s1 [ 6 ] , s2 [ 6 ]
( p[ 0 ] ) l d8 . n t a s3 [ 0 ] = [ r18 ] , 8
( p[ 0 ] ) l d8 . n t a s4 [ 0 ] = [ r19 ] , 8
( p[ 6 ] ) x o r r21 = s3 [ 6 ] , s4 [ 6 ]
;;
( p[ 0 ] ) l d8 . n t a s5 [ 0 ] = [ r20 ] , 8
( p[ 6 + 1 ] ) s t 8 . n t a [ r8 ] = d [ 1 ] , 8
( p[ 6 ] ) x o r d [ 0 ] = d [ 0 ] , r21
;;
( p[ 6 ] ) x o r d [ 0 ] = d [ 0 ] , s5 [ 6 ]
nop. f 0
br. c t o p . d p t k . f e w 0 b
;;
mov a r . l c = r30
mov p r = r29 , - 1
br. r e t . s p t k . f e w r p
END( x o r _ i a64 _ 5 )
2016-01-17 01:13:41 -05:00
EXPORT_ S Y M B O L ( x o r _ i a64 _ 5 )