github.com/undoio/delve@v1.9.0/_fixtures/fputest/fputest_amd64.s (about)

     1  TEXT ·fputestsetup(SB),$0-50
     2  	// setup x87 stack
     3  	FMOVD f64a+0(FP), F0
     4  	FMOVD f64b+8(FP), F0
     5  	FMOVD f64c+16(FP), F0
     6  	FMOVD f64d+24(FP), F0
     7  	
     8  	FMOVF f32a+32(FP), F0
     9  	FMOVF f32b+36(FP), F0
    10  	FMOVF f32c+40(FP), F0
    11  	FMOVF f32d+44(FP), F0
    12  	
    13  	// setup SSE registers
    14  	// XMM0 = { f64b, f64a } = { 1.2, 1.1 }
    15  	MOVLPS f64a+0(FP), X0
    16  	MOVHPS f64b+8(FP), X0
    17  	
    18  	// XMM1 = { f64d, f64c } = { 1.4, 1.3 }
    19  	MOVLPS f64c+16(FP), X1
    20  	MOVHPS f64d+24(FP), X1
    21  	
    22  	// XMM2 = { f32d, f32c, f32b, f32a } = { 1.8, 1.7, 1.6, 1.5 }
    23  	MOVQ f32a+32(FP), AX
    24  	MOVQ AX, X2
    25  	MOVQ f32c+40(FP), AX
    26  	MOVQ AX, X3
    27  	PUNPCKLQDQ X3, X2
    28  	
    29  	// XMM3 = { f64a, f64b } = { 1.1, 1.2 }
    30  	MOVLPS f64b+8(FP), X3
    31  	MOVHPS f64a+0(FP), X3
    32  	
    33  	// XMM4 = { f64c, f64d } = { 1.3, 1.4 }
    34  	MOVLPS f64d+24(FP), X4
    35  	MOVHPS f64c+16(FP), X4
    36  	
    37  	// XMM5 = { f32b, f32a, f32d, f32c } = { 1.6, 1.5, 1.8, 1.7 }
    38  	MOVQ f32c+40(FP), AX
    39  	MOVQ AX, X5
    40  	MOVQ f32a+32(FP), AX
    41  	MOVQ AX, X6
    42  	PUNPCKLQDQ X6, X5
    43  	
    44  	// XMM6 = XMM0 + XMM1 = { f64b+f64d, f64a+f64c } = { 2.6, 2.4 }
    45  	MOVAPS X0,X6
    46  	ADDPD X1, X6
    47  	
    48  	// XMM7 = XMM0 + XMM3 = { f64b+f64a, f64a+f64b } = { 2.3, 2.3 }
    49  	MOVAPS X0, X7
    50  	ADDPD X3, X7
    51  	
    52  	// XMM8 = XMM2 + XMM5 = { f32d+f32b, f32c+f32a, f32b+f32d, f32a+f32c } = { 3.4, 3.2, 3.4, 3.2 }
    53  	MOVAPS X2, X8
    54  	ADDPS X5, X8
    55  
    56  	MOVAPS X1, X9
    57  	MOVAPS X2, X10
    58  	
    59  	MOVQ $42, AX
    60  	
    61  	CMPB avx2+48(FP), $0x0
    62  	JE done
    63  	//copy XMM1 to both halves of YMM11
    64  	VPERMQ $0x44, Y1, Y11
    65  	
    66  	CMPB avx512+49(FP), $0x0
    67  	JE done
    68  	//copy YMM11 to both halves of ZMM12
    69  	VSHUFF64X2 $0x44, Z11, Z11, Z12
    70  
    71  done:
    72  	CMPB dobreak+50(FP), $0x0
    73  	JE return
    74  	BYTE $0xcc // INT 3
    75  	
    76  return:
    77  	RET
    78  
    79  TEXT ·getCPUID70(SB),$0
    80  	MOVQ $7, AX
    81  	MOVQ $0, CX
    82  	CPUID
    83  	MOVD BX, ret+0(FP)
    84  	MOVD CX, ret+4(FP)
    85  	RET