Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
memops.go404 linesDownload Raw Back to codegen
1// asmcheck2 3// Copyright 2018 The Go Authors. All rights reserved.4// Use of this source code is governed by a BSD-style5// license that can be found in the LICENSE file.6 7package codegen8 9var x [2]bool10var x8 [2]uint811var x16 [2]uint1612var x32 [2]uint3213var x64 [2]uint6414 15func compMem1() int {16	// amd64:`CMPB command-line-arguments.x\+1\(SB\), [$]0`17	if x[1] {18		return 119	}20	// amd64:`CMPB command-line-arguments.x8\+1\(SB\), [$]7`21	if x8[1] == 7 {22		return 123	}24	// amd64:`CMPW command-line-arguments.x16\+2\(SB\), [$]7`25	if x16[1] == 7 {26		return 127	}28	// amd64:`CMPL command-line-arguments.x32\+4\(SB\), [$]7`29	if x32[1] == 7 {30		return 131	}32	// amd64:`CMPQ command-line-arguments.x64\+8\(SB\), [$]7`33	if x64[1] == 7 {34		return 135	}36	return 037}38 39type T struct {40	x   bool41	x8  uint842	x16 uint1643	x32 uint3244	x64 uint6445	a   [2]int // force it passed in memory46}47 48func compMem2(t T) int {49	// amd64:`CMPB .*\(SP\), [$]0`50	if t.x {51		return 152	}53	// amd64:`CMPB .*\(SP\), [$]7`54	if t.x8 == 7 {55		return 156	}57	// amd64:`CMPW .*\(SP\), [$]7`58	if t.x16 == 7 {59		return 160	}61	// amd64:`CMPL .*\(SP\), [$]7`62	if t.x32 == 7 {63		return 164	}65	// amd64:`CMPQ .*\(SP\), [$]7`66	if t.x64 == 7 {67		return 168	}69	return 070}71 72func compMem3(x, y *int) (int, bool) {73	// We can do comparisons of a register with memory even if74	// the register is used subsequently.75	r := *x76	// amd64:`CMPQ \(`77	// 386:`CMPL \(`78	return r, r < *y79}80 81// The following functions test that indexed load/store operations get generated.82 83func idxInt8(x, y []int8, i int) {84	var t int885	// amd64: `MOVBL[SZ]X 1\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*1\), [A-Z]+[0-9]*`86	//   386: `MOVBL[SZ]X 1\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*1\), [A-Z]+[0-9]*`87	t = x[i+1]88	// amd64: `MOVB [A-Z]+[0-9]*, 1\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*1\)`89	//   386: `MOVB [A-Z]+[0-9]*, 1\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*1\)`90	y[i+1] = t91	// amd64: `MOVB [$]77, 1\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*1\)`92	//   386: `MOVB [$]77, 1\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*1\)`93	x[i+1] = 7794}95 96func idxInt16(x, y []int16, i int) {97	var t int1698	// amd64: `MOVWL[SZ]X 2\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*2\), [A-Z]+[0-9]*`99	//   386: `MOVWL[SZ]X 2\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*2\), [A-Z]+[0-9]*`100	t = x[i+1]101	// amd64: `MOVW [A-Z]+[0-9]*, 2\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*2\)`102	//   386: `MOVW [A-Z]+[0-9]*, 2\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*2\)`103	y[i+1] = t104	// amd64: `MOVWL[SZ]X 2\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[12]\), [A-Z]+[0-9]*`105	//   386: `MOVWL[SZ]X 2\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[12]\), [A-Z]+[0-9]*`106	t = x[16*i+1]107	// amd64: `MOVW [A-Z]+[0-9]*, 2\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[12]\)`108	//   386: `MOVW [A-Z]+[0-9]*, 2\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[12]\)`109	y[16*i+1] = t110	// amd64: `MOVW [$]77, 2\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*2\)`111	//   386: `MOVW [$]77, 2\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*2\)`112	x[i+1] = 77113	// amd64: `MOVW [$]77, 2\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[12]\)`114	//   386: `MOVW [$]77, 2\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[12]\)`115	x[16*i+1] = 77116}117 118func idxInt32(x, y []int32, i int) {119	var t int32120	// amd64: `MOVL 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\), [A-Z]+[0-9]*`121	//   386: `MOVL 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\), [A-Z]+[0-9]*`122	t = x[i+1]123	// amd64: `MOVL [A-Z]+[0-9]*, 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\)`124	//   386: `MOVL [A-Z]+[0-9]*, 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\)`125	y[i+1] = t126	// amd64: `MOVL 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\), [A-Z]+[0-9]*`127	t = x[2*i+1]128	// amd64: `MOVL [A-Z]+[0-9]*, 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\)`129	y[2*i+1] = t130	// amd64: `MOVL 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[14]\), [A-Z]+[0-9]*`131	//   386: `MOVL 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[14]\), [A-Z]+[0-9]*`132	t = x[16*i+1]133	// amd64: `MOVL [A-Z]+[0-9]*, 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[14]\)`134	//   386: `MOVL [A-Z]+[0-9]*, 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[14]\)`135	y[16*i+1] = t136	// amd64: `MOVL [$]77, 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\)`137	//   386: `MOVL [$]77, 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\)`138	x[i+1] = 77139	// amd64: `MOVL [$]77, 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[14]\)`140	//   386: `MOVL [$]77, 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[14]\)`141	x[16*i+1] = 77142}143 144func idxInt64(x, y []int64, i int) {145	var t int64146	// amd64: `MOVQ 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\), [A-Z]+[0-9]*`147	t = x[i+1]148	// amd64: `MOVQ [A-Z]+[0-9]*, 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\)`149	y[i+1] = t150	// amd64: `MOVQ 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[18]\), [A-Z]+[0-9]*`151	t = x[16*i+1]152	// amd64: `MOVQ [A-Z]+[0-9]*, 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[18]\)`153	y[16*i+1] = t154	// amd64: `MOVQ [$]77, 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\)`155	x[i+1] = 77156	// amd64: `MOVQ [$]77, 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[18]\)`157	x[16*i+1] = 77158}159 160func idxFloat32(x, y []float32, i int) {161	var t float32162	//    amd64: `MOVSS 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\), X[0-9]+`163	// 386/sse2: `MOVSS 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\), X[0-9]+`164	//    arm64: `FMOVS \(R[0-9]*\)\(R[0-9]*<<2\), F[0-9]+`165	t = x[i+1]166	//    amd64: `MOVSS X[0-9]+, 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\)`167	// 386/sse2: `MOVSS X[0-9]+, 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\)`168	//    arm64: `FMOVS F[0-9]+, \(R[0-9]*\)\(R[0-9]*<<2\)`169	y[i+1] = t170	//    amd64: `MOVSS 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[14]\), X[0-9]+`171	// 386/sse2: `MOVSS 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[14]\), X[0-9]+`172	t = x[16*i+1]173	//    amd64: `MOVSS X[0-9]+, 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[14]\)`174	// 386/sse2: `MOVSS X[0-9]+, 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[14]\)`175	y[16*i+1] = t176}177 178func idxFloat64(x, y []float64, i int) {179	var t float64180	//    amd64: `MOVSD 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\), X[0-9]+`181	// 386/sse2: `MOVSD 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\), X[0-9]+`182	//    arm64: `FMOVD \(R[0-9]*\)\(R[0-9]*<<3\), F[0-9]+`183	t = x[i+1]184	//    amd64: `MOVSD X[0-9]+, 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\)`185	// 386/sse2: `MOVSD X[0-9]+, 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\)`186	//    arm64: `FMOVD F[0-9]+, \(R[0-9]*\)\(R[0-9]*<<3\)`187	y[i+1] = t188	//    amd64: `MOVSD 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[18]\), X[0-9]+`189	// 386/sse2: `MOVSD 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[18]\), X[0-9]+`190	t = x[16*i+1]191	//    amd64: `MOVSD X[0-9]+, 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[18]\)`192	// 386/sse2: `MOVSD X[0-9]+, 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[18]\)`193	y[16*i+1] = t194}195 196func idxLoadPlusOp32(x []int32, i int) int32 {197	s := x[0]198	// 386: `ADDL 4\([A-Z]+\)\([A-Z]+\*4\), [A-Z]+`199	// amd64: `ADDL 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\), [A-Z]+[0-9]*`200	s += x[i+1]201	// 386: `SUBL 8\([A-Z]+\)\([A-Z]+\*4\), [A-Z]+`202	// amd64: `SUBL 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\), [A-Z]+[0-9]*`203	s -= x[i+2]204	// 386: `IMULL 12\([A-Z]+\)\([A-Z]+\*4\), [A-Z]+`205	s *= x[i+3]206	// 386: `ANDL 16\([A-Z]+\)\([A-Z]+\*4\), [A-Z]+`207	// amd64: `ANDL 16\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\), [A-Z]+[0-9]*`208	s &= x[i+4]209	// 386: `ORL 20\([A-Z]+\)\([A-Z]+\*4\), [A-Z]+`210	// amd64: `ORL 20\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\), [A-Z]+[0-9]*`211	s |= x[i+5]212	// 386: `XORL 24\([A-Z]+\)\([A-Z]+\*4\), [A-Z]+`213	// amd64: `XORL 24\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\), [A-Z]+[0-9]*`214	s ^= x[i+6]215	return s216}217 218func idxLoadPlusOp64(x []int64, i int) int64 {219	s := x[0]220	// amd64: `ADDQ 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\), [A-Z]+[0-9]*`221	s += x[i+1]222	// amd64: `SUBQ 16\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\), [A-Z]+[0-9]*`223	s -= x[i+2]224	// amd64: `ANDQ 24\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\), [A-Z]+[0-9]*`225	s &= x[i+3]226	// amd64: `ORQ 32\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\), [A-Z]+[0-9]*`227	s |= x[i+4]228	// amd64: `XORQ 40\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\), [A-Z]+[0-9]*`229	s ^= x[i+5]230	return s231}232 233func idxStorePlusOp32(x []int32, i int, v int32) {234	// 386: `ADDL [A-Z]+, 4\([A-Z]+\)\([A-Z]+\*4\)`235	// amd64: `ADDL [A-Z]+[0-9]*, 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\)`236	x[i+1] += v237	// 386: `SUBL [A-Z]+, 8\([A-Z]+\)\([A-Z]+\*4\)`238	// amd64: `SUBL [A-Z]+[0-9]*, 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\)`239	x[i+2] -= v240	// 386: `ANDL [A-Z]+, 12\([A-Z]+\)\([A-Z]+\*4\)`241	// amd64: `ANDL [A-Z]+[0-9]*, 12\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\)`242	x[i+3] &= v243	// 386: `ORL [A-Z]+, 16\([A-Z]+\)\([A-Z]+\*4\)`244	// amd64: `ORL [A-Z]+[0-9]*, 16\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\)`245	x[i+4] |= v246	// 386: `XORL [A-Z]+, 20\([A-Z]+\)\([A-Z]+\*4\)`247	// amd64: `XORL [A-Z]+[0-9]*, 20\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\)`248	x[i+5] ^= v249 250	// 386: `ADDL [$]77, 24\([A-Z]+\)\([A-Z]+\*4\)`251	// amd64: `ADDL [$]77, 24\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\)`252	x[i+6] += 77253	// 386: `ANDL [$]77, 28\([A-Z]+\)\([A-Z]+\*4\)`254	// amd64: `ANDL [$]77, 28\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\)`255	x[i+7] &= 77256	// 386: `ORL [$]77, 32\([A-Z]+\)\([A-Z]+\*4\)`257	// amd64: `ORL [$]77, 32\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\)`258	x[i+8] |= 77259	// 386: `XORL [$]77, 36\([A-Z]+\)\([A-Z]+\*4\)`260	// amd64: `XORL [$]77, 36\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\)`261	x[i+9] ^= 77262}263 264func idxStorePlusOp64(x []int64, i int, v int64) {265	// amd64: `ADDQ [A-Z]+[0-9]*, 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\)`266	x[i+1] += v267	// amd64: `SUBQ [A-Z]+[0-9]*, 16\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\)`268	x[i+2] -= v269	// amd64: `ANDQ [A-Z]+[0-9]*, 24\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\)`270	x[i+3] &= v271	// amd64: `ORQ [A-Z]+[0-9]*, 32\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\)`272	x[i+4] |= v273	// amd64: `XORQ [A-Z]+[0-9]*, 40\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\)`274	x[i+5] ^= v275 276	// amd64: `ADDQ [$]77, 48\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\)`277	x[i+6] += 77278	// amd64: `ANDQ [$]77, 56\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\)`279	x[i+7] &= 77280	// amd64: `ORQ [$]77, 64\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\)`281	x[i+8] |= 77282	// amd64: `XORQ [$]77, 72\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\)`283	x[i+9] ^= 77284}285 286func idxCompare(i int) int {287	// amd64: `MOVBLZX 1\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*1\), [A-Z]+[0-9]*`288	if x8[i+1] < x8[0] {289		return 0290	}291	// amd64: `MOVWLZX 2\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*2\), [A-Z]+[0-9]*`292	if x16[i+1] < x16[0] {293		return 0294	}295	// amd64: `MOVWLZX 2\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[12]\), [A-Z]+[0-9]*`296	if x16[16*i+1] < x16[0] {297		return 0298	}299	// amd64: `MOVL 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\), [A-Z]+[0-9]*`300	if x32[i+1] < x32[0] {301		return 0302	}303	// amd64: `MOVL 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[14]\), [A-Z]+[0-9]*`304	if x32[16*i+1] < x32[0] {305		return 0306	}307	// amd64: `MOVQ 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\), [A-Z]+[0-9]*`308	if x64[i+1] < x64[0] {309		return 0310	}311	// amd64: `MOVQ 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[18]\), [A-Z]+[0-9]*`312	if x64[16*i+1] < x64[0] {313		return 0314	}315	// amd64: `MOVBLZX 2\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*1\), [A-Z]+[0-9]*`316	if x8[i+2] < 77 {317		return 0318	}319	// amd64: `MOVWLZX 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*2\), [A-Z]+[0-9]*`320	if x16[i+2] < 77 {321		return 0322	}323	// amd64: `MOVWLZX 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[12]\), [A-Z]+[0-9]*`324	if x16[16*i+2] < 77 {325		return 0326	}327	// amd64: `MOVL 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\), [A-Z]+[0-9]*`328	if x32[i+2] < 77 {329		return 0330	}331	// amd64: `MOVL 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[14]\), [A-Z]+[0-9]*`332	if x32[16*i+2] < 77 {333		return 0334	}335	// amd64: `MOVQ 16\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\), [A-Z]+[0-9]*`336	if x64[i+2] < 77 {337		return 0338	}339	// amd64: `MOVQ 16\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*[18]\), [A-Z]+[0-9]*`340	if x64[16*i+2] < 77 {341		return 0342	}343	return 1344}345 346func idxFloatOps(a []float64, b []float32, i int) (float64, float32) {347	c := float64(7)348	// amd64: `ADDSD 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\), X[0-9]+`349	c += a[i+1]350	// amd64: `SUBSD 16\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\), X[0-9]+`351	c -= a[i+2]352	// amd64: `MULSD 24\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\), X[0-9]+`353	c *= a[i+3]354	// amd64: `DIVSD 32\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*8\), X[0-9]+`355	c /= a[i+4]356 357	d := float32(8)358	// amd64: `ADDSS 4\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\), X[0-9]+`359	d += b[i+1]360	// amd64: `SUBSS 8\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\), X[0-9]+`361	d -= b[i+2]362	// amd64: `MULSS 12\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\), X[0-9]+`363	d *= b[i+3]364	// amd64: `DIVSS 16\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*4\), X[0-9]+`365	d /= b[i+4]366	return c, d367}368 369func storeTest(a []bool, v int, i int) {370	// amd64: `BTL \$0,`,`SETCS 4\([A-Z]+[0-9]*\)`371	a[4] = v&1 != 0372	// amd64: `BTL \$1,`,`SETCS 3\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*1\)`373	a[3+i] = v&2 != 0374}375 376func bitOps(p *[12]uint64) {377	// amd64: `ORQ \$8, \(AX\)`378	p[0] |= 8379	// amd64: `ORQ \$1073741824, 8\(AX\)`380	p[1] |= 1 << 30381	// amd64: `BTSQ \$31, 16\(AX\)`382	p[2] |= 1 << 31383	// amd64: `BTSQ \$63, 24\(AX\)`384	p[3] |= 1 << 63385 386	// amd64: `ANDQ \$-9, 32\(AX\)`387	p[4] &^= 8388	// amd64: `ANDQ \$-1073741825, 40\(AX\)`389	p[5] &^= 1 << 30390	// amd64: `BTRQ \$31, 48\(AX\)`391	p[6] &^= 1 << 31392	// amd64: `BTRQ \$63, 56\(AX\)`393	p[7] &^= 1 << 63394 395	// amd64: `XORQ \$8, 64\(AX\)`396	p[8] ^= 8397	// amd64: `XORQ \$1073741824, 72\(AX\)`398	p[9] ^= 1 << 30399	// amd64: `BTCQ \$31, 80\(AX\)`400	p[10] ^= 1 << 31401	// amd64: `BTCQ \$63, 88\(AX\)`402	p[11] ^= 1 << 63403}404 
codekingpro/portable-devtools · Team Ai