@@ -1372,6 +1372,7 @@ impl InstructionSet for DigestOp {
13721372 match self {
13731373 DigestOp :: Ripemd ( src, _dst)
13741374 | DigestOp :: Sha256 ( src, _dst)
1375+ | DigestOp :: Blake3 ( src, _dst)
13751376 | DigestOp :: Sha512 ( src, _dst) => bset ! [ Reg :: S ( * src) ] ,
13761377 }
13771378 }
@@ -1380,6 +1381,7 @@ impl InstructionSet for DigestOp {
13801381 match self {
13811382 DigestOp :: Ripemd ( _src, dst) => bset ! [ Reg :: new( RegR :: R160 , * dst) ] ,
13821383 DigestOp :: Sha256 ( _src, dst) => bset ! [ Reg :: new( RegR :: R256 , * dst) ] ,
1384+ DigestOp :: Blake3 ( _src, dst) => bset ! [ Reg :: new( RegR :: R256 , * dst) ] ,
13831385 DigestOp :: Sha512 ( _src, dst) => bset ! [ Reg :: new( RegR :: R512 , * dst) ] ,
13841386 }
13851387 }
@@ -1407,6 +1409,12 @@ impl InstructionSet for DigestOp {
14071409 let hash: Option < [ u8 ; 32 ] > = s. map ( |s| sha2:: Sha256 :: digest ( s. as_ref ( ) ) . into ( ) ) ;
14081410 regs. set_n ( RegR :: R256 , dst, hash) ;
14091411 }
1412+ DigestOp :: Blake3 ( src, dst) => {
1413+ let s = regs. get_s ( * src) ;
1414+ none = s. is_none ( ) ;
1415+ let hash: Option < [ u8 ; 32 ] > = s. map ( |s| blake3:: hash ( s. as_ref ( ) ) . into ( ) ) ;
1416+ regs. set_n ( RegR :: R256 , dst, hash) ;
1417+ }
14101418 DigestOp :: Sha512 ( src, dst) => {
14111419 let s = regs. get_s ( * src) ;
14121420 none = s. is_none ( ) ;
0 commit comments