src/cmd/compile/internal/ssa/rewriteARM.go GO 21,059 lines View on github.com → Search inside
File is large — showing lines 1–2,000 of 21,059.
1// Code generated from _gen/ARM.rules using 'go generate'; DO NOT EDIT.23package ssa45import "internal/buildcfg"6import "cmd/compile/internal/types"7import "cmd/compile/internal/ssa/block"89func rewriteValueARM(v *Value) bool {10	switch v.Op {11	case OpARMADC:12		return rewriteValueARM_OpARMADC(v)13	case OpARMADCconst:14		return rewriteValueARM_OpARMADCconst(v)15	case OpARMADCshiftLL:16		return rewriteValueARM_OpARMADCshiftLL(v)17	case OpARMADCshiftLLreg:18		return rewriteValueARM_OpARMADCshiftLLreg(v)19	case OpARMADCshiftRA:20		return rewriteValueARM_OpARMADCshiftRA(v)21	case OpARMADCshiftRAreg:22		return rewriteValueARM_OpARMADCshiftRAreg(v)23	case OpARMADCshiftRL:24		return rewriteValueARM_OpARMADCshiftRL(v)25	case OpARMADCshiftRLreg:26		return rewriteValueARM_OpARMADCshiftRLreg(v)27	case OpARMADD:28		return rewriteValueARM_OpARMADD(v)29	case OpARMADDD:30		return rewriteValueARM_OpARMADDD(v)31	case OpARMADDF:32		return rewriteValueARM_OpARMADDF(v)33	case OpARMADDS:34		return rewriteValueARM_OpARMADDS(v)35	case OpARMADDSshiftLL:36		return rewriteValueARM_OpARMADDSshiftLL(v)37	case OpARMADDSshiftLLreg:38		return rewriteValueARM_OpARMADDSshiftLLreg(v)39	case OpARMADDSshiftRA:40		return rewriteValueARM_OpARMADDSshiftRA(v)41	case OpARMADDSshiftRAreg:42		return rewriteValueARM_OpARMADDSshiftRAreg(v)43	case OpARMADDSshiftRL:44		return rewriteValueARM_OpARMADDSshiftRL(v)45	case OpARMADDSshiftRLreg:46		return rewriteValueARM_OpARMADDSshiftRLreg(v)47	case OpARMADDconst:48		return rewriteValueARM_OpARMADDconst(v)49	case OpARMADDshiftLL:50		return rewriteValueARM_OpARMADDshiftLL(v)51	case OpARMADDshiftLLreg:52		return rewriteValueARM_OpARMADDshiftLLreg(v)53	case OpARMADDshiftRA:54		return rewriteValueARM_OpARMADDshiftRA(v)55	case OpARMADDshiftRAreg:56		return rewriteValueARM_OpARMADDshiftRAreg(v)57	case OpARMADDshiftRL:58		return rewriteValueARM_OpARMADDshiftRL(v)59	case OpARMADDshiftRLreg:60		return rewriteValueARM_OpARMADDshiftRLreg(v)61	case OpARMAND:62		return rewriteValueARM_OpARMAND(v)63	case OpARMANDconst:64		return rewriteValueARM_OpARMANDconst(v)65	case OpARMANDshiftLL:66		return rewriteValueARM_OpARMANDshiftLL(v)67	case OpARMANDshiftLLreg:68		return rewriteValueARM_OpARMANDshiftLLreg(v)69	case OpARMANDshiftRA:70		return rewriteValueARM_OpARMANDshiftRA(v)71	case OpARMANDshiftRAreg:72		return rewriteValueARM_OpARMANDshiftRAreg(v)73	case OpARMANDshiftRL:74		return rewriteValueARM_OpARMANDshiftRL(v)75	case OpARMANDshiftRLreg:76		return rewriteValueARM_OpARMANDshiftRLreg(v)77	case OpARMBFX:78		return rewriteValueARM_OpARMBFX(v)79	case OpARMBFXU:80		return rewriteValueARM_OpARMBFXU(v)81	case OpARMBIC:82		return rewriteValueARM_OpARMBIC(v)83	case OpARMBICconst:84		return rewriteValueARM_OpARMBICconst(v)85	case OpARMBICshiftLL:86		return rewriteValueARM_OpARMBICshiftLL(v)87	case OpARMBICshiftLLreg:88		return rewriteValueARM_OpARMBICshiftLLreg(v)89	case OpARMBICshiftRA:90		return rewriteValueARM_OpARMBICshiftRA(v)91	case OpARMBICshiftRAreg:92		return rewriteValueARM_OpARMBICshiftRAreg(v)93	case OpARMBICshiftRL:94		return rewriteValueARM_OpARMBICshiftRL(v)95	case OpARMBICshiftRLreg:96		return rewriteValueARM_OpARMBICshiftRLreg(v)97	case OpARMCMN:98		return rewriteValueARM_OpARMCMN(v)99	case OpARMCMNconst:100		return rewriteValueARM_OpARMCMNconst(v)101	case OpARMCMNshiftLL:102		return rewriteValueARM_OpARMCMNshiftLL(v)103	case OpARMCMNshiftLLreg:104		return rewriteValueARM_OpARMCMNshiftLLreg(v)105	case OpARMCMNshiftRA:106		return rewriteValueARM_OpARMCMNshiftRA(v)107	case OpARMCMNshiftRAreg:108		return rewriteValueARM_OpARMCMNshiftRAreg(v)109	case OpARMCMNshiftRL:110		return rewriteValueARM_OpARMCMNshiftRL(v)111	case OpARMCMNshiftRLreg:112		return rewriteValueARM_OpARMCMNshiftRLreg(v)113	case OpARMCMOVWHSconst:114		return rewriteValueARM_OpARMCMOVWHSconst(v)115	case OpARMCMOVWLSconst:116		return rewriteValueARM_OpARMCMOVWLSconst(v)117	case OpARMCMP:118		return rewriteValueARM_OpARMCMP(v)119	case OpARMCMPD:120		return rewriteValueARM_OpARMCMPD(v)121	case OpARMCMPF:122		return rewriteValueARM_OpARMCMPF(v)123	case OpARMCMPconst:124		return rewriteValueARM_OpARMCMPconst(v)125	case OpARMCMPshiftLL:126		return rewriteValueARM_OpARMCMPshiftLL(v)127	case OpARMCMPshiftLLreg:128		return rewriteValueARM_OpARMCMPshiftLLreg(v)129	case OpARMCMPshiftRA:130		return rewriteValueARM_OpARMCMPshiftRA(v)131	case OpARMCMPshiftRAreg:132		return rewriteValueARM_OpARMCMPshiftRAreg(v)133	case OpARMCMPshiftRL:134		return rewriteValueARM_OpARMCMPshiftRL(v)135	case OpARMCMPshiftRLreg:136		return rewriteValueARM_OpARMCMPshiftRLreg(v)137	case OpARMEqual:138		return rewriteValueARM_OpARMEqual(v)139	case OpARMGreaterEqual:140		return rewriteValueARM_OpARMGreaterEqual(v)141	case OpARMGreaterEqualU:142		return rewriteValueARM_OpARMGreaterEqualU(v)143	case OpARMGreaterThan:144		return rewriteValueARM_OpARMGreaterThan(v)145	case OpARMGreaterThanU:146		return rewriteValueARM_OpARMGreaterThanU(v)147	case OpARMLessEqual:148		return rewriteValueARM_OpARMLessEqual(v)149	case OpARMLessEqualU:150		return rewriteValueARM_OpARMLessEqualU(v)151	case OpARMLessThan:152		return rewriteValueARM_OpARMLessThan(v)153	case OpARMLessThanU:154		return rewriteValueARM_OpARMLessThanU(v)155	case OpARMLoweredPanicBoundsRC:156		return rewriteValueARM_OpARMLoweredPanicBoundsRC(v)157	case OpARMLoweredPanicBoundsRR:158		return rewriteValueARM_OpARMLoweredPanicBoundsRR(v)159	case OpARMLoweredPanicExtendRC:160		return rewriteValueARM_OpARMLoweredPanicExtendRC(v)161	case OpARMLoweredPanicExtendRR:162		return rewriteValueARM_OpARMLoweredPanicExtendRR(v)163	case OpARMMOVBUload:164		return rewriteValueARM_OpARMMOVBUload(v)165	case OpARMMOVBUloadidx:166		return rewriteValueARM_OpARMMOVBUloadidx(v)167	case OpARMMOVBUreg:168		return rewriteValueARM_OpARMMOVBUreg(v)169	case OpARMMOVBload:170		return rewriteValueARM_OpARMMOVBload(v)171	case OpARMMOVBloadidx:172		return rewriteValueARM_OpARMMOVBloadidx(v)173	case OpARMMOVBreg:174		return rewriteValueARM_OpARMMOVBreg(v)175	case OpARMMOVBstore:176		return rewriteValueARM_OpARMMOVBstore(v)177	case OpARMMOVBstoreidx:178		return rewriteValueARM_OpARMMOVBstoreidx(v)179	case OpARMMOVDload:180		return rewriteValueARM_OpARMMOVDload(v)181	case OpARMMOVDstore:182		return rewriteValueARM_OpARMMOVDstore(v)183	case OpARMMOVFload:184		return rewriteValueARM_OpARMMOVFload(v)185	case OpARMMOVFstore:186		return rewriteValueARM_OpARMMOVFstore(v)187	case OpARMMOVHUload:188		return rewriteValueARM_OpARMMOVHUload(v)189	case OpARMMOVHUloadidx:190		return rewriteValueARM_OpARMMOVHUloadidx(v)191	case OpARMMOVHUreg:192		return rewriteValueARM_OpARMMOVHUreg(v)193	case OpARMMOVHload:194		return rewriteValueARM_OpARMMOVHload(v)195	case OpARMMOVHloadidx:196		return rewriteValueARM_OpARMMOVHloadidx(v)197	case OpARMMOVHreg:198		return rewriteValueARM_OpARMMOVHreg(v)199	case OpARMMOVHstore:200		return rewriteValueARM_OpARMMOVHstore(v)201	case OpARMMOVHstoreidx:202		return rewriteValueARM_OpARMMOVHstoreidx(v)203	case OpARMMOVWload:204		return rewriteValueARM_OpARMMOVWload(v)205	case OpARMMOVWloadidx:206		return rewriteValueARM_OpARMMOVWloadidx(v)207	case OpARMMOVWloadshiftLL:208		return rewriteValueARM_OpARMMOVWloadshiftLL(v)209	case OpARMMOVWloadshiftRA:210		return rewriteValueARM_OpARMMOVWloadshiftRA(v)211	case OpARMMOVWloadshiftRL:212		return rewriteValueARM_OpARMMOVWloadshiftRL(v)213	case OpARMMOVWnop:214		return rewriteValueARM_OpARMMOVWnop(v)215	case OpARMMOVWreg:216		return rewriteValueARM_OpARMMOVWreg(v)217	case OpARMMOVWstore:218		return rewriteValueARM_OpARMMOVWstore(v)219	case OpARMMOVWstoreidx:220		return rewriteValueARM_OpARMMOVWstoreidx(v)221	case OpARMMOVWstoreshiftLL:222		return rewriteValueARM_OpARMMOVWstoreshiftLL(v)223	case OpARMMOVWstoreshiftRA:224		return rewriteValueARM_OpARMMOVWstoreshiftRA(v)225	case OpARMMOVWstoreshiftRL:226		return rewriteValueARM_OpARMMOVWstoreshiftRL(v)227	case OpARMMUL:228		return rewriteValueARM_OpARMMUL(v)229	case OpARMMULA:230		return rewriteValueARM_OpARMMULA(v)231	case OpARMMULD:232		return rewriteValueARM_OpARMMULD(v)233	case OpARMMULF:234		return rewriteValueARM_OpARMMULF(v)235	case OpARMMULS:236		return rewriteValueARM_OpARMMULS(v)237	case OpARMMVN:238		return rewriteValueARM_OpARMMVN(v)239	case OpARMMVNshiftLL:240		return rewriteValueARM_OpARMMVNshiftLL(v)241	case OpARMMVNshiftLLreg:242		return rewriteValueARM_OpARMMVNshiftLLreg(v)243	case OpARMMVNshiftRA:244		return rewriteValueARM_OpARMMVNshiftRA(v)245	case OpARMMVNshiftRAreg:246		return rewriteValueARM_OpARMMVNshiftRAreg(v)247	case OpARMMVNshiftRL:248		return rewriteValueARM_OpARMMVNshiftRL(v)249	case OpARMMVNshiftRLreg:250		return rewriteValueARM_OpARMMVNshiftRLreg(v)251	case OpARMNEGD:252		return rewriteValueARM_OpARMNEGD(v)253	case OpARMNEGF:254		return rewriteValueARM_OpARMNEGF(v)255	case OpARMNMULD:256		return rewriteValueARM_OpARMNMULD(v)257	case OpARMNMULF:258		return rewriteValueARM_OpARMNMULF(v)259	case OpARMNotEqual:260		return rewriteValueARM_OpARMNotEqual(v)261	case OpARMOR:262		return rewriteValueARM_OpARMOR(v)263	case OpARMORconst:264		return rewriteValueARM_OpARMORconst(v)265	case OpARMORshiftLL:266		return rewriteValueARM_OpARMORshiftLL(v)267	case OpARMORshiftLLreg:268		return rewriteValueARM_OpARMORshiftLLreg(v)269	case OpARMORshiftRA:270		return rewriteValueARM_OpARMORshiftRA(v)271	case OpARMORshiftRAreg:272		return rewriteValueARM_OpARMORshiftRAreg(v)273	case OpARMORshiftRL:274		return rewriteValueARM_OpARMORshiftRL(v)275	case OpARMORshiftRLreg:276		return rewriteValueARM_OpARMORshiftRLreg(v)277	case OpARMRSB:278		return rewriteValueARM_OpARMRSB(v)279	case OpARMRSBSshiftLL:280		return rewriteValueARM_OpARMRSBSshiftLL(v)281	case OpARMRSBSshiftLLreg:282		return rewriteValueARM_OpARMRSBSshiftLLreg(v)283	case OpARMRSBSshiftRA:284		return rewriteValueARM_OpARMRSBSshiftRA(v)285	case OpARMRSBSshiftRAreg:286		return rewriteValueARM_OpARMRSBSshiftRAreg(v)287	case OpARMRSBSshiftRL:288		return rewriteValueARM_OpARMRSBSshiftRL(v)289	case OpARMRSBSshiftRLreg:290		return rewriteValueARM_OpARMRSBSshiftRLreg(v)291	case OpARMRSBconst:292		return rewriteValueARM_OpARMRSBconst(v)293	case OpARMRSBshiftLL:294		return rewriteValueARM_OpARMRSBshiftLL(v)295	case OpARMRSBshiftLLreg:296		return rewriteValueARM_OpARMRSBshiftLLreg(v)297	case OpARMRSBshiftRA:298		return rewriteValueARM_OpARMRSBshiftRA(v)299	case OpARMRSBshiftRAreg:300		return rewriteValueARM_OpARMRSBshiftRAreg(v)301	case OpARMRSBshiftRL:302		return rewriteValueARM_OpARMRSBshiftRL(v)303	case OpARMRSBshiftRLreg:304		return rewriteValueARM_OpARMRSBshiftRLreg(v)305	case OpARMRSCconst:306		return rewriteValueARM_OpARMRSCconst(v)307	case OpARMRSCshiftLL:308		return rewriteValueARM_OpARMRSCshiftLL(v)309	case OpARMRSCshiftLLreg:310		return rewriteValueARM_OpARMRSCshiftLLreg(v)311	case OpARMRSCshiftRA:312		return rewriteValueARM_OpARMRSCshiftRA(v)313	case OpARMRSCshiftRAreg:314		return rewriteValueARM_OpARMRSCshiftRAreg(v)315	case OpARMRSCshiftRL:316		return rewriteValueARM_OpARMRSCshiftRL(v)317	case OpARMRSCshiftRLreg:318		return rewriteValueARM_OpARMRSCshiftRLreg(v)319	case OpARMSBC:320		return rewriteValueARM_OpARMSBC(v)321	case OpARMSBCconst:322		return rewriteValueARM_OpARMSBCconst(v)323	case OpARMSBCshiftLL:324		return rewriteValueARM_OpARMSBCshiftLL(v)325	case OpARMSBCshiftLLreg:326		return rewriteValueARM_OpARMSBCshiftLLreg(v)327	case OpARMSBCshiftRA:328		return rewriteValueARM_OpARMSBCshiftRA(v)329	case OpARMSBCshiftRAreg:330		return rewriteValueARM_OpARMSBCshiftRAreg(v)331	case OpARMSBCshiftRL:332		return rewriteValueARM_OpARMSBCshiftRL(v)333	case OpARMSBCshiftRLreg:334		return rewriteValueARM_OpARMSBCshiftRLreg(v)335	case OpARMSLL:336		return rewriteValueARM_OpARMSLL(v)337	case OpARMSLLconst:338		return rewriteValueARM_OpARMSLLconst(v)339	case OpARMSRA:340		return rewriteValueARM_OpARMSRA(v)341	case OpARMSRAcond:342		return rewriteValueARM_OpARMSRAcond(v)343	case OpARMSRAconst:344		return rewriteValueARM_OpARMSRAconst(v)345	case OpARMSRL:346		return rewriteValueARM_OpARMSRL(v)347	case OpARMSRLconst:348		return rewriteValueARM_OpARMSRLconst(v)349	case OpARMSRR:350		return rewriteValueARM_OpARMSRR(v)351	case OpARMSUB:352		return rewriteValueARM_OpARMSUB(v)353	case OpARMSUBD:354		return rewriteValueARM_OpARMSUBD(v)355	case OpARMSUBF:356		return rewriteValueARM_OpARMSUBF(v)357	case OpARMSUBS:358		return rewriteValueARM_OpARMSUBS(v)359	case OpARMSUBSshiftLL:360		return rewriteValueARM_OpARMSUBSshiftLL(v)361	case OpARMSUBSshiftLLreg:362		return rewriteValueARM_OpARMSUBSshiftLLreg(v)363	case OpARMSUBSshiftRA:364		return rewriteValueARM_OpARMSUBSshiftRA(v)365	case OpARMSUBSshiftRAreg:366		return rewriteValueARM_OpARMSUBSshiftRAreg(v)367	case OpARMSUBSshiftRL:368		return rewriteValueARM_OpARMSUBSshiftRL(v)369	case OpARMSUBSshiftRLreg:370		return rewriteValueARM_OpARMSUBSshiftRLreg(v)371	case OpARMSUBconst:372		return rewriteValueARM_OpARMSUBconst(v)373	case OpARMSUBshiftLL:374		return rewriteValueARM_OpARMSUBshiftLL(v)375	case OpARMSUBshiftLLreg:376		return rewriteValueARM_OpARMSUBshiftLLreg(v)377	case OpARMSUBshiftRA:378		return rewriteValueARM_OpARMSUBshiftRA(v)379	case OpARMSUBshiftRAreg:380		return rewriteValueARM_OpARMSUBshiftRAreg(v)381	case OpARMSUBshiftRL:382		return rewriteValueARM_OpARMSUBshiftRL(v)383	case OpARMSUBshiftRLreg:384		return rewriteValueARM_OpARMSUBshiftRLreg(v)385	case OpARMTEQ:386		return rewriteValueARM_OpARMTEQ(v)387	case OpARMTEQconst:388		return rewriteValueARM_OpARMTEQconst(v)389	case OpARMTEQshiftLL:390		return rewriteValueARM_OpARMTEQshiftLL(v)391	case OpARMTEQshiftLLreg:392		return rewriteValueARM_OpARMTEQshiftLLreg(v)393	case OpARMTEQshiftRA:394		return rewriteValueARM_OpARMTEQshiftRA(v)395	case OpARMTEQshiftRAreg:396		return rewriteValueARM_OpARMTEQshiftRAreg(v)397	case OpARMTEQshiftRL:398		return rewriteValueARM_OpARMTEQshiftRL(v)399	case OpARMTEQshiftRLreg:400		return rewriteValueARM_OpARMTEQshiftRLreg(v)401	case OpARMTST:402		return rewriteValueARM_OpARMTST(v)403	case OpARMTSTconst:404		return rewriteValueARM_OpARMTSTconst(v)405	case OpARMTSTshiftLL:406		return rewriteValueARM_OpARMTSTshiftLL(v)407	case OpARMTSTshiftLLreg:408		return rewriteValueARM_OpARMTSTshiftLLreg(v)409	case OpARMTSTshiftRA:410		return rewriteValueARM_OpARMTSTshiftRA(v)411	case OpARMTSTshiftRAreg:412		return rewriteValueARM_OpARMTSTshiftRAreg(v)413	case OpARMTSTshiftRL:414		return rewriteValueARM_OpARMTSTshiftRL(v)415	case OpARMTSTshiftRLreg:416		return rewriteValueARM_OpARMTSTshiftRLreg(v)417	case OpARMXOR:418		return rewriteValueARM_OpARMXOR(v)419	case OpARMXORconst:420		return rewriteValueARM_OpARMXORconst(v)421	case OpARMXORshiftLL:422		return rewriteValueARM_OpARMXORshiftLL(v)423	case OpARMXORshiftLLreg:424		return rewriteValueARM_OpARMXORshiftLLreg(v)425	case OpARMXORshiftRA:426		return rewriteValueARM_OpARMXORshiftRA(v)427	case OpARMXORshiftRAreg:428		return rewriteValueARM_OpARMXORshiftRAreg(v)429	case OpARMXORshiftRL:430		return rewriteValueARM_OpARMXORshiftRL(v)431	case OpARMXORshiftRLreg:432		return rewriteValueARM_OpARMXORshiftRLreg(v)433	case OpARMXORshiftRR:434		return rewriteValueARM_OpARMXORshiftRR(v)435	case OpAbs:436		v.Op = OpARMABSD437		return true438	case OpAdd16:439		v.Op = OpARMADD440		return true441	case OpAdd32:442		v.Op = OpARMADD443		return true444	case OpAdd32F:445		v.Op = OpARMADDF446		return true447	case OpAdd32carry:448		v.Op = OpARMADDS449		return true450	case OpAdd32carrywithcarry:451		v.Op = OpARMADCS452		return true453	case OpAdd32withcarry:454		v.Op = OpARMADC455		return true456	case OpAdd64F:457		v.Op = OpARMADDD458		return true459	case OpAdd8:460		v.Op = OpARMADD461		return true462	case OpAddPtr:463		v.Op = OpARMADD464		return true465	case OpAddr:466		return rewriteValueARM_OpAddr(v)467	case OpAnd16:468		v.Op = OpARMAND469		return true470	case OpAnd32:471		v.Op = OpARMAND472		return true473	case OpAnd8:474		v.Op = OpARMAND475		return true476	case OpAndB:477		v.Op = OpARMAND478		return true479	case OpAvg32u:480		return rewriteValueARM_OpAvg32u(v)481	case OpBitLen16:482		return rewriteValueARM_OpBitLen16(v)483	case OpBitLen32:484		return rewriteValueARM_OpBitLen32(v)485	case OpBitLen8:486		return rewriteValueARM_OpBitLen8(v)487	case OpBswap32:488		return rewriteValueARM_OpBswap32(v)489	case OpClosureCall:490		v.Op = OpARMCALLclosure491		return true492	case OpCom16:493		v.Op = OpARMMVN494		return true495	case OpCom32:496		v.Op = OpARMMVN497		return true498	case OpCom8:499		v.Op = OpARMMVN500		return true501	case OpConst16:502		return rewriteValueARM_OpConst16(v)503	case OpConst32:504		return rewriteValueARM_OpConst32(v)505	case OpConst32F:506		return rewriteValueARM_OpConst32F(v)507	case OpConst64F:508		return rewriteValueARM_OpConst64F(v)509	case OpConst8:510		return rewriteValueARM_OpConst8(v)511	case OpConstBool:512		return rewriteValueARM_OpConstBool(v)513	case OpConstNil:514		return rewriteValueARM_OpConstNil(v)515	case OpCtz16:516		return rewriteValueARM_OpCtz16(v)517	case OpCtz16NonZero:518		v.Op = OpCtz32519		return true520	case OpCtz32:521		return rewriteValueARM_OpCtz32(v)522	case OpCtz32NonZero:523		v.Op = OpCtz32524		return true525	case OpCtz8:526		return rewriteValueARM_OpCtz8(v)527	case OpCtz8NonZero:528		v.Op = OpCtz32529		return true530	case OpCvt32Fto32:531		v.Op = OpARMMOVFW532		return true533	case OpCvt32Fto32U:534		v.Op = OpARMMOVFWU535		return true536	case OpCvt32Fto64F:537		v.Op = OpARMMOVFD538		return true539	case OpCvt32Uto32F:540		v.Op = OpARMMOVWUF541		return true542	case OpCvt32Uto64F:543		v.Op = OpARMMOVWUD544		return true545	case OpCvt32to32F:546		v.Op = OpARMMOVWF547		return true548	case OpCvt32to64F:549		v.Op = OpARMMOVWD550		return true551	case OpCvt64Fto32:552		v.Op = OpARMMOVDW553		return true554	case OpCvt64Fto32F:555		v.Op = OpARMMOVDF556		return true557	case OpCvt64Fto32U:558		v.Op = OpARMMOVDWU559		return true560	case OpCvtBoolToUint8:561		v.Op = OpCopy562		return true563	case OpDiv16:564		return rewriteValueARM_OpDiv16(v)565	case OpDiv16u:566		return rewriteValueARM_OpDiv16u(v)567	case OpDiv32:568		return rewriteValueARM_OpDiv32(v)569	case OpDiv32F:570		v.Op = OpARMDIVF571		return true572	case OpDiv32u:573		return rewriteValueARM_OpDiv32u(v)574	case OpDiv64F:575		v.Op = OpARMDIVD576		return true577	case OpDiv8:578		return rewriteValueARM_OpDiv8(v)579	case OpDiv8u:580		return rewriteValueARM_OpDiv8u(v)581	case OpEq16:582		return rewriteValueARM_OpEq16(v)583	case OpEq32:584		return rewriteValueARM_OpEq32(v)585	case OpEq32F:586		return rewriteValueARM_OpEq32F(v)587	case OpEq64F:588		return rewriteValueARM_OpEq64F(v)589	case OpEq8:590		return rewriteValueARM_OpEq8(v)591	case OpEqB:592		return rewriteValueARM_OpEqB(v)593	case OpEqPtr:594		return rewriteValueARM_OpEqPtr(v)595	case OpFMA:596		return rewriteValueARM_OpFMA(v)597	case OpGetCallerPC:598		v.Op = OpARMLoweredGetCallerPC599		return true600	case OpGetCallerSP:601		v.Op = OpARMLoweredGetCallerSP602		return true603	case OpGetClosurePtr:604		v.Op = OpARMLoweredGetClosurePtr605		return true606	case OpHmul32:607		v.Op = OpARMHMUL608		return true609	case OpHmul32u:610		v.Op = OpARMHMULU611		return true612	case OpInterCall:613		v.Op = OpARMCALLinter614		return true615	case OpIsInBounds:616		return rewriteValueARM_OpIsInBounds(v)617	case OpIsNonNil:618		return rewriteValueARM_OpIsNonNil(v)619	case OpIsSliceInBounds:620		return rewriteValueARM_OpIsSliceInBounds(v)621	case OpLeq16:622		return rewriteValueARM_OpLeq16(v)623	case OpLeq16U:624		return rewriteValueARM_OpLeq16U(v)625	case OpLeq32:626		return rewriteValueARM_OpLeq32(v)627	case OpLeq32F:628		return rewriteValueARM_OpLeq32F(v)629	case OpLeq32U:630		return rewriteValueARM_OpLeq32U(v)631	case OpLeq64F:632		return rewriteValueARM_OpLeq64F(v)633	case OpLeq8:634		return rewriteValueARM_OpLeq8(v)635	case OpLeq8U:636		return rewriteValueARM_OpLeq8U(v)637	case OpLess16:638		return rewriteValueARM_OpLess16(v)639	case OpLess16U:640		return rewriteValueARM_OpLess16U(v)641	case OpLess32:642		return rewriteValueARM_OpLess32(v)643	case OpLess32F:644		return rewriteValueARM_OpLess32F(v)645	case OpLess32U:646		return rewriteValueARM_OpLess32U(v)647	case OpLess64F:648		return rewriteValueARM_OpLess64F(v)649	case OpLess8:650		return rewriteValueARM_OpLess8(v)651	case OpLess8U:652		return rewriteValueARM_OpLess8U(v)653	case OpLoad:654		return rewriteValueARM_OpLoad(v)655	case OpLocalAddr:656		return rewriteValueARM_OpLocalAddr(v)657	case OpLsh16x16:658		return rewriteValueARM_OpLsh16x16(v)659	case OpLsh16x32:660		return rewriteValueARM_OpLsh16x32(v)661	case OpLsh16x64:662		return rewriteValueARM_OpLsh16x64(v)663	case OpLsh16x8:664		return rewriteValueARM_OpLsh16x8(v)665	case OpLsh32x16:666		return rewriteValueARM_OpLsh32x16(v)667	case OpLsh32x32:668		return rewriteValueARM_OpLsh32x32(v)669	case OpLsh32x64:670		return rewriteValueARM_OpLsh32x64(v)671	case OpLsh32x8:672		return rewriteValueARM_OpLsh32x8(v)673	case OpLsh8x16:674		return rewriteValueARM_OpLsh8x16(v)675	case OpLsh8x32:676		return rewriteValueARM_OpLsh8x32(v)677	case OpLsh8x64:678		return rewriteValueARM_OpLsh8x64(v)679	case OpLsh8x8:680		return rewriteValueARM_OpLsh8x8(v)681	case OpMod16:682		return rewriteValueARM_OpMod16(v)683	case OpMod16u:684		return rewriteValueARM_OpMod16u(v)685	case OpMod32:686		return rewriteValueARM_OpMod32(v)687	case OpMod32u:688		return rewriteValueARM_OpMod32u(v)689	case OpMod8:690		return rewriteValueARM_OpMod8(v)691	case OpMod8u:692		return rewriteValueARM_OpMod8u(v)693	case OpMove:694		return rewriteValueARM_OpMove(v)695	case OpMul16:696		v.Op = OpARMMUL697		return true698	case OpMul32:699		v.Op = OpARMMUL700		return true701	case OpMul32F:702		v.Op = OpARMMULF703		return true704	case OpMul32uhilo:705		v.Op = OpARMMULLU706		return true707	case OpMul64F:708		v.Op = OpARMMULD709		return true710	case OpMul8:711		v.Op = OpARMMUL712		return true713	case OpNeg16:714		return rewriteValueARM_OpNeg16(v)715	case OpNeg32:716		return rewriteValueARM_OpNeg32(v)717	case OpNeg32F:718		v.Op = OpARMNEGF719		return true720	case OpNeg64F:721		v.Op = OpARMNEGD722		return true723	case OpNeg8:724		return rewriteValueARM_OpNeg8(v)725	case OpNeq16:726		return rewriteValueARM_OpNeq16(v)727	case OpNeq32:728		return rewriteValueARM_OpNeq32(v)729	case OpNeq32F:730		return rewriteValueARM_OpNeq32F(v)731	case OpNeq64F:732		return rewriteValueARM_OpNeq64F(v)733	case OpNeq8:734		return rewriteValueARM_OpNeq8(v)735	case OpNeqB:736		v.Op = OpARMXOR737		return true738	case OpNeqPtr:739		return rewriteValueARM_OpNeqPtr(v)740	case OpNilCheck:741		v.Op = OpARMLoweredNilCheck742		return true743	case OpNot:744		return rewriteValueARM_OpNot(v)745	case OpOffPtr:746		return rewriteValueARM_OpOffPtr(v)747	case OpOr16:748		v.Op = OpARMOR749		return true750	case OpOr32:751		v.Op = OpARMOR752		return true753	case OpOr8:754		v.Op = OpARMOR755		return true756	case OpOrB:757		v.Op = OpARMOR758		return true759	case OpPanicBounds:760		v.Op = OpARMLoweredPanicBoundsRR761		return true762	case OpPanicExtend:763		v.Op = OpARMLoweredPanicExtendRR764		return true765	case OpRotateLeft16:766		return rewriteValueARM_OpRotateLeft16(v)767	case OpRotateLeft32:768		return rewriteValueARM_OpRotateLeft32(v)769	case OpRotateLeft8:770		return rewriteValueARM_OpRotateLeft8(v)771	case OpRound32F:772		v.Op = OpCopy773		return true774	case OpRound64F:775		v.Op = OpCopy776		return true777	case OpRsh16Ux16:778		return rewriteValueARM_OpRsh16Ux16(v)779	case OpRsh16Ux32:780		return rewriteValueARM_OpRsh16Ux32(v)781	case OpRsh16Ux64:782		return rewriteValueARM_OpRsh16Ux64(v)783	case OpRsh16Ux8:784		return rewriteValueARM_OpRsh16Ux8(v)785	case OpRsh16x16:786		return rewriteValueARM_OpRsh16x16(v)787	case OpRsh16x32:788		return rewriteValueARM_OpRsh16x32(v)789	case OpRsh16x64:790		return rewriteValueARM_OpRsh16x64(v)791	case OpRsh16x8:792		return rewriteValueARM_OpRsh16x8(v)793	case OpRsh32Ux16:794		return rewriteValueARM_OpRsh32Ux16(v)795	case OpRsh32Ux32:796		return rewriteValueARM_OpRsh32Ux32(v)797	case OpRsh32Ux64:798		return rewriteValueARM_OpRsh32Ux64(v)799	case OpRsh32Ux8:800		return rewriteValueARM_OpRsh32Ux8(v)801	case OpRsh32x16:802		return rewriteValueARM_OpRsh32x16(v)803	case OpRsh32x32:804		return rewriteValueARM_OpRsh32x32(v)805	case OpRsh32x64:806		return rewriteValueARM_OpRsh32x64(v)807	case OpRsh32x8:808		return rewriteValueARM_OpRsh32x8(v)809	case OpRsh8Ux16:810		return rewriteValueARM_OpRsh8Ux16(v)811	case OpRsh8Ux32:812		return rewriteValueARM_OpRsh8Ux32(v)813	case OpRsh8Ux64:814		return rewriteValueARM_OpRsh8Ux64(v)815	case OpRsh8Ux8:816		return rewriteValueARM_OpRsh8Ux8(v)817	case OpRsh8x16:818		return rewriteValueARM_OpRsh8x16(v)819	case OpRsh8x32:820		return rewriteValueARM_OpRsh8x32(v)821	case OpRsh8x64:822		return rewriteValueARM_OpRsh8x64(v)823	case OpRsh8x8:824		return rewriteValueARM_OpRsh8x8(v)825	case OpSelect0:826		return rewriteValueARM_OpSelect0(v)827	case OpSelect1:828		return rewriteValueARM_OpSelect1(v)829	case OpSignExt16to32:830		v.Op = OpARMMOVHreg831		return true832	case OpSignExt8to16:833		v.Op = OpARMMOVBreg834		return true835	case OpSignExt8to32:836		v.Op = OpARMMOVBreg837		return true838	case OpSignmask:839		return rewriteValueARM_OpSignmask(v)840	case OpSlicemask:841		return rewriteValueARM_OpSlicemask(v)842	case OpSqrt:843		v.Op = OpARMSQRTD844		return true845	case OpSqrt32:846		v.Op = OpARMSQRTF847		return true848	case OpStaticCall:849		v.Op = OpARMCALLstatic850		return true851	case OpStore:852		return rewriteValueARM_OpStore(v)853	case OpSub16:854		v.Op = OpARMSUB855		return true856	case OpSub32:857		v.Op = OpARMSUB858		return true859	case OpSub32F:860		v.Op = OpARMSUBF861		return true862	case OpSub32carry:863		v.Op = OpARMSUBS864		return true865	case OpSub32withcarry:866		v.Op = OpARMSBC867		return true868	case OpSub64F:869		v.Op = OpARMSUBD870		return true871	case OpSub8:872		v.Op = OpARMSUB873		return true874	case OpSubPtr:875		v.Op = OpARMSUB876		return true877	case OpTailCall:878		v.Op = OpARMCALLtail879		return true880	case OpTailCallInter:881		v.Op = OpARMCALLtailinter882		return true883	case OpTrunc16to8:884		v.Op = OpCopy885		return true886	case OpTrunc32to16:887		v.Op = OpCopy888		return true889	case OpTrunc32to8:890		v.Op = OpCopy891		return true892	case OpWB:893		v.Op = OpARMLoweredWB894		return true895	case OpXor16:896		v.Op = OpARMXOR897		return true898	case OpXor32:899		v.Op = OpARMXOR900		return true901	case OpXor8:902		v.Op = OpARMXOR903		return true904	case OpZero:905		return rewriteValueARM_OpZero(v)906	case OpZeroExt16to32:907		v.Op = OpARMMOVHUreg908		return true909	case OpZeroExt8to16:910		v.Op = OpARMMOVBUreg911		return true912	case OpZeroExt8to32:913		v.Op = OpARMMOVBUreg914		return true915	case OpZeromask:916		return rewriteValueARM_OpZeromask(v)917	}918	return false919}920func rewriteValueARM_OpARMADC(v *Value) bool {921	v_2 := v.Args[2]922	v_1 := v.Args[1]923	v_0 := v.Args[0]924	// match: (ADC (MOVWconst [c]) x flags)925	// result: (ADCconst [c] x flags)926	for {927		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {928			if v_0.Op != OpARMMOVWconst {929				continue930			}931			c := auxIntToInt32(v_0.AuxInt)932			x := v_1933			flags := v_2934			v.reset(OpARMADCconst)935			v.AuxInt = int32ToAuxInt(c)936			v.AddArg2(x, flags)937			return true938		}939		break940	}941	// match: (ADC x (SLLconst [c] y) flags)942	// result: (ADCshiftLL x y [c] flags)943	for {944		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {945			x := v_0946			if v_1.Op != OpARMSLLconst {947				continue948			}949			c := auxIntToInt32(v_1.AuxInt)950			y := v_1.Args[0]951			flags := v_2952			v.reset(OpARMADCshiftLL)953			v.AuxInt = int32ToAuxInt(c)954			v.AddArg3(x, y, flags)955			return true956		}957		break958	}959	// match: (ADC x (SRLconst [c] y) flags)960	// result: (ADCshiftRL x y [c] flags)961	for {962		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {963			x := v_0964			if v_1.Op != OpARMSRLconst {965				continue966			}967			c := auxIntToInt32(v_1.AuxInt)968			y := v_1.Args[0]969			flags := v_2970			v.reset(OpARMADCshiftRL)971			v.AuxInt = int32ToAuxInt(c)972			v.AddArg3(x, y, flags)973			return true974		}975		break976	}977	// match: (ADC x (SRAconst [c] y) flags)978	// result: (ADCshiftRA x y [c] flags)979	for {980		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {981			x := v_0982			if v_1.Op != OpARMSRAconst {983				continue984			}985			c := auxIntToInt32(v_1.AuxInt)986			y := v_1.Args[0]987			flags := v_2988			v.reset(OpARMADCshiftRA)989			v.AuxInt = int32ToAuxInt(c)990			v.AddArg3(x, y, flags)991			return true992		}993		break994	}995	// match: (ADC x (SLL y z) flags)996	// result: (ADCshiftLLreg x y z flags)997	for {998		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {999			x := v_01000			if v_1.Op != OpARMSLL {1001				continue1002			}1003			z := v_1.Args[1]1004			y := v_1.Args[0]1005			flags := v_21006			v.reset(OpARMADCshiftLLreg)1007			v.AddArg4(x, y, z, flags)1008			return true1009		}1010		break1011	}1012	// match: (ADC x (SRL y z) flags)1013	// result: (ADCshiftRLreg x y z flags)1014	for {1015		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1016			x := v_01017			if v_1.Op != OpARMSRL {1018				continue1019			}1020			z := v_1.Args[1]1021			y := v_1.Args[0]1022			flags := v_21023			v.reset(OpARMADCshiftRLreg)1024			v.AddArg4(x, y, z, flags)1025			return true1026		}1027		break1028	}1029	// match: (ADC x (SRA y z) flags)1030	// result: (ADCshiftRAreg x y z flags)1031	for {1032		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1033			x := v_01034			if v_1.Op != OpARMSRA {1035				continue1036			}1037			z := v_1.Args[1]1038			y := v_1.Args[0]1039			flags := v_21040			v.reset(OpARMADCshiftRAreg)1041			v.AddArg4(x, y, z, flags)1042			return true1043		}1044		break1045	}1046	return false1047}1048func rewriteValueARM_OpARMADCconst(v *Value) bool {1049	v_1 := v.Args[1]1050	v_0 := v.Args[0]1051	// match: (ADCconst [c] (ADDconst [d] x) flags)1052	// result: (ADCconst [c+d] x flags)1053	for {1054		c := auxIntToInt32(v.AuxInt)1055		if v_0.Op != OpARMADDconst {1056			break1057		}1058		d := auxIntToInt32(v_0.AuxInt)1059		x := v_0.Args[0]1060		flags := v_11061		v.reset(OpARMADCconst)1062		v.AuxInt = int32ToAuxInt(c + d)1063		v.AddArg2(x, flags)1064		return true1065	}1066	// match: (ADCconst [c] (SUBconst [d] x) flags)1067	// result: (ADCconst [c-d] x flags)1068	for {1069		c := auxIntToInt32(v.AuxInt)1070		if v_0.Op != OpARMSUBconst {1071			break1072		}1073		d := auxIntToInt32(v_0.AuxInt)1074		x := v_0.Args[0]1075		flags := v_11076		v.reset(OpARMADCconst)1077		v.AuxInt = int32ToAuxInt(c - d)1078		v.AddArg2(x, flags)1079		return true1080	}1081	return false1082}1083func rewriteValueARM_OpARMADCshiftLL(v *Value) bool {1084	v_2 := v.Args[2]1085	v_1 := v.Args[1]1086	v_0 := v.Args[0]1087	b := v.Block1088	// match: (ADCshiftLL (MOVWconst [c]) x [d] flags)1089	// result: (ADCconst [c] (SLLconst <x.Type> x [d]) flags)1090	for {1091		d := auxIntToInt32(v.AuxInt)1092		if v_0.Op != OpARMMOVWconst {1093			break1094		}1095		c := auxIntToInt32(v_0.AuxInt)1096		x := v_11097		flags := v_21098		v.reset(OpARMADCconst)1099		v.AuxInt = int32ToAuxInt(c)1100		v0 := b.NewValue0(v.Pos, OpARMSLLconst, x.Type)1101		v0.AuxInt = int32ToAuxInt(d)1102		v0.AddArg(x)1103		v.AddArg2(v0, flags)1104		return true1105	}1106	// match: (ADCshiftLL x (MOVWconst [c]) [d] flags)1107	// result: (ADCconst x [c<<uint64(d)] flags)1108	for {1109		d := auxIntToInt32(v.AuxInt)1110		x := v_01111		if v_1.Op != OpARMMOVWconst {1112			break1113		}1114		c := auxIntToInt32(v_1.AuxInt)1115		flags := v_21116		v.reset(OpARMADCconst)1117		v.AuxInt = int32ToAuxInt(c << uint64(d))1118		v.AddArg2(x, flags)1119		return true1120	}1121	return false1122}1123func rewriteValueARM_OpARMADCshiftLLreg(v *Value) bool {1124	v_3 := v.Args[3]1125	v_2 := v.Args[2]1126	v_1 := v.Args[1]1127	v_0 := v.Args[0]1128	b := v.Block1129	// match: (ADCshiftLLreg (MOVWconst [c]) x y flags)1130	// result: (ADCconst [c] (SLL <x.Type> x y) flags)1131	for {1132		if v_0.Op != OpARMMOVWconst {1133			break1134		}1135		c := auxIntToInt32(v_0.AuxInt)1136		x := v_11137		y := v_21138		flags := v_31139		v.reset(OpARMADCconst)1140		v.AuxInt = int32ToAuxInt(c)1141		v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)1142		v0.AddArg2(x, y)1143		v.AddArg2(v0, flags)1144		return true1145	}1146	// match: (ADCshiftLLreg x y (MOVWconst [c]) flags)1147	// cond: 0 <= c && c < 321148	// result: (ADCshiftLL x y [c] flags)1149	for {1150		x := v_01151		y := v_11152		if v_2.Op != OpARMMOVWconst {1153			break1154		}1155		c := auxIntToInt32(v_2.AuxInt)1156		flags := v_31157		if !(0 <= c && c < 32) {1158			break1159		}1160		v.reset(OpARMADCshiftLL)1161		v.AuxInt = int32ToAuxInt(c)1162		v.AddArg3(x, y, flags)1163		return true1164	}1165	return false1166}1167func rewriteValueARM_OpARMADCshiftRA(v *Value) bool {1168	v_2 := v.Args[2]1169	v_1 := v.Args[1]1170	v_0 := v.Args[0]1171	b := v.Block1172	// match: (ADCshiftRA (MOVWconst [c]) x [d] flags)1173	// result: (ADCconst [c] (SRAconst <x.Type> x [d]) flags)1174	for {1175		d := auxIntToInt32(v.AuxInt)1176		if v_0.Op != OpARMMOVWconst {1177			break1178		}1179		c := auxIntToInt32(v_0.AuxInt)1180		x := v_11181		flags := v_21182		v.reset(OpARMADCconst)1183		v.AuxInt = int32ToAuxInt(c)1184		v0 := b.NewValue0(v.Pos, OpARMSRAconst, x.Type)1185		v0.AuxInt = int32ToAuxInt(d)1186		v0.AddArg(x)1187		v.AddArg2(v0, flags)1188		return true1189	}1190	// match: (ADCshiftRA x (MOVWconst [c]) [d] flags)1191	// result: (ADCconst x [c>>uint64(d)] flags)1192	for {1193		d := auxIntToInt32(v.AuxInt)1194		x := v_01195		if v_1.Op != OpARMMOVWconst {1196			break1197		}1198		c := auxIntToInt32(v_1.AuxInt)1199		flags := v_21200		v.reset(OpARMADCconst)1201		v.AuxInt = int32ToAuxInt(c >> uint64(d))1202		v.AddArg2(x, flags)1203		return true1204	}1205	return false1206}1207func rewriteValueARM_OpARMADCshiftRAreg(v *Value) bool {1208	v_3 := v.Args[3]1209	v_2 := v.Args[2]1210	v_1 := v.Args[1]1211	v_0 := v.Args[0]1212	b := v.Block1213	// match: (ADCshiftRAreg (MOVWconst [c]) x y flags)1214	// result: (ADCconst [c] (SRA <x.Type> x y) flags)1215	for {1216		if v_0.Op != OpARMMOVWconst {1217			break1218		}1219		c := auxIntToInt32(v_0.AuxInt)1220		x := v_11221		y := v_21222		flags := v_31223		v.reset(OpARMADCconst)1224		v.AuxInt = int32ToAuxInt(c)1225		v0 := b.NewValue0(v.Pos, OpARMSRA, x.Type)1226		v0.AddArg2(x, y)1227		v.AddArg2(v0, flags)1228		return true1229	}1230	// match: (ADCshiftRAreg x y (MOVWconst [c]) flags)1231	// cond: 0 <= c && c < 321232	// result: (ADCshiftRA x y [c] flags)1233	for {1234		x := v_01235		y := v_11236		if v_2.Op != OpARMMOVWconst {1237			break1238		}1239		c := auxIntToInt32(v_2.AuxInt)1240		flags := v_31241		if !(0 <= c && c < 32) {1242			break1243		}1244		v.reset(OpARMADCshiftRA)1245		v.AuxInt = int32ToAuxInt(c)1246		v.AddArg3(x, y, flags)1247		return true1248	}1249	return false1250}1251func rewriteValueARM_OpARMADCshiftRL(v *Value) bool {1252	v_2 := v.Args[2]1253	v_1 := v.Args[1]1254	v_0 := v.Args[0]1255	b := v.Block1256	// match: (ADCshiftRL (MOVWconst [c]) x [d] flags)1257	// result: (ADCconst [c] (SRLconst <x.Type> x [d]) flags)1258	for {1259		d := auxIntToInt32(v.AuxInt)1260		if v_0.Op != OpARMMOVWconst {1261			break1262		}1263		c := auxIntToInt32(v_0.AuxInt)1264		x := v_11265		flags := v_21266		v.reset(OpARMADCconst)1267		v.AuxInt = int32ToAuxInt(c)1268		v0 := b.NewValue0(v.Pos, OpARMSRLconst, x.Type)1269		v0.AuxInt = int32ToAuxInt(d)1270		v0.AddArg(x)1271		v.AddArg2(v0, flags)1272		return true1273	}1274	// match: (ADCshiftRL x (MOVWconst [c]) [d] flags)1275	// result: (ADCconst x [int32(uint32(c)>>uint64(d))] flags)1276	for {1277		d := auxIntToInt32(v.AuxInt)1278		x := v_01279		if v_1.Op != OpARMMOVWconst {1280			break1281		}1282		c := auxIntToInt32(v_1.AuxInt)1283		flags := v_21284		v.reset(OpARMADCconst)1285		v.AuxInt = int32ToAuxInt(int32(uint32(c) >> uint64(d)))1286		v.AddArg2(x, flags)1287		return true1288	}1289	return false1290}1291func rewriteValueARM_OpARMADCshiftRLreg(v *Value) bool {1292	v_3 := v.Args[3]1293	v_2 := v.Args[2]1294	v_1 := v.Args[1]1295	v_0 := v.Args[0]1296	b := v.Block1297	// match: (ADCshiftRLreg (MOVWconst [c]) x y flags)1298	// result: (ADCconst [c] (SRL <x.Type> x y) flags)1299	for {1300		if v_0.Op != OpARMMOVWconst {1301			break1302		}1303		c := auxIntToInt32(v_0.AuxInt)1304		x := v_11305		y := v_21306		flags := v_31307		v.reset(OpARMADCconst)1308		v.AuxInt = int32ToAuxInt(c)1309		v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)1310		v0.AddArg2(x, y)1311		v.AddArg2(v0, flags)1312		return true1313	}1314	// match: (ADCshiftRLreg x y (MOVWconst [c]) flags)1315	// cond: 0 <= c && c < 321316	// result: (ADCshiftRL x y [c] flags)1317	for {1318		x := v_01319		y := v_11320		if v_2.Op != OpARMMOVWconst {1321			break1322		}1323		c := auxIntToInt32(v_2.AuxInt)1324		flags := v_31325		if !(0 <= c && c < 32) {1326			break1327		}1328		v.reset(OpARMADCshiftRL)1329		v.AuxInt = int32ToAuxInt(c)1330		v.AddArg3(x, y, flags)1331		return true1332	}1333	return false1334}1335func rewriteValueARM_OpARMADD(v *Value) bool {1336	v_1 := v.Args[1]1337	v_0 := v.Args[0]1338	b := v.Block1339	// match: (ADD x (MOVWconst <t> [c]))1340	// cond: !t.IsPtr()1341	// result: (ADDconst [c] x)1342	for {1343		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1344			x := v_01345			if v_1.Op != OpARMMOVWconst {1346				continue1347			}1348			t := v_1.Type1349			c := auxIntToInt32(v_1.AuxInt)1350			if !(!t.IsPtr()) {1351				continue1352			}1353			v.reset(OpARMADDconst)1354			v.AuxInt = int32ToAuxInt(c)1355			v.AddArg(x)1356			return true1357		}1358		break1359	}1360	// match: (ADD x (SLLconst [c] y))1361	// result: (ADDshiftLL x y [c])1362	for {1363		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1364			x := v_01365			if v_1.Op != OpARMSLLconst {1366				continue1367			}1368			c := auxIntToInt32(v_1.AuxInt)1369			y := v_1.Args[0]1370			v.reset(OpARMADDshiftLL)1371			v.AuxInt = int32ToAuxInt(c)1372			v.AddArg2(x, y)1373			return true1374		}1375		break1376	}1377	// match: (ADD x (SRLconst [c] y))1378	// result: (ADDshiftRL x y [c])1379	for {1380		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1381			x := v_01382			if v_1.Op != OpARMSRLconst {1383				continue1384			}1385			c := auxIntToInt32(v_1.AuxInt)1386			y := v_1.Args[0]1387			v.reset(OpARMADDshiftRL)1388			v.AuxInt = int32ToAuxInt(c)1389			v.AddArg2(x, y)1390			return true1391		}1392		break1393	}1394	// match: (ADD x (SRAconst [c] y))1395	// result: (ADDshiftRA x y [c])1396	for {1397		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1398			x := v_01399			if v_1.Op != OpARMSRAconst {1400				continue1401			}1402			c := auxIntToInt32(v_1.AuxInt)1403			y := v_1.Args[0]1404			v.reset(OpARMADDshiftRA)1405			v.AuxInt = int32ToAuxInt(c)1406			v.AddArg2(x, y)1407			return true1408		}1409		break1410	}1411	// match: (ADD x (SLL y z))1412	// result: (ADDshiftLLreg x y z)1413	for {1414		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1415			x := v_01416			if v_1.Op != OpARMSLL {1417				continue1418			}1419			z := v_1.Args[1]1420			y := v_1.Args[0]1421			v.reset(OpARMADDshiftLLreg)1422			v.AddArg3(x, y, z)1423			return true1424		}1425		break1426	}1427	// match: (ADD x (SRL y z))1428	// result: (ADDshiftRLreg x y z)1429	for {1430		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1431			x := v_01432			if v_1.Op != OpARMSRL {1433				continue1434			}1435			z := v_1.Args[1]1436			y := v_1.Args[0]1437			v.reset(OpARMADDshiftRLreg)1438			v.AddArg3(x, y, z)1439			return true1440		}1441		break1442	}1443	// match: (ADD x (SRA y z))1444	// result: (ADDshiftRAreg x y z)1445	for {1446		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1447			x := v_01448			if v_1.Op != OpARMSRA {1449				continue1450			}1451			z := v_1.Args[1]1452			y := v_1.Args[0]1453			v.reset(OpARMADDshiftRAreg)1454			v.AddArg3(x, y, z)1455			return true1456		}1457		break1458	}1459	// match: (ADD x (RSBconst [0] y))1460	// result: (SUB x y)1461	for {1462		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1463			x := v_01464			if v_1.Op != OpARMRSBconst || auxIntToInt32(v_1.AuxInt) != 0 {1465				continue1466			}1467			y := v_1.Args[0]1468			v.reset(OpARMSUB)1469			v.AddArg2(x, y)1470			return true1471		}1472		break1473	}1474	// match: (ADD <t> (RSBconst [c] x) (RSBconst [d] y))1475	// result: (RSBconst [c+d] (ADD <t> x y))1476	for {1477		t := v.Type1478		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1479			if v_0.Op != OpARMRSBconst {1480				continue1481			}1482			c := auxIntToInt32(v_0.AuxInt)1483			x := v_0.Args[0]1484			if v_1.Op != OpARMRSBconst {1485				continue1486			}1487			d := auxIntToInt32(v_1.AuxInt)1488			y := v_1.Args[0]1489			v.reset(OpARMRSBconst)1490			v.AuxInt = int32ToAuxInt(c + d)1491			v0 := b.NewValue0(v.Pos, OpARMADD, t)1492			v0.AddArg2(x, y)1493			v.AddArg(v0)1494			return true1495		}1496		break1497	}1498	// match: (ADD (MUL x y) a)1499	// result: (MULA x y a)1500	for {1501		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1502			if v_0.Op != OpARMMUL {1503				continue1504			}1505			y := v_0.Args[1]1506			x := v_0.Args[0]1507			a := v_11508			v.reset(OpARMMULA)1509			v.AddArg3(x, y, a)1510			return true1511		}1512		break1513	}1514	return false1515}1516func rewriteValueARM_OpARMADDD(v *Value) bool {1517	v_1 := v.Args[1]1518	v_0 := v.Args[0]1519	// match: (ADDD a (MULD x y))1520	// cond: a.Uses == 1 && buildcfg.GOARM.Version >= 61521	// result: (MULAD a x y)1522	for {1523		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1524			a := v_01525			if v_1.Op != OpARMMULD {1526				continue1527			}1528			y := v_1.Args[1]1529			x := v_1.Args[0]1530			if !(a.Uses == 1 && buildcfg.GOARM.Version >= 6) {1531				continue1532			}1533			v.reset(OpARMMULAD)1534			v.AddArg3(a, x, y)1535			return true1536		}1537		break1538	}1539	// match: (ADDD a (NMULD x y))1540	// cond: a.Uses == 1 && buildcfg.GOARM.Version >= 61541	// result: (MULSD a x y)1542	for {1543		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1544			a := v_01545			if v_1.Op != OpARMNMULD {1546				continue1547			}1548			y := v_1.Args[1]1549			x := v_1.Args[0]1550			if !(a.Uses == 1 && buildcfg.GOARM.Version >= 6) {1551				continue1552			}1553			v.reset(OpARMMULSD)1554			v.AddArg3(a, x, y)1555			return true1556		}1557		break1558	}1559	return false1560}1561func rewriteValueARM_OpARMADDF(v *Value) bool {1562	v_1 := v.Args[1]1563	v_0 := v.Args[0]1564	// match: (ADDF a (MULF x y))1565	// cond: a.Uses == 1 && buildcfg.GOARM.Version >= 61566	// result: (MULAF a x y)1567	for {1568		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1569			a := v_01570			if v_1.Op != OpARMMULF {1571				continue1572			}1573			y := v_1.Args[1]1574			x := v_1.Args[0]1575			if !(a.Uses == 1 && buildcfg.GOARM.Version >= 6) {1576				continue1577			}1578			v.reset(OpARMMULAF)1579			v.AddArg3(a, x, y)1580			return true1581		}1582		break1583	}1584	// match: (ADDF a (NMULF x y))1585	// cond: a.Uses == 1 && buildcfg.GOARM.Version >= 61586	// result: (MULSF a x y)1587	for {1588		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1589			a := v_01590			if v_1.Op != OpARMNMULF {1591				continue1592			}1593			y := v_1.Args[1]1594			x := v_1.Args[0]1595			if !(a.Uses == 1 && buildcfg.GOARM.Version >= 6) {1596				continue1597			}1598			v.reset(OpARMMULSF)1599			v.AddArg3(a, x, y)1600			return true1601		}1602		break1603	}1604	return false1605}1606func rewriteValueARM_OpARMADDS(v *Value) bool {1607	v_1 := v.Args[1]1608	v_0 := v.Args[0]1609	// match: (ADDS x (MOVWconst [c]))1610	// result: (ADDSconst [c] x)1611	for {1612		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1613			x := v_01614			if v_1.Op != OpARMMOVWconst {1615				continue1616			}1617			c := auxIntToInt32(v_1.AuxInt)1618			v.reset(OpARMADDSconst)1619			v.AuxInt = int32ToAuxInt(c)1620			v.AddArg(x)1621			return true1622		}1623		break1624	}1625	// match: (ADDS x (SLLconst [c] y))1626	// result: (ADDSshiftLL x y [c])1627	for {1628		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1629			x := v_01630			if v_1.Op != OpARMSLLconst {1631				continue1632			}1633			c := auxIntToInt32(v_1.AuxInt)1634			y := v_1.Args[0]1635			v.reset(OpARMADDSshiftLL)1636			v.AuxInt = int32ToAuxInt(c)1637			v.AddArg2(x, y)1638			return true1639		}1640		break1641	}1642	// match: (ADDS x (SRLconst [c] y))1643	// result: (ADDSshiftRL x y [c])1644	for {1645		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1646			x := v_01647			if v_1.Op != OpARMSRLconst {1648				continue1649			}1650			c := auxIntToInt32(v_1.AuxInt)1651			y := v_1.Args[0]1652			v.reset(OpARMADDSshiftRL)1653			v.AuxInt = int32ToAuxInt(c)1654			v.AddArg2(x, y)1655			return true1656		}1657		break1658	}1659	// match: (ADDS x (SRAconst [c] y))1660	// result: (ADDSshiftRA x y [c])1661	for {1662		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1663			x := v_01664			if v_1.Op != OpARMSRAconst {1665				continue1666			}1667			c := auxIntToInt32(v_1.AuxInt)1668			y := v_1.Args[0]1669			v.reset(OpARMADDSshiftRA)1670			v.AuxInt = int32ToAuxInt(c)1671			v.AddArg2(x, y)1672			return true1673		}1674		break1675	}1676	// match: (ADDS x (SLL y z))1677	// result: (ADDSshiftLLreg x y z)1678	for {1679		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1680			x := v_01681			if v_1.Op != OpARMSLL {1682				continue1683			}1684			z := v_1.Args[1]1685			y := v_1.Args[0]1686			v.reset(OpARMADDSshiftLLreg)1687			v.AddArg3(x, y, z)1688			return true1689		}1690		break1691	}1692	// match: (ADDS x (SRL y z))1693	// result: (ADDSshiftRLreg x y z)1694	for {1695		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1696			x := v_01697			if v_1.Op != OpARMSRL {1698				continue1699			}1700			z := v_1.Args[1]1701			y := v_1.Args[0]1702			v.reset(OpARMADDSshiftRLreg)1703			v.AddArg3(x, y, z)1704			return true1705		}1706		break1707	}1708	// match: (ADDS x (SRA y z))1709	// result: (ADDSshiftRAreg x y z)1710	for {1711		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {1712			x := v_01713			if v_1.Op != OpARMSRA {1714				continue1715			}1716			z := v_1.Args[1]1717			y := v_1.Args[0]1718			v.reset(OpARMADDSshiftRAreg)1719			v.AddArg3(x, y, z)1720			return true1721		}1722		break1723	}1724	return false1725}1726func rewriteValueARM_OpARMADDSshiftLL(v *Value) bool {1727	v_1 := v.Args[1]1728	v_0 := v.Args[0]1729	b := v.Block1730	// match: (ADDSshiftLL (MOVWconst [c]) x [d])1731	// result: (ADDSconst [c] (SLLconst <x.Type> x [d]))1732	for {1733		d := auxIntToInt32(v.AuxInt)1734		if v_0.Op != OpARMMOVWconst {1735			break1736		}1737		c := auxIntToInt32(v_0.AuxInt)1738		x := v_11739		v.reset(OpARMADDSconst)1740		v.AuxInt = int32ToAuxInt(c)1741		v0 := b.NewValue0(v.Pos, OpARMSLLconst, x.Type)1742		v0.AuxInt = int32ToAuxInt(d)1743		v0.AddArg(x)1744		v.AddArg(v0)1745		return true1746	}1747	// match: (ADDSshiftLL x (MOVWconst [c]) [d])1748	// result: (ADDSconst x [c<<uint64(d)])1749	for {1750		d := auxIntToInt32(v.AuxInt)1751		x := v_01752		if v_1.Op != OpARMMOVWconst {1753			break1754		}1755		c := auxIntToInt32(v_1.AuxInt)1756		v.reset(OpARMADDSconst)1757		v.AuxInt = int32ToAuxInt(c << uint64(d))1758		v.AddArg(x)1759		return true1760	}1761	return false1762}1763func rewriteValueARM_OpARMADDSshiftLLreg(v *Value) bool {1764	v_2 := v.Args[2]1765	v_1 := v.Args[1]1766	v_0 := v.Args[0]1767	b := v.Block1768	// match: (ADDSshiftLLreg (MOVWconst [c]) x y)1769	// result: (ADDSconst [c] (SLL <x.Type> x y))1770	for {1771		if v_0.Op != OpARMMOVWconst {1772			break1773		}1774		c := auxIntToInt32(v_0.AuxInt)1775		x := v_11776		y := v_21777		v.reset(OpARMADDSconst)1778		v.AuxInt = int32ToAuxInt(c)1779		v0 := b.NewValue0(v.Pos, OpARMSLL, x.Type)1780		v0.AddArg2(x, y)1781		v.AddArg(v0)1782		return true1783	}1784	// match: (ADDSshiftLLreg x y (MOVWconst [c]))1785	// cond: 0 <= c && c < 321786	// result: (ADDSshiftLL x y [c])1787	for {1788		x := v_01789		y := v_11790		if v_2.Op != OpARMMOVWconst {1791			break1792		}1793		c := auxIntToInt32(v_2.AuxInt)1794		if !(0 <= c && c < 32) {1795			break1796		}1797		v.reset(OpARMADDSshiftLL)1798		v.AuxInt = int32ToAuxInt(c)1799		v.AddArg2(x, y)1800		return true1801	}1802	return false1803}1804func rewriteValueARM_OpARMADDSshiftRA(v *Value) bool {1805	v_1 := v.Args[1]1806	v_0 := v.Args[0]1807	b := v.Block1808	// match: (ADDSshiftRA (MOVWconst [c]) x [d])1809	// result: (ADDSconst [c] (SRAconst <x.Type> x [d]))1810	for {1811		d := auxIntToInt32(v.AuxInt)1812		if v_0.Op != OpARMMOVWconst {1813			break1814		}1815		c := auxIntToInt32(v_0.AuxInt)1816		x := v_11817		v.reset(OpARMADDSconst)1818		v.AuxInt = int32ToAuxInt(c)1819		v0 := b.NewValue0(v.Pos, OpARMSRAconst, x.Type)1820		v0.AuxInt = int32ToAuxInt(d)1821		v0.AddArg(x)1822		v.AddArg(v0)1823		return true1824	}1825	// match: (ADDSshiftRA x (MOVWconst [c]) [d])1826	// result: (ADDSconst x [c>>uint64(d)])1827	for {1828		d := auxIntToInt32(v.AuxInt)1829		x := v_01830		if v_1.Op != OpARMMOVWconst {1831			break1832		}1833		c := auxIntToInt32(v_1.AuxInt)1834		v.reset(OpARMADDSconst)1835		v.AuxInt = int32ToAuxInt(c >> uint64(d))1836		v.AddArg(x)1837		return true1838	}1839	return false1840}1841func rewriteValueARM_OpARMADDSshiftRAreg(v *Value) bool {1842	v_2 := v.Args[2]1843	v_1 := v.Args[1]1844	v_0 := v.Args[0]1845	b := v.Block1846	// match: (ADDSshiftRAreg (MOVWconst [c]) x y)1847	// result: (ADDSconst [c] (SRA <x.Type> x y))1848	for {1849		if v_0.Op != OpARMMOVWconst {1850			break1851		}1852		c := auxIntToInt32(v_0.AuxInt)1853		x := v_11854		y := v_21855		v.reset(OpARMADDSconst)1856		v.AuxInt = int32ToAuxInt(c)1857		v0 := b.NewValue0(v.Pos, OpARMSRA, x.Type)1858		v0.AddArg2(x, y)1859		v.AddArg(v0)1860		return true1861	}1862	// match: (ADDSshiftRAreg x y (MOVWconst [c]))1863	// cond: 0 <= c && c < 321864	// result: (ADDSshiftRA x y [c])1865	for {1866		x := v_01867		y := v_11868		if v_2.Op != OpARMMOVWconst {1869			break1870		}1871		c := auxIntToInt32(v_2.AuxInt)1872		if !(0 <= c && c < 32) {1873			break1874		}1875		v.reset(OpARMADDSshiftRA)1876		v.AuxInt = int32ToAuxInt(c)1877		v.AddArg2(x, y)1878		return true1879	}1880	return false1881}1882func rewriteValueARM_OpARMADDSshiftRL(v *Value) bool {1883	v_1 := v.Args[1]1884	v_0 := v.Args[0]1885	b := v.Block1886	// match: (ADDSshiftRL (MOVWconst [c]) x [d])1887	// result: (ADDSconst [c] (SRLconst <x.Type> x [d]))1888	for {1889		d := auxIntToInt32(v.AuxInt)1890		if v_0.Op != OpARMMOVWconst {1891			break1892		}1893		c := auxIntToInt32(v_0.AuxInt)1894		x := v_11895		v.reset(OpARMADDSconst)1896		v.AuxInt = int32ToAuxInt(c)1897		v0 := b.NewValue0(v.Pos, OpARMSRLconst, x.Type)1898		v0.AuxInt = int32ToAuxInt(d)1899		v0.AddArg(x)1900		v.AddArg(v0)1901		return true1902	}1903	// match: (ADDSshiftRL x (MOVWconst [c]) [d])1904	// result: (ADDSconst x [int32(uint32(c)>>uint64(d))])1905	for {1906		d := auxIntToInt32(v.AuxInt)1907		x := v_01908		if v_1.Op != OpARMMOVWconst {1909			break1910		}1911		c := auxIntToInt32(v_1.AuxInt)1912		v.reset(OpARMADDSconst)1913		v.AuxInt = int32ToAuxInt(int32(uint32(c) >> uint64(d)))1914		v.AddArg(x)1915		return true1916	}1917	return false1918}1919func rewriteValueARM_OpARMADDSshiftRLreg(v *Value) bool {1920	v_2 := v.Args[2]1921	v_1 := v.Args[1]1922	v_0 := v.Args[0]1923	b := v.Block1924	// match: (ADDSshiftRLreg (MOVWconst [c]) x y)1925	// result: (ADDSconst [c] (SRL <x.Type> x y))1926	for {1927		if v_0.Op != OpARMMOVWconst {1928			break1929		}1930		c := auxIntToInt32(v_0.AuxInt)1931		x := v_11932		y := v_21933		v.reset(OpARMADDSconst)1934		v.AuxInt = int32ToAuxInt(c)1935		v0 := b.NewValue0(v.Pos, OpARMSRL, x.Type)1936		v0.AddArg2(x, y)1937		v.AddArg(v0)1938		return true1939	}1940	// match: (ADDSshiftRLreg x y (MOVWconst [c]))1941	// cond: 0 <= c && c < 321942	// result: (ADDSshiftRL x y [c])1943	for {1944		x := v_01945		y := v_11946		if v_2.Op != OpARMMOVWconst {1947			break1948		}1949		c := auxIntToInt32(v_2.AuxInt)1950		if !(0 <= c && c < 32) {1951			break1952		}1953		v.reset(OpARMADDSshiftRL)1954		v.AuxInt = int32ToAuxInt(c)1955		v.AddArg2(x, y)1956		return true1957	}1958	return false1959}1960func rewriteValueARM_OpARMADDconst(v *Value) bool {1961	v_0 := v.Args[0]1962	// match: (ADDconst [off1] (MOVWaddr [off2] {sym} ptr))1963	// result: (MOVWaddr [off1+off2] {sym} ptr)1964	for {1965		off1 := auxIntToInt32(v.AuxInt)1966		if v_0.Op != OpARMMOVWaddr {1967			break1968		}1969		off2 := auxIntToInt32(v_0.AuxInt)1970		sym := auxToSym(v_0.Aux)1971		ptr := v_0.Args[0]1972		v.reset(OpARMMOVWaddr)1973		v.AuxInt = int32ToAuxInt(off1 + off2)1974		v.Aux = symToAux(sym)1975		v.AddArg(ptr)1976		return true1977	}1978	// match: (ADDconst [0] x)1979	// result: x1980	for {1981		if auxIntToInt32(v.AuxInt) != 0 {1982			break1983		}1984		x := v_01985		v.copyOf(x)1986		return true1987	}1988	// match: (ADDconst [c] x)1989	// cond: !isARMImmRot(uint32(c)) && isARMImmRot(uint32(-c))1990	// result: (SUBconst [-c] x)1991	for {1992		c := auxIntToInt32(v.AuxInt)1993		x := v_01994		if !(!isARMImmRot(uint32(c)) && isARMImmRot(uint32(-c))) {1995			break1996		}1997		v.reset(OpARMSUBconst)1998		v.AuxInt = int32ToAuxInt(-c)1999		v.AddArg(x)2000		return true

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.