@@ -612,6 +612,8 @@ mod tests {
612612 op_buffer_ptr,
613613 op_buffer_slice_32,
614614 op_buffer_ptr_32,
615+ op_buffer_slice_f32,
616+ op_buffer_ptr_f32,
615617 op_buffer_slice_f64,
616618 op_buffer_ptr_f64,
617619 op_buffer_slice_unsafe_callback,
@@ -665,6 +667,8 @@ mod tests {
665667 op_create_buf_i16,
666668 op_create_buf_i32,
667669 op_create_buf_i64,
670+ op_create_buf_f32,
671+ op_create_buf_f64,
668672 ] ,
669673 state = |state| {
670674 state. put( 1234u32 ) ;
@@ -1550,12 +1554,45 @@ mod tests {
15501554 }
15511555 }
15521556
1557+ #[ op2( fast) ]
1558+ pub fn op_buffer_slice_f32 (
1559+ #[ buffer] input : & [ f32 ] ,
1560+ #[ number] inlen : usize ,
1561+ #[ buffer] output : & mut [ f32 ] ,
1562+ #[ number] outlen : usize ,
1563+ ) {
1564+ assert_eq ! ( inlen, input. len( ) ) ;
1565+ assert_eq ! ( outlen, output. len( ) ) ;
1566+ if inlen > 0 && outlen > 0 {
1567+ output[ 0 ] = input[ 0 ] ;
1568+ }
1569+ }
1570+
1571+ #[ op2( fast) ]
1572+ pub fn op_buffer_ptr_f32 (
1573+ #[ buffer] input : * const f32 ,
1574+ #[ number] inlen : usize ,
1575+ #[ buffer] output : * mut f32 ,
1576+ #[ number] outlen : usize ,
1577+ ) {
1578+ if inlen > 0 && outlen > 0 {
1579+ // SAFETY: for test
1580+ unsafe { std:: ptr:: write ( output, std:: ptr:: read ( input) ) }
1581+ }
1582+ }
1583+
15531584 #[ tokio:: test]
15541585 pub async fn test_op_buffer_slice ( ) -> Result < ( ) , Box < dyn std:: error:: Error > >
15551586 {
15561587 for ( op, op_ptr, arr, size) in [
15571588 ( "op_buffer_slice" , "op_buffer_ptr" , "Uint8Array" , 1 ) ,
15581589 ( "op_buffer_slice_32" , "op_buffer_ptr_32" , "Uint32Array" , 4 ) ,
1590+ (
1591+ "op_buffer_slice_f32" ,
1592+ "op_buffer_ptr_f32" ,
1593+ "Float32Array" ,
1594+ 4 ,
1595+ ) ,
15591596 (
15601597 "op_buffer_slice_f64" ,
15611598 "op_buffer_ptr_f64" ,
@@ -2497,7 +2534,7 @@ mod tests {
24972534 #[ op2]
24982535 #[ buffer]
24992536 fn [ < op_create_buf_ $size >] ( ) -> Vec <$size> {
2500- vec![ 1 , 2 , 3 , 4 ]
2537+ vec![ 1 as _ , 2 as _ , 3 as _ , 4 as _ ]
25012538 }
25022539 }
25032540 } ;
@@ -2510,6 +2547,8 @@ mod tests {
25102547 op_create_buf ! ( i16 ) ;
25112548 op_create_buf ! ( i32 ) ;
25122549 op_create_buf ! ( i64 ) ;
2550+ op_create_buf ! ( f32 ) ;
2551+ op_create_buf ! ( f64 ) ;
25132552
25142553 #[ test]
25152554 fn return_buffers ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
@@ -2537,6 +2576,8 @@ mod tests {
25372576 test ( "i16" ) ?;
25382577 test ( "i32" ) ?;
25392578 test ( "i64" ) ?;
2579+ test ( "f32" ) ?;
2580+ test ( "f64" ) ?;
25402581 Ok ( ( ) )
25412582 }
25422583}
0 commit comments