...

Text file src/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.s

Documentation: github.com/klauspost/compress/internal/cpuinfo

     1// +build !appengine
     2// +build gc
     3// +build !noasm
     4
     5#include "textflag.h"
     6#include "funcdata.h"
     7#include "go_asm.h"
     8
     9TEXT ·x86extensions(SB), NOSPLIT, $0
    10	// 1. determine max EAX value
    11	XORQ AX, AX
    12	CPUID
    13
    14	CMPQ AX, $7
    15	JB   unsupported
    16
    17	// 2. EAX = 7, ECX = 0 --- see Table 3-8 "Information Returned by CPUID Instruction"
    18	MOVQ $7, AX
    19	MOVQ $0, CX
    20	CPUID
    21
    22	BTQ   $3, BX // bit 3 = BMI1
    23	SETCS AL
    24
    25	BTQ   $8, BX // bit 8 = BMI2
    26	SETCS AH
    27
    28	MOVB AL, bmi1+0(FP)
    29	MOVB AH, bmi2+1(FP)
    30	RET
    31
    32unsupported:
    33	XORQ AX, AX
    34	MOVB AL, bmi1+0(FP)
    35	MOVB AL, bmi2+1(FP)
    36	RET

View as plain text