| 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. |
| 360 |
Members