@@ -622,6 +622,8 @@ mod tests {
622622 op_buffer_ptr,
623623 op_buffer_slice_32,
624624 op_buffer_ptr_32,
625+ op_buffer_slice_f32,
626+ op_buffer_ptr_f32,
625627 op_buffer_slice_f64,
626628 op_buffer_ptr_f64,
627629 op_buffer_slice_unsafe_callback,
@@ -675,6 +677,8 @@ mod tests {
675677 op_create_buf_i16,
676678 op_create_buf_i32,
677679 op_create_buf_i64,
680+ op_create_buf_f32,
681+ op_create_buf_f64,
678682 ] ,
679683 state = |state| {
680684 state. put( 1234u32 ) ;
@@ -1587,12 +1591,45 @@ mod tests {
15871591 }
15881592 }
15891593
1594+ #[ op2( fast) ]
1595+ pub fn op_buffer_slice_f32 (
1596+ #[ buffer] input : & [ f32 ] ,
1597+ #[ number] inlen : usize ,
1598+ #[ buffer] output : & mut [ f32 ] ,
1599+ #[ number] outlen : usize ,
1600+ ) {
1601+ assert_eq ! ( inlen, input. len( ) ) ;
1602+ assert_eq ! ( outlen, output. len( ) ) ;
1603+ if inlen > 0 && outlen > 0 {
1604+ output[ 0 ] = input[ 0 ] ;
1605+ }
1606+ }
1607+
1608+ #[ op2( fast) ]
1609+ pub fn op_buffer_ptr_f32 (
1610+ #[ buffer] input : * const f32 ,
1611+ #[ number] inlen : usize ,
1612+ #[ buffer] output : * mut f32 ,
1613+ #[ number] outlen : usize ,
1614+ ) {
1615+ if inlen > 0 && outlen > 0 {
1616+ // SAFETY: for test
1617+ unsafe { std:: ptr:: write ( output, std:: ptr:: read ( input) ) }
1618+ }
1619+ }
1620+
15901621 #[ tokio:: test]
15911622 pub async fn test_op_buffer_slice ( ) -> Result < ( ) , Box < dyn std:: error:: Error > >
15921623 {
15931624 for ( op, op_ptr, arr, size) in [
15941625 ( "op_buffer_slice" , "op_buffer_ptr" , "Uint8Array" , 1 ) ,
15951626 ( "op_buffer_slice_32" , "op_buffer_ptr_32" , "Uint32Array" , 4 ) ,
1627+ (
1628+ "op_buffer_slice_f32" ,
1629+ "op_buffer_ptr_f32" ,
1630+ "Float32Array" ,
1631+ 4 ,
1632+ ) ,
15961633 (
15971634 "op_buffer_slice_f64" ,
15981635 "op_buffer_ptr_f64" ,
@@ -2534,7 +2571,7 @@ mod tests {
25342571 #[ op2]
25352572 #[ buffer]
25362573 fn [ < op_create_buf_ $size >] ( ) -> Vec <$size> {
2537- vec![ 1 , 2 , 3 , 4 ]
2574+ vec![ 1 as _ , 2 as _ , 3 as _ , 4 as _ ]
25382575 }
25392576 }
25402577 } ;
@@ -2547,6 +2584,8 @@ mod tests {
25472584 op_create_buf ! ( i16 ) ;
25482585 op_create_buf ! ( i32 ) ;
25492586 op_create_buf ! ( i64 ) ;
2587+ op_create_buf ! ( f32 ) ;
2588+ op_create_buf ! ( f64 ) ;
25502589
25512590 #[ test]
25522591 fn return_buffers ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
@@ -2574,6 +2613,8 @@ mod tests {
25742613 test ( "i16" ) ?;
25752614 test ( "i32" ) ?;
25762615 test ( "i64" ) ?;
2616+ test ( "f32" ) ?;
2617+ test ( "f64" ) ?;
25772618 Ok ( ( ) )
25782619 }
25792620}
0 commit comments