github.com/apache/arrow/go/v14@v14.0.2/parquet/internal/utils/unpack_bool_sse4_amd64.s (about) 1 //+build !noasm !appengine 2 // AUTO-GENERATED BY C2GOASM -- DO NOT EDIT 3 4 TEXT ยท_bytes_to_bools_sse4(SB), $0-32 5 6 MOVQ in+0(FP), DI 7 MOVQ len+8(FP), SI 8 MOVQ out+16(FP), DX 9 MOVQ outlen+24(FP), CX 10 11 WORD $0xf685 // test esi, esi 12 JLE LBB0_5 13 WORD $0x8941; BYTE $0xf0 // mov r8d, esi 14 LONG $0x03e0c149 // shl r8, 3 15 WORD $0x3145; BYTE $0xd2 // xor r10d, r10d 16 JMP LBB0_2 17 18 LBB0_4: 19 LONG $0x08c28349 // add r10, 8 20 LONG $0x01c78348 // add rdi, 1 21 WORD $0x394d; BYTE $0xd0 // cmp r8, r10 22 JE LBB0_5 23 24 LBB0_2: 25 WORD $0x3941; BYTE $0xca // cmp r10d, ecx 26 JGE LBB0_4 27 WORD $0x8945; BYTE $0xd1 // mov r9d, r10d 28 WORD $0xb60f; BYTE $0x07 // movzx eax, byte [rdi] 29 WORD $0x0124 // and al, 1 30 LONG $0x0a048842 // mov byte [rdx + r9], al 31 WORD $0x894c; BYTE $0xce // mov rsi, r9 32 LONG $0x01ce8348 // or rsi, 1 33 WORD $0xce39 // cmp esi, ecx 34 JGE LBB0_4 35 WORD $0xb60f; BYTE $0x07 // movzx eax, byte [rdi] 36 WORD $0xe8d0 // shr al, 1 37 WORD $0x0124 // and al, 1 38 WORD $0x0488; BYTE $0x32 // mov byte [rdx + rsi], al 39 WORD $0x894c; BYTE $0xce // mov rsi, r9 40 LONG $0x02ce8348 // or rsi, 2 41 WORD $0xce39 // cmp esi, ecx 42 JGE LBB0_4 43 WORD $0xb60f; BYTE $0x07 // movzx eax, byte [rdi] 44 WORD $0xe8c0; BYTE $0x02 // shr al, 2 45 WORD $0x0124 // and al, 1 46 WORD $0x0488; BYTE $0x32 // mov byte [rdx + rsi], al 47 WORD $0x894c; BYTE $0xce // mov rsi, r9 48 LONG $0x03ce8348 // or rsi, 3 49 WORD $0xce39 // cmp esi, ecx 50 JGE LBB0_4 51 WORD $0xb60f; BYTE $0x07 // movzx eax, byte [rdi] 52 WORD $0xe8c0; BYTE $0x03 // shr al, 3 53 WORD $0x0124 // and al, 1 54 WORD $0x0488; BYTE $0x32 // mov byte [rdx + rsi], al 55 WORD $0x894c; BYTE $0xce // mov rsi, r9 56 LONG $0x04ce8348 // or rsi, 4 57 WORD $0xce39 // cmp esi, ecx 58 JGE LBB0_4 59 WORD $0xb60f; BYTE $0x07 // movzx eax, byte [rdi] 60 WORD $0xe8c0; BYTE $0x04 // shr al, 4 61 WORD $0x0124 // and al, 1 62 WORD $0x0488; BYTE $0x32 // mov byte [rdx + rsi], al 63 WORD $0x894c; BYTE $0xce // mov rsi, r9 64 LONG $0x05ce8348 // or rsi, 5 65 WORD $0xce39 // cmp esi, ecx 66 JGE LBB0_4 67 WORD $0xb60f; BYTE $0x07 // movzx eax, byte [rdi] 68 WORD $0xe8c0; BYTE $0x05 // shr al, 5 69 WORD $0x0124 // and al, 1 70 WORD $0x0488; BYTE $0x32 // mov byte [rdx + rsi], al 71 WORD $0x894c; BYTE $0xce // mov rsi, r9 72 LONG $0x06ce8348 // or rsi, 6 73 WORD $0xce39 // cmp esi, ecx 74 JGE LBB0_4 75 WORD $0xb60f; BYTE $0x07 // movzx eax, byte [rdi] 76 WORD $0xe8c0; BYTE $0x06 // shr al, 6 77 WORD $0x0124 // and al, 1 78 WORD $0x0488; BYTE $0x32 // mov byte [rdx + rsi], al 79 LONG $0x07c98349 // or r9, 7 80 WORD $0x3941; BYTE $0xc9 // cmp r9d, ecx 81 JGE LBB0_4 82 WORD $0xb60f; BYTE $0x07 // movzx eax, byte [rdi] 83 WORD $0xe8c0; BYTE $0x07 // shr al, 7 84 LONG $0x0a048842 // mov byte [rdx + r9], al 85 JMP LBB0_4 86 87 LBB0_5: 88 RET