github.com/qiaogw/arrgo@v0.0.8/internal/boolOps_amd64.s (about)

     1  //+build !noasm,!appengine
     2  
     3  #define NOSPLIT 7
     4  
     5  TEXT ·findBool(SB), NOSPLIT, $0	
     6  	MOVQ vals_base+0(FP), R8
     7  	MOVQ vals_len+8(FP), SI
     8  	MOVB find+24(FP), R10
     9  	PXOR X0,X0
    10  
    11  	CMPQ SI, $0
    12  	JE failed
    13  	
    14  	CMPB R10, $0
    15  	JE loop
    16  	
    17  	MOVQ R10, X0
    18  	PUNPCKLBW X0, X0
    19  	PSHUFLW $0, X0, X0
    20  	PUNPCKLQDQ X0, X0
    21  loop:
    22  	MOVOU X0, X1
    23  	PCMPEQB (R8), X1
    24  	PMOVMSKB X1, R9
    25  	BSFL R9,R9
    26  	JNZ fnd
    27  	ADDQ $16, R8
    28  	SUBQ $16, SI
    29  	JG loop
    30  	JMP failed
    31  fnd:
    32  	CMPQ R9, SI
    33  	JG failed
    34  	MOVB $1, flg+32(FP)
    35  	RET
    36  failed:
    37  	MOVB $0, flg+32(FP)
    38  	RET
    39  
    40