github.com/powerman/golang-tools@v0.1.11-0.20220410185822-5ad214d8d803/go/analysis/passes/asmdecl/testdata/src/a/asm1.s (about)

     1  // Copyright 2013 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // +build amd64
     6  
     7  // Commented-out code should be ignored.
     8  //
     9  //	TEXT ·unknown(SB),0,$0
    10  //		RET
    11  
    12  TEXT ·arg1(SB),0,$0-2
    13  	MOVB	x+0(FP), AX
    14  	// MOVB x+0(FP), AX // commented out instructions used to panic
    15  	MOVB	y+1(FP), BX
    16  	MOVW	x+0(FP), AX // want `\[amd64\] arg1: invalid MOVW of x\+0\(FP\); int8 is 1-byte value`
    17  	MOVW	y+1(FP), AX // want `invalid MOVW of y\+1\(FP\); uint8 is 1-byte value`
    18  	MOVL	x+0(FP), AX // want `invalid MOVL of x\+0\(FP\); int8 is 1-byte value`
    19  	MOVL	y+1(FP), AX // want `invalid MOVL of y\+1\(FP\); uint8 is 1-byte value`
    20  	MOVQ	x+0(FP), AX // want `invalid MOVQ of x\+0\(FP\); int8 is 1-byte value`
    21  	MOVQ	y+1(FP), AX // want `invalid MOVQ of y\+1\(FP\); uint8 is 1-byte value`
    22  	MOVB	x+1(FP), AX // want `invalid offset x\+1\(FP\); expected x\+0\(FP\)`
    23  	MOVB	y+2(FP), AX // want `invalid offset y\+2\(FP\); expected y\+1\(FP\)`
    24  	TESTB	x+0(FP), AX
    25  	TESTB	y+1(FP), BX
    26  	TESTW	x+0(FP), AX // want `invalid TESTW of x\+0\(FP\); int8 is 1-byte value`
    27  	TESTW	y+1(FP), AX // want `invalid TESTW of y\+1\(FP\); uint8 is 1-byte value`
    28  	TESTL	x+0(FP), AX // want `invalid TESTL of x\+0\(FP\); int8 is 1-byte value`
    29  	TESTL	y+1(FP), AX // want `invalid TESTL of y\+1\(FP\); uint8 is 1-byte value`
    30  	TESTQ	x+0(FP), AX // want `invalid TESTQ of x\+0\(FP\); int8 is 1-byte value`
    31  	TESTQ	y+1(FP), AX // want `invalid TESTQ of y\+1\(FP\); uint8 is 1-byte value`
    32  	TESTB	x+1(FP), AX // want `invalid offset x\+1\(FP\); expected x\+0\(FP\)`
    33  	TESTB	y+2(FP), AX // want `invalid offset y\+2\(FP\); expected y\+1\(FP\)`
    34  	MOVB	8(SP), AX // want `8\(SP\) should be x\+0\(FP\)`
    35  	MOVB	9(SP), AX // want `9\(SP\) should be y\+1\(FP\)`
    36  	MOVB	10(SP), AX // want `use of 10\(SP\) points beyond argument frame`
    37  	RET
    38  
    39  TEXT ·arg2(SB),0,$0-4
    40  	MOVB	x+0(FP), AX // want `arg2: invalid MOVB of x\+0\(FP\); int16 is 2-byte value`
    41  	MOVB	y+2(FP), AX // want `invalid MOVB of y\+2\(FP\); uint16 is 2-byte value`
    42  	MOVW	x+0(FP), AX
    43  	MOVW	y+2(FP), BX
    44  	MOVL	x+0(FP), AX // want `invalid MOVL of x\+0\(FP\); int16 is 2-byte value`
    45  	MOVL	y+2(FP), AX // want `invalid MOVL of y\+2\(FP\); uint16 is 2-byte value`
    46  	MOVQ	x+0(FP), AX // want `invalid MOVQ of x\+0\(FP\); int16 is 2-byte value`
    47  	MOVQ	y+2(FP), AX // want `invalid MOVQ of y\+2\(FP\); uint16 is 2-byte value`
    48  	MOVW	x+2(FP), AX // want `invalid offset x\+2\(FP\); expected x\+0\(FP\)`
    49  	MOVW	y+0(FP), AX // want `invalid offset y\+0\(FP\); expected y\+2\(FP\)`
    50  	TESTB	x+0(FP), AX // want `invalid TESTB of x\+0\(FP\); int16 is 2-byte value`
    51  	TESTB	y+2(FP), AX // want `invalid TESTB of y\+2\(FP\); uint16 is 2-byte value`
    52  	TESTW	x+0(FP), AX
    53  	TESTW	y+2(FP), BX
    54  	TESTL	x+0(FP), AX // want `invalid TESTL of x\+0\(FP\); int16 is 2-byte value`
    55  	TESTL	y+2(FP), AX // want `invalid TESTL of y\+2\(FP\); uint16 is 2-byte value`
    56  	TESTQ	x+0(FP), AX // want `invalid TESTQ of x\+0\(FP\); int16 is 2-byte value`
    57  	TESTQ	y+2(FP), AX // want `invalid TESTQ of y\+2\(FP\); uint16 is 2-byte value`
    58  	TESTW	x+2(FP), AX // want `invalid offset x\+2\(FP\); expected x\+0\(FP\)`
    59  	TESTW	y+0(FP), AX // want `invalid offset y\+0\(FP\); expected y\+2\(FP\)`
    60  	RET
    61  
    62  TEXT ·arg4(SB),0,$0-2 // want `arg4: wrong argument size 2; expected \$\.\.\.-8`
    63  	MOVB	x+0(FP), AX // want `invalid MOVB of x\+0\(FP\); int32 is 4-byte value`
    64  	MOVB	y+4(FP), BX // want `invalid MOVB of y\+4\(FP\); uint32 is 4-byte value`
    65  	MOVW	x+0(FP), AX // want `invalid MOVW of x\+0\(FP\); int32 is 4-byte value`
    66  	MOVW	y+4(FP), AX // want `invalid MOVW of y\+4\(FP\); uint32 is 4-byte value`
    67  	MOVL	x+0(FP), AX
    68  	MOVL	y+4(FP), AX
    69  	MOVQ	x+0(FP), AX // want `invalid MOVQ of x\+0\(FP\); int32 is 4-byte value`
    70  	MOVQ	y+4(FP), AX // want `invalid MOVQ of y\+4\(FP\); uint32 is 4-byte value`
    71  	MOVL	x+4(FP), AX // want `invalid offset x\+4\(FP\); expected x\+0\(FP\)`
    72  	MOVL	y+2(FP), AX // want `invalid offset y\+2\(FP\); expected y\+4\(FP\)`
    73  	TESTB	x+0(FP), AX // want `invalid TESTB of x\+0\(FP\); int32 is 4-byte value`
    74  	TESTB	y+4(FP), BX // want `invalid TESTB of y\+4\(FP\); uint32 is 4-byte value`
    75  	TESTW	x+0(FP), AX // want `invalid TESTW of x\+0\(FP\); int32 is 4-byte value`
    76  	TESTW	y+4(FP), AX // want `invalid TESTW of y\+4\(FP\); uint32 is 4-byte value`
    77  	TESTL	x+0(FP), AX
    78  	TESTL	y+4(FP), AX
    79  	TESTQ	x+0(FP), AX // want `invalid TESTQ of x\+0\(FP\); int32 is 4-byte value`
    80  	TESTQ	y+4(FP), AX // want `invalid TESTQ of y\+4\(FP\); uint32 is 4-byte value`
    81  	TESTL	x+4(FP), AX // want `invalid offset x\+4\(FP\); expected x\+0\(FP\)`
    82  	TESTL	y+2(FP), AX // want `invalid offset y\+2\(FP\); expected y\+4\(FP\)`
    83  	RET
    84  
    85  TEXT ·arg8(SB),7,$0-2 // want `wrong argument size 2; expected \$\.\.\.-16`
    86  	MOVB	x+0(FP), AX // want `invalid MOVB of x\+0\(FP\); int64 is 8-byte value`
    87  	MOVB	y+8(FP), BX // want `invalid MOVB of y\+8\(FP\); uint64 is 8-byte value`
    88  	MOVW	x+0(FP), AX // want `invalid MOVW of x\+0\(FP\); int64 is 8-byte value`
    89  	MOVW	y+8(FP), AX // want `invalid MOVW of y\+8\(FP\); uint64 is 8-byte value`
    90  	MOVL	x+0(FP), AX // want `invalid MOVL of x\+0\(FP\); int64 is 8-byte value`
    91  	MOVL	y+8(FP), AX // want `invalid MOVL of y\+8\(FP\); uint64 is 8-byte value`
    92  	MOVQ	x+0(FP), AX
    93  	MOVQ	y+8(FP), AX
    94  	MOVQ	x+8(FP), AX // want `invalid offset x\+8\(FP\); expected x\+0\(FP\)`
    95  	MOVQ	y+2(FP), AX // want `invalid offset y\+2\(FP\); expected y\+8\(FP\)`
    96  	TESTB	x+0(FP), AX // want `invalid TESTB of x\+0\(FP\); int64 is 8-byte value`
    97  	TESTB	y+8(FP), BX // want `invalid TESTB of y\+8\(FP\); uint64 is 8-byte value`
    98  	TESTW	x+0(FP), AX // want `invalid TESTW of x\+0\(FP\); int64 is 8-byte value`
    99  	TESTW	y+8(FP), AX // want `invalid TESTW of y\+8\(FP\); uint64 is 8-byte value`
   100  	TESTL	x+0(FP), AX // want `invalid TESTL of x\+0\(FP\); int64 is 8-byte value`
   101  	TESTL	y+8(FP), AX // want `invalid TESTL of y\+8\(FP\); uint64 is 8-byte value`
   102  	TESTQ	x+0(FP), AX
   103  	TESTQ	y+8(FP), AX
   104  	TESTQ	x+8(FP), AX // want `invalid offset x\+8\(FP\); expected x\+0\(FP\)`
   105  	TESTQ	y+2(FP), AX // want `invalid offset y\+2\(FP\); expected y\+8\(FP\)`
   106  	RET
   107  
   108  TEXT ·argint(SB),0,$0-2 // want `wrong argument size 2; expected \$\.\.\.-16`
   109  	MOVB	x+0(FP), AX // want `invalid MOVB of x\+0\(FP\); int is 8-byte value`
   110  	MOVB	y+8(FP), BX // want `invalid MOVB of y\+8\(FP\); uint is 8-byte value`
   111  	MOVW	x+0(FP), AX // want `invalid MOVW of x\+0\(FP\); int is 8-byte value`
   112  	MOVW	y+8(FP), AX // want `invalid MOVW of y\+8\(FP\); uint is 8-byte value`
   113  	MOVL	x+0(FP), AX // want `invalid MOVL of x\+0\(FP\); int is 8-byte value`
   114  	MOVL	y+8(FP), AX // want `invalid MOVL of y\+8\(FP\); uint is 8-byte value`
   115  	MOVQ	x+0(FP), AX
   116  	MOVQ	y+8(FP), AX
   117  	MOVQ	x+8(FP), AX // want `invalid offset x\+8\(FP\); expected x\+0\(FP\)`
   118  	MOVQ	y+2(FP), AX // want `invalid offset y\+2\(FP\); expected y\+8\(FP\)`
   119  	TESTB	x+0(FP), AX // want `invalid TESTB of x\+0\(FP\); int is 8-byte value`
   120  	TESTB	y+8(FP), BX // want `invalid TESTB of y\+8\(FP\); uint is 8-byte value`
   121  	TESTW	x+0(FP), AX // want `invalid TESTW of x\+0\(FP\); int is 8-byte value`
   122  	TESTW	y+8(FP), AX // want `invalid TESTW of y\+8\(FP\); uint is 8-byte value`
   123  	TESTL	x+0(FP), AX // want `invalid TESTL of x\+0\(FP\); int is 8-byte value`
   124  	TESTL	y+8(FP), AX // want `invalid TESTL of y\+8\(FP\); uint is 8-byte value`
   125  	TESTQ	x+0(FP), AX
   126  	TESTQ	y+8(FP), AX
   127  	TESTQ	x+8(FP), AX // want `invalid offset x\+8\(FP\); expected x\+0\(FP\)`
   128  	TESTQ	y+2(FP), AX // want `invalid offset y\+2\(FP\); expected y\+8\(FP\)`
   129  	RET
   130  
   131  TEXT ·argptr(SB),7,$0-2 // want `wrong argument size 2; expected \$\.\.\.-40`
   132  	MOVB	x+0(FP), AX // want `invalid MOVB of x\+0\(FP\); \*byte is 8-byte value`
   133  	MOVB	y+8(FP), BX // want `invalid MOVB of y\+8\(FP\); \*byte is 8-byte value`
   134  	MOVW	x+0(FP), AX // want `invalid MOVW of x\+0\(FP\); \*byte is 8-byte value`
   135  	MOVW	y+8(FP), AX // want `invalid MOVW of y\+8\(FP\); \*byte is 8-byte value`
   136  	MOVL	x+0(FP), AX // want `invalid MOVL of x\+0\(FP\); \*byte is 8-byte value`
   137  	MOVL	y+8(FP), AX // want `invalid MOVL of y\+8\(FP\); \*byte is 8-byte value`
   138  	MOVQ	x+0(FP), AX
   139  	MOVQ	y+8(FP), AX
   140  	MOVQ	x+8(FP), AX // want `invalid offset x\+8\(FP\); expected x\+0\(FP\)`
   141  	MOVQ	y+2(FP), AX // want `invalid offset y\+2\(FP\); expected y\+8\(FP\)`
   142  	TESTB	x+0(FP), AX // want `invalid TESTB of x\+0\(FP\); \*byte is 8-byte value`
   143  	TESTB	y+8(FP), BX // want `invalid TESTB of y\+8\(FP\); \*byte is 8-byte value`
   144  	TESTW	x+0(FP), AX // want `invalid TESTW of x\+0\(FP\); \*byte is 8-byte value`
   145  	TESTW	y+8(FP), AX // want `invalid TESTW of y\+8\(FP\); \*byte is 8-byte value`
   146  	TESTL	x+0(FP), AX // want `invalid TESTL of x\+0\(FP\); \*byte is 8-byte value`
   147  	TESTL	y+8(FP), AX // want `invalid TESTL of y\+8\(FP\); \*byte is 8-byte value`
   148  	TESTQ	x+0(FP), AX
   149  	TESTQ	y+8(FP), AX
   150  	TESTQ	x+8(FP), AX // want `invalid offset x\+8\(FP\); expected x\+0\(FP\)`
   151  	TESTQ	y+2(FP), AX // want `invalid offset y\+2\(FP\); expected y\+8\(FP\)`
   152  	MOVL	c+16(FP), AX // want `invalid MOVL of c\+16\(FP\); chan int is 8-byte value`
   153  	MOVL	m+24(FP), AX // want `invalid MOVL of m\+24\(FP\); map\[int\]int is 8-byte value`
   154  	MOVL	f+32(FP), AX // want `invalid MOVL of f\+32\(FP\); func\(\) is 8-byte value`
   155  	RET
   156  
   157  TEXT ·argstring(SB),0,$32 // want `wrong argument size 0; expected \$\.\.\.-32`
   158  	MOVW	x+0(FP), AX // want `invalid MOVW of x\+0\(FP\); string base is 8-byte value`
   159  	MOVL	x+0(FP), AX // want `invalid MOVL of x\+0\(FP\); string base is 8-byte value`
   160  	LEAQ	x+0(FP), AX // ok
   161  	MOVQ	x+0(FP), AX
   162  	MOVW	x_base+0(FP), AX // want `invalid MOVW of x_base\+0\(FP\); string base is 8-byte value`
   163  	MOVL	x_base+0(FP), AX // want `invalid MOVL of x_base\+0\(FP\); string base is 8-byte value`
   164  	MOVQ	x_base+0(FP), AX
   165  	MOVW	x_len+0(FP), AX // want `invalid offset x_len\+0\(FP\); expected x_len\+8\(FP\)`
   166  	MOVL	x_len+0(FP), AX // want `invalid offset x_len\+0\(FP\); expected x_len\+8\(FP\)`
   167  	MOVQ	x_len+0(FP), AX // want `invalid offset x_len\+0\(FP\); expected x_len\+8\(FP\)`
   168  	MOVW	x_len+8(FP), AX // want `invalid MOVW of x_len\+8\(FP\); string len is 8-byte value`
   169  	MOVL	x_len+8(FP), AX // want `invalid MOVL of x_len\+8\(FP\); string len is 8-byte value`
   170  	MOVQ	x_len+8(FP), AX
   171  	MOVQ	y+0(FP), AX // want `invalid offset y\+0\(FP\); expected y\+16\(FP\)`
   172  	MOVQ	y_len+8(FP), AX // want `invalid offset y_len\+8\(FP\); expected y_len\+24\(FP\)`
   173  	RET
   174  
   175  TEXT ·argslice(SB),0,$48 // want `wrong argument size 0; expected \$\.\.\.-48`
   176  	MOVW	x+0(FP), AX // want `invalid MOVW of x\+0\(FP\); slice base is 8-byte value`
   177  	MOVL	x+0(FP), AX // want `invalid MOVL of x\+0\(FP\); slice base is 8-byte value`
   178  	MOVQ	x+0(FP), AX
   179  	MOVW	x_base+0(FP), AX // want `invalid MOVW of x_base\+0\(FP\); slice base is 8-byte value`
   180  	MOVL	x_base+0(FP), AX // want `invalid MOVL of x_base\+0\(FP\); slice base is 8-byte value`
   181  	MOVQ	x_base+0(FP), AX
   182  	MOVW	x_len+0(FP), AX // want `invalid offset x_len\+0\(FP\); expected x_len\+8\(FP\)`
   183  	MOVL	x_len+0(FP), AX // want `invalid offset x_len\+0\(FP\); expected x_len\+8\(FP\)`
   184  	MOVQ	x_len+0(FP), AX // want `invalid offset x_len\+0\(FP\); expected x_len\+8\(FP\)`
   185  	MOVW	x_len+8(FP), AX // want `invalid MOVW of x_len\+8\(FP\); slice len is 8-byte value`
   186  	MOVL	x_len+8(FP), AX // want `invalid MOVL of x_len\+8\(FP\); slice len is 8-byte value`
   187  	MOVQ	x_len+8(FP), AX
   188  	MOVW	x_cap+0(FP), AX // want `invalid offset x_cap\+0\(FP\); expected x_cap\+16\(FP\)`
   189  	MOVL	x_cap+0(FP), AX // want `invalid offset x_cap\+0\(FP\); expected x_cap\+16\(FP\)`
   190  	MOVQ	x_cap+0(FP), AX // want `invalid offset x_cap\+0\(FP\); expected x_cap\+16\(FP\)`
   191  	MOVW	x_cap+16(FP), AX // want `invalid MOVW of x_cap\+16\(FP\); slice cap is 8-byte value`
   192  	MOVL	x_cap+16(FP), AX // want `invalid MOVL of x_cap\+16\(FP\); slice cap is 8-byte value`
   193  	MOVQ	x_cap+16(FP), AX
   194  	MOVQ	y+0(FP), AX // want `invalid offset y\+0\(FP\); expected y\+24\(FP\)`
   195  	MOVQ	y_len+8(FP), AX // want `invalid offset y_len\+8\(FP\); expected y_len\+32\(FP\)`
   196  	MOVQ	y_cap+16(FP), AX // want `invalid offset y_cap\+16\(FP\); expected y_cap\+40\(FP\)`
   197  	RET
   198  
   199  TEXT ·argiface(SB),0,$0-32
   200  	MOVW	x+0(FP), AX // want `invalid MOVW of x\+0\(FP\); interface type is 8-byte value`
   201  	MOVL	x+0(FP), AX // want `invalid MOVL of x\+0\(FP\); interface type is 8-byte value`
   202  	MOVQ	x+0(FP), AX
   203  	MOVW	x_type+0(FP), AX // want `invalid MOVW of x_type\+0\(FP\); interface type is 8-byte value`
   204  	MOVL	x_type+0(FP), AX // want `invalid MOVL of x_type\+0\(FP\); interface type is 8-byte value`
   205  	MOVQ	x_type+0(FP), AX
   206  	MOVQ	x_itable+0(FP), AX // want `unknown variable x_itable; offset 0 is x_type\+0\(FP\)`
   207  	MOVQ	x_itable+1(FP), AX // want `unknown variable x_itable; offset 1 is x_type\+0\(FP\)`
   208  	MOVW	x_data+0(FP), AX // want `invalid offset x_data\+0\(FP\); expected x_data\+8\(FP\)`
   209  	MOVL	x_data+0(FP), AX // want `invalid offset x_data\+0\(FP\); expected x_data\+8\(FP\)`
   210  	MOVQ	x_data+0(FP), AX // want `invalid offset x_data\+0\(FP\); expected x_data\+8\(FP\)`
   211  	MOVW	x_data+8(FP), AX // want `invalid MOVW of x_data\+8\(FP\); interface data is 8-byte value`
   212  	MOVL	x_data+8(FP), AX // want `invalid MOVL of x_data\+8\(FP\); interface data is 8-byte value`
   213  	MOVQ	x_data+8(FP), AX
   214  	MOVW	y+16(FP), AX // want `invalid MOVW of y\+16\(FP\); interface itable is 8-byte value`
   215  	MOVL	y+16(FP), AX // want `invalid MOVL of y\+16\(FP\); interface itable is 8-byte value`
   216  	MOVQ	y+16(FP), AX
   217  	MOVW	y_itable+16(FP), AX // want `invalid MOVW of y_itable\+16\(FP\); interface itable is 8-byte value`
   218  	MOVL	y_itable+16(FP), AX // want `invalid MOVL of y_itable\+16\(FP\); interface itable is 8-byte value`
   219  	MOVQ	y_itable+16(FP), AX
   220  	MOVQ	y_type+16(FP), AX // want `unknown variable y_type; offset 16 is y_itable\+16\(FP\)`
   221  	MOVW	y_data+16(FP), AX // want `invalid offset y_data\+16\(FP\); expected y_data\+24\(FP\)`
   222  	MOVL	y_data+16(FP), AX // want `invalid offset y_data\+16\(FP\); expected y_data\+24\(FP\)`
   223  	MOVQ	y_data+16(FP), AX // want `invalid offset y_data\+16\(FP\); expected y_data\+24\(FP\)`
   224  	MOVW	y_data+24(FP), AX // want `invalid MOVW of y_data\+24\(FP\); interface data is 8-byte value`
   225  	MOVL	y_data+24(FP), AX // want `invalid MOVL of y_data\+24\(FP\); interface data is 8-byte value`
   226  	MOVQ	y_data+24(FP), AX
   227  	RET
   228  
   229  TEXT ·argcomplex(SB),0,$24 // want `wrong argument size 0; expected \$\.\.\.-24`
   230  	MOVSS	x+0(FP), X0 // want `invalid MOVSS of x\+0\(FP\); complex64 is 8-byte value containing x_real\+0\(FP\) and x_imag\+4\(FP\)`
   231  	MOVSS	x_real+0(FP), X0
   232  	MOVSD	x_real+0(FP), X0 // want `invalid MOVSD of x_real\+0\(FP\); real\(complex64\) is 4-byte value`
   233  	MOVSS	x_real+4(FP), X0 // want `invalid offset x_real\+4\(FP\); expected x_real\+0\(FP\)`
   234  	MOVSS	x_imag+4(FP), X0
   235  	MOVSD	x_imag+4(FP), X0 // want `invalid MOVSD of x_imag\+4\(FP\); imag\(complex64\) is 4-byte value`
   236  	MOVSS	x_imag+8(FP), X0 // want `invalid offset x_imag\+8\(FP\); expected x_imag\+4\(FP\)`
   237  	MOVSD	y+8(FP), X0 // want `invalid MOVSD of y\+8\(FP\); complex128 is 16-byte value containing y_real\+8\(FP\) and y_imag\+16\(FP\)`
   238  	MOVSS	y_real+8(FP), X0 // want `invalid MOVSS of y_real\+8\(FP\); real\(complex128\) is 8-byte value`
   239  	MOVSD	y_real+8(FP), X0
   240  	MOVSS	y_real+16(FP), X0 // want `invalid offset y_real\+16\(FP\); expected y_real\+8\(FP\)`
   241  	MOVSS	y_imag+16(FP), X0 // want `invalid MOVSS of y_imag\+16\(FP\); imag\(complex128\) is 8-byte value`
   242  	MOVSD	y_imag+16(FP), X0
   243  	MOVSS	y_imag+24(FP), X0 // want `invalid offset y_imag\+24\(FP\); expected y_imag\+16\(FP\)`
   244  	// Loading both parts of a complex is ok: see issue 35264.
   245  	MOVSD	x+0(FP), X0
   246  	MOVO	y+8(FP), X0
   247  	MOVOU	y+8(FP), X0
   248  	// These are not ok.
   249  	MOVO	x+0(FP), X0 // want `invalid MOVO of x\+0\(FP\); complex64 is 8-byte value containing x_real\+0\(FP\) and x_imag\+4\(FP\)`
   250  	MOVOU	x+0(FP), X0 // want `invalid MOVOU of x\+0\(FP\); complex64 is 8-byte value containing x_real\+0\(FP\) and x_imag\+4\(FP\)`
   251  	RET
   252  
   253  TEXT ·argstruct(SB),0,$64 // want `wrong argument size 0; expected \$\.\.\.-24`
   254  	MOVQ	x+0(FP), AX // want `invalid MOVQ of x\+0\(FP\); a.S is 24-byte value`
   255  	MOVQ	x_i+0(FP), AX // want `invalid MOVQ of x_i\+0\(FP\); int32 is 4-byte value`
   256  	MOVQ	x_b+0(FP), AX // want `invalid offset x_b\+0\(FP\); expected x_b\+4\(FP\)`
   257  	MOVQ	x_s+8(FP), AX
   258  	MOVQ	x_s_base+8(FP), AX
   259  	MOVQ	x_s+16(FP), AX // want `invalid offset x_s\+16\(FP\); expected x_s\+8\(FP\), x_s_base\+8\(FP\), or x_s_len\+16\(FP\)`
   260  	MOVQ	x_s_len+16(FP), AX
   261  	RET
   262  
   263  TEXT ·argarray(SB),0,$64 // want `wrong argument size 0; expected \$\.\.\.-48`
   264  	MOVQ	x+0(FP), AX // want `invalid MOVQ of x\+0\(FP\); \[2\]a.S is 48-byte value`
   265  	MOVQ	x_0_i+0(FP), AX // want `invalid MOVQ of x_0_i\+0\(FP\); int32 is 4-byte value`
   266  	MOVQ	x_0_b+0(FP), AX // want `invalid offset x_0_b\+0\(FP\); expected x_0_b\+4\(FP\)`
   267  	MOVQ	x_0_s+8(FP), AX
   268  	MOVQ	x_0_s_base+8(FP), AX
   269  	MOVQ	x_0_s+16(FP), AX // want `invalid offset x_0_s\+16\(FP\); expected x_0_s\+8\(FP\), x_0_s_base\+8\(FP\), or x_0_s_len\+16\(FP\)`
   270  	MOVQ	x_0_s_len+16(FP), AX
   271  	MOVB	foo+25(FP), AX // want `unknown variable foo; offset 25 is x_1_i\+24\(FP\)`
   272  	MOVQ	x_1_s+32(FP), AX
   273  	MOVQ	x_1_s_base+32(FP), AX
   274  	MOVQ	x_1_s+40(FP), AX // want `invalid offset x_1_s\+40\(FP\); expected x_1_s\+32\(FP\), x_1_s_base\+32\(FP\), or x_1_s_len\+40\(FP\)`
   275  	MOVQ	x_1_s_len+40(FP), AX
   276  	RET
   277  
   278  TEXT ·returnint(SB),0,$0-8
   279  	MOVB	AX, ret+0(FP) // want `invalid MOVB of ret\+0\(FP\); int is 8-byte value`
   280  	MOVW	AX, ret+0(FP) // want `invalid MOVW of ret\+0\(FP\); int is 8-byte value`
   281  	MOVL	AX, ret+0(FP) // want `invalid MOVL of ret\+0\(FP\); int is 8-byte value`
   282  	MOVQ	AX, ret+0(FP)
   283  	MOVQ	AX, ret+1(FP) // want `invalid offset ret\+1\(FP\); expected ret\+0\(FP\)`
   284  	MOVQ	AX, r+0(FP) // want `unknown variable r; offset 0 is ret\+0\(FP\)`
   285  	RET
   286  
   287  TEXT ·returnbyte(SB),0,$0-9
   288  	MOVQ	x+0(FP), AX
   289  	MOVB	AX, ret+8(FP)
   290  	MOVW	AX, ret+8(FP) // want `invalid MOVW of ret\+8\(FP\); byte is 1-byte value`
   291  	MOVL	AX, ret+8(FP) // want `invalid MOVL of ret\+8\(FP\); byte is 1-byte value`
   292  	MOVQ	AX, ret+8(FP) // want `invalid MOVQ of ret\+8\(FP\); byte is 1-byte value`
   293  	MOVB	AX, ret+7(FP) // want `invalid offset ret\+7\(FP\); expected ret\+8\(FP\)`
   294  	RET
   295  
   296  TEXT ·returnnamed(SB),0,$0-41
   297  	MOVB	x+0(FP), AX
   298  	MOVQ	AX, r1+8(FP)
   299  	MOVW	AX, r2+16(FP)
   300  	MOVQ	AX, r3+24(FP)
   301  	MOVQ	AX, r3_base+24(FP)
   302  	MOVQ	AX, r3_len+32(FP)
   303  	MOVB	AX, r4+40(FP)
   304  	MOVL	AX, r1+8(FP) // want `invalid MOVL of r1\+8\(FP\); int is 8-byte value`
   305  	RET
   306  
   307  TEXT ·returnintmissing(SB),0,$0-8
   308  	RET // want `RET without writing to 8-byte ret\+0\(FP\)`
   309  
   310  
   311  // issue 15271
   312  TEXT ·f15271(SB), NOSPLIT, $0-4
   313      // Stick 123 into the low 32 bits of X0.
   314      MOVQ $123, AX
   315      PINSRD $0, AX, X0
   316  
   317      // Return them.
   318      PEXTRD $0, X0, x+0(FP)
   319      RET
   320  
   321  // issue 17584
   322  TEXT ·f17584(SB), NOSPLIT, $12
   323  	MOVSS	x+0(FP), X0
   324  	MOVSS	y_real+4(FP), X0
   325  	MOVSS	y_imag+8(FP), X0
   326  	RET
   327  
   328  // issue 29318
   329  TEXT ·f29318(SB), NOSPLIT, $32
   330  	MOVQ	x_0_1+8(FP), AX
   331  	MOVQ	x_1_1+24(FP), CX
   332  	RET
   333  
   334  // ABI selector
   335  TEXT ·pickStableABI<ABI0>(SB), NOSPLIT, $32
   336  	MOVQ	x+0(FP), AX
   337  	RET
   338  
   339  // ABI selector
   340  TEXT ·pickInternalABI<ABIInternal>(SB), NOSPLIT, $32
   341  	MOVQ	x+0(FP), AX
   342  	RET
   343  
   344  // ABI selector
   345  TEXT ·pickFutureABI<ABISomethingNotyetInvented>(SB), NOSPLIT, $32
   346  	MOVQ	x+0(FP), AX
   347  	RET
   348  
   349  // writing to result in ABIInternal function
   350  TEXT ·returnABIInternal<ABIInternal>(SB), NOSPLIT, $32
   351  	MOVQ	$123, AX
   352  	RET
   353  TEXT ·returnmissingABIInternal<ABIInternal>(SB), NOSPLIT, $32
   354  	MOVQ	$123, CX
   355  	RET // want `RET without writing to result register`
   356  
   357  // return jump
   358  TEXT ·retjmp(SB), NOSPLIT, $0-8
   359  	RET	retjmp1(SB) // It's okay to not write results if there's a tail call.