src/cmd/compile/internal/ssa/rewrite/arm/rewriteARM.go GO 21,061 lines View on github.com → Search inside
File is large — showing lines 1–2,000 of 21,061.
1// Code generated from _gen/ARM.rules using 'go generate'; DO NOT EDIT.23package arm45import "internal/buildcfg"6import "cmd/compile/internal/types"7import "cmd/compile/internal/ssa/block"8import "cmd/compile/internal/ssa/ssaop"9import "cmd/compile/internal/ssa"1011func RewriteValue(v *ssa.Value) bool {12	switch v.Op {13	case ssaop.OpARMADC:14		return rewriteValue_OpARMADC(v)15	case ssaop.OpARMADCconst:16		return rewriteValue_OpARMADCconst(v)17	case ssaop.OpARMADCshiftLL:18		return rewriteValue_OpARMADCshiftLL(v)19	case ssaop.OpARMADCshiftLLreg:20		return rewriteValue_OpARMADCshiftLLreg(v)21	case ssaop.OpARMADCshiftRA:22		return rewriteValue_OpARMADCshiftRA(v)23	case ssaop.OpARMADCshiftRAreg:24		return rewriteValue_OpARMADCshiftRAreg(v)25	case ssaop.OpARMADCshiftRL:26		return rewriteValue_OpARMADCshiftRL(v)27	case ssaop.OpARMADCshiftRLreg:28		return rewriteValue_OpARMADCshiftRLreg(v)29	case ssaop.OpARMADD:30		return rewriteValue_OpARMADD(v)31	case ssaop.OpARMADDD:32		return rewriteValue_OpARMADDD(v)33	case ssaop.OpARMADDF:34		return rewriteValue_OpARMADDF(v)35	case ssaop.OpARMADDS:36		return rewriteValue_OpARMADDS(v)37	case ssaop.OpARMADDSshiftLL:38		return rewriteValue_OpARMADDSshiftLL(v)39	case ssaop.OpARMADDSshiftLLreg:40		return rewriteValue_OpARMADDSshiftLLreg(v)41	case ssaop.OpARMADDSshiftRA:42		return rewriteValue_OpARMADDSshiftRA(v)43	case ssaop.OpARMADDSshiftRAreg:44		return rewriteValue_OpARMADDSshiftRAreg(v)45	case ssaop.OpARMADDSshiftRL:46		return rewriteValue_OpARMADDSshiftRL(v)47	case ssaop.OpARMADDSshiftRLreg:48		return rewriteValue_OpARMADDSshiftRLreg(v)49	case ssaop.OpARMADDconst:50		return rewriteValue_OpARMADDconst(v)51	case ssaop.OpARMADDshiftLL:52		return rewriteValue_OpARMADDshiftLL(v)53	case ssaop.OpARMADDshiftLLreg:54		return rewriteValue_OpARMADDshiftLLreg(v)55	case ssaop.OpARMADDshiftRA:56		return rewriteValue_OpARMADDshiftRA(v)57	case ssaop.OpARMADDshiftRAreg:58		return rewriteValue_OpARMADDshiftRAreg(v)59	case ssaop.OpARMADDshiftRL:60		return rewriteValue_OpARMADDshiftRL(v)61	case ssaop.OpARMADDshiftRLreg:62		return rewriteValue_OpARMADDshiftRLreg(v)63	case ssaop.OpARMAND:64		return rewriteValue_OpARMAND(v)65	case ssaop.OpARMANDconst:66		return rewriteValue_OpARMANDconst(v)67	case ssaop.OpARMANDshiftLL:68		return rewriteValue_OpARMANDshiftLL(v)69	case ssaop.OpARMANDshiftLLreg:70		return rewriteValue_OpARMANDshiftLLreg(v)71	case ssaop.OpARMANDshiftRA:72		return rewriteValue_OpARMANDshiftRA(v)73	case ssaop.OpARMANDshiftRAreg:74		return rewriteValue_OpARMANDshiftRAreg(v)75	case ssaop.OpARMANDshiftRL:76		return rewriteValue_OpARMANDshiftRL(v)77	case ssaop.OpARMANDshiftRLreg:78		return rewriteValue_OpARMANDshiftRLreg(v)79	case ssaop.OpARMBFX:80		return rewriteValue_OpARMBFX(v)81	case ssaop.OpARMBFXU:82		return rewriteValue_OpARMBFXU(v)83	case ssaop.OpARMBIC:84		return rewriteValue_OpARMBIC(v)85	case ssaop.OpARMBICconst:86		return rewriteValue_OpARMBICconst(v)87	case ssaop.OpARMBICshiftLL:88		return rewriteValue_OpARMBICshiftLL(v)89	case ssaop.OpARMBICshiftLLreg:90		return rewriteValue_OpARMBICshiftLLreg(v)91	case ssaop.OpARMBICshiftRA:92		return rewriteValue_OpARMBICshiftRA(v)93	case ssaop.OpARMBICshiftRAreg:94		return rewriteValue_OpARMBICshiftRAreg(v)95	case ssaop.OpARMBICshiftRL:96		return rewriteValue_OpARMBICshiftRL(v)97	case ssaop.OpARMBICshiftRLreg:98		return rewriteValue_OpARMBICshiftRLreg(v)99	case ssaop.OpARMCMN:100		return rewriteValue_OpARMCMN(v)101	case ssaop.OpARMCMNconst:102		return rewriteValue_OpARMCMNconst(v)103	case ssaop.OpARMCMNshiftLL:104		return rewriteValue_OpARMCMNshiftLL(v)105	case ssaop.OpARMCMNshiftLLreg:106		return rewriteValue_OpARMCMNshiftLLreg(v)107	case ssaop.OpARMCMNshiftRA:108		return rewriteValue_OpARMCMNshiftRA(v)109	case ssaop.OpARMCMNshiftRAreg:110		return rewriteValue_OpARMCMNshiftRAreg(v)111	case ssaop.OpARMCMNshiftRL:112		return rewriteValue_OpARMCMNshiftRL(v)113	case ssaop.OpARMCMNshiftRLreg:114		return rewriteValue_OpARMCMNshiftRLreg(v)115	case ssaop.OpARMCMOVWHSconst:116		return rewriteValue_OpARMCMOVWHSconst(v)117	case ssaop.OpARMCMOVWLSconst:118		return rewriteValue_OpARMCMOVWLSconst(v)119	case ssaop.OpARMCMP:120		return rewriteValue_OpARMCMP(v)121	case ssaop.OpARMCMPD:122		return rewriteValue_OpARMCMPD(v)123	case ssaop.OpARMCMPF:124		return rewriteValue_OpARMCMPF(v)125	case ssaop.OpARMCMPconst:126		return rewriteValue_OpARMCMPconst(v)127	case ssaop.OpARMCMPshiftLL:128		return rewriteValue_OpARMCMPshiftLL(v)129	case ssaop.OpARMCMPshiftLLreg:130		return rewriteValue_OpARMCMPshiftLLreg(v)131	case ssaop.OpARMCMPshiftRA:132		return rewriteValue_OpARMCMPshiftRA(v)133	case ssaop.OpARMCMPshiftRAreg:134		return rewriteValue_OpARMCMPshiftRAreg(v)135	case ssaop.OpARMCMPshiftRL:136		return rewriteValue_OpARMCMPshiftRL(v)137	case ssaop.OpARMCMPshiftRLreg:138		return rewriteValue_OpARMCMPshiftRLreg(v)139	case ssaop.OpARMEqual:140		return rewriteValue_OpARMEqual(v)141	case ssaop.OpARMGreaterEqual:142		return rewriteValue_OpARMGreaterEqual(v)143	case ssaop.OpARMGreaterEqualU:144		return rewriteValue_OpARMGreaterEqualU(v)145	case ssaop.OpARMGreaterThan:146		return rewriteValue_OpARMGreaterThan(v)147	case ssaop.OpARMGreaterThanU:148		return rewriteValue_OpARMGreaterThanU(v)149	case ssaop.OpARMLessEqual:150		return rewriteValue_OpARMLessEqual(v)151	case ssaop.OpARMLessEqualU:152		return rewriteValue_OpARMLessEqualU(v)153	case ssaop.OpARMLessThan:154		return rewriteValue_OpARMLessThan(v)155	case ssaop.OpARMLessThanU:156		return rewriteValue_OpARMLessThanU(v)157	case ssaop.OpARMLoweredPanicBoundsRC:158		return rewriteValue_OpARMLoweredPanicBoundsRC(v)159	case ssaop.OpARMLoweredPanicBoundsRR:160		return rewriteValue_OpARMLoweredPanicBoundsRR(v)161	case ssaop.OpARMLoweredPanicExtendRC:162		return rewriteValue_OpARMLoweredPanicExtendRC(v)163	case ssaop.OpARMLoweredPanicExtendRR:164		return rewriteValue_OpARMLoweredPanicExtendRR(v)165	case ssaop.OpARMMOVBUload:166		return rewriteValue_OpARMMOVBUload(v)167	case ssaop.OpARMMOVBUloadidx:168		return rewriteValue_OpARMMOVBUloadidx(v)169	case ssaop.OpARMMOVBUreg:170		return rewriteValue_OpARMMOVBUreg(v)171	case ssaop.OpARMMOVBload:172		return rewriteValue_OpARMMOVBload(v)173	case ssaop.OpARMMOVBloadidx:174		return rewriteValue_OpARMMOVBloadidx(v)175	case ssaop.OpARMMOVBreg:176		return rewriteValue_OpARMMOVBreg(v)177	case ssaop.OpARMMOVBstore:178		return rewriteValue_OpARMMOVBstore(v)179	case ssaop.OpARMMOVBstoreidx:180		return rewriteValue_OpARMMOVBstoreidx(v)181	case ssaop.OpARMMOVDload:182		return rewriteValue_OpARMMOVDload(v)183	case ssaop.OpARMMOVDstore:184		return rewriteValue_OpARMMOVDstore(v)185	case ssaop.OpARMMOVFload:186		return rewriteValue_OpARMMOVFload(v)187	case ssaop.OpARMMOVFstore:188		return rewriteValue_OpARMMOVFstore(v)189	case ssaop.OpARMMOVHUload:190		return rewriteValue_OpARMMOVHUload(v)191	case ssaop.OpARMMOVHUloadidx:192		return rewriteValue_OpARMMOVHUloadidx(v)193	case ssaop.OpARMMOVHUreg:194		return rewriteValue_OpARMMOVHUreg(v)195	case ssaop.OpARMMOVHload:196		return rewriteValue_OpARMMOVHload(v)197	case ssaop.OpARMMOVHloadidx:198		return rewriteValue_OpARMMOVHloadidx(v)199	case ssaop.OpARMMOVHreg:200		return rewriteValue_OpARMMOVHreg(v)201	case ssaop.OpARMMOVHstore:202		return rewriteValue_OpARMMOVHstore(v)203	case ssaop.OpARMMOVHstoreidx:204		return rewriteValue_OpARMMOVHstoreidx(v)205	case ssaop.OpARMMOVWload:206		return rewriteValue_OpARMMOVWload(v)207	case ssaop.OpARMMOVWloadidx:208		return rewriteValue_OpARMMOVWloadidx(v)209	case ssaop.OpARMMOVWloadshiftLL:210		return rewriteValue_OpARMMOVWloadshiftLL(v)211	case ssaop.OpARMMOVWloadshiftRA:212		return rewriteValue_OpARMMOVWloadshiftRA(v)213	case ssaop.OpARMMOVWloadshiftRL:214		return rewriteValue_OpARMMOVWloadshiftRL(v)215	case ssaop.OpARMMOVWnop:216		return rewriteValue_OpARMMOVWnop(v)217	case ssaop.OpARMMOVWreg:218		return rewriteValue_OpARMMOVWreg(v)219	case ssaop.OpARMMOVWstore:220		return rewriteValue_OpARMMOVWstore(v)221	case ssaop.OpARMMOVWstoreidx:222		return rewriteValue_OpARMMOVWstoreidx(v)223	case ssaop.OpARMMOVWstoreshiftLL:224		return rewriteValue_OpARMMOVWstoreshiftLL(v)225	case ssaop.OpARMMOVWstoreshiftRA:226		return rewriteValue_OpARMMOVWstoreshiftRA(v)227	case ssaop.OpARMMOVWstoreshiftRL:228		return rewriteValue_OpARMMOVWstoreshiftRL(v)229	case ssaop.OpARMMUL:230		return rewriteValue_OpARMMUL(v)231	case ssaop.OpARMMULA:232		return rewriteValue_OpARMMULA(v)233	case ssaop.OpARMMULD:234		return rewriteValue_OpARMMULD(v)235	case ssaop.OpARMMULF:236		return rewriteValue_OpARMMULF(v)237	case ssaop.OpARMMULS:238		return rewriteValue_OpARMMULS(v)239	case ssaop.OpARMMVN:240		return rewriteValue_OpARMMVN(v)241	case ssaop.OpARMMVNshiftLL:242		return rewriteValue_OpARMMVNshiftLL(v)243	case ssaop.OpARMMVNshiftLLreg:244		return rewriteValue_OpARMMVNshiftLLreg(v)245	case ssaop.OpARMMVNshiftRA:246		return rewriteValue_OpARMMVNshiftRA(v)247	case ssaop.OpARMMVNshiftRAreg:248		return rewriteValue_OpARMMVNshiftRAreg(v)249	case ssaop.OpARMMVNshiftRL:250		return rewriteValue_OpARMMVNshiftRL(v)251	case ssaop.OpARMMVNshiftRLreg:252		return rewriteValue_OpARMMVNshiftRLreg(v)253	case ssaop.OpARMNEGD:254		return rewriteValue_OpARMNEGD(v)255	case ssaop.OpARMNEGF:256		return rewriteValue_OpARMNEGF(v)257	case ssaop.OpARMNMULD:258		return rewriteValue_OpARMNMULD(v)259	case ssaop.OpARMNMULF:260		return rewriteValue_OpARMNMULF(v)261	case ssaop.OpARMNotEqual:262		return rewriteValue_OpARMNotEqual(v)263	case ssaop.OpARMOR:264		return rewriteValue_OpARMOR(v)265	case ssaop.OpARMORconst:266		return rewriteValue_OpARMORconst(v)267	case ssaop.OpARMORshiftLL:268		return rewriteValue_OpARMORshiftLL(v)269	case ssaop.OpARMORshiftLLreg:270		return rewriteValue_OpARMORshiftLLreg(v)271	case ssaop.OpARMORshiftRA:272		return rewriteValue_OpARMORshiftRA(v)273	case ssaop.OpARMORshiftRAreg:274		return rewriteValue_OpARMORshiftRAreg(v)275	case ssaop.OpARMORshiftRL:276		return rewriteValue_OpARMORshiftRL(v)277	case ssaop.OpARMORshiftRLreg:278		return rewriteValue_OpARMORshiftRLreg(v)279	case ssaop.OpARMRSB:280		return rewriteValue_OpARMRSB(v)281	case ssaop.OpARMRSBSshiftLL:282		return rewriteValue_OpARMRSBSshiftLL(v)283	case ssaop.OpARMRSBSshiftLLreg:284		return rewriteValue_OpARMRSBSshiftLLreg(v)285	case ssaop.OpARMRSBSshiftRA:286		return rewriteValue_OpARMRSBSshiftRA(v)287	case ssaop.OpARMRSBSshiftRAreg:288		return rewriteValue_OpARMRSBSshiftRAreg(v)289	case ssaop.OpARMRSBSshiftRL:290		return rewriteValue_OpARMRSBSshiftRL(v)291	case ssaop.OpARMRSBSshiftRLreg:292		return rewriteValue_OpARMRSBSshiftRLreg(v)293	case ssaop.OpARMRSBconst:294		return rewriteValue_OpARMRSBconst(v)295	case ssaop.OpARMRSBshiftLL:296		return rewriteValue_OpARMRSBshiftLL(v)297	case ssaop.OpARMRSBshiftLLreg:298		return rewriteValue_OpARMRSBshiftLLreg(v)299	case ssaop.OpARMRSBshiftRA:300		return rewriteValue_OpARMRSBshiftRA(v)301	case ssaop.OpARMRSBshiftRAreg:302		return rewriteValue_OpARMRSBshiftRAreg(v)303	case ssaop.OpARMRSBshiftRL:304		return rewriteValue_OpARMRSBshiftRL(v)305	case ssaop.OpARMRSBshiftRLreg:306		return rewriteValue_OpARMRSBshiftRLreg(v)307	case ssaop.OpARMRSCconst:308		return rewriteValue_OpARMRSCconst(v)309	case ssaop.OpARMRSCshiftLL:310		return rewriteValue_OpARMRSCshiftLL(v)311	case ssaop.OpARMRSCshiftLLreg:312		return rewriteValue_OpARMRSCshiftLLreg(v)313	case ssaop.OpARMRSCshiftRA:314		return rewriteValue_OpARMRSCshiftRA(v)315	case ssaop.OpARMRSCshiftRAreg:316		return rewriteValue_OpARMRSCshiftRAreg(v)317	case ssaop.OpARMRSCshiftRL:318		return rewriteValue_OpARMRSCshiftRL(v)319	case ssaop.OpARMRSCshiftRLreg:320		return rewriteValue_OpARMRSCshiftRLreg(v)321	case ssaop.OpARMSBC:322		return rewriteValue_OpARMSBC(v)323	case ssaop.OpARMSBCconst:324		return rewriteValue_OpARMSBCconst(v)325	case ssaop.OpARMSBCshiftLL:326		return rewriteValue_OpARMSBCshiftLL(v)327	case ssaop.OpARMSBCshiftLLreg:328		return rewriteValue_OpARMSBCshiftLLreg(v)329	case ssaop.OpARMSBCshiftRA:330		return rewriteValue_OpARMSBCshiftRA(v)331	case ssaop.OpARMSBCshiftRAreg:332		return rewriteValue_OpARMSBCshiftRAreg(v)333	case ssaop.OpARMSBCshiftRL:334		return rewriteValue_OpARMSBCshiftRL(v)335	case ssaop.OpARMSBCshiftRLreg:336		return rewriteValue_OpARMSBCshiftRLreg(v)337	case ssaop.OpARMSLL:338		return rewriteValue_OpARMSLL(v)339	case ssaop.OpARMSLLconst:340		return rewriteValue_OpARMSLLconst(v)341	case ssaop.OpARMSRA:342		return rewriteValue_OpARMSRA(v)343	case ssaop.OpARMSRAcond:344		return rewriteValue_OpARMSRAcond(v)345	case ssaop.OpARMSRAconst:346		return rewriteValue_OpARMSRAconst(v)347	case ssaop.OpARMSRL:348		return rewriteValue_OpARMSRL(v)349	case ssaop.OpARMSRLconst:350		return rewriteValue_OpARMSRLconst(v)351	case ssaop.OpARMSRR:352		return rewriteValue_OpARMSRR(v)353	case ssaop.OpARMSUB:354		return rewriteValue_OpARMSUB(v)355	case ssaop.OpARMSUBD:356		return rewriteValue_OpARMSUBD(v)357	case ssaop.OpARMSUBF:358		return rewriteValue_OpARMSUBF(v)359	case ssaop.OpARMSUBS:360		return rewriteValue_OpARMSUBS(v)361	case ssaop.OpARMSUBSshiftLL:362		return rewriteValue_OpARMSUBSshiftLL(v)363	case ssaop.OpARMSUBSshiftLLreg:364		return rewriteValue_OpARMSUBSshiftLLreg(v)365	case ssaop.OpARMSUBSshiftRA:366		return rewriteValue_OpARMSUBSshiftRA(v)367	case ssaop.OpARMSUBSshiftRAreg:368		return rewriteValue_OpARMSUBSshiftRAreg(v)369	case ssaop.OpARMSUBSshiftRL:370		return rewriteValue_OpARMSUBSshiftRL(v)371	case ssaop.OpARMSUBSshiftRLreg:372		return rewriteValue_OpARMSUBSshiftRLreg(v)373	case ssaop.OpARMSUBconst:374		return rewriteValue_OpARMSUBconst(v)375	case ssaop.OpARMSUBshiftLL:376		return rewriteValue_OpARMSUBshiftLL(v)377	case ssaop.OpARMSUBshiftLLreg:378		return rewriteValue_OpARMSUBshiftLLreg(v)379	case ssaop.OpARMSUBshiftRA:380		return rewriteValue_OpARMSUBshiftRA(v)381	case ssaop.OpARMSUBshiftRAreg:382		return rewriteValue_OpARMSUBshiftRAreg(v)383	case ssaop.OpARMSUBshiftRL:384		return rewriteValue_OpARMSUBshiftRL(v)385	case ssaop.OpARMSUBshiftRLreg:386		return rewriteValue_OpARMSUBshiftRLreg(v)387	case ssaop.OpARMTEQ:388		return rewriteValue_OpARMTEQ(v)389	case ssaop.OpARMTEQconst:390		return rewriteValue_OpARMTEQconst(v)391	case ssaop.OpARMTEQshiftLL:392		return rewriteValue_OpARMTEQshiftLL(v)393	case ssaop.OpARMTEQshiftLLreg:394		return rewriteValue_OpARMTEQshiftLLreg(v)395	case ssaop.OpARMTEQshiftRA:396		return rewriteValue_OpARMTEQshiftRA(v)397	case ssaop.OpARMTEQshiftRAreg:398		return rewriteValue_OpARMTEQshiftRAreg(v)399	case ssaop.OpARMTEQshiftRL:400		return rewriteValue_OpARMTEQshiftRL(v)401	case ssaop.OpARMTEQshiftRLreg:402		return rewriteValue_OpARMTEQshiftRLreg(v)403	case ssaop.OpARMTST:404		return rewriteValue_OpARMTST(v)405	case ssaop.OpARMTSTconst:406		return rewriteValue_OpARMTSTconst(v)407	case ssaop.OpARMTSTshiftLL:408		return rewriteValue_OpARMTSTshiftLL(v)409	case ssaop.OpARMTSTshiftLLreg:410		return rewriteValue_OpARMTSTshiftLLreg(v)411	case ssaop.OpARMTSTshiftRA:412		return rewriteValue_OpARMTSTshiftRA(v)413	case ssaop.OpARMTSTshiftRAreg:414		return rewriteValue_OpARMTSTshiftRAreg(v)415	case ssaop.OpARMTSTshiftRL:416		return rewriteValue_OpARMTSTshiftRL(v)417	case ssaop.OpARMTSTshiftRLreg:418		return rewriteValue_OpARMTSTshiftRLreg(v)419	case ssaop.OpARMXOR:420		return rewriteValue_OpARMXOR(v)421	case ssaop.OpARMXORconst:422		return rewriteValue_OpARMXORconst(v)423	case ssaop.OpARMXORshiftLL:424		return rewriteValue_OpARMXORshiftLL(v)425	case ssaop.OpARMXORshiftLLreg:426		return rewriteValue_OpARMXORshiftLLreg(v)427	case ssaop.OpARMXORshiftRA:428		return rewriteValue_OpARMXORshiftRA(v)429	case ssaop.OpARMXORshiftRAreg:430		return rewriteValue_OpARMXORshiftRAreg(v)431	case ssaop.OpARMXORshiftRL:432		return rewriteValue_OpARMXORshiftRL(v)433	case ssaop.OpARMXORshiftRLreg:434		return rewriteValue_OpARMXORshiftRLreg(v)435	case ssaop.OpARMXORshiftRR:436		return rewriteValue_OpARMXORshiftRR(v)437	case ssaop.OpAbs:438		v.Op = ssaop.OpARMABSD439		return true440	case ssaop.OpAdd16:441		v.Op = ssaop.OpARMADD442		return true443	case ssaop.OpAdd32:444		v.Op = ssaop.OpARMADD445		return true446	case ssaop.OpAdd32F:447		v.Op = ssaop.OpARMADDF448		return true449	case ssaop.OpAdd32carry:450		v.Op = ssaop.OpARMADDS451		return true452	case ssaop.OpAdd32carrywithcarry:453		v.Op = ssaop.OpARMADCS454		return true455	case ssaop.OpAdd32withcarry:456		v.Op = ssaop.OpARMADC457		return true458	case ssaop.OpAdd64F:459		v.Op = ssaop.OpARMADDD460		return true461	case ssaop.OpAdd8:462		v.Op = ssaop.OpARMADD463		return true464	case ssaop.OpAddPtr:465		v.Op = ssaop.OpARMADD466		return true467	case ssaop.OpAddr:468		return rewriteValue_OpAddr(v)469	case ssaop.OpAnd16:470		v.Op = ssaop.OpARMAND471		return true472	case ssaop.OpAnd32:473		v.Op = ssaop.OpARMAND474		return true475	case ssaop.OpAnd8:476		v.Op = ssaop.OpARMAND477		return true478	case ssaop.OpAndB:479		v.Op = ssaop.OpARMAND480		return true481	case ssaop.OpAvg32u:482		return rewriteValue_OpAvg32u(v)483	case ssaop.OpBitLen16:484		return rewriteValue_OpBitLen16(v)485	case ssaop.OpBitLen32:486		return rewriteValue_OpBitLen32(v)487	case ssaop.OpBitLen8:488		return rewriteValue_OpBitLen8(v)489	case ssaop.OpBswap32:490		return rewriteValue_OpBswap32(v)491	case ssaop.OpClosureCall:492		v.Op = ssaop.OpARMCALLclosure493		return true494	case ssaop.OpCom16:495		v.Op = ssaop.OpARMMVN496		return true497	case ssaop.OpCom32:498		v.Op = ssaop.OpARMMVN499		return true500	case ssaop.OpCom8:501		v.Op = ssaop.OpARMMVN502		return true503	case ssaop.OpConst16:504		return rewriteValue_OpConst16(v)505	case ssaop.OpConst32:506		return rewriteValue_OpConst32(v)507	case ssaop.OpConst32F:508		return rewriteValue_OpConst32F(v)509	case ssaop.OpConst64F:510		return rewriteValue_OpConst64F(v)511	case ssaop.OpConst8:512		return rewriteValue_OpConst8(v)513	case ssaop.OpConstBool:514		return rewriteValue_OpConstBool(v)515	case ssaop.OpConstNil:516		return rewriteValue_OpConstNil(v)517	case ssaop.OpCtz16:518		return rewriteValue_OpCtz16(v)519	case ssaop.OpCtz16NonZero:520		v.Op = ssaop.OpCtz32521		return true522	case ssaop.OpCtz32:523		return rewriteValue_OpCtz32(v)524	case ssaop.OpCtz32NonZero:525		v.Op = ssaop.OpCtz32526		return true527	case ssaop.OpCtz8:528		return rewriteValue_OpCtz8(v)529	case ssaop.OpCtz8NonZero:530		v.Op = ssaop.OpCtz32531		return true532	case ssaop.OpCvt32Fto32:533		v.Op = ssaop.OpARMMOVFW534		return true535	case ssaop.OpCvt32Fto32U:536		v.Op = ssaop.OpARMMOVFWU537		return true538	case ssaop.OpCvt32Fto64F:539		v.Op = ssaop.OpARMMOVFD540		return true541	case ssaop.OpCvt32Uto32F:542		v.Op = ssaop.OpARMMOVWUF543		return true544	case ssaop.OpCvt32Uto64F:545		v.Op = ssaop.OpARMMOVWUD546		return true547	case ssaop.OpCvt32to32F:548		v.Op = ssaop.OpARMMOVWF549		return true550	case ssaop.OpCvt32to64F:551		v.Op = ssaop.OpARMMOVWD552		return true553	case ssaop.OpCvt64Fto32:554		v.Op = ssaop.OpARMMOVDW555		return true556	case ssaop.OpCvt64Fto32F:557		v.Op = ssaop.OpARMMOVDF558		return true559	case ssaop.OpCvt64Fto32U:560		v.Op = ssaop.OpARMMOVDWU561		return true562	case ssaop.OpCvtBoolToUint8:563		v.Op = ssaop.OpCopy564		return true565	case ssaop.OpDiv16:566		return rewriteValue_OpDiv16(v)567	case ssaop.OpDiv16u:568		return rewriteValue_OpDiv16u(v)569	case ssaop.OpDiv32:570		return rewriteValue_OpDiv32(v)571	case ssaop.OpDiv32F:572		v.Op = ssaop.OpARMDIVF573		return true574	case ssaop.OpDiv32u:575		return rewriteValue_OpDiv32u(v)576	case ssaop.OpDiv64F:577		v.Op = ssaop.OpARMDIVD578		return true579	case ssaop.OpDiv8:580		return rewriteValue_OpDiv8(v)581	case ssaop.OpDiv8u:582		return rewriteValue_OpDiv8u(v)583	case ssaop.OpEq16:584		return rewriteValue_OpEq16(v)585	case ssaop.OpEq32:586		return rewriteValue_OpEq32(v)587	case ssaop.OpEq32F:588		return rewriteValue_OpEq32F(v)589	case ssaop.OpEq64F:590		return rewriteValue_OpEq64F(v)591	case ssaop.OpEq8:592		return rewriteValue_OpEq8(v)593	case ssaop.OpEqB:594		return rewriteValue_OpEqB(v)595	case ssaop.OpEqPtr:596		return rewriteValue_OpEqPtr(v)597	case ssaop.OpFMA:598		return rewriteValue_OpFMA(v)599	case ssaop.OpGetCallerPC:600		v.Op = ssaop.OpARMLoweredGetCallerPC601		return true602	case ssaop.OpGetCallerSP:603		v.Op = ssaop.OpARMLoweredGetCallerSP604		return true605	case ssaop.OpGetClosurePtr:606		v.Op = ssaop.OpARMLoweredGetClosurePtr607		return true608	case ssaop.OpHmul32:609		v.Op = ssaop.OpARMHMUL610		return true611	case ssaop.OpHmul32u:612		v.Op = ssaop.OpARMHMULU613		return true614	case ssaop.OpInterCall:615		v.Op = ssaop.OpARMCALLinter616		return true617	case ssaop.OpIsInBounds:618		return rewriteValue_OpIsInBounds(v)619	case ssaop.OpIsNonNil:620		return rewriteValue_OpIsNonNil(v)621	case ssaop.OpIsSliceInBounds:622		return rewriteValue_OpIsSliceInBounds(v)623	case ssaop.OpLeq16:624		return rewriteValue_OpLeq16(v)625	case ssaop.OpLeq16U:626		return rewriteValue_OpLeq16U(v)627	case ssaop.OpLeq32:628		return rewriteValue_OpLeq32(v)629	case ssaop.OpLeq32F:630		return rewriteValue_OpLeq32F(v)631	case ssaop.OpLeq32U:632		return rewriteValue_OpLeq32U(v)633	case ssaop.OpLeq64F:634		return rewriteValue_OpLeq64F(v)635	case ssaop.OpLeq8:636		return rewriteValue_OpLeq8(v)637	case ssaop.OpLeq8U:638		return rewriteValue_OpLeq8U(v)639	case ssaop.OpLess16:640		return rewriteValue_OpLess16(v)641	case ssaop.OpLess16U:642		return rewriteValue_OpLess16U(v)643	case ssaop.OpLess32:644		return rewriteValue_OpLess32(v)645	case ssaop.OpLess32F:646		return rewriteValue_OpLess32F(v)647	case ssaop.OpLess32U:648		return rewriteValue_OpLess32U(v)649	case ssaop.OpLess64F:650		return rewriteValue_OpLess64F(v)651	case ssaop.OpLess8:652		return rewriteValue_OpLess8(v)653	case ssaop.OpLess8U:654		return rewriteValue_OpLess8U(v)655	case ssaop.OpLoad:656		return rewriteValue_OpLoad(v)657	case ssaop.OpLocalAddr:658		return rewriteValue_OpLocalAddr(v)659	case ssaop.OpLsh16x16:660		return rewriteValue_OpLsh16x16(v)661	case ssaop.OpLsh16x32:662		return rewriteValue_OpLsh16x32(v)663	case ssaop.OpLsh16x64:664		return rewriteValue_OpLsh16x64(v)665	case ssaop.OpLsh16x8:666		return rewriteValue_OpLsh16x8(v)667	case ssaop.OpLsh32x16:668		return rewriteValue_OpLsh32x16(v)669	case ssaop.OpLsh32x32:670		return rewriteValue_OpLsh32x32(v)671	case ssaop.OpLsh32x64:672		return rewriteValue_OpLsh32x64(v)673	case ssaop.OpLsh32x8:674		return rewriteValue_OpLsh32x8(v)675	case ssaop.OpLsh8x16:676		return rewriteValue_OpLsh8x16(v)677	case ssaop.OpLsh8x32:678		return rewriteValue_OpLsh8x32(v)679	case ssaop.OpLsh8x64:680		return rewriteValue_OpLsh8x64(v)681	case ssaop.OpLsh8x8:682		return rewriteValue_OpLsh8x8(v)683	case ssaop.OpMod16:684		return rewriteValue_OpMod16(v)685	case ssaop.OpMod16u:686		return rewriteValue_OpMod16u(v)687	case ssaop.OpMod32:688		return rewriteValue_OpMod32(v)689	case ssaop.OpMod32u:690		return rewriteValue_OpMod32u(v)691	case ssaop.OpMod8:692		return rewriteValue_OpMod8(v)693	case ssaop.OpMod8u:694		return rewriteValue_OpMod8u(v)695	case ssaop.OpMove:696		return rewriteValue_OpMove(v)697	case ssaop.OpMul16:698		v.Op = ssaop.OpARMMUL699		return true700	case ssaop.OpMul32:701		v.Op = ssaop.OpARMMUL702		return true703	case ssaop.OpMul32F:704		v.Op = ssaop.OpARMMULF705		return true706	case ssaop.OpMul32uhilo:707		v.Op = ssaop.OpARMMULLU708		return true709	case ssaop.OpMul64F:710		v.Op = ssaop.OpARMMULD711		return true712	case ssaop.OpMul8:713		v.Op = ssaop.OpARMMUL714		return true715	case ssaop.OpNeg16:716		return rewriteValue_OpNeg16(v)717	case ssaop.OpNeg32:718		return rewriteValue_OpNeg32(v)719	case ssaop.OpNeg32F:720		v.Op = ssaop.OpARMNEGF721		return true722	case ssaop.OpNeg64F:723		v.Op = ssaop.OpARMNEGD724		return true725	case ssaop.OpNeg8:726		return rewriteValue_OpNeg8(v)727	case ssaop.OpNeq16:728		return rewriteValue_OpNeq16(v)729	case ssaop.OpNeq32:730		return rewriteValue_OpNeq32(v)731	case ssaop.OpNeq32F:732		return rewriteValue_OpNeq32F(v)733	case ssaop.OpNeq64F:734		return rewriteValue_OpNeq64F(v)735	case ssaop.OpNeq8:736		return rewriteValue_OpNeq8(v)737	case ssaop.OpNeqB:738		v.Op = ssaop.OpARMXOR739		return true740	case ssaop.OpNeqPtr:741		return rewriteValue_OpNeqPtr(v)742	case ssaop.OpNilCheck:743		v.Op = ssaop.OpARMLoweredNilCheck744		return true745	case ssaop.OpNot:746		return rewriteValue_OpNot(v)747	case ssaop.OpOffPtr:748		return rewriteValue_OpOffPtr(v)749	case ssaop.OpOr16:750		v.Op = ssaop.OpARMOR751		return true752	case ssaop.OpOr32:753		v.Op = ssaop.OpARMOR754		return true755	case ssaop.OpOr8:756		v.Op = ssaop.OpARMOR757		return true758	case ssaop.OpOrB:759		v.Op = ssaop.OpARMOR760		return true761	case ssaop.OpPanicBounds:762		v.Op = ssaop.OpARMLoweredPanicBoundsRR763		return true764	case ssaop.OpPanicExtend:765		v.Op = ssaop.OpARMLoweredPanicExtendRR766		return true767	case ssaop.OpRotateLeft16:768		return rewriteValue_OpRotateLeft16(v)769	case ssaop.OpRotateLeft32:770		return rewriteValue_OpRotateLeft32(v)771	case ssaop.OpRotateLeft8:772		return rewriteValue_OpRotateLeft8(v)773	case ssaop.OpRound32F:774		v.Op = ssaop.OpCopy775		return true776	case ssaop.OpRound64F:777		v.Op = ssaop.OpCopy778		return true779	case ssaop.OpRsh16Ux16:780		return rewriteValue_OpRsh16Ux16(v)781	case ssaop.OpRsh16Ux32:782		return rewriteValue_OpRsh16Ux32(v)783	case ssaop.OpRsh16Ux64:784		return rewriteValue_OpRsh16Ux64(v)785	case ssaop.OpRsh16Ux8:786		return rewriteValue_OpRsh16Ux8(v)787	case ssaop.OpRsh16x16:788		return rewriteValue_OpRsh16x16(v)789	case ssaop.OpRsh16x32:790		return rewriteValue_OpRsh16x32(v)791	case ssaop.OpRsh16x64:792		return rewriteValue_OpRsh16x64(v)793	case ssaop.OpRsh16x8:794		return rewriteValue_OpRsh16x8(v)795	case ssaop.OpRsh32Ux16:796		return rewriteValue_OpRsh32Ux16(v)797	case ssaop.OpRsh32Ux32:798		return rewriteValue_OpRsh32Ux32(v)799	case ssaop.OpRsh32Ux64:800		return rewriteValue_OpRsh32Ux64(v)801	case ssaop.OpRsh32Ux8:802		return rewriteValue_OpRsh32Ux8(v)803	case ssaop.OpRsh32x16:804		return rewriteValue_OpRsh32x16(v)805	case ssaop.OpRsh32x32:806		return rewriteValue_OpRsh32x32(v)807	case ssaop.OpRsh32x64:808		return rewriteValue_OpRsh32x64(v)809	case ssaop.OpRsh32x8:810		return rewriteValue_OpRsh32x8(v)811	case ssaop.OpRsh8Ux16:812		return rewriteValue_OpRsh8Ux16(v)813	case ssaop.OpRsh8Ux32:814		return rewriteValue_OpRsh8Ux32(v)815	case ssaop.OpRsh8Ux64:816		return rewriteValue_OpRsh8Ux64(v)817	case ssaop.OpRsh8Ux8:818		return rewriteValue_OpRsh8Ux8(v)819	case ssaop.OpRsh8x16:820		return rewriteValue_OpRsh8x16(v)821	case ssaop.OpRsh8x32:822		return rewriteValue_OpRsh8x32(v)823	case ssaop.OpRsh8x64:824		return rewriteValue_OpRsh8x64(v)825	case ssaop.OpRsh8x8:826		return rewriteValue_OpRsh8x8(v)827	case ssaop.OpSelect0:828		return rewriteValue_OpSelect0(v)829	case ssaop.OpSelect1:830		return rewriteValue_OpSelect1(v)831	case ssaop.OpSignExt16to32:832		v.Op = ssaop.OpARMMOVHreg833		return true834	case ssaop.OpSignExt8to16:835		v.Op = ssaop.OpARMMOVBreg836		return true837	case ssaop.OpSignExt8to32:838		v.Op = ssaop.OpARMMOVBreg839		return true840	case ssaop.OpSignmask:841		return rewriteValue_OpSignmask(v)842	case ssaop.OpSlicemask:843		return rewriteValue_OpSlicemask(v)844	case ssaop.OpSqrt:845		v.Op = ssaop.OpARMSQRTD846		return true847	case ssaop.OpSqrt32:848		v.Op = ssaop.OpARMSQRTF849		return true850	case ssaop.OpStaticCall:851		v.Op = ssaop.OpARMCALLstatic852		return true853	case ssaop.OpStore:854		return rewriteValue_OpStore(v)855	case ssaop.OpSub16:856		v.Op = ssaop.OpARMSUB857		return true858	case ssaop.OpSub32:859		v.Op = ssaop.OpARMSUB860		return true861	case ssaop.OpSub32F:862		v.Op = ssaop.OpARMSUBF863		return true864	case ssaop.OpSub32carry:865		v.Op = ssaop.OpARMSUBS866		return true867	case ssaop.OpSub32withcarry:868		v.Op = ssaop.OpARMSBC869		return true870	case ssaop.OpSub64F:871		v.Op = ssaop.OpARMSUBD872		return true873	case ssaop.OpSub8:874		v.Op = ssaop.OpARMSUB875		return true876	case ssaop.OpSubPtr:877		v.Op = ssaop.OpARMSUB878		return true879	case ssaop.OpTailCall:880		v.Op = ssaop.OpARMCALLtail881		return true882	case ssaop.OpTailCallInter:883		v.Op = ssaop.OpARMCALLtailinter884		return true885	case ssaop.OpTrunc16to8:886		v.Op = ssaop.OpCopy887		return true888	case ssaop.OpTrunc32to16:889		v.Op = ssaop.OpCopy890		return true891	case ssaop.OpTrunc32to8:892		v.Op = ssaop.OpCopy893		return true894	case ssaop.OpWB:895		v.Op = ssaop.OpARMLoweredWB896		return true897	case ssaop.OpXor16:898		v.Op = ssaop.OpARMXOR899		return true900	case ssaop.OpXor32:901		v.Op = ssaop.OpARMXOR902		return true903	case ssaop.OpXor8:904		v.Op = ssaop.OpARMXOR905		return true906	case ssaop.OpZero:907		return rewriteValue_OpZero(v)908	case ssaop.OpZeroExt16to32:909		v.Op = ssaop.OpARMMOVHUreg910		return true911	case ssaop.OpZeroExt8to16:912		v.Op = ssaop.OpARMMOVBUreg913		return true914	case ssaop.OpZeroExt8to32:915		v.Op = ssaop.OpARMMOVBUreg916		return true917	case ssaop.OpZeromask:918		return rewriteValue_OpZeromask(v)919	}920	return false921}922func rewriteValue_OpARMADC(v *ssa.Value) bool {923	v_2 := v.Args[2]924	v_1 := v.Args[1]925	v_0 := v.Args[0]926	// match: (ADC (MOVWconst [c]) x flags)927	// result: (ADCconst [c] x flags)928	for {929		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {930			if v_0.Op != ssaop.OpARMMOVWconst {931				continue932			}933			c := ssa.AuxIntToInt32(v_0.AuxInt)934			x := v_1935			flags := v_2936			v.Reset(ssaop.OpARMADCconst)937			v.AuxInt = ssa.Int32ToAuxInt(c)938			v.AddArg2(x, flags)939			return true940		}941		break942	}943	// match: (ADC x (SLLconst [c] y) flags)944	// result: (ADCshiftLL x y [c] flags)945	for {946		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {947			x := v_0948			if v_1.Op != ssaop.OpARMSLLconst {949				continue950			}951			c := ssa.AuxIntToInt32(v_1.AuxInt)952			y := v_1.Args[0]953			flags := v_2954			v.Reset(ssaop.OpARMADCshiftLL)955			v.AuxInt = ssa.Int32ToAuxInt(c)956			v.AddArg3(x, y, flags)957			return true958		}959		break960	}961	// match: (ADC x (SRLconst [c] y) flags)962	// result: (ADCshiftRL x y [c] flags)963	for {964		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {965			x := v_0966			if v_1.Op != ssaop.OpARMSRLconst {967				continue968			}969			c := ssa.AuxIntToInt32(v_1.AuxInt)970			y := v_1.Args[0]971			flags := v_2972			v.Reset(ssaop.OpARMADCshiftRL)973			v.AuxInt = ssa.Int32ToAuxInt(c)974			v.AddArg3(x, y, flags)975			return true976		}977		break978	}979	// match: (ADC x (SRAconst [c] y) flags)980	// result: (ADCshiftRA x y [c] flags)981	for {982		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {983			x := v_0984			if v_1.Op != ssaop.OpARMSRAconst {985				continue986			}987			c := ssa.AuxIntToInt32(v_1.AuxInt)988			y := v_1.Args[0]989			flags := v_2990			v.Reset(ssaop.OpARMADCshiftRA)991			v.AuxInt = ssa.Int32ToAuxInt(c)992			v.AddArg3(x, y, flags)993			return true994		}995		break996	}997	// match: (ADC x (SLL y z) flags)998	// result: (ADCshiftLLreg x y z flags)999	for {1000		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1001			x := v_01002			if v_1.Op != ssaop.OpARMSLL {1003				continue1004			}1005			z := v_1.Args[1]1006			y := v_1.Args[0]1007			flags := v_21008			v.Reset(ssaop.OpARMADCshiftLLreg)1009			v.AddArg4(x, y, z, flags)1010			return true1011		}1012		break1013	}1014	// match: (ADC x (SRL y z) flags)1015	// result: (ADCshiftRLreg x y z flags)1016	for {1017		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1018			x := v_01019			if v_1.Op != ssaop.OpARMSRL {1020				continue1021			}1022			z := v_1.Args[1]1023			y := v_1.Args[0]1024			flags := v_21025			v.Reset(ssaop.OpARMADCshiftRLreg)1026			v.AddArg4(x, y, z, flags)1027			return true1028		}1029		break1030	}1031	// match: (ADC x (SRA y z) flags)1032	// result: (ADCshiftRAreg x y z flags)1033	for {1034		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1035			x := v_01036			if v_1.Op != ssaop.OpARMSRA {1037				continue1038			}1039			z := v_1.Args[1]1040			y := v_1.Args[0]1041			flags := v_21042			v.Reset(ssaop.OpARMADCshiftRAreg)1043			v.AddArg4(x, y, z, flags)1044			return true1045		}1046		break1047	}1048	return false1049}1050func rewriteValue_OpARMADCconst(v *ssa.Value) bool {1051	v_1 := v.Args[1]1052	v_0 := v.Args[0]1053	// match: (ADCconst [c] (ADDconst [d] x) flags)1054	// result: (ADCconst [c+d] x flags)1055	for {1056		c := ssa.AuxIntToInt32(v.AuxInt)1057		if v_0.Op != ssaop.OpARMADDconst {1058			break1059		}1060		d := ssa.AuxIntToInt32(v_0.AuxInt)1061		x := v_0.Args[0]1062		flags := v_11063		v.Reset(ssaop.OpARMADCconst)1064		v.AuxInt = ssa.Int32ToAuxInt(c + d)1065		v.AddArg2(x, flags)1066		return true1067	}1068	// match: (ADCconst [c] (SUBconst [d] x) flags)1069	// result: (ADCconst [c-d] x flags)1070	for {1071		c := ssa.AuxIntToInt32(v.AuxInt)1072		if v_0.Op != ssaop.OpARMSUBconst {1073			break1074		}1075		d := ssa.AuxIntToInt32(v_0.AuxInt)1076		x := v_0.Args[0]1077		flags := v_11078		v.Reset(ssaop.OpARMADCconst)1079		v.AuxInt = ssa.Int32ToAuxInt(c - d)1080		v.AddArg2(x, flags)1081		return true1082	}1083	return false1084}1085func rewriteValue_OpARMADCshiftLL(v *ssa.Value) bool {1086	v_2 := v.Args[2]1087	v_1 := v.Args[1]1088	v_0 := v.Args[0]1089	b := v.Block1090	// match: (ADCshiftLL (MOVWconst [c]) x [d] flags)1091	// result: (ADCconst [c] (SLLconst <x.Type> x [d]) flags)1092	for {1093		d := ssa.AuxIntToInt32(v.AuxInt)1094		if v_0.Op != ssaop.OpARMMOVWconst {1095			break1096		}1097		c := ssa.AuxIntToInt32(v_0.AuxInt)1098		x := v_11099		flags := v_21100		v.Reset(ssaop.OpARMADCconst)1101		v.AuxInt = ssa.Int32ToAuxInt(c)1102		v0 := b.NewValue0(v.Pos, ssaop.OpARMSLLconst, x.Type)1103		v0.AuxInt = ssa.Int32ToAuxInt(d)1104		v0.AddArg(x)1105		v.AddArg2(v0, flags)1106		return true1107	}1108	// match: (ADCshiftLL x (MOVWconst [c]) [d] flags)1109	// result: (ADCconst x [c<<uint64(d)] flags)1110	for {1111		d := ssa.AuxIntToInt32(v.AuxInt)1112		x := v_01113		if v_1.Op != ssaop.OpARMMOVWconst {1114			break1115		}1116		c := ssa.AuxIntToInt32(v_1.AuxInt)1117		flags := v_21118		v.Reset(ssaop.OpARMADCconst)1119		v.AuxInt = ssa.Int32ToAuxInt(c << uint64(d))1120		v.AddArg2(x, flags)1121		return true1122	}1123	return false1124}1125func rewriteValue_OpARMADCshiftLLreg(v *ssa.Value) bool {1126	v_3 := v.Args[3]1127	v_2 := v.Args[2]1128	v_1 := v.Args[1]1129	v_0 := v.Args[0]1130	b := v.Block1131	// match: (ADCshiftLLreg (MOVWconst [c]) x y flags)1132	// result: (ADCconst [c] (SLL <x.Type> x y) flags)1133	for {1134		if v_0.Op != ssaop.OpARMMOVWconst {1135			break1136		}1137		c := ssa.AuxIntToInt32(v_0.AuxInt)1138		x := v_11139		y := v_21140		flags := v_31141		v.Reset(ssaop.OpARMADCconst)1142		v.AuxInt = ssa.Int32ToAuxInt(c)1143		v0 := b.NewValue0(v.Pos, ssaop.OpARMSLL, x.Type)1144		v0.AddArg2(x, y)1145		v.AddArg2(v0, flags)1146		return true1147	}1148	// match: (ADCshiftLLreg x y (MOVWconst [c]) flags)1149	// cond: 0 <= c && c < 321150	// result: (ADCshiftLL x y [c] flags)1151	for {1152		x := v_01153		y := v_11154		if v_2.Op != ssaop.OpARMMOVWconst {1155			break1156		}1157		c := ssa.AuxIntToInt32(v_2.AuxInt)1158		flags := v_31159		if !(0 <= c && c < 32) {1160			break1161		}1162		v.Reset(ssaop.OpARMADCshiftLL)1163		v.AuxInt = ssa.Int32ToAuxInt(c)1164		v.AddArg3(x, y, flags)1165		return true1166	}1167	return false1168}1169func rewriteValue_OpARMADCshiftRA(v *ssa.Value) bool {1170	v_2 := v.Args[2]1171	v_1 := v.Args[1]1172	v_0 := v.Args[0]1173	b := v.Block1174	// match: (ADCshiftRA (MOVWconst [c]) x [d] flags)1175	// result: (ADCconst [c] (SRAconst <x.Type> x [d]) flags)1176	for {1177		d := ssa.AuxIntToInt32(v.AuxInt)1178		if v_0.Op != ssaop.OpARMMOVWconst {1179			break1180		}1181		c := ssa.AuxIntToInt32(v_0.AuxInt)1182		x := v_11183		flags := v_21184		v.Reset(ssaop.OpARMADCconst)1185		v.AuxInt = ssa.Int32ToAuxInt(c)1186		v0 := b.NewValue0(v.Pos, ssaop.OpARMSRAconst, x.Type)1187		v0.AuxInt = ssa.Int32ToAuxInt(d)1188		v0.AddArg(x)1189		v.AddArg2(v0, flags)1190		return true1191	}1192	// match: (ADCshiftRA x (MOVWconst [c]) [d] flags)1193	// result: (ADCconst x [c>>uint64(d)] flags)1194	for {1195		d := ssa.AuxIntToInt32(v.AuxInt)1196		x := v_01197		if v_1.Op != ssaop.OpARMMOVWconst {1198			break1199		}1200		c := ssa.AuxIntToInt32(v_1.AuxInt)1201		flags := v_21202		v.Reset(ssaop.OpARMADCconst)1203		v.AuxInt = ssa.Int32ToAuxInt(c >> uint64(d))1204		v.AddArg2(x, flags)1205		return true1206	}1207	return false1208}1209func rewriteValue_OpARMADCshiftRAreg(v *ssa.Value) bool {1210	v_3 := v.Args[3]1211	v_2 := v.Args[2]1212	v_1 := v.Args[1]1213	v_0 := v.Args[0]1214	b := v.Block1215	// match: (ADCshiftRAreg (MOVWconst [c]) x y flags)1216	// result: (ADCconst [c] (SRA <x.Type> x y) flags)1217	for {1218		if v_0.Op != ssaop.OpARMMOVWconst {1219			break1220		}1221		c := ssa.AuxIntToInt32(v_0.AuxInt)1222		x := v_11223		y := v_21224		flags := v_31225		v.Reset(ssaop.OpARMADCconst)1226		v.AuxInt = ssa.Int32ToAuxInt(c)1227		v0 := b.NewValue0(v.Pos, ssaop.OpARMSRA, x.Type)1228		v0.AddArg2(x, y)1229		v.AddArg2(v0, flags)1230		return true1231	}1232	// match: (ADCshiftRAreg x y (MOVWconst [c]) flags)1233	// cond: 0 <= c && c < 321234	// result: (ADCshiftRA x y [c] flags)1235	for {1236		x := v_01237		y := v_11238		if v_2.Op != ssaop.OpARMMOVWconst {1239			break1240		}1241		c := ssa.AuxIntToInt32(v_2.AuxInt)1242		flags := v_31243		if !(0 <= c && c < 32) {1244			break1245		}1246		v.Reset(ssaop.OpARMADCshiftRA)1247		v.AuxInt = ssa.Int32ToAuxInt(c)1248		v.AddArg3(x, y, flags)1249		return true1250	}1251	return false1252}1253func rewriteValue_OpARMADCshiftRL(v *ssa.Value) bool {1254	v_2 := v.Args[2]1255	v_1 := v.Args[1]1256	v_0 := v.Args[0]1257	b := v.Block1258	// match: (ADCshiftRL (MOVWconst [c]) x [d] flags)1259	// result: (ADCconst [c] (SRLconst <x.Type> x [d]) flags)1260	for {1261		d := ssa.AuxIntToInt32(v.AuxInt)1262		if v_0.Op != ssaop.OpARMMOVWconst {1263			break1264		}1265		c := ssa.AuxIntToInt32(v_0.AuxInt)1266		x := v_11267		flags := v_21268		v.Reset(ssaop.OpARMADCconst)1269		v.AuxInt = ssa.Int32ToAuxInt(c)1270		v0 := b.NewValue0(v.Pos, ssaop.OpARMSRLconst, x.Type)1271		v0.AuxInt = ssa.Int32ToAuxInt(d)1272		v0.AddArg(x)1273		v.AddArg2(v0, flags)1274		return true1275	}1276	// match: (ADCshiftRL x (MOVWconst [c]) [d] flags)1277	// result: (ADCconst x [int32(uint32(c)>>uint64(d))] flags)1278	for {1279		d := ssa.AuxIntToInt32(v.AuxInt)1280		x := v_01281		if v_1.Op != ssaop.OpARMMOVWconst {1282			break1283		}1284		c := ssa.AuxIntToInt32(v_1.AuxInt)1285		flags := v_21286		v.Reset(ssaop.OpARMADCconst)1287		v.AuxInt = ssa.Int32ToAuxInt(int32(uint32(c) >> uint64(d)))1288		v.AddArg2(x, flags)1289		return true1290	}1291	return false1292}1293func rewriteValue_OpARMADCshiftRLreg(v *ssa.Value) bool {1294	v_3 := v.Args[3]1295	v_2 := v.Args[2]1296	v_1 := v.Args[1]1297	v_0 := v.Args[0]1298	b := v.Block1299	// match: (ADCshiftRLreg (MOVWconst [c]) x y flags)1300	// result: (ADCconst [c] (SRL <x.Type> x y) flags)1301	for {1302		if v_0.Op != ssaop.OpARMMOVWconst {1303			break1304		}1305		c := ssa.AuxIntToInt32(v_0.AuxInt)1306		x := v_11307		y := v_21308		flags := v_31309		v.Reset(ssaop.OpARMADCconst)1310		v.AuxInt = ssa.Int32ToAuxInt(c)1311		v0 := b.NewValue0(v.Pos, ssaop.OpARMSRL, x.Type)1312		v0.AddArg2(x, y)1313		v.AddArg2(v0, flags)1314		return true1315	}1316	// match: (ADCshiftRLreg x y (MOVWconst [c]) flags)1317	// cond: 0 <= c && c < 321318	// result: (ADCshiftRL x y [c] flags)1319	for {1320		x := v_01321		y := v_11322		if v_2.Op != ssaop.OpARMMOVWconst {1323			break1324		}1325		c := ssa.AuxIntToInt32(v_2.AuxInt)1326		flags := v_31327		if !(0 <= c && c < 32) {1328			break1329		}1330		v.Reset(ssaop.OpARMADCshiftRL)1331		v.AuxInt = ssa.Int32ToAuxInt(c)1332		v.AddArg3(x, y, flags)1333		return true1334	}1335	return false1336}1337func rewriteValue_OpARMADD(v *ssa.Value) bool {1338	v_1 := v.Args[1]1339	v_0 := v.Args[0]1340	b := v.Block1341	// match: (ADD x (MOVWconst <t> [c]))1342	// cond: !t.IsPtr()1343	// result: (ADDconst [c] x)1344	for {1345		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1346			x := v_01347			if v_1.Op != ssaop.OpARMMOVWconst {1348				continue1349			}1350			t := v_1.Type1351			c := ssa.AuxIntToInt32(v_1.AuxInt)1352			if !(!t.IsPtr()) {1353				continue1354			}1355			v.Reset(ssaop.OpARMADDconst)1356			v.AuxInt = ssa.Int32ToAuxInt(c)1357			v.AddArg(x)1358			return true1359		}1360		break1361	}1362	// match: (ADD x (SLLconst [c] y))1363	// result: (ADDshiftLL x y [c])1364	for {1365		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1366			x := v_01367			if v_1.Op != ssaop.OpARMSLLconst {1368				continue1369			}1370			c := ssa.AuxIntToInt32(v_1.AuxInt)1371			y := v_1.Args[0]1372			v.Reset(ssaop.OpARMADDshiftLL)1373			v.AuxInt = ssa.Int32ToAuxInt(c)1374			v.AddArg2(x, y)1375			return true1376		}1377		break1378	}1379	// match: (ADD x (SRLconst [c] y))1380	// result: (ADDshiftRL x y [c])1381	for {1382		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1383			x := v_01384			if v_1.Op != ssaop.OpARMSRLconst {1385				continue1386			}1387			c := ssa.AuxIntToInt32(v_1.AuxInt)1388			y := v_1.Args[0]1389			v.Reset(ssaop.OpARMADDshiftRL)1390			v.AuxInt = ssa.Int32ToAuxInt(c)1391			v.AddArg2(x, y)1392			return true1393		}1394		break1395	}1396	// match: (ADD x (SRAconst [c] y))1397	// result: (ADDshiftRA x y [c])1398	for {1399		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1400			x := v_01401			if v_1.Op != ssaop.OpARMSRAconst {1402				continue1403			}1404			c := ssa.AuxIntToInt32(v_1.AuxInt)1405			y := v_1.Args[0]1406			v.Reset(ssaop.OpARMADDshiftRA)1407			v.AuxInt = ssa.Int32ToAuxInt(c)1408			v.AddArg2(x, y)1409			return true1410		}1411		break1412	}1413	// match: (ADD x (SLL y z))1414	// result: (ADDshiftLLreg x y z)1415	for {1416		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1417			x := v_01418			if v_1.Op != ssaop.OpARMSLL {1419				continue1420			}1421			z := v_1.Args[1]1422			y := v_1.Args[0]1423			v.Reset(ssaop.OpARMADDshiftLLreg)1424			v.AddArg3(x, y, z)1425			return true1426		}1427		break1428	}1429	// match: (ADD x (SRL y z))1430	// result: (ADDshiftRLreg x y z)1431	for {1432		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1433			x := v_01434			if v_1.Op != ssaop.OpARMSRL {1435				continue1436			}1437			z := v_1.Args[1]1438			y := v_1.Args[0]1439			v.Reset(ssaop.OpARMADDshiftRLreg)1440			v.AddArg3(x, y, z)1441			return true1442		}1443		break1444	}1445	// match: (ADD x (SRA y z))1446	// result: (ADDshiftRAreg x y z)1447	for {1448		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1449			x := v_01450			if v_1.Op != ssaop.OpARMSRA {1451				continue1452			}1453			z := v_1.Args[1]1454			y := v_1.Args[0]1455			v.Reset(ssaop.OpARMADDshiftRAreg)1456			v.AddArg3(x, y, z)1457			return true1458		}1459		break1460	}1461	// match: (ADD x (RSBconst [0] y))1462	// result: (SUB x y)1463	for {1464		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1465			x := v_01466			if v_1.Op != ssaop.OpARMRSBconst || ssa.AuxIntToInt32(v_1.AuxInt) != 0 {1467				continue1468			}1469			y := v_1.Args[0]1470			v.Reset(ssaop.OpARMSUB)1471			v.AddArg2(x, y)1472			return true1473		}1474		break1475	}1476	// match: (ADD <t> (RSBconst [c] x) (RSBconst [d] y))1477	// result: (RSBconst [c+d] (ADD <t> x y))1478	for {1479		t := v.Type1480		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1481			if v_0.Op != ssaop.OpARMRSBconst {1482				continue1483			}1484			c := ssa.AuxIntToInt32(v_0.AuxInt)1485			x := v_0.Args[0]1486			if v_1.Op != ssaop.OpARMRSBconst {1487				continue1488			}1489			d := ssa.AuxIntToInt32(v_1.AuxInt)1490			y := v_1.Args[0]1491			v.Reset(ssaop.OpARMRSBconst)1492			v.AuxInt = ssa.Int32ToAuxInt(c + d)1493			v0 := b.NewValue0(v.Pos, ssaop.OpARMADD, t)1494			v0.AddArg2(x, y)1495			v.AddArg(v0)1496			return true1497		}1498		break1499	}1500	// match: (ADD (MUL x y) a)1501	// result: (MULA x y a)1502	for {1503		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1504			if v_0.Op != ssaop.OpARMMUL {1505				continue1506			}1507			y := v_0.Args[1]1508			x := v_0.Args[0]1509			a := v_11510			v.Reset(ssaop.OpARMMULA)1511			v.AddArg3(x, y, a)1512			return true1513		}1514		break1515	}1516	return false1517}1518func rewriteValue_OpARMADDD(v *ssa.Value) bool {1519	v_1 := v.Args[1]1520	v_0 := v.Args[0]1521	// match: (ADDD a (MULD x y))1522	// cond: a.Uses == 1 && buildcfg.GOARM.Version >= 61523	// result: (MULAD a x y)1524	for {1525		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1526			a := v_01527			if v_1.Op != ssaop.OpARMMULD {1528				continue1529			}1530			y := v_1.Args[1]1531			x := v_1.Args[0]1532			if !(a.Uses == 1 && buildcfg.GOARM.Version >= 6) {1533				continue1534			}1535			v.Reset(ssaop.OpARMMULAD)1536			v.AddArg3(a, x, y)1537			return true1538		}1539		break1540	}1541	// match: (ADDD a (NMULD x y))1542	// cond: a.Uses == 1 && buildcfg.GOARM.Version >= 61543	// result: (MULSD a x y)1544	for {1545		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1546			a := v_01547			if v_1.Op != ssaop.OpARMNMULD {1548				continue1549			}1550			y := v_1.Args[1]1551			x := v_1.Args[0]1552			if !(a.Uses == 1 && buildcfg.GOARM.Version >= 6) {1553				continue1554			}1555			v.Reset(ssaop.OpARMMULSD)1556			v.AddArg3(a, x, y)1557			return true1558		}1559		break1560	}1561	return false1562}1563func rewriteValue_OpARMADDF(v *ssa.Value) bool {1564	v_1 := v.Args[1]1565	v_0 := v.Args[0]1566	// match: (ADDF a (MULF x y))1567	// cond: a.Uses == 1 && buildcfg.GOARM.Version >= 61568	// result: (MULAF a x y)1569	for {1570		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1571			a := v_01572			if v_1.Op != ssaop.OpARMMULF {1573				continue1574			}1575			y := v_1.Args[1]1576			x := v_1.Args[0]1577			if !(a.Uses == 1 && buildcfg.GOARM.Version >= 6) {1578				continue1579			}1580			v.Reset(ssaop.OpARMMULAF)1581			v.AddArg3(a, x, y)1582			return true1583		}1584		break1585	}1586	// match: (ADDF a (NMULF x y))1587	// cond: a.Uses == 1 && buildcfg.GOARM.Version >= 61588	// result: (MULSF a x y)1589	for {1590		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1591			a := v_01592			if v_1.Op != ssaop.OpARMNMULF {1593				continue1594			}1595			y := v_1.Args[1]1596			x := v_1.Args[0]1597			if !(a.Uses == 1 && buildcfg.GOARM.Version >= 6) {1598				continue1599			}1600			v.Reset(ssaop.OpARMMULSF)1601			v.AddArg3(a, x, y)1602			return true1603		}1604		break1605	}1606	return false1607}1608func rewriteValue_OpARMADDS(v *ssa.Value) bool {1609	v_1 := v.Args[1]1610	v_0 := v.Args[0]1611	// match: (ADDS x (MOVWconst [c]))1612	// result: (ADDSconst [c] x)1613	for {1614		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1615			x := v_01616			if v_1.Op != ssaop.OpARMMOVWconst {1617				continue1618			}1619			c := ssa.AuxIntToInt32(v_1.AuxInt)1620			v.Reset(ssaop.OpARMADDSconst)1621			v.AuxInt = ssa.Int32ToAuxInt(c)1622			v.AddArg(x)1623			return true1624		}1625		break1626	}1627	// match: (ADDS x (SLLconst [c] y))1628	// result: (ADDSshiftLL x y [c])1629	for {1630		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1631			x := v_01632			if v_1.Op != ssaop.OpARMSLLconst {1633				continue1634			}1635			c := ssa.AuxIntToInt32(v_1.AuxInt)1636			y := v_1.Args[0]1637			v.Reset(ssaop.OpARMADDSshiftLL)1638			v.AuxInt = ssa.Int32ToAuxInt(c)1639			v.AddArg2(x, y)1640			return true1641		}1642		break1643	}1644	// match: (ADDS x (SRLconst [c] y))1645	// result: (ADDSshiftRL x y [c])1646	for {1647		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1648			x := v_01649			if v_1.Op != ssaop.OpARMSRLconst {1650				continue1651			}1652			c := ssa.AuxIntToInt32(v_1.AuxInt)1653			y := v_1.Args[0]1654			v.Reset(ssaop.OpARMADDSshiftRL)1655			v.AuxInt = ssa.Int32ToAuxInt(c)1656			v.AddArg2(x, y)1657			return true1658		}1659		break1660	}1661	// match: (ADDS x (SRAconst [c] y))1662	// result: (ADDSshiftRA x y [c])1663	for {1664		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1665			x := v_01666			if v_1.Op != ssaop.OpARMSRAconst {1667				continue1668			}1669			c := ssa.AuxIntToInt32(v_1.AuxInt)1670			y := v_1.Args[0]1671			v.Reset(ssaop.OpARMADDSshiftRA)1672			v.AuxInt = ssa.Int32ToAuxInt(c)1673			v.AddArg2(x, y)1674			return true1675		}1676		break1677	}1678	// match: (ADDS x (SLL y z))1679	// result: (ADDSshiftLLreg x y z)1680	for {1681		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1682			x := v_01683			if v_1.Op != ssaop.OpARMSLL {1684				continue1685			}1686			z := v_1.Args[1]1687			y := v_1.Args[0]1688			v.Reset(ssaop.OpARMADDSshiftLLreg)1689			v.AddArg3(x, y, z)1690			return true1691		}1692		break1693	}1694	// match: (ADDS x (SRL y z))1695	// result: (ADDSshiftRLreg x y z)1696	for {1697		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1698			x := v_01699			if v_1.Op != ssaop.OpARMSRL {1700				continue1701			}1702			z := v_1.Args[1]1703			y := v_1.Args[0]1704			v.Reset(ssaop.OpARMADDSshiftRLreg)1705			v.AddArg3(x, y, z)1706			return true1707		}1708		break1709	}1710	// match: (ADDS x (SRA y z))1711	// result: (ADDSshiftRAreg x y z)1712	for {1713		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1714			x := v_01715			if v_1.Op != ssaop.OpARMSRA {1716				continue1717			}1718			z := v_1.Args[1]1719			y := v_1.Args[0]1720			v.Reset(ssaop.OpARMADDSshiftRAreg)1721			v.AddArg3(x, y, z)1722			return true1723		}1724		break1725	}1726	return false1727}1728func rewriteValue_OpARMADDSshiftLL(v *ssa.Value) bool {1729	v_1 := v.Args[1]1730	v_0 := v.Args[0]1731	b := v.Block1732	// match: (ADDSshiftLL (MOVWconst [c]) x [d])1733	// result: (ADDSconst [c] (SLLconst <x.Type> x [d]))1734	for {1735		d := ssa.AuxIntToInt32(v.AuxInt)1736		if v_0.Op != ssaop.OpARMMOVWconst {1737			break1738		}1739		c := ssa.AuxIntToInt32(v_0.AuxInt)1740		x := v_11741		v.Reset(ssaop.OpARMADDSconst)1742		v.AuxInt = ssa.Int32ToAuxInt(c)1743		v0 := b.NewValue0(v.Pos, ssaop.OpARMSLLconst, x.Type)1744		v0.AuxInt = ssa.Int32ToAuxInt(d)1745		v0.AddArg(x)1746		v.AddArg(v0)1747		return true1748	}1749	// match: (ADDSshiftLL x (MOVWconst [c]) [d])1750	// result: (ADDSconst x [c<<uint64(d)])1751	for {1752		d := ssa.AuxIntToInt32(v.AuxInt)1753		x := v_01754		if v_1.Op != ssaop.OpARMMOVWconst {1755			break1756		}1757		c := ssa.AuxIntToInt32(v_1.AuxInt)1758		v.Reset(ssaop.OpARMADDSconst)1759		v.AuxInt = ssa.Int32ToAuxInt(c << uint64(d))1760		v.AddArg(x)1761		return true1762	}1763	return false1764}1765func rewriteValue_OpARMADDSshiftLLreg(v *ssa.Value) bool {1766	v_2 := v.Args[2]1767	v_1 := v.Args[1]1768	v_0 := v.Args[0]1769	b := v.Block1770	// match: (ADDSshiftLLreg (MOVWconst [c]) x y)1771	// result: (ADDSconst [c] (SLL <x.Type> x y))1772	for {1773		if v_0.Op != ssaop.OpARMMOVWconst {1774			break1775		}1776		c := ssa.AuxIntToInt32(v_0.AuxInt)1777		x := v_11778		y := v_21779		v.Reset(ssaop.OpARMADDSconst)1780		v.AuxInt = ssa.Int32ToAuxInt(c)1781		v0 := b.NewValue0(v.Pos, ssaop.OpARMSLL, x.Type)1782		v0.AddArg2(x, y)1783		v.AddArg(v0)1784		return true1785	}1786	// match: (ADDSshiftLLreg x y (MOVWconst [c]))1787	// cond: 0 <= c && c < 321788	// result: (ADDSshiftLL x y [c])1789	for {1790		x := v_01791		y := v_11792		if v_2.Op != ssaop.OpARMMOVWconst {1793			break1794		}1795		c := ssa.AuxIntToInt32(v_2.AuxInt)1796		if !(0 <= c && c < 32) {1797			break1798		}1799		v.Reset(ssaop.OpARMADDSshiftLL)1800		v.AuxInt = ssa.Int32ToAuxInt(c)1801		v.AddArg2(x, y)1802		return true1803	}1804	return false1805}1806func rewriteValue_OpARMADDSshiftRA(v *ssa.Value) bool {1807	v_1 := v.Args[1]1808	v_0 := v.Args[0]1809	b := v.Block1810	// match: (ADDSshiftRA (MOVWconst [c]) x [d])1811	// result: (ADDSconst [c] (SRAconst <x.Type> x [d]))1812	for {1813		d := ssa.AuxIntToInt32(v.AuxInt)1814		if v_0.Op != ssaop.OpARMMOVWconst {1815			break1816		}1817		c := ssa.AuxIntToInt32(v_0.AuxInt)1818		x := v_11819		v.Reset(ssaop.OpARMADDSconst)1820		v.AuxInt = ssa.Int32ToAuxInt(c)1821		v0 := b.NewValue0(v.Pos, ssaop.OpARMSRAconst, x.Type)1822		v0.AuxInt = ssa.Int32ToAuxInt(d)1823		v0.AddArg(x)1824		v.AddArg(v0)1825		return true1826	}1827	// match: (ADDSshiftRA x (MOVWconst [c]) [d])1828	// result: (ADDSconst x [c>>uint64(d)])1829	for {1830		d := ssa.AuxIntToInt32(v.AuxInt)1831		x := v_01832		if v_1.Op != ssaop.OpARMMOVWconst {1833			break1834		}1835		c := ssa.AuxIntToInt32(v_1.AuxInt)1836		v.Reset(ssaop.OpARMADDSconst)1837		v.AuxInt = ssa.Int32ToAuxInt(c >> uint64(d))1838		v.AddArg(x)1839		return true1840	}1841	return false1842}1843func rewriteValue_OpARMADDSshiftRAreg(v *ssa.Value) bool {1844	v_2 := v.Args[2]1845	v_1 := v.Args[1]1846	v_0 := v.Args[0]1847	b := v.Block1848	// match: (ADDSshiftRAreg (MOVWconst [c]) x y)1849	// result: (ADDSconst [c] (SRA <x.Type> x y))1850	for {1851		if v_0.Op != ssaop.OpARMMOVWconst {1852			break1853		}1854		c := ssa.AuxIntToInt32(v_0.AuxInt)1855		x := v_11856		y := v_21857		v.Reset(ssaop.OpARMADDSconst)1858		v.AuxInt = ssa.Int32ToAuxInt(c)1859		v0 := b.NewValue0(v.Pos, ssaop.OpARMSRA, x.Type)1860		v0.AddArg2(x, y)1861		v.AddArg(v0)1862		return true1863	}1864	// match: (ADDSshiftRAreg x y (MOVWconst [c]))1865	// cond: 0 <= c && c < 321866	// result: (ADDSshiftRA x y [c])1867	for {1868		x := v_01869		y := v_11870		if v_2.Op != ssaop.OpARMMOVWconst {1871			break1872		}1873		c := ssa.AuxIntToInt32(v_2.AuxInt)1874		if !(0 <= c && c < 32) {1875			break1876		}1877		v.Reset(ssaop.OpARMADDSshiftRA)1878		v.AuxInt = ssa.Int32ToAuxInt(c)1879		v.AddArg2(x, y)1880		return true1881	}1882	return false1883}1884func rewriteValue_OpARMADDSshiftRL(v *ssa.Value) bool {1885	v_1 := v.Args[1]1886	v_0 := v.Args[0]1887	b := v.Block1888	// match: (ADDSshiftRL (MOVWconst [c]) x [d])1889	// result: (ADDSconst [c] (SRLconst <x.Type> x [d]))1890	for {1891		d := ssa.AuxIntToInt32(v.AuxInt)1892		if v_0.Op != ssaop.OpARMMOVWconst {1893			break1894		}1895		c := ssa.AuxIntToInt32(v_0.AuxInt)1896		x := v_11897		v.Reset(ssaop.OpARMADDSconst)1898		v.AuxInt = ssa.Int32ToAuxInt(c)1899		v0 := b.NewValue0(v.Pos, ssaop.OpARMSRLconst, x.Type)1900		v0.AuxInt = ssa.Int32ToAuxInt(d)1901		v0.AddArg(x)1902		v.AddArg(v0)1903		return true1904	}1905	// match: (ADDSshiftRL x (MOVWconst [c]) [d])1906	// result: (ADDSconst x [int32(uint32(c)>>uint64(d))])1907	for {1908		d := ssa.AuxIntToInt32(v.AuxInt)1909		x := v_01910		if v_1.Op != ssaop.OpARMMOVWconst {1911			break1912		}1913		c := ssa.AuxIntToInt32(v_1.AuxInt)1914		v.Reset(ssaop.OpARMADDSconst)1915		v.AuxInt = ssa.Int32ToAuxInt(int32(uint32(c) >> uint64(d)))1916		v.AddArg(x)1917		return true1918	}1919	return false1920}1921func rewriteValue_OpARMADDSshiftRLreg(v *ssa.Value) bool {1922	v_2 := v.Args[2]1923	v_1 := v.Args[1]1924	v_0 := v.Args[0]1925	b := v.Block1926	// match: (ADDSshiftRLreg (MOVWconst [c]) x y)1927	// result: (ADDSconst [c] (SRL <x.Type> x y))1928	for {1929		if v_0.Op != ssaop.OpARMMOVWconst {1930			break1931		}1932		c := ssa.AuxIntToInt32(v_0.AuxInt)1933		x := v_11934		y := v_21935		v.Reset(ssaop.OpARMADDSconst)1936		v.AuxInt = ssa.Int32ToAuxInt(c)1937		v0 := b.NewValue0(v.Pos, ssaop.OpARMSRL, x.Type)1938		v0.AddArg2(x, y)1939		v.AddArg(v0)1940		return true1941	}1942	// match: (ADDSshiftRLreg x y (MOVWconst [c]))1943	// cond: 0 <= c && c < 321944	// result: (ADDSshiftRL x y [c])1945	for {1946		x := v_01947		y := v_11948		if v_2.Op != ssaop.OpARMMOVWconst {1949			break1950		}1951		c := ssa.AuxIntToInt32(v_2.AuxInt)1952		if !(0 <= c && c < 32) {1953			break1954		}1955		v.Reset(ssaop.OpARMADDSshiftRL)1956		v.AuxInt = ssa.Int32ToAuxInt(c)1957		v.AddArg2(x, y)1958		return true1959	}1960	return false1961}1962func rewriteValue_OpARMADDconst(v *ssa.Value) bool {1963	v_0 := v.Args[0]1964	// match: (ADDconst [off1] (MOVWaddr [off2] {sym} ptr))1965	// result: (MOVWaddr [off1+off2] {sym} ptr)1966	for {1967		off1 := ssa.AuxIntToInt32(v.AuxInt)1968		if v_0.Op != ssaop.OpARMMOVWaddr {1969			break1970		}1971		off2 := ssa.AuxIntToInt32(v_0.AuxInt)1972		sym := ssa.AuxToSym(v_0.Aux)1973		ptr := v_0.Args[0]1974		v.Reset(ssaop.OpARMMOVWaddr)1975		v.AuxInt = ssa.Int32ToAuxInt(off1 + off2)1976		v.Aux = ssa.SymToAux(sym)1977		v.AddArg(ptr)1978		return true1979	}1980	// match: (ADDconst [0] x)1981	// result: x1982	for {1983		if ssa.AuxIntToInt32(v.AuxInt) != 0 {1984			break1985		}1986		x := v_01987		v.CopyOf(x)1988		return true1989	}1990	// match: (ADDconst [c] x)1991	// cond: !isARMImmRot(uint32(c)) && isARMImmRot(uint32(-c))1992	// result: (SUBconst [-c] x)1993	for {1994		c := ssa.AuxIntToInt32(v.AuxInt)1995		x := v_01996		if !(!isARMImmRot(uint32(c)) && isARMImmRot(uint32(-c))) {1997			break1998		}1999		v.Reset(ssaop.OpARMSUBconst)2000		v.AuxInt = ssa.Int32ToAuxInt(-c)

Findings

✓ No findings reported for this file.

Get this view in your editor

Same data, no extra tab — call code_get_file + code_get_findings over MCP from Claude/Cursor/Copilot.

Generated by searchcode.com · powered by code_get_file + code_get_findings