2010-02-24 02:18:41 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								USING: accessors alien arrays byte-arrays classes combinators
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-14 23:25:00 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								cpu.architecture effects fry functors generalizations generic
							 | 
						
					
						
							
								
									
										
										
										
											2010-05-14 05:47:05 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								generic.parser kernel lexer literals locals macros math math.functions
							 | 
						
					
						
							
								
									
										
										
										
											2010-02-24 02:18:41 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								math.vectors math.vectors.private math.vectors.simd.intrinsics
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								namespaces parser prettyprint.custom quotations sequences
							 | 
						
					
						
							
								
									
										
										
										
											2010-05-18 18:36:47 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								sequences.generalizations sequences.private vocabs vocabs.loader
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-12 01:47:54 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								words math.bitwise ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-09-23 21:23:25 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								QUALIFIED-WITH: alien.c-types c
							 | 
						
					
						
							
								
									
										
										
										
											2009-09-03 03:33:07 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								IN: math.vectors.simd
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-14 21:59:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								ERROR: bad-simd-length got expected ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-09-03 03:33:07 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-05 18:20:57 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								ERROR: bad-simd-vector obj ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-14 21:59:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								<<
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								<PRIVATE
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								! Primitive SIMD constructors
							 | 
						
					
						
							
								
									
										
										
										
											2009-09-03 03:33:07 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								GENERIC: new-underlying ( underlying seq -- seq' )
							 | 
						
					
						
							
								
									
										
										
										
											2009-09-20 17:48:17 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								: make-underlying ( seq quot -- seq' )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    dip new-underlying ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: change-underlying ( seq quot -- seq' )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    '[ underlying>> @ ] keep new-underlying ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-14 21:59:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								PRIVATE>
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								>>
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								<PRIVATE
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								! Helper for boolean vector literals
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: vector-true-value ( class -- value )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    { c:float c:double } member? [ -1 bits>double ] [ -1 ] if ; foldable
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: vector-false-value ( type -- value )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    { c:float c:double } member? [ 0.0 ] [ 0 ] if ; foldable
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: boolean>element ( bool/elt type -- elt )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    swap {
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        { t [ vector-true-value  ] }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        { f [ vector-false-value ] }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        [ nip ]
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    } case ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-09-29 05:46:38 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-09-20 17:48:17 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								PRIVATE>
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								! SIMD base type
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								TUPLE: simd-128
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    { underlying byte-array read-only initial: $[ 16 <byte-array> ] } ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								GENERIC: simd-element-type ( obj -- c-type )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								GENERIC: simd-rep ( simd -- rep )
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								GENERIC: simd-with ( n exemplar -- v )
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-24 21:30:12 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: object simd-element-type drop f ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: object simd-rep drop f ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-19 14:29:15 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								<<
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-14 21:59:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								<PRIVATE
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-18 23:32:05 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								DEFER: simd-construct-op
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-19 14:29:15 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								! Unboxers for SIMD operations
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: if-both-vectors ( a b rep t f -- )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    [ 2over [ simd-128? ] both? ] 2dip if ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: if-both-vectors-match ( a b rep t f -- )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    [ 3dup [ drop [ simd-128? ] both? ] [ '[ simd-rep _ eq? ] both? ] 3bi and ]
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    2dip if ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: simd-unbox ( a -- a (a) )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    [ ] [ underlying>> ] bi ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: v->v-op ( a rep quot: ( (a) rep -- (c) ) fallback-quot -- c )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    drop [ simd-unbox ] 2dip 2curry make-underlying ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2011-10-31 00:49:23 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								: vx->v-op ( a obj rep quot: ( (a) obj rep -- (c) ) fallback-quot -- c )
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-19 14:29:15 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    drop [ simd-unbox ] 3dip 3curry make-underlying ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2011-10-31 00:49:23 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								: vn->v-op ( a n rep quot: ( (a) n rep -- (c) ) fallback-quot -- c )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    drop [ [ simd-unbox ] [ >fixnum ] bi* ] 2dip 3curry make-underlying ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: vx->x-op ( a obj rep quot: ( (a) obj rep -- obj ) fallback-quot -- obj )
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-24 21:30:12 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    drop [ underlying>> ] 3dip call ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2011-10-31 00:49:23 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								: v->x-op ( a rep quot: ( (a) rep -- obj ) fallback-quot -- obj )
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-19 14:29:15 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    drop [ underlying>> ] 2dip call ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: (vv->v-op) ( a b rep quot: ( (a) (b) rep -- (c) ) -- c )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    [ [ simd-unbox ] [ underlying>> ] bi* ] 2dip 3curry make-underlying ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2011-10-31 00:49:23 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: (vv->x-op) ( a b rep quot: ( (a) (b) rep -- n ) -- n )
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-19 14:29:15 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    [ [ underlying>> ] bi@ ] 2dip 3curry call ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2011-10-31 00:49:23 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: (vvx->v-op) ( a b obj rep quot: ( (a) (b) obj rep -- (c) ) -- c )
							 | 
						
					
						
							
								
									
										
										
										
											2010-05-14 05:47:05 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    [ [ simd-unbox ] [ underlying>> ] bi* ] 3dip 2curry 2curry make-underlying ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-19 14:29:15 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: vv->v-op ( a b rep quot: ( (a) (b) rep -- (c) ) fallback-quot -- c )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    [ '[ _ (vv->v-op) ] ] [ '[ drop @ ] ] bi* if-both-vectors-match ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2011-10-31 00:49:23 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								:: vvx->v-op ( a b obj rep quot: ( (a) (b) obj rep -- (c) ) fallback-quot -- c )
							 | 
						
					
						
							
								
									
										
										
										
											2010-05-14 05:47:05 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    a b rep
							 | 
						
					
						
							
								
									
										
										
										
											2011-10-31 00:49:23 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    [ obj swap quot (vvx->v-op) ]
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    [ drop obj fallback-quot call ] if-both-vectors-match ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2010-05-14 05:47:05 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-19 14:29:15 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								: vv'->v-op ( a b rep quot: ( (a) (b) rep -- (c) ) fallback-quot -- c )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    [ '[ _ (vv->v-op) ] ] [ '[ drop @ ] ] bi* if-both-vectors ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2011-10-31 00:49:23 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								: vv->x-op ( a b rep quot: ( (a) (b) rep -- obj ) fallback-quot -- obj )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    [ '[ _ (vv->x-op) ] ] [ '[ drop @ ] ] bi* if-both-vectors-match ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-19 14:29:15 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-12 19:53:07 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								: mask>count ( n rep -- n' )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    [ bit-count ] dip {
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        { float-4-rep     [ ] }
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 02:19:49 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        { double-2-rep    [ -1 shift ] }
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-12 19:53:07 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        { uchar-16-rep    [ ] }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        { char-16-rep     [ ] }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        { ushort-8-rep    [ -1 shift ] }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        { short-8-rep     [ -1 shift ] }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        { ushort-8-rep    [ -1 shift ] }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        { int-4-rep       [ -2 shift ] }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        { uint-4-rep      [ -2 shift ] }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        { longlong-2-rep  [ -3 shift ] }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        { ulonglong-2-rep [ -3 shift ] }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    } case ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-19 14:29:15 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								PRIVATE>
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								>>
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								<<
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								! SIMD vectors as sequences
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 hashcode* underlying>> hashcode* ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 clone [ clone ] change-underlying ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2010-02-24 02:18:41 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 byte-length drop 16 ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 new-sequence
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    2dup length =
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    [ nip [ 16 (byte-array) ] make-underlying ]
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    [ length bad-simd-length ] if ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 equal?
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ drop v= vall? ] [ 3drop f ] if-both-vectors-match ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								! SIMD primitive operations
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 v+
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-v+) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 v-
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-v-) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vneg
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vneg) ] [ call-next-method ] v->v-op  ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 v+-
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-v+-) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vs+
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vs+) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vs-
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vs-) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vs*
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vs*) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 v*
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-v*) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 v*high
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-v*high) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 v/
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-v/) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vavg
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vavg) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vmin
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vmin) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vmax
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vmax) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 v.
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-v.) ] [ call-next-method ] vv->x-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vsad
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vsad) ] [ call-next-method ] vv->x-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vsqrt
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vsqrt) ] [ call-next-method ] v->v-op  ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 sum
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-sum) ] [ call-next-method ] v->x-op  ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vabs
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vabs) ] [ call-next-method ] v->v-op  ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vbitand
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vbitand) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vbitandn
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vbitandn) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vbitor
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vbitor) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vbitxor
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vbitxor) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vbitnot
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vbitnot) ] [ call-next-method ] v->v-op  ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vand
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vand) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vandn
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vandn) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vor
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vor) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vxor
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vxor) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vnot
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vnot) ] [ call-next-method ] v->v-op  ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vlshift
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    over simd-rep [ (simd-vlshift) ] [ call-next-method ] vn->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vrshift
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    over simd-rep [ (simd-vrshift) ] [ call-next-method ] vn->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 hlshift
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    over simd-rep [ (simd-hlshift) ] [ call-next-method ] vn->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 hrshift
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    over simd-rep [ (simd-hrshift) ] [ call-next-method ] vn->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vshuffle-elements
							 | 
						
					
						
							
								
									
										
										
										
											2011-10-31 00:49:23 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    over simd-rep [ (simd-vshuffle-elements) ] [ call-next-method ] vx->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2010-05-14 05:47:05 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vshuffle2-elements
							 | 
						
					
						
							
								
									
										
										
										
											2011-10-31 00:49:23 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    over simd-rep [ (simd-vshuffle2-elements) ] [ call-next-method ] vvx->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vshuffle-bytes
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vshuffle-bytes) ] [ call-next-method ] vv'->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 (vmerge-head)
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vmerge-head) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 (vmerge-tail)
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vmerge-tail) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 v<=
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-v<=) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 v<
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-v<) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 v=
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-v=) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 v>
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-v>) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 v>=
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-v>=) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vunordered?
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vunordered?) ] [ call-next-method ] vv->v-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vany?
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vany?) ] [ call-next-method ] v->x-op  ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vall?
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-13 18:45:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vall?) ] [ call-next-method ] v->x-op  ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vnone?
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep [ (simd-vnone?) ] [ call-next-method ] v->x-op  ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-12 01:47:54 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vcount
							 | 
						
					
						
							
								
									
										
										
										
											2011-11-12 19:53:07 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup simd-rep
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    [ [ (simd-vgetmask) assert-positive ] [ call-next-method ] v->x-op ]
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    [ mask>count ] bi ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								! SIMD high-level specializations
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vbroadcast swap [ nth ] [ simd-with ] bi ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 n+v [ simd-with ] keep v+ ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 n-v [ simd-with ] keep v- ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 n*v [ simd-with ] keep v* ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 n/v [ simd-with ] keep v/ ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 v+n over simd-with v+ ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 v-n over simd-with v- ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 v*n over simd-with v* ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 v/n over simd-with v/ ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 norm-sq dup v. assert-positive ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 distance v- norm ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 >pprint-sequence ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: simd-128 pprint* pprint-object ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-19 14:29:15 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								<PRIVATE
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								! SIMD concrete type functor
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								FUNCTOR: define-simd-128 ( T -- )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								A      DEFINES-CLASS ${T}
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								A-rep  IS            ${T}-rep
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								>A     DEFINES       >${T}
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								A-boa  DEFINES       ${T}-boa
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								A-with DEFINES       ${T}-with
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								A-cast DEFINES       ${T}-cast
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								A{     DEFINES       ${T}{
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-24 21:30:12 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								ELT     [ A-rep rep-component-type ]
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								N       [ A-rep rep-length ]
							 | 
						
					
						
							
								
									
										
										
										
											2010-02-24 02:18:41 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								COERCER [ ELT c:c-type-class "coercer" word-prop [ ] or ]
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2010-01-14 10:10:13 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								BOA-EFFECT [ N "n" <array> { "v" } <effect> ]
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-14 23:25:00 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								WHERE
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2010-02-17 08:39:40 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								TUPLE: A < simd-128 ; final
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: A new-underlying    drop \ A boa ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: A simd-rep          drop A-rep ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: A simd-element-type drop ELT ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: A simd-with         drop A-with ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-06 00:19:17 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: A nth-unsafe
							 | 
						
					
						
							
								
									
										
										
										
											2011-10-31 00:49:23 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    swap \ A-rep [ (simd-select) ] [ call-next-method ] vx->x-op ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: A set-nth-unsafe
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    [ ELT boolean>element ] 2dip
							 | 
						
					
						
							
								
									
										
										
										
											2010-05-22 01:25:10 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    underlying>> ELT c:set-alien-element ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: >A ( seq -- simd ) \ A new clone-like ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: A like drop dup \ A instance? [ >A ] unless ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-24 21:30:12 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								: A-with ( n -- v ) COERCER call \ A-rep (simd-with) \ A boa ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: A-cast ( v -- v' ) underlying>> \ A boa ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-19 14:29:15 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: A length drop N ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-24 21:30:12 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								\ A-boa
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								[ COERCER N napply ] N {
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    { 2 [ [ A-rep (simd-gather-2) A boa ] ] }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    { 4 [ [ A-rep (simd-gather-4) A boa ] ] }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    [ \ A new '[ _ _ nsequence ] ]
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								} case compose
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								BOA-EFFECT define-inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-14 23:25:00 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-18 23:32:05 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: A pprint-delims drop \ A{ \ } ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SYNTAX: A{ \ } [ >A ] parse-literal ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-04 16:22:59 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								INSTANCE: A sequence
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								c:<c-type>
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    byte-array >>class
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    A >>boxed-class
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-25 23:24:09 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    { A-rep alien-vector A boa } >quotation >>getter
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-05 18:20:57 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    {
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        [ dup simd-128? [ bad-simd-vector ] unless underlying>> ] 2dip
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        A-rep set-alien-vector
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    } >quotation >>setter
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    16 >>size
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    16 >>align
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    A-rep >>rep
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								\ A c:typedef
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								;FUNCTOR
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SYNTAX: SIMD-128:
							 | 
						
					
						
							
								
									
										
										
										
											2011-09-27 16:20:07 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    scan-token define-simd-128 ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-14 21:59:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								PRIVATE>
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								>>
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-18 23:32:05 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								! SIMD instances
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SIMD-128: char-16
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SIMD-128: uchar-16
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SIMD-128: short-8
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SIMD-128: ushort-8
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SIMD-128: int-4
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SIMD-128: uint-4
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SIMD-128: longlong-2
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SIMD-128: ulonglong-2
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SIMD-128: float-4
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SIMD-128: double-2
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								! misc
							 | 
						
					
						
							
								
									
										
										
										
											2009-09-29 05:46:38 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-11-02 15:24:29 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: simd-128 vshuffle ( u perm -- v )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    vshuffle-bytes ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-10-09 11:43:37 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-05 17:52:18 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: uchar-16 v*hs+
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-05 20:17:16 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    uchar-16-rep [ (simd-v*hs+) ] [ call-next-method ] vv->v-op short-8-cast ; inline
							 | 
						
					
						
							
								
									
										
										
										
											2009-12-05 17:52:18 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								M: ushort-8 v*hs+
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    ushort-8-rep [ (simd-v*hs+) ] [ call-next-method ] vv->v-op uint-4-cast ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: uint-4 v*hs+
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    uint-4-rep [ (simd-v*hs+) ] [ call-next-method ] vv->v-op ulonglong-2-cast ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: char-16 v*hs+
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    char-16-rep [ (simd-v*hs+) ] [ call-next-method ] vv->v-op short-8-cast ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: short-8 v*hs+
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    short-8-rep [ (simd-v*hs+) ] [ call-next-method ] vv->v-op int-4-cast ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								M: int-4 v*hs+
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    int-4-rep [ (simd-v*hs+) ] [ call-next-method ] vv->v-op longlong-2-cast ; inline
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2010-04-18 15:29:24 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								{ "math.vectors.simd" "mirrors" } "math.vectors.simd.mirrors" require-when
							 |