src/cmd/compile/internal/ssa/rewrite/s390x/rewriteS390X.go GO 16,819 lines View on github.com → Search inside
File is large — showing lines 1–2,000 of 16,819.
1// Code generated from _gen/S390X.rules using 'go generate'; DO NOT EDIT.23package s390x45import "math"6import "cmd/compile/internal/types"7import "cmd/compile/internal/ssa/block"8import "cmd/internal/obj/s390x"9import "cmd/compile/internal/ssa/ssaop"10import "cmd/compile/internal/ssa"1112func RewriteValue(v *ssa.Value) bool {13	switch v.Op {14	case ssaop.OpAdd16:15		v.Op = ssaop.OpS390XADDW16		return true17	case ssaop.OpAdd32:18		v.Op = ssaop.OpS390XADDW19		return true20	case ssaop.OpAdd32F:21		return rewriteValue_OpAdd32F(v)22	case ssaop.OpAdd64:23		v.Op = ssaop.OpS390XADD24		return true25	case ssaop.OpAdd64F:26		return rewriteValue_OpAdd64F(v)27	case ssaop.OpAdd8:28		v.Op = ssaop.OpS390XADDW29		return true30	case ssaop.OpAddPtr:31		v.Op = ssaop.OpS390XADD32		return true33	case ssaop.OpAddr:34		return rewriteValue_OpAddr(v)35	case ssaop.OpAnd16:36		v.Op = ssaop.OpS390XANDW37		return true38	case ssaop.OpAnd32:39		v.Op = ssaop.OpS390XANDW40		return true41	case ssaop.OpAnd64:42		v.Op = ssaop.OpS390XAND43		return true44	case ssaop.OpAnd8:45		v.Op = ssaop.OpS390XANDW46		return true47	case ssaop.OpAndB:48		v.Op = ssaop.OpS390XANDW49		return true50	case ssaop.OpAtomicAdd32:51		return rewriteValue_OpAtomicAdd32(v)52	case ssaop.OpAtomicAdd64:53		return rewriteValue_OpAtomicAdd64(v)54	case ssaop.OpAtomicAnd32:55		v.Op = ssaop.OpS390XLAN56		return true57	case ssaop.OpAtomicAnd8:58		return rewriteValue_OpAtomicAnd8(v)59	case ssaop.OpAtomicCompareAndSwap32:60		return rewriteValue_OpAtomicCompareAndSwap32(v)61	case ssaop.OpAtomicCompareAndSwap64:62		return rewriteValue_OpAtomicCompareAndSwap64(v)63	case ssaop.OpAtomicExchange32:64		return rewriteValue_OpAtomicExchange32(v)65	case ssaop.OpAtomicExchange64:66		return rewriteValue_OpAtomicExchange64(v)67	case ssaop.OpAtomicLoad32:68		return rewriteValue_OpAtomicLoad32(v)69	case ssaop.OpAtomicLoad64:70		return rewriteValue_OpAtomicLoad64(v)71	case ssaop.OpAtomicLoad8:72		return rewriteValue_OpAtomicLoad8(v)73	case ssaop.OpAtomicLoadAcq32:74		return rewriteValue_OpAtomicLoadAcq32(v)75	case ssaop.OpAtomicLoadPtr:76		return rewriteValue_OpAtomicLoadPtr(v)77	case ssaop.OpAtomicOr32:78		v.Op = ssaop.OpS390XLAO79		return true80	case ssaop.OpAtomicOr8:81		return rewriteValue_OpAtomicOr8(v)82	case ssaop.OpAtomicStore32:83		return rewriteValue_OpAtomicStore32(v)84	case ssaop.OpAtomicStore64:85		return rewriteValue_OpAtomicStore64(v)86	case ssaop.OpAtomicStore8:87		return rewriteValue_OpAtomicStore8(v)88	case ssaop.OpAtomicStorePtrNoWB:89		return rewriteValue_OpAtomicStorePtrNoWB(v)90	case ssaop.OpAtomicStoreRel32:91		return rewriteValue_OpAtomicStoreRel32(v)92	case ssaop.OpAvg64u:93		return rewriteValue_OpAvg64u(v)94	case ssaop.OpBitLen16:95		return rewriteValue_OpBitLen16(v)96	case ssaop.OpBitLen32:97		return rewriteValue_OpBitLen32(v)98	case ssaop.OpBitLen64:99		return rewriteValue_OpBitLen64(v)100	case ssaop.OpBitLen8:101		return rewriteValue_OpBitLen8(v)102	case ssaop.OpBswap16:103		return rewriteValue_OpBswap16(v)104	case ssaop.OpBswap32:105		v.Op = ssaop.OpS390XMOVWBR106		return true107	case ssaop.OpBswap64:108		v.Op = ssaop.OpS390XMOVDBR109		return true110	case ssaop.OpCeil:111		return rewriteValue_OpCeil(v)112	case ssaop.OpClosureCall:113		v.Op = ssaop.OpS390XCALLclosure114		return true115	case ssaop.OpCom16:116		v.Op = ssaop.OpS390XNOTW117		return true118	case ssaop.OpCom32:119		v.Op = ssaop.OpS390XNOTW120		return true121	case ssaop.OpCom64:122		v.Op = ssaop.OpS390XNOT123		return true124	case ssaop.OpCom8:125		v.Op = ssaop.OpS390XNOTW126		return true127	case ssaop.OpConst16:128		return rewriteValue_OpConst16(v)129	case ssaop.OpConst32:130		return rewriteValue_OpConst32(v)131	case ssaop.OpConst32F:132		v.Op = ssaop.OpS390XFMOVSconst133		return true134	case ssaop.OpConst64:135		return rewriteValue_OpConst64(v)136	case ssaop.OpConst64F:137		v.Op = ssaop.OpS390XFMOVDconst138		return true139	case ssaop.OpConst8:140		return rewriteValue_OpConst8(v)141	case ssaop.OpConstBool:142		return rewriteValue_OpConstBool(v)143	case ssaop.OpConstNil:144		return rewriteValue_OpConstNil(v)145	case ssaop.OpCtz16:146		return rewriteValue_OpCtz16(v)147	case ssaop.OpCtz16NonZero:148		v.Op = ssaop.OpCtz64149		return true150	case ssaop.OpCtz32:151		return rewriteValue_OpCtz32(v)152	case ssaop.OpCtz32NonZero:153		v.Op = ssaop.OpCtz64154		return true155	case ssaop.OpCtz64:156		return rewriteValue_OpCtz64(v)157	case ssaop.OpCtz64NonZero:158		v.Op = ssaop.OpCtz64159		return true160	case ssaop.OpCtz8:161		return rewriteValue_OpCtz8(v)162	case ssaop.OpCtz8NonZero:163		v.Op = ssaop.OpCtz64164		return true165	case ssaop.OpCvt32Fto32:166		v.Op = ssaop.OpS390XCFEBRA167		return true168	case ssaop.OpCvt32Fto32U:169		v.Op = ssaop.OpS390XCLFEBR170		return true171	case ssaop.OpCvt32Fto64:172		v.Op = ssaop.OpS390XCGEBRA173		return true174	case ssaop.OpCvt32Fto64F:175		v.Op = ssaop.OpS390XLDEBR176		return true177	case ssaop.OpCvt32Fto64U:178		v.Op = ssaop.OpS390XCLGEBR179		return true180	case ssaop.OpCvt32Uto32F:181		v.Op = ssaop.OpS390XCELFBR182		return true183	case ssaop.OpCvt32Uto64F:184		v.Op = ssaop.OpS390XCDLFBR185		return true186	case ssaop.OpCvt32to32F:187		v.Op = ssaop.OpS390XCEFBRA188		return true189	case ssaop.OpCvt32to64F:190		v.Op = ssaop.OpS390XCDFBRA191		return true192	case ssaop.OpCvt64Fto32:193		v.Op = ssaop.OpS390XCFDBRA194		return true195	case ssaop.OpCvt64Fto32F:196		v.Op = ssaop.OpS390XLEDBR197		return true198	case ssaop.OpCvt64Fto32U:199		v.Op = ssaop.OpS390XCLFDBR200		return true201	case ssaop.OpCvt64Fto64:202		v.Op = ssaop.OpS390XCGDBRA203		return true204	case ssaop.OpCvt64Fto64U:205		v.Op = ssaop.OpS390XCLGDBR206		return true207	case ssaop.OpCvt64Uto32F:208		v.Op = ssaop.OpS390XCELGBR209		return true210	case ssaop.OpCvt64Uto64F:211		v.Op = ssaop.OpS390XCDLGBR212		return true213	case ssaop.OpCvt64to32F:214		v.Op = ssaop.OpS390XCEGBRA215		return true216	case ssaop.OpCvt64to64F:217		v.Op = ssaop.OpS390XCDGBRA218		return true219	case ssaop.OpCvtBoolToUint8:220		v.Op = ssaop.OpCopy221		return true222	case ssaop.OpDiv16:223		return rewriteValue_OpDiv16(v)224	case ssaop.OpDiv16u:225		return rewriteValue_OpDiv16u(v)226	case ssaop.OpDiv32:227		return rewriteValue_OpDiv32(v)228	case ssaop.OpDiv32F:229		v.Op = ssaop.OpS390XFDIVS230		return true231	case ssaop.OpDiv32u:232		return rewriteValue_OpDiv32u(v)233	case ssaop.OpDiv64:234		return rewriteValue_OpDiv64(v)235	case ssaop.OpDiv64F:236		v.Op = ssaop.OpS390XFDIV237		return true238	case ssaop.OpDiv64u:239		v.Op = ssaop.OpS390XDIVDU240		return true241	case ssaop.OpDiv8:242		return rewriteValue_OpDiv8(v)243	case ssaop.OpDiv8u:244		return rewriteValue_OpDiv8u(v)245	case ssaop.OpEq16:246		return rewriteValue_OpEq16(v)247	case ssaop.OpEq32:248		return rewriteValue_OpEq32(v)249	case ssaop.OpEq32F:250		return rewriteValue_OpEq32F(v)251	case ssaop.OpEq64:252		return rewriteValue_OpEq64(v)253	case ssaop.OpEq64F:254		return rewriteValue_OpEq64F(v)255	case ssaop.OpEq8:256		return rewriteValue_OpEq8(v)257	case ssaop.OpEqB:258		return rewriteValue_OpEqB(v)259	case ssaop.OpEqPtr:260		return rewriteValue_OpEqPtr(v)261	case ssaop.OpFMA:262		return rewriteValue_OpFMA(v)263	case ssaop.OpFloor:264		return rewriteValue_OpFloor(v)265	case ssaop.OpGetCallerPC:266		v.Op = ssaop.OpS390XLoweredGetCallerPC267		return true268	case ssaop.OpGetCallerSP:269		v.Op = ssaop.OpS390XLoweredGetCallerSP270		return true271	case ssaop.OpGetClosurePtr:272		v.Op = ssaop.OpS390XLoweredGetClosurePtr273		return true274	case ssaop.OpGetG:275		v.Op = ssaop.OpS390XLoweredGetG276		return true277	case ssaop.OpHmul32:278		return rewriteValue_OpHmul32(v)279	case ssaop.OpHmul32u:280		return rewriteValue_OpHmul32u(v)281	case ssaop.OpHmul64:282		v.Op = ssaop.OpS390XMULHD283		return true284	case ssaop.OpHmul64u:285		v.Op = ssaop.OpS390XMULHDU286		return true287	case ssaop.OpITab:288		return rewriteValue_OpITab(v)289	case ssaop.OpInterCall:290		v.Op = ssaop.OpS390XCALLinter291		return true292	case ssaop.OpIsInBounds:293		return rewriteValue_OpIsInBounds(v)294	case ssaop.OpIsNonNil:295		return rewriteValue_OpIsNonNil(v)296	case ssaop.OpIsSliceInBounds:297		return rewriteValue_OpIsSliceInBounds(v)298	case ssaop.OpLeq16:299		return rewriteValue_OpLeq16(v)300	case ssaop.OpLeq16U:301		return rewriteValue_OpLeq16U(v)302	case ssaop.OpLeq32:303		return rewriteValue_OpLeq32(v)304	case ssaop.OpLeq32F:305		return rewriteValue_OpLeq32F(v)306	case ssaop.OpLeq32U:307		return rewriteValue_OpLeq32U(v)308	case ssaop.OpLeq64:309		return rewriteValue_OpLeq64(v)310	case ssaop.OpLeq64F:311		return rewriteValue_OpLeq64F(v)312	case ssaop.OpLeq64U:313		return rewriteValue_OpLeq64U(v)314	case ssaop.OpLeq8:315		return rewriteValue_OpLeq8(v)316	case ssaop.OpLeq8U:317		return rewriteValue_OpLeq8U(v)318	case ssaop.OpLess16:319		return rewriteValue_OpLess16(v)320	case ssaop.OpLess16U:321		return rewriteValue_OpLess16U(v)322	case ssaop.OpLess32:323		return rewriteValue_OpLess32(v)324	case ssaop.OpLess32F:325		return rewriteValue_OpLess32F(v)326	case ssaop.OpLess32U:327		return rewriteValue_OpLess32U(v)328	case ssaop.OpLess64:329		return rewriteValue_OpLess64(v)330	case ssaop.OpLess64F:331		return rewriteValue_OpLess64F(v)332	case ssaop.OpLess64U:333		return rewriteValue_OpLess64U(v)334	case ssaop.OpLess8:335		return rewriteValue_OpLess8(v)336	case ssaop.OpLess8U:337		return rewriteValue_OpLess8U(v)338	case ssaop.OpLoad:339		return rewriteValue_OpLoad(v)340	case ssaop.OpLocalAddr:341		return rewriteValue_OpLocalAddr(v)342	case ssaop.OpLsh16x16:343		return rewriteValue_OpLsh16x16(v)344	case ssaop.OpLsh16x32:345		return rewriteValue_OpLsh16x32(v)346	case ssaop.OpLsh16x64:347		return rewriteValue_OpLsh16x64(v)348	case ssaop.OpLsh16x8:349		return rewriteValue_OpLsh16x8(v)350	case ssaop.OpLsh32x16:351		return rewriteValue_OpLsh32x16(v)352	case ssaop.OpLsh32x32:353		return rewriteValue_OpLsh32x32(v)354	case ssaop.OpLsh32x64:355		return rewriteValue_OpLsh32x64(v)356	case ssaop.OpLsh32x8:357		return rewriteValue_OpLsh32x8(v)358	case ssaop.OpLsh64x16:359		return rewriteValue_OpLsh64x16(v)360	case ssaop.OpLsh64x32:361		return rewriteValue_OpLsh64x32(v)362	case ssaop.OpLsh64x64:363		return rewriteValue_OpLsh64x64(v)364	case ssaop.OpLsh64x8:365		return rewriteValue_OpLsh64x8(v)366	case ssaop.OpLsh8x16:367		return rewriteValue_OpLsh8x16(v)368	case ssaop.OpLsh8x32:369		return rewriteValue_OpLsh8x32(v)370	case ssaop.OpLsh8x64:371		return rewriteValue_OpLsh8x64(v)372	case ssaop.OpLsh8x8:373		return rewriteValue_OpLsh8x8(v)374	case ssaop.OpMax32F:375		v.Op = ssaop.OpS390XWFMAXSB376		return true377	case ssaop.OpMax64F:378		v.Op = ssaop.OpS390XWFMAXDB379		return true380	case ssaop.OpMin32F:381		v.Op = ssaop.OpS390XWFMINSB382		return true383	case ssaop.OpMin64F:384		v.Op = ssaop.OpS390XWFMINDB385		return true386	case ssaop.OpMod16:387		return rewriteValue_OpMod16(v)388	case ssaop.OpMod16u:389		return rewriteValue_OpMod16u(v)390	case ssaop.OpMod32:391		return rewriteValue_OpMod32(v)392	case ssaop.OpMod32u:393		return rewriteValue_OpMod32u(v)394	case ssaop.OpMod64:395		return rewriteValue_OpMod64(v)396	case ssaop.OpMod64u:397		v.Op = ssaop.OpS390XMODDU398		return true399	case ssaop.OpMod8:400		return rewriteValue_OpMod8(v)401	case ssaop.OpMod8u:402		return rewriteValue_OpMod8u(v)403	case ssaop.OpMove:404		return rewriteValue_OpMove(v)405	case ssaop.OpMul16:406		v.Op = ssaop.OpS390XMULLW407		return true408	case ssaop.OpMul32:409		v.Op = ssaop.OpS390XMULLW410		return true411	case ssaop.OpMul32F:412		v.Op = ssaop.OpS390XFMULS413		return true414	case ssaop.OpMul64:415		v.Op = ssaop.OpS390XMULLD416		return true417	case ssaop.OpMul64F:418		v.Op = ssaop.OpS390XFMUL419		return true420	case ssaop.OpMul64uhilo:421		v.Op = ssaop.OpS390XMLGR422		return true423	case ssaop.OpMul8:424		v.Op = ssaop.OpS390XMULLW425		return true426	case ssaop.OpNeg16:427		v.Op = ssaop.OpS390XNEGW428		return true429	case ssaop.OpNeg32:430		v.Op = ssaop.OpS390XNEGW431		return true432	case ssaop.OpNeg32F:433		v.Op = ssaop.OpS390XFNEGS434		return true435	case ssaop.OpNeg64:436		v.Op = ssaop.OpS390XNEG437		return true438	case ssaop.OpNeg64F:439		v.Op = ssaop.OpS390XFNEG440		return true441	case ssaop.OpNeg8:442		v.Op = ssaop.OpS390XNEGW443		return true444	case ssaop.OpNeq16:445		return rewriteValue_OpNeq16(v)446	case ssaop.OpNeq32:447		return rewriteValue_OpNeq32(v)448	case ssaop.OpNeq32F:449		return rewriteValue_OpNeq32F(v)450	case ssaop.OpNeq64:451		return rewriteValue_OpNeq64(v)452	case ssaop.OpNeq64F:453		return rewriteValue_OpNeq64F(v)454	case ssaop.OpNeq8:455		return rewriteValue_OpNeq8(v)456	case ssaop.OpNeqB:457		return rewriteValue_OpNeqB(v)458	case ssaop.OpNeqPtr:459		return rewriteValue_OpNeqPtr(v)460	case ssaop.OpNilCheck:461		v.Op = ssaop.OpS390XLoweredNilCheck462		return true463	case ssaop.OpNot:464		return rewriteValue_OpNot(v)465	case ssaop.OpOffPtr:466		return rewriteValue_OpOffPtr(v)467	case ssaop.OpOr16:468		v.Op = ssaop.OpS390XORW469		return true470	case ssaop.OpOr32:471		v.Op = ssaop.OpS390XORW472		return true473	case ssaop.OpOr64:474		v.Op = ssaop.OpS390XOR475		return true476	case ssaop.OpOr8:477		v.Op = ssaop.OpS390XORW478		return true479	case ssaop.OpOrB:480		v.Op = ssaop.OpS390XORW481		return true482	case ssaop.OpPanicBounds:483		v.Op = ssaop.OpS390XLoweredPanicBoundsRR484		return true485	case ssaop.OpPopCount16:486		return rewriteValue_OpPopCount16(v)487	case ssaop.OpPopCount32:488		return rewriteValue_OpPopCount32(v)489	case ssaop.OpPopCount64:490		return rewriteValue_OpPopCount64(v)491	case ssaop.OpPopCount8:492		return rewriteValue_OpPopCount8(v)493	case ssaop.OpRotateLeft16:494		return rewriteValue_OpRotateLeft16(v)495	case ssaop.OpRotateLeft32:496		v.Op = ssaop.OpS390XRLL497		return true498	case ssaop.OpRotateLeft64:499		v.Op = ssaop.OpS390XRLLG500		return true501	case ssaop.OpRotateLeft8:502		return rewriteValue_OpRotateLeft8(v)503	case ssaop.OpRound:504		return rewriteValue_OpRound(v)505	case ssaop.OpRound32F:506		v.Op = ssaop.OpS390XLoweredRound32F507		return true508	case ssaop.OpRound64F:509		v.Op = ssaop.OpS390XLoweredRound64F510		return true511	case ssaop.OpRoundToEven:512		return rewriteValue_OpRoundToEven(v)513	case ssaop.OpRsh16Ux16:514		return rewriteValue_OpRsh16Ux16(v)515	case ssaop.OpRsh16Ux32:516		return rewriteValue_OpRsh16Ux32(v)517	case ssaop.OpRsh16Ux64:518		return rewriteValue_OpRsh16Ux64(v)519	case ssaop.OpRsh16Ux8:520		return rewriteValue_OpRsh16Ux8(v)521	case ssaop.OpRsh16x16:522		return rewriteValue_OpRsh16x16(v)523	case ssaop.OpRsh16x32:524		return rewriteValue_OpRsh16x32(v)525	case ssaop.OpRsh16x64:526		return rewriteValue_OpRsh16x64(v)527	case ssaop.OpRsh16x8:528		return rewriteValue_OpRsh16x8(v)529	case ssaop.OpRsh32Ux16:530		return rewriteValue_OpRsh32Ux16(v)531	case ssaop.OpRsh32Ux32:532		return rewriteValue_OpRsh32Ux32(v)533	case ssaop.OpRsh32Ux64:534		return rewriteValue_OpRsh32Ux64(v)535	case ssaop.OpRsh32Ux8:536		return rewriteValue_OpRsh32Ux8(v)537	case ssaop.OpRsh32x16:538		return rewriteValue_OpRsh32x16(v)539	case ssaop.OpRsh32x32:540		return rewriteValue_OpRsh32x32(v)541	case ssaop.OpRsh32x64:542		return rewriteValue_OpRsh32x64(v)543	case ssaop.OpRsh32x8:544		return rewriteValue_OpRsh32x8(v)545	case ssaop.OpRsh64Ux16:546		return rewriteValue_OpRsh64Ux16(v)547	case ssaop.OpRsh64Ux32:548		return rewriteValue_OpRsh64Ux32(v)549	case ssaop.OpRsh64Ux64:550		return rewriteValue_OpRsh64Ux64(v)551	case ssaop.OpRsh64Ux8:552		return rewriteValue_OpRsh64Ux8(v)553	case ssaop.OpRsh64x16:554		return rewriteValue_OpRsh64x16(v)555	case ssaop.OpRsh64x32:556		return rewriteValue_OpRsh64x32(v)557	case ssaop.OpRsh64x64:558		return rewriteValue_OpRsh64x64(v)559	case ssaop.OpRsh64x8:560		return rewriteValue_OpRsh64x8(v)561	case ssaop.OpRsh8Ux16:562		return rewriteValue_OpRsh8Ux16(v)563	case ssaop.OpRsh8Ux32:564		return rewriteValue_OpRsh8Ux32(v)565	case ssaop.OpRsh8Ux64:566		return rewriteValue_OpRsh8Ux64(v)567	case ssaop.OpRsh8Ux8:568		return rewriteValue_OpRsh8Ux8(v)569	case ssaop.OpRsh8x16:570		return rewriteValue_OpRsh8x16(v)571	case ssaop.OpRsh8x32:572		return rewriteValue_OpRsh8x32(v)573	case ssaop.OpRsh8x64:574		return rewriteValue_OpRsh8x64(v)575	case ssaop.OpRsh8x8:576		return rewriteValue_OpRsh8x8(v)577	case ssaop.OpS390XADD:578		return rewriteValue_OpS390XADD(v)579	case ssaop.OpS390XADDC:580		return rewriteValue_OpS390XADDC(v)581	case ssaop.OpS390XADDE:582		return rewriteValue_OpS390XADDE(v)583	case ssaop.OpS390XADDW:584		return rewriteValue_OpS390XADDW(v)585	case ssaop.OpS390XADDWconst:586		return rewriteValue_OpS390XADDWconst(v)587	case ssaop.OpS390XADDWload:588		return rewriteValue_OpS390XADDWload(v)589	case ssaop.OpS390XADDconst:590		return rewriteValue_OpS390XADDconst(v)591	case ssaop.OpS390XADDload:592		return rewriteValue_OpS390XADDload(v)593	case ssaop.OpS390XAND:594		return rewriteValue_OpS390XAND(v)595	case ssaop.OpS390XANDW:596		return rewriteValue_OpS390XANDW(v)597	case ssaop.OpS390XANDWconst:598		return rewriteValue_OpS390XANDWconst(v)599	case ssaop.OpS390XANDWload:600		return rewriteValue_OpS390XANDWload(v)601	case ssaop.OpS390XANDconst:602		return rewriteValue_OpS390XANDconst(v)603	case ssaop.OpS390XANDload:604		return rewriteValue_OpS390XANDload(v)605	case ssaop.OpS390XCMP:606		return rewriteValue_OpS390XCMP(v)607	case ssaop.OpS390XCMPU:608		return rewriteValue_OpS390XCMPU(v)609	case ssaop.OpS390XCMPUconst:610		return rewriteValue_OpS390XCMPUconst(v)611	case ssaop.OpS390XCMPW:612		return rewriteValue_OpS390XCMPW(v)613	case ssaop.OpS390XCMPWU:614		return rewriteValue_OpS390XCMPWU(v)615	case ssaop.OpS390XCMPWUconst:616		return rewriteValue_OpS390XCMPWUconst(v)617	case ssaop.OpS390XCMPWconst:618		return rewriteValue_OpS390XCMPWconst(v)619	case ssaop.OpS390XCMPconst:620		return rewriteValue_OpS390XCMPconst(v)621	case ssaop.OpS390XCPSDR:622		return rewriteValue_OpS390XCPSDR(v)623	case ssaop.OpS390XFCMP:624		return rewriteValue_OpS390XFCMP(v)625	case ssaop.OpS390XFCMPS:626		return rewriteValue_OpS390XFCMPS(v)627	case ssaop.OpS390XFMOVDload:628		return rewriteValue_OpS390XFMOVDload(v)629	case ssaop.OpS390XFMOVDstore:630		return rewriteValue_OpS390XFMOVDstore(v)631	case ssaop.OpS390XFMOVSload:632		return rewriteValue_OpS390XFMOVSload(v)633	case ssaop.OpS390XFMOVSstore:634		return rewriteValue_OpS390XFMOVSstore(v)635	case ssaop.OpS390XFNEG:636		return rewriteValue_OpS390XFNEG(v)637	case ssaop.OpS390XFNEGS:638		return rewriteValue_OpS390XFNEGS(v)639	case ssaop.OpS390XLDGR:640		return rewriteValue_OpS390XLDGR(v)641	case ssaop.OpS390XLEDBR:642		return rewriteValue_OpS390XLEDBR(v)643	case ssaop.OpS390XLGDR:644		return rewriteValue_OpS390XLGDR(v)645	case ssaop.OpS390XLOCGR:646		return rewriteValue_OpS390XLOCGR(v)647	case ssaop.OpS390XLTDBR:648		return rewriteValue_OpS390XLTDBR(v)649	case ssaop.OpS390XLTEBR:650		return rewriteValue_OpS390XLTEBR(v)651	case ssaop.OpS390XLoweredPanicBoundsCR:652		return rewriteValue_OpS390XLoweredPanicBoundsCR(v)653	case ssaop.OpS390XLoweredPanicBoundsRC:654		return rewriteValue_OpS390XLoweredPanicBoundsRC(v)655	case ssaop.OpS390XLoweredPanicBoundsRR:656		return rewriteValue_OpS390XLoweredPanicBoundsRR(v)657	case ssaop.OpS390XLoweredRound32F:658		return rewriteValue_OpS390XLoweredRound32F(v)659	case ssaop.OpS390XLoweredRound64F:660		return rewriteValue_OpS390XLoweredRound64F(v)661	case ssaop.OpS390XMOVBZload:662		return rewriteValue_OpS390XMOVBZload(v)663	case ssaop.OpS390XMOVBZreg:664		return rewriteValue_OpS390XMOVBZreg(v)665	case ssaop.OpS390XMOVBload:666		return rewriteValue_OpS390XMOVBload(v)667	case ssaop.OpS390XMOVBreg:668		return rewriteValue_OpS390XMOVBreg(v)669	case ssaop.OpS390XMOVBstore:670		return rewriteValue_OpS390XMOVBstore(v)671	case ssaop.OpS390XMOVBstoreconst:672		return rewriteValue_OpS390XMOVBstoreconst(v)673	case ssaop.OpS390XMOVDBR:674		return rewriteValue_OpS390XMOVDBR(v)675	case ssaop.OpS390XMOVDaddridx:676		return rewriteValue_OpS390XMOVDaddridx(v)677	case ssaop.OpS390XMOVDload:678		return rewriteValue_OpS390XMOVDload(v)679	case ssaop.OpS390XMOVDstore:680		return rewriteValue_OpS390XMOVDstore(v)681	case ssaop.OpS390XMOVDstoreconst:682		return rewriteValue_OpS390XMOVDstoreconst(v)683	case ssaop.OpS390XMOVDstoreidx:684		return rewriteValue_OpS390XMOVDstoreidx(v)685	case ssaop.OpS390XMOVHZload:686		return rewriteValue_OpS390XMOVHZload(v)687	case ssaop.OpS390XMOVHZreg:688		return rewriteValue_OpS390XMOVHZreg(v)689	case ssaop.OpS390XMOVHload:690		return rewriteValue_OpS390XMOVHload(v)691	case ssaop.OpS390XMOVHreg:692		return rewriteValue_OpS390XMOVHreg(v)693	case ssaop.OpS390XMOVHstore:694		return rewriteValue_OpS390XMOVHstore(v)695	case ssaop.OpS390XMOVHstoreconst:696		return rewriteValue_OpS390XMOVHstoreconst(v)697	case ssaop.OpS390XMOVHstoreidx:698		return rewriteValue_OpS390XMOVHstoreidx(v)699	case ssaop.OpS390XMOVWBR:700		return rewriteValue_OpS390XMOVWBR(v)701	case ssaop.OpS390XMOVWZload:702		return rewriteValue_OpS390XMOVWZload(v)703	case ssaop.OpS390XMOVWZreg:704		return rewriteValue_OpS390XMOVWZreg(v)705	case ssaop.OpS390XMOVWload:706		return rewriteValue_OpS390XMOVWload(v)707	case ssaop.OpS390XMOVWreg:708		return rewriteValue_OpS390XMOVWreg(v)709	case ssaop.OpS390XMOVWstore:710		return rewriteValue_OpS390XMOVWstore(v)711	case ssaop.OpS390XMOVWstoreconst:712		return rewriteValue_OpS390XMOVWstoreconst(v)713	case ssaop.OpS390XMOVWstoreidx:714		return rewriteValue_OpS390XMOVWstoreidx(v)715	case ssaop.OpS390XMULLD:716		return rewriteValue_OpS390XMULLD(v)717	case ssaop.OpS390XMULLDconst:718		return rewriteValue_OpS390XMULLDconst(v)719	case ssaop.OpS390XMULLDload:720		return rewriteValue_OpS390XMULLDload(v)721	case ssaop.OpS390XMULLW:722		return rewriteValue_OpS390XMULLW(v)723	case ssaop.OpS390XMULLWconst:724		return rewriteValue_OpS390XMULLWconst(v)725	case ssaop.OpS390XMULLWload:726		return rewriteValue_OpS390XMULLWload(v)727	case ssaop.OpS390XNEG:728		return rewriteValue_OpS390XNEG(v)729	case ssaop.OpS390XNEGW:730		return rewriteValue_OpS390XNEGW(v)731	case ssaop.OpS390XNOT:732		return rewriteValue_OpS390XNOT(v)733	case ssaop.OpS390XNOTW:734		return rewriteValue_OpS390XNOTW(v)735	case ssaop.OpS390XOR:736		return rewriteValue_OpS390XOR(v)737	case ssaop.OpS390XORW:738		return rewriteValue_OpS390XORW(v)739	case ssaop.OpS390XORWconst:740		return rewriteValue_OpS390XORWconst(v)741	case ssaop.OpS390XORWload:742		return rewriteValue_OpS390XORWload(v)743	case ssaop.OpS390XORconst:744		return rewriteValue_OpS390XORconst(v)745	case ssaop.OpS390XORload:746		return rewriteValue_OpS390XORload(v)747	case ssaop.OpS390XRISBGZ:748		return rewriteValue_OpS390XRISBGZ(v)749	case ssaop.OpS390XRLL:750		return rewriteValue_OpS390XRLL(v)751	case ssaop.OpS390XRLLG:752		return rewriteValue_OpS390XRLLG(v)753	case ssaop.OpS390XSLD:754		return rewriteValue_OpS390XSLD(v)755	case ssaop.OpS390XSLDconst:756		return rewriteValue_OpS390XSLDconst(v)757	case ssaop.OpS390XSLW:758		return rewriteValue_OpS390XSLW(v)759	case ssaop.OpS390XSLWconst:760		return rewriteValue_OpS390XSLWconst(v)761	case ssaop.OpS390XSRAD:762		return rewriteValue_OpS390XSRAD(v)763	case ssaop.OpS390XSRADconst:764		return rewriteValue_OpS390XSRADconst(v)765	case ssaop.OpS390XSRAW:766		return rewriteValue_OpS390XSRAW(v)767	case ssaop.OpS390XSRAWconst:768		return rewriteValue_OpS390XSRAWconst(v)769	case ssaop.OpS390XSRD:770		return rewriteValue_OpS390XSRD(v)771	case ssaop.OpS390XSRDconst:772		return rewriteValue_OpS390XSRDconst(v)773	case ssaop.OpS390XSRW:774		return rewriteValue_OpS390XSRW(v)775	case ssaop.OpS390XSRWconst:776		return rewriteValue_OpS390XSRWconst(v)777	case ssaop.OpS390XSTM2:778		return rewriteValue_OpS390XSTM2(v)779	case ssaop.OpS390XSTMG2:780		return rewriteValue_OpS390XSTMG2(v)781	case ssaop.OpS390XSUB:782		return rewriteValue_OpS390XSUB(v)783	case ssaop.OpS390XSUBE:784		return rewriteValue_OpS390XSUBE(v)785	case ssaop.OpS390XSUBW:786		return rewriteValue_OpS390XSUBW(v)787	case ssaop.OpS390XSUBWconst:788		return rewriteValue_OpS390XSUBWconst(v)789	case ssaop.OpS390XSUBWload:790		return rewriteValue_OpS390XSUBWload(v)791	case ssaop.OpS390XSUBconst:792		return rewriteValue_OpS390XSUBconst(v)793	case ssaop.OpS390XSUBload:794		return rewriteValue_OpS390XSUBload(v)795	case ssaop.OpS390XSumBytes2:796		return rewriteValue_OpS390XSumBytes2(v)797	case ssaop.OpS390XSumBytes4:798		return rewriteValue_OpS390XSumBytes4(v)799	case ssaop.OpS390XSumBytes8:800		return rewriteValue_OpS390XSumBytes8(v)801	case ssaop.OpS390XXOR:802		return rewriteValue_OpS390XXOR(v)803	case ssaop.OpS390XXORW:804		return rewriteValue_OpS390XXORW(v)805	case ssaop.OpS390XXORWconst:806		return rewriteValue_OpS390XXORWconst(v)807	case ssaop.OpS390XXORWload:808		return rewriteValue_OpS390XXORWload(v)809	case ssaop.OpS390XXORconst:810		return rewriteValue_OpS390XXORconst(v)811	case ssaop.OpS390XXORload:812		return rewriteValue_OpS390XXORload(v)813	case ssaop.OpSelect0:814		return rewriteValue_OpSelect0(v)815	case ssaop.OpSelect1:816		return rewriteValue_OpSelect1(v)817	case ssaop.OpSignExt16to32:818		v.Op = ssaop.OpS390XMOVHreg819		return true820	case ssaop.OpSignExt16to64:821		v.Op = ssaop.OpS390XMOVHreg822		return true823	case ssaop.OpSignExt32to64:824		v.Op = ssaop.OpS390XMOVWreg825		return true826	case ssaop.OpSignExt8to16:827		v.Op = ssaop.OpS390XMOVBreg828		return true829	case ssaop.OpSignExt8to32:830		v.Op = ssaop.OpS390XMOVBreg831		return true832	case ssaop.OpSignExt8to64:833		v.Op = ssaop.OpS390XMOVBreg834		return true835	case ssaop.OpSlicemask:836		return rewriteValue_OpSlicemask(v)837	case ssaop.OpSqrt:838		v.Op = ssaop.OpS390XFSQRT839		return true840	case ssaop.OpSqrt32:841		v.Op = ssaop.OpS390XFSQRTS842		return true843	case ssaop.OpStaticCall:844		v.Op = ssaop.OpS390XCALLstatic845		return true846	case ssaop.OpStore:847		return rewriteValue_OpStore(v)848	case ssaop.OpSub16:849		v.Op = ssaop.OpS390XSUBW850		return true851	case ssaop.OpSub32:852		v.Op = ssaop.OpS390XSUBW853		return true854	case ssaop.OpSub32F:855		return rewriteValue_OpSub32F(v)856	case ssaop.OpSub64:857		v.Op = ssaop.OpS390XSUB858		return true859	case ssaop.OpSub64F:860		return rewriteValue_OpSub64F(v)861	case ssaop.OpSub8:862		v.Op = ssaop.OpS390XSUBW863		return true864	case ssaop.OpSubPtr:865		v.Op = ssaop.OpS390XSUB866		return true867	case ssaop.OpTailCall:868		v.Op = ssaop.OpS390XCALLtail869		return true870	case ssaop.OpTailCallInter:871		v.Op = ssaop.OpS390XCALLtailinter872		return true873	case ssaop.OpTrunc:874		return rewriteValue_OpTrunc(v)875	case ssaop.OpTrunc16to8:876		v.Op = ssaop.OpCopy877		return true878	case ssaop.OpTrunc32to16:879		v.Op = ssaop.OpCopy880		return true881	case ssaop.OpTrunc32to8:882		v.Op = ssaop.OpCopy883		return true884	case ssaop.OpTrunc64to16:885		v.Op = ssaop.OpCopy886		return true887	case ssaop.OpTrunc64to32:888		v.Op = ssaop.OpCopy889		return true890	case ssaop.OpTrunc64to8:891		v.Op = ssaop.OpCopy892		return true893	case ssaop.OpWB:894		v.Op = ssaop.OpS390XLoweredWB895		return true896	case ssaop.OpXor16:897		v.Op = ssaop.OpS390XXORW898		return true899	case ssaop.OpXor32:900		v.Op = ssaop.OpS390XXORW901		return true902	case ssaop.OpXor64:903		v.Op = ssaop.OpS390XXOR904		return true905	case ssaop.OpXor8:906		v.Op = ssaop.OpS390XXORW907		return true908	case ssaop.OpZero:909		return rewriteValue_OpZero(v)910	case ssaop.OpZeroExt16to32:911		v.Op = ssaop.OpS390XMOVHZreg912		return true913	case ssaop.OpZeroExt16to64:914		v.Op = ssaop.OpS390XMOVHZreg915		return true916	case ssaop.OpZeroExt32to64:917		v.Op = ssaop.OpS390XMOVWZreg918		return true919	case ssaop.OpZeroExt8to16:920		v.Op = ssaop.OpS390XMOVBZreg921		return true922	case ssaop.OpZeroExt8to32:923		v.Op = ssaop.OpS390XMOVBZreg924		return true925	case ssaop.OpZeroExt8to64:926		v.Op = ssaop.OpS390XMOVBZreg927		return true928	}929	return false930}931func rewriteValue_OpAdd32F(v *ssa.Value) bool {932	v_1 := v.Args[1]933	v_0 := v.Args[0]934	b := v.Block935	typ := &b.Func.Config.Types936	// match: (Add32F x y)937	// result: (Select0 (FADDS x y))938	for {939		x := v_0940		y := v_1941		v.Reset(ssaop.OpSelect0)942		v0 := b.NewValue0(v.Pos, ssaop.OpS390XFADDS, types.NewTuple(typ.Float32, types.TypeFlags))943		v0.AddArg2(x, y)944		v.AddArg(v0)945		return true946	}947}948func rewriteValue_OpAdd64F(v *ssa.Value) bool {949	v_1 := v.Args[1]950	v_0 := v.Args[0]951	b := v.Block952	typ := &b.Func.Config.Types953	// match: (Add64F x y)954	// result: (Select0 (FADD x y))955	for {956		x := v_0957		y := v_1958		v.Reset(ssaop.OpSelect0)959		v0 := b.NewValue0(v.Pos, ssaop.OpS390XFADD, types.NewTuple(typ.Float64, types.TypeFlags))960		v0.AddArg2(x, y)961		v.AddArg(v0)962		return true963	}964}965func rewriteValue_OpAddr(v *ssa.Value) bool {966	v_0 := v.Args[0]967	// match: (Addr {sym} base)968	// result: (MOVDaddr {sym} base)969	for {970		sym := ssa.AuxToSym(v.Aux)971		base := v_0972		v.Reset(ssaop.OpS390XMOVDaddr)973		v.Aux = ssa.SymToAux(sym)974		v.AddArg(base)975		return true976	}977}978func rewriteValue_OpAtomicAdd32(v *ssa.Value) bool {979	v_2 := v.Args[2]980	v_1 := v.Args[1]981	v_0 := v.Args[0]982	b := v.Block983	typ := &b.Func.Config.Types984	// match: (AtomicAdd32 ptr val mem)985	// result: (AddTupleFirst32 val (LAA ptr val mem))986	for {987		ptr := v_0988		val := v_1989		mem := v_2990		v.Reset(ssaop.OpS390XAddTupleFirst32)991		v0 := b.NewValue0(v.Pos, ssaop.OpS390XLAA, types.NewTuple(typ.UInt32, types.TypeMem))992		v0.AddArg3(ptr, val, mem)993		v.AddArg2(val, v0)994		return true995	}996}997func rewriteValue_OpAtomicAdd64(v *ssa.Value) bool {998	v_2 := v.Args[2]999	v_1 := v.Args[1]1000	v_0 := v.Args[0]1001	b := v.Block1002	typ := &b.Func.Config.Types1003	// match: (AtomicAdd64 ptr val mem)1004	// result: (AddTupleFirst64 val (LAAG ptr val mem))1005	for {1006		ptr := v_01007		val := v_11008		mem := v_21009		v.Reset(ssaop.OpS390XAddTupleFirst64)1010		v0 := b.NewValue0(v.Pos, ssaop.OpS390XLAAG, types.NewTuple(typ.UInt64, types.TypeMem))1011		v0.AddArg3(ptr, val, mem)1012		v.AddArg2(val, v0)1013		return true1014	}1015}1016func rewriteValue_OpAtomicAnd8(v *ssa.Value) bool {1017	v_2 := v.Args[2]1018	v_1 := v.Args[1]1019	v_0 := v.Args[0]1020	b := v.Block1021	typ := &b.Func.Config.Types1022	// match: (AtomicAnd8 ptr val mem)1023	// result: (LANfloor ptr (RLL <typ.UInt32> (ORWconst <typ.UInt32> val [-1<<8]) (RXSBG <typ.UInt32> {s390x.NewRotateParams(59, 60, 3)} (MOVDconst [3<<3]) ptr)) mem)1024	for {1025		ptr := v_01026		val := v_11027		mem := v_21028		v.Reset(ssaop.OpS390XLANfloor)1029		v0 := b.NewValue0(v.Pos, ssaop.OpS390XRLL, typ.UInt32)1030		v1 := b.NewValue0(v.Pos, ssaop.OpS390XORWconst, typ.UInt32)1031		v1.AuxInt = ssa.Int32ToAuxInt(-1 << 8)1032		v1.AddArg(val)1033		v2 := b.NewValue0(v.Pos, ssaop.OpS390XRXSBG, typ.UInt32)1034		v2.Aux = ssa.S390xRotateParamsToAux(s390x.NewRotateParams(59, 60, 3))1035		v3 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1036		v3.AuxInt = ssa.Int64ToAuxInt(3 << 3)1037		v2.AddArg2(v3, ptr)1038		v0.AddArg2(v1, v2)1039		v.AddArg3(ptr, v0, mem)1040		return true1041	}1042}1043func rewriteValue_OpAtomicCompareAndSwap32(v *ssa.Value) bool {1044	v_3 := v.Args[3]1045	v_2 := v.Args[2]1046	v_1 := v.Args[1]1047	v_0 := v.Args[0]1048	// match: (AtomicCompareAndSwap32 ptr old new_ mem)1049	// result: (LoweredAtomicCas32 ptr old new_ mem)1050	for {1051		ptr := v_01052		old := v_11053		new_ := v_21054		mem := v_31055		v.Reset(ssaop.OpS390XLoweredAtomicCas32)1056		v.AddArg4(ptr, old, new_, mem)1057		return true1058	}1059}1060func rewriteValue_OpAtomicCompareAndSwap64(v *ssa.Value) bool {1061	v_3 := v.Args[3]1062	v_2 := v.Args[2]1063	v_1 := v.Args[1]1064	v_0 := v.Args[0]1065	// match: (AtomicCompareAndSwap64 ptr old new_ mem)1066	// result: (LoweredAtomicCas64 ptr old new_ mem)1067	for {1068		ptr := v_01069		old := v_11070		new_ := v_21071		mem := v_31072		v.Reset(ssaop.OpS390XLoweredAtomicCas64)1073		v.AddArg4(ptr, old, new_, mem)1074		return true1075	}1076}1077func rewriteValue_OpAtomicExchange32(v *ssa.Value) bool {1078	v_2 := v.Args[2]1079	v_1 := v.Args[1]1080	v_0 := v.Args[0]1081	// match: (AtomicExchange32 ptr val mem)1082	// result: (LoweredAtomicExchange32 ptr val mem)1083	for {1084		ptr := v_01085		val := v_11086		mem := v_21087		v.Reset(ssaop.OpS390XLoweredAtomicExchange32)1088		v.AddArg3(ptr, val, mem)1089		return true1090	}1091}1092func rewriteValue_OpAtomicExchange64(v *ssa.Value) bool {1093	v_2 := v.Args[2]1094	v_1 := v.Args[1]1095	v_0 := v.Args[0]1096	// match: (AtomicExchange64 ptr val mem)1097	// result: (LoweredAtomicExchange64 ptr val mem)1098	for {1099		ptr := v_01100		val := v_11101		mem := v_21102		v.Reset(ssaop.OpS390XLoweredAtomicExchange64)1103		v.AddArg3(ptr, val, mem)1104		return true1105	}1106}1107func rewriteValue_OpAtomicLoad32(v *ssa.Value) bool {1108	v_1 := v.Args[1]1109	v_0 := v.Args[0]1110	// match: (AtomicLoad32 ptr mem)1111	// result: (MOVWZatomicload ptr mem)1112	for {1113		ptr := v_01114		mem := v_11115		v.Reset(ssaop.OpS390XMOVWZatomicload)1116		v.AddArg2(ptr, mem)1117		return true1118	}1119}1120func rewriteValue_OpAtomicLoad64(v *ssa.Value) bool {1121	v_1 := v.Args[1]1122	v_0 := v.Args[0]1123	// match: (AtomicLoad64 ptr mem)1124	// result: (MOVDatomicload ptr mem)1125	for {1126		ptr := v_01127		mem := v_11128		v.Reset(ssaop.OpS390XMOVDatomicload)1129		v.AddArg2(ptr, mem)1130		return true1131	}1132}1133func rewriteValue_OpAtomicLoad8(v *ssa.Value) bool {1134	v_1 := v.Args[1]1135	v_0 := v.Args[0]1136	// match: (AtomicLoad8 ptr mem)1137	// result: (MOVBZatomicload ptr mem)1138	for {1139		ptr := v_01140		mem := v_11141		v.Reset(ssaop.OpS390XMOVBZatomicload)1142		v.AddArg2(ptr, mem)1143		return true1144	}1145}1146func rewriteValue_OpAtomicLoadAcq32(v *ssa.Value) bool {1147	v_1 := v.Args[1]1148	v_0 := v.Args[0]1149	// match: (AtomicLoadAcq32 ptr mem)1150	// result: (MOVWZatomicload ptr mem)1151	for {1152		ptr := v_01153		mem := v_11154		v.Reset(ssaop.OpS390XMOVWZatomicload)1155		v.AddArg2(ptr, mem)1156		return true1157	}1158}1159func rewriteValue_OpAtomicLoadPtr(v *ssa.Value) bool {1160	v_1 := v.Args[1]1161	v_0 := v.Args[0]1162	// match: (AtomicLoadPtr ptr mem)1163	// result: (MOVDatomicload ptr mem)1164	for {1165		ptr := v_01166		mem := v_11167		v.Reset(ssaop.OpS390XMOVDatomicload)1168		v.AddArg2(ptr, mem)1169		return true1170	}1171}1172func rewriteValue_OpAtomicOr8(v *ssa.Value) bool {1173	v_2 := v.Args[2]1174	v_1 := v.Args[1]1175	v_0 := v.Args[0]1176	b := v.Block1177	typ := &b.Func.Config.Types1178	// match: (AtomicOr8 ptr val mem)1179	// result: (LAOfloor ptr (SLW <typ.UInt32> (MOVBZreg <typ.UInt32> val) (RXSBG <typ.UInt32> {s390x.NewRotateParams(59, 60, 3)} (MOVDconst [3<<3]) ptr)) mem)1180	for {1181		ptr := v_01182		val := v_11183		mem := v_21184		v.Reset(ssaop.OpS390XLAOfloor)1185		v0 := b.NewValue0(v.Pos, ssaop.OpS390XSLW, typ.UInt32)1186		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVBZreg, typ.UInt32)1187		v1.AddArg(val)1188		v2 := b.NewValue0(v.Pos, ssaop.OpS390XRXSBG, typ.UInt32)1189		v2.Aux = ssa.S390xRotateParamsToAux(s390x.NewRotateParams(59, 60, 3))1190		v3 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1191		v3.AuxInt = ssa.Int64ToAuxInt(3 << 3)1192		v2.AddArg2(v3, ptr)1193		v0.AddArg2(v1, v2)1194		v.AddArg3(ptr, v0, mem)1195		return true1196	}1197}1198func rewriteValue_OpAtomicStore32(v *ssa.Value) bool {1199	v_2 := v.Args[2]1200	v_1 := v.Args[1]1201	v_0 := v.Args[0]1202	b := v.Block1203	// match: (AtomicStore32 ptr val mem)1204	// result: (SYNC (MOVWatomicstore ptr val mem))1205	for {1206		ptr := v_01207		val := v_11208		mem := v_21209		v.Reset(ssaop.OpS390XSYNC)1210		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVWatomicstore, types.TypeMem)1211		v0.AddArg3(ptr, val, mem)1212		v.AddArg(v0)1213		return true1214	}1215}1216func rewriteValue_OpAtomicStore64(v *ssa.Value) bool {1217	v_2 := v.Args[2]1218	v_1 := v.Args[1]1219	v_0 := v.Args[0]1220	b := v.Block1221	// match: (AtomicStore64 ptr val mem)1222	// result: (SYNC (MOVDatomicstore ptr val mem))1223	for {1224		ptr := v_01225		val := v_11226		mem := v_21227		v.Reset(ssaop.OpS390XSYNC)1228		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDatomicstore, types.TypeMem)1229		v0.AddArg3(ptr, val, mem)1230		v.AddArg(v0)1231		return true1232	}1233}1234func rewriteValue_OpAtomicStore8(v *ssa.Value) bool {1235	v_2 := v.Args[2]1236	v_1 := v.Args[1]1237	v_0 := v.Args[0]1238	b := v.Block1239	// match: (AtomicStore8 ptr val mem)1240	// result: (SYNC (MOVBatomicstore ptr val mem))1241	for {1242		ptr := v_01243		val := v_11244		mem := v_21245		v.Reset(ssaop.OpS390XSYNC)1246		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVBatomicstore, types.TypeMem)1247		v0.AddArg3(ptr, val, mem)1248		v.AddArg(v0)1249		return true1250	}1251}1252func rewriteValue_OpAtomicStorePtrNoWB(v *ssa.Value) bool {1253	v_2 := v.Args[2]1254	v_1 := v.Args[1]1255	v_0 := v.Args[0]1256	b := v.Block1257	// match: (AtomicStorePtrNoWB ptr val mem)1258	// result: (SYNC (MOVDatomicstore ptr val mem))1259	for {1260		ptr := v_01261		val := v_11262		mem := v_21263		v.Reset(ssaop.OpS390XSYNC)1264		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDatomicstore, types.TypeMem)1265		v0.AddArg3(ptr, val, mem)1266		v.AddArg(v0)1267		return true1268	}1269}1270func rewriteValue_OpAtomicStoreRel32(v *ssa.Value) bool {1271	v_2 := v.Args[2]1272	v_1 := v.Args[1]1273	v_0 := v.Args[0]1274	// match: (AtomicStoreRel32 ptr val mem)1275	// result: (MOVWatomicstore ptr val mem)1276	for {1277		ptr := v_01278		val := v_11279		mem := v_21280		v.Reset(ssaop.OpS390XMOVWatomicstore)1281		v.AddArg3(ptr, val, mem)1282		return true1283	}1284}1285func rewriteValue_OpAvg64u(v *ssa.Value) bool {1286	v_1 := v.Args[1]1287	v_0 := v.Args[0]1288	b := v.Block1289	// match: (Avg64u <t> x y)1290	// result: (ADD (SRDconst <t> (SUB <t> x y) [1]) y)1291	for {1292		t := v.Type1293		x := v_01294		y := v_11295		v.Reset(ssaop.OpS390XADD)1296		v0 := b.NewValue0(v.Pos, ssaop.OpS390XSRDconst, t)1297		v0.AuxInt = ssa.Uint8ToAuxInt(1)1298		v1 := b.NewValue0(v.Pos, ssaop.OpS390XSUB, t)1299		v1.AddArg2(x, y)1300		v0.AddArg(v1)1301		v.AddArg2(v0, y)1302		return true1303	}1304}1305func rewriteValue_OpBitLen16(v *ssa.Value) bool {1306	v_0 := v.Args[0]1307	b := v.Block1308	typ := &b.Func.Config.Types1309	// match: (BitLen16 x)1310	// result: (BitLen64 (ZeroExt16to64 x))1311	for {1312		x := v_01313		v.Reset(ssaop.OpBitLen64)1314		v0 := b.NewValue0(v.Pos, ssaop.OpZeroExt16to64, typ.UInt64)1315		v0.AddArg(x)1316		v.AddArg(v0)1317		return true1318	}1319}1320func rewriteValue_OpBitLen32(v *ssa.Value) bool {1321	v_0 := v.Args[0]1322	b := v.Block1323	typ := &b.Func.Config.Types1324	// match: (BitLen32 x)1325	// result: (BitLen64 (ZeroExt32to64 x))1326	for {1327		x := v_01328		v.Reset(ssaop.OpBitLen64)1329		v0 := b.NewValue0(v.Pos, ssaop.OpZeroExt32to64, typ.UInt64)1330		v0.AddArg(x)1331		v.AddArg(v0)1332		return true1333	}1334}1335func rewriteValue_OpBitLen64(v *ssa.Value) bool {1336	v_0 := v.Args[0]1337	b := v.Block1338	typ := &b.Func.Config.Types1339	// match: (BitLen64 x)1340	// result: (SUB (MOVDconst [64]) (FLOGR x))1341	for {1342		x := v_01343		v.Reset(ssaop.OpS390XSUB)1344		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1345		v0.AuxInt = ssa.Int64ToAuxInt(64)1346		v1 := b.NewValue0(v.Pos, ssaop.OpS390XFLOGR, typ.UInt64)1347		v1.AddArg(x)1348		v.AddArg2(v0, v1)1349		return true1350	}1351}1352func rewriteValue_OpBitLen8(v *ssa.Value) bool {1353	v_0 := v.Args[0]1354	b := v.Block1355	typ := &b.Func.Config.Types1356	// match: (BitLen8 x)1357	// result: (BitLen64 (ZeroExt8to64 x))1358	for {1359		x := v_01360		v.Reset(ssaop.OpBitLen64)1361		v0 := b.NewValue0(v.Pos, ssaop.OpZeroExt8to64, typ.UInt64)1362		v0.AddArg(x)1363		v.AddArg(v0)1364		return true1365	}1366}1367func rewriteValue_OpBswap16(v *ssa.Value) bool {1368	v_0 := v.Args[0]1369	b := v.Block1370	typ := &b.Func.Config.Types1371	// match: (Bswap16 x:(MOVHZload [off] {sym} ptr mem))1372	// result: @x.Block (MOVHZreg (MOVHBRload [off] {sym} ptr mem))1373	for {1374		x := v_01375		if x.Op != ssaop.OpS390XMOVHZload {1376			break1377		}1378		off := ssa.AuxIntToInt32(x.AuxInt)1379		sym := ssa.AuxToSym(x.Aux)1380		mem := x.Args[1]1381		ptr := x.Args[0]1382		b = x.Block1383		v0 := b.NewValue0(x.Pos, ssaop.OpS390XMOVHZreg, typ.UInt64)1384		v.CopyOf(v0)1385		v1 := b.NewValue0(x.Pos, ssaop.OpS390XMOVHBRload, typ.UInt16)1386		v1.AuxInt = ssa.Int32ToAuxInt(off)1387		v1.Aux = ssa.SymToAux(sym)1388		v1.AddArg2(ptr, mem)1389		v0.AddArg(v1)1390		return true1391	}1392	// match: (Bswap16 x:(MOVHZloadidx [off] {sym} ptr idx mem))1393	// result: @x.Block (MOVHZreg (MOVHBRloadidx [off] {sym} ptr idx mem))1394	for {1395		x := v_01396		if x.Op != ssaop.OpS390XMOVHZloadidx {1397			break1398		}1399		off := ssa.AuxIntToInt32(x.AuxInt)1400		sym := ssa.AuxToSym(x.Aux)1401		mem := x.Args[2]1402		ptr := x.Args[0]1403		idx := x.Args[1]1404		b = x.Block1405		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVHZreg, typ.UInt64)1406		v.CopyOf(v0)1407		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVHBRloadidx, typ.Int16)1408		v1.AuxInt = ssa.Int32ToAuxInt(off)1409		v1.Aux = ssa.SymToAux(sym)1410		v1.AddArg3(ptr, idx, mem)1411		v0.AddArg(v1)1412		return true1413	}1414	return false1415}1416func rewriteValue_OpCeil(v *ssa.Value) bool {1417	v_0 := v.Args[0]1418	// match: (Ceil x)1419	// result: (FIDBR [6] x)1420	for {1421		x := v_01422		v.Reset(ssaop.OpS390XFIDBR)1423		v.AuxInt = ssa.Int8ToAuxInt(6)1424		v.AddArg(x)1425		return true1426	}1427}1428func rewriteValue_OpConst16(v *ssa.Value) bool {1429	// match: (Const16 [val])1430	// result: (MOVDconst [int64(val)])1431	for {1432		val := ssa.AuxIntToInt16(v.AuxInt)1433		v.Reset(ssaop.OpS390XMOVDconst)1434		v.AuxInt = ssa.Int64ToAuxInt(int64(val))1435		return true1436	}1437}1438func rewriteValue_OpConst32(v *ssa.Value) bool {1439	// match: (Const32 [val])1440	// result: (MOVDconst [int64(val)])1441	for {1442		val := ssa.AuxIntToInt32(v.AuxInt)1443		v.Reset(ssaop.OpS390XMOVDconst)1444		v.AuxInt = ssa.Int64ToAuxInt(int64(val))1445		return true1446	}1447}1448func rewriteValue_OpConst64(v *ssa.Value) bool {1449	// match: (Const64 [val])1450	// result: (MOVDconst [int64(val)])1451	for {1452		val := ssa.AuxIntToInt64(v.AuxInt)1453		v.Reset(ssaop.OpS390XMOVDconst)1454		v.AuxInt = ssa.Int64ToAuxInt(int64(val))1455		return true1456	}1457}1458func rewriteValue_OpConst8(v *ssa.Value) bool {1459	// match: (Const8 [val])1460	// result: (MOVDconst [int64(val)])1461	for {1462		val := ssa.AuxIntToInt8(v.AuxInt)1463		v.Reset(ssaop.OpS390XMOVDconst)1464		v.AuxInt = ssa.Int64ToAuxInt(int64(val))1465		return true1466	}1467}1468func rewriteValue_OpConstBool(v *ssa.Value) bool {1469	// match: (ConstBool [t])1470	// result: (MOVDconst [ssa.B2i(t)])1471	for {1472		t := ssa.AuxIntToBool(v.AuxInt)1473		v.Reset(ssaop.OpS390XMOVDconst)1474		v.AuxInt = ssa.Int64ToAuxInt(ssa.B2i(t))1475		return true1476	}1477}1478func rewriteValue_OpConstNil(v *ssa.Value) bool {1479	// match: (ConstNil)1480	// result: (MOVDconst [0])1481	for {1482		v.Reset(ssaop.OpS390XMOVDconst)1483		v.AuxInt = ssa.Int64ToAuxInt(0)1484		return true1485	}1486}1487func rewriteValue_OpCtz16(v *ssa.Value) bool {1488	v_0 := v.Args[0]1489	b := v.Block1490	typ := &b.Func.Config.Types1491	// match: (Ctz16 x)1492	// result: (Ctz64 (Or64 <typ.UInt64> x (MOVDconst [1<<16])))1493	for {1494		x := v_01495		v.Reset(ssaop.OpCtz64)1496		v0 := b.NewValue0(v.Pos, ssaop.OpOr64, typ.UInt64)1497		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1498		v1.AuxInt = ssa.Int64ToAuxInt(1 << 16)1499		v0.AddArg2(x, v1)1500		v.AddArg(v0)1501		return true1502	}1503}1504func rewriteValue_OpCtz32(v *ssa.Value) bool {1505	v_0 := v.Args[0]1506	b := v.Block1507	typ := &b.Func.Config.Types1508	// match: (Ctz32 <t> x)1509	// result: (SUB (MOVDconst [64]) (FLOGR (MOVWZreg (ANDW <t> (SUBWconst <t> [1] x) (NOTW <t> x)))))1510	for {1511		t := v.Type1512		x := v_01513		v.Reset(ssaop.OpS390XSUB)1514		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1515		v0.AuxInt = ssa.Int64ToAuxInt(64)1516		v1 := b.NewValue0(v.Pos, ssaop.OpS390XFLOGR, typ.UInt64)1517		v2 := b.NewValue0(v.Pos, ssaop.OpS390XMOVWZreg, typ.UInt64)1518		v3 := b.NewValue0(v.Pos, ssaop.OpS390XANDW, t)1519		v4 := b.NewValue0(v.Pos, ssaop.OpS390XSUBWconst, t)1520		v4.AuxInt = ssa.Int32ToAuxInt(1)1521		v4.AddArg(x)1522		v5 := b.NewValue0(v.Pos, ssaop.OpS390XNOTW, t)1523		v5.AddArg(x)1524		v3.AddArg2(v4, v5)1525		v2.AddArg(v3)1526		v1.AddArg(v2)1527		v.AddArg2(v0, v1)1528		return true1529	}1530}1531func rewriteValue_OpCtz64(v *ssa.Value) bool {1532	v_0 := v.Args[0]1533	b := v.Block1534	typ := &b.Func.Config.Types1535	// match: (Ctz64 <t> x)1536	// result: (SUB (MOVDconst [64]) (FLOGR (AND <t> (SUBconst <t> [1] x) (NOT <t> x))))1537	for {1538		t := v.Type1539		x := v_01540		v.Reset(ssaop.OpS390XSUB)1541		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1542		v0.AuxInt = ssa.Int64ToAuxInt(64)1543		v1 := b.NewValue0(v.Pos, ssaop.OpS390XFLOGR, typ.UInt64)1544		v2 := b.NewValue0(v.Pos, ssaop.OpS390XAND, t)1545		v3 := b.NewValue0(v.Pos, ssaop.OpS390XSUBconst, t)1546		v3.AuxInt = ssa.Int32ToAuxInt(1)1547		v3.AddArg(x)1548		v4 := b.NewValue0(v.Pos, ssaop.OpS390XNOT, t)1549		v4.AddArg(x)1550		v2.AddArg2(v3, v4)1551		v1.AddArg(v2)1552		v.AddArg2(v0, v1)1553		return true1554	}1555}1556func rewriteValue_OpCtz8(v *ssa.Value) bool {1557	v_0 := v.Args[0]1558	b := v.Block1559	typ := &b.Func.Config.Types1560	// match: (Ctz8 x)1561	// result: (Ctz64 (Or64 <typ.UInt64> x (MOVDconst [1<<8])))1562	for {1563		x := v_01564		v.Reset(ssaop.OpCtz64)1565		v0 := b.NewValue0(v.Pos, ssaop.OpOr64, typ.UInt64)1566		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1567		v1.AuxInt = ssa.Int64ToAuxInt(1 << 8)1568		v0.AddArg2(x, v1)1569		v.AddArg(v0)1570		return true1571	}1572}1573func rewriteValue_OpDiv16(v *ssa.Value) bool {1574	v_1 := v.Args[1]1575	v_0 := v.Args[0]1576	b := v.Block1577	typ := &b.Func.Config.Types1578	// match: (Div16 x y)1579	// result: (DIVW (MOVHreg x) (MOVHreg y))1580	for {1581		x := v_01582		y := v_11583		v.Reset(ssaop.OpS390XDIVW)1584		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVHreg, typ.Int64)1585		v0.AddArg(x)1586		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVHreg, typ.Int64)1587		v1.AddArg(y)1588		v.AddArg2(v0, v1)1589		return true1590	}1591}1592func rewriteValue_OpDiv16u(v *ssa.Value) bool {1593	v_1 := v.Args[1]1594	v_0 := v.Args[0]1595	b := v.Block1596	typ := &b.Func.Config.Types1597	// match: (Div16u x y)1598	// result: (DIVWU (MOVHZreg x) (MOVHZreg y))1599	for {1600		x := v_01601		y := v_11602		v.Reset(ssaop.OpS390XDIVWU)1603		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVHZreg, typ.UInt64)1604		v0.AddArg(x)1605		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVHZreg, typ.UInt64)1606		v1.AddArg(y)1607		v.AddArg2(v0, v1)1608		return true1609	}1610}1611func rewriteValue_OpDiv32(v *ssa.Value) bool {1612	v_1 := v.Args[1]1613	v_0 := v.Args[0]1614	b := v.Block1615	typ := &b.Func.Config.Types1616	// match: (Div32 x y)1617	// result: (DIVW (MOVWreg x) y)1618	for {1619		x := v_01620		y := v_11621		v.Reset(ssaop.OpS390XDIVW)1622		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVWreg, typ.Int64)1623		v0.AddArg(x)1624		v.AddArg2(v0, y)1625		return true1626	}1627}1628func rewriteValue_OpDiv32u(v *ssa.Value) bool {1629	v_1 := v.Args[1]1630	v_0 := v.Args[0]1631	b := v.Block1632	typ := &b.Func.Config.Types1633	// match: (Div32u x y)1634	// result: (DIVWU (MOVWZreg x) y)1635	for {1636		x := v_01637		y := v_11638		v.Reset(ssaop.OpS390XDIVWU)1639		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVWZreg, typ.UInt64)1640		v0.AddArg(x)1641		v.AddArg2(v0, y)1642		return true1643	}1644}1645func rewriteValue_OpDiv64(v *ssa.Value) bool {1646	v_1 := v.Args[1]1647	v_0 := v.Args[0]1648	// match: (Div64 x y)1649	// result: (DIVD x y)1650	for {1651		x := v_01652		y := v_11653		v.Reset(ssaop.OpS390XDIVD)1654		v.AddArg2(x, y)1655		return true1656	}1657}1658func rewriteValue_OpDiv8(v *ssa.Value) bool {1659	v_1 := v.Args[1]1660	v_0 := v.Args[0]1661	b := v.Block1662	typ := &b.Func.Config.Types1663	// match: (Div8 x y)1664	// result: (DIVW (MOVBreg x) (MOVBreg y))1665	for {1666		x := v_01667		y := v_11668		v.Reset(ssaop.OpS390XDIVW)1669		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVBreg, typ.Int64)1670		v0.AddArg(x)1671		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVBreg, typ.Int64)1672		v1.AddArg(y)1673		v.AddArg2(v0, v1)1674		return true1675	}1676}1677func rewriteValue_OpDiv8u(v *ssa.Value) bool {1678	v_1 := v.Args[1]1679	v_0 := v.Args[0]1680	b := v.Block1681	typ := &b.Func.Config.Types1682	// match: (Div8u x y)1683	// result: (DIVWU (MOVBZreg x) (MOVBZreg y))1684	for {1685		x := v_01686		y := v_11687		v.Reset(ssaop.OpS390XDIVWU)1688		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVBZreg, typ.UInt64)1689		v0.AddArg(x)1690		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVBZreg, typ.UInt64)1691		v1.AddArg(y)1692		v.AddArg2(v0, v1)1693		return true1694	}1695}1696func rewriteValue_OpEq16(v *ssa.Value) bool {1697	v_1 := v.Args[1]1698	v_0 := v.Args[0]1699	b := v.Block1700	typ := &b.Func.Config.Types1701	// match: (Eq16 x y)1702	// result: (LOCGR {s390x.Equal} (MOVDconst [0]) (MOVDconst [1]) (CMPW (MOVHreg x) (MOVHreg y)))1703	for {1704		x := v_01705		y := v_11706		v.Reset(ssaop.OpS390XLOCGR)1707		v.Aux = ssa.S390xCCMaskToAux(s390x.Equal)1708		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1709		v0.AuxInt = ssa.Int64ToAuxInt(0)1710		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1711		v1.AuxInt = ssa.Int64ToAuxInt(1)1712		v2 := b.NewValue0(v.Pos, ssaop.OpS390XCMPW, types.TypeFlags)1713		v3 := b.NewValue0(v.Pos, ssaop.OpS390XMOVHreg, typ.Int64)1714		v3.AddArg(x)1715		v4 := b.NewValue0(v.Pos, ssaop.OpS390XMOVHreg, typ.Int64)1716		v4.AddArg(y)1717		v2.AddArg2(v3, v4)1718		v.AddArg3(v0, v1, v2)1719		return true1720	}1721}1722func rewriteValue_OpEq32(v *ssa.Value) bool {1723	v_1 := v.Args[1]1724	v_0 := v.Args[0]1725	b := v.Block1726	typ := &b.Func.Config.Types1727	// match: (Eq32 x y)1728	// result: (LOCGR {s390x.Equal} (MOVDconst [0]) (MOVDconst [1]) (CMPW x y))1729	for {1730		x := v_01731		y := v_11732		v.Reset(ssaop.OpS390XLOCGR)1733		v.Aux = ssa.S390xCCMaskToAux(s390x.Equal)1734		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1735		v0.AuxInt = ssa.Int64ToAuxInt(0)1736		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1737		v1.AuxInt = ssa.Int64ToAuxInt(1)1738		v2 := b.NewValue0(v.Pos, ssaop.OpS390XCMPW, types.TypeFlags)1739		v2.AddArg2(x, y)1740		v.AddArg3(v0, v1, v2)1741		return true1742	}1743}1744func rewriteValue_OpEq32F(v *ssa.Value) bool {1745	v_1 := v.Args[1]1746	v_0 := v.Args[0]1747	b := v.Block1748	typ := &b.Func.Config.Types1749	// match: (Eq32F x y)1750	// result: (LOCGR {s390x.Equal} (MOVDconst [0]) (MOVDconst [1]) (FCMPS x y))1751	for {1752		x := v_01753		y := v_11754		v.Reset(ssaop.OpS390XLOCGR)1755		v.Aux = ssa.S390xCCMaskToAux(s390x.Equal)1756		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1757		v0.AuxInt = ssa.Int64ToAuxInt(0)1758		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1759		v1.AuxInt = ssa.Int64ToAuxInt(1)1760		v2 := b.NewValue0(v.Pos, ssaop.OpS390XFCMPS, types.TypeFlags)1761		v2.AddArg2(x, y)1762		v.AddArg3(v0, v1, v2)1763		return true1764	}1765}1766func rewriteValue_OpEq64(v *ssa.Value) bool {1767	v_1 := v.Args[1]1768	v_0 := v.Args[0]1769	b := v.Block1770	typ := &b.Func.Config.Types1771	// match: (Eq64 x y)1772	// result: (LOCGR {s390x.Equal} (MOVDconst [0]) (MOVDconst [1]) (CMP x y))1773	for {1774		x := v_01775		y := v_11776		v.Reset(ssaop.OpS390XLOCGR)1777		v.Aux = ssa.S390xCCMaskToAux(s390x.Equal)1778		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1779		v0.AuxInt = ssa.Int64ToAuxInt(0)1780		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1781		v1.AuxInt = ssa.Int64ToAuxInt(1)1782		v2 := b.NewValue0(v.Pos, ssaop.OpS390XCMP, types.TypeFlags)1783		v2.AddArg2(x, y)1784		v.AddArg3(v0, v1, v2)1785		return true1786	}1787}1788func rewriteValue_OpEq64F(v *ssa.Value) bool {1789	v_1 := v.Args[1]1790	v_0 := v.Args[0]1791	b := v.Block1792	typ := &b.Func.Config.Types1793	// match: (Eq64F x y)1794	// result: (LOCGR {s390x.Equal} (MOVDconst [0]) (MOVDconst [1]) (FCMP x y))1795	for {1796		x := v_01797		y := v_11798		v.Reset(ssaop.OpS390XLOCGR)1799		v.Aux = ssa.S390xCCMaskToAux(s390x.Equal)1800		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1801		v0.AuxInt = ssa.Int64ToAuxInt(0)1802		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1803		v1.AuxInt = ssa.Int64ToAuxInt(1)1804		v2 := b.NewValue0(v.Pos, ssaop.OpS390XFCMP, types.TypeFlags)1805		v2.AddArg2(x, y)1806		v.AddArg3(v0, v1, v2)1807		return true1808	}1809}1810func rewriteValue_OpEq8(v *ssa.Value) bool {1811	v_1 := v.Args[1]1812	v_0 := v.Args[0]1813	b := v.Block1814	typ := &b.Func.Config.Types1815	// match: (Eq8 x y)1816	// result: (LOCGR {s390x.Equal} (MOVDconst [0]) (MOVDconst [1]) (CMPW (MOVBreg x) (MOVBreg y)))1817	for {1818		x := v_01819		y := v_11820		v.Reset(ssaop.OpS390XLOCGR)1821		v.Aux = ssa.S390xCCMaskToAux(s390x.Equal)1822		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1823		v0.AuxInt = ssa.Int64ToAuxInt(0)1824		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1825		v1.AuxInt = ssa.Int64ToAuxInt(1)1826		v2 := b.NewValue0(v.Pos, ssaop.OpS390XCMPW, types.TypeFlags)1827		v3 := b.NewValue0(v.Pos, ssaop.OpS390XMOVBreg, typ.Int64)1828		v3.AddArg(x)1829		v4 := b.NewValue0(v.Pos, ssaop.OpS390XMOVBreg, typ.Int64)1830		v4.AddArg(y)1831		v2.AddArg2(v3, v4)1832		v.AddArg3(v0, v1, v2)1833		return true1834	}1835}1836func rewriteValue_OpEqB(v *ssa.Value) bool {1837	v_1 := v.Args[1]1838	v_0 := v.Args[0]1839	b := v.Block1840	typ := &b.Func.Config.Types1841	// match: (EqB x y)1842	// result: (LOCGR {s390x.Equal} (MOVDconst [0]) (MOVDconst [1]) (CMPW (MOVBreg x) (MOVBreg y)))1843	for {1844		x := v_01845		y := v_11846		v.Reset(ssaop.OpS390XLOCGR)1847		v.Aux = ssa.S390xCCMaskToAux(s390x.Equal)1848		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1849		v0.AuxInt = ssa.Int64ToAuxInt(0)1850		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1851		v1.AuxInt = ssa.Int64ToAuxInt(1)1852		v2 := b.NewValue0(v.Pos, ssaop.OpS390XCMPW, types.TypeFlags)1853		v3 := b.NewValue0(v.Pos, ssaop.OpS390XMOVBreg, typ.Int64)1854		v3.AddArg(x)1855		v4 := b.NewValue0(v.Pos, ssaop.OpS390XMOVBreg, typ.Int64)1856		v4.AddArg(y)1857		v2.AddArg2(v3, v4)1858		v.AddArg3(v0, v1, v2)1859		return true1860	}1861}1862func rewriteValue_OpEqPtr(v *ssa.Value) bool {1863	v_1 := v.Args[1]1864	v_0 := v.Args[0]1865	b := v.Block1866	typ := &b.Func.Config.Types1867	// match: (EqPtr x y)1868	// result: (LOCGR {s390x.Equal} (MOVDconst [0]) (MOVDconst [1]) (CMP x y))1869	for {1870		x := v_01871		y := v_11872		v.Reset(ssaop.OpS390XLOCGR)1873		v.Aux = ssa.S390xCCMaskToAux(s390x.Equal)1874		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1875		v0.AuxInt = ssa.Int64ToAuxInt(0)1876		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1877		v1.AuxInt = ssa.Int64ToAuxInt(1)1878		v2 := b.NewValue0(v.Pos, ssaop.OpS390XCMP, types.TypeFlags)1879		v2.AddArg2(x, y)1880		v.AddArg3(v0, v1, v2)1881		return true1882	}1883}1884func rewriteValue_OpFMA(v *ssa.Value) bool {1885	v_2 := v.Args[2]1886	v_1 := v.Args[1]1887	v_0 := v.Args[0]1888	// match: (FMA x y z)1889	// result: (FMADD z x y)1890	for {1891		x := v_01892		y := v_11893		z := v_21894		v.Reset(ssaop.OpS390XFMADD)1895		v.AddArg3(z, x, y)1896		return true1897	}1898}1899func rewriteValue_OpFloor(v *ssa.Value) bool {1900	v_0 := v.Args[0]1901	// match: (Floor x)1902	// result: (FIDBR [7] x)1903	for {1904		x := v_01905		v.Reset(ssaop.OpS390XFIDBR)1906		v.AuxInt = ssa.Int8ToAuxInt(7)1907		v.AddArg(x)1908		return true1909	}1910}1911func rewriteValue_OpHmul32(v *ssa.Value) bool {1912	v_1 := v.Args[1]1913	v_0 := v.Args[0]1914	b := v.Block1915	typ := &b.Func.Config.Types1916	// match: (Hmul32 x y)1917	// result: (SRDconst [32] (MULLD (MOVWreg x) (MOVWreg y)))1918	for {1919		x := v_01920		y := v_11921		v.Reset(ssaop.OpS390XSRDconst)1922		v.AuxInt = ssa.Uint8ToAuxInt(32)1923		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMULLD, typ.Int64)1924		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVWreg, typ.Int64)1925		v1.AddArg(x)1926		v2 := b.NewValue0(v.Pos, ssaop.OpS390XMOVWreg, typ.Int64)1927		v2.AddArg(y)1928		v0.AddArg2(v1, v2)1929		v.AddArg(v0)1930		return true1931	}1932}1933func rewriteValue_OpHmul32u(v *ssa.Value) bool {1934	v_1 := v.Args[1]1935	v_0 := v.Args[0]1936	b := v.Block1937	typ := &b.Func.Config.Types1938	// match: (Hmul32u x y)1939	// result: (SRDconst [32] (MULLD (MOVWZreg x) (MOVWZreg y)))1940	for {1941		x := v_01942		y := v_11943		v.Reset(ssaop.OpS390XSRDconst)1944		v.AuxInt = ssa.Uint8ToAuxInt(32)1945		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMULLD, typ.Int64)1946		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVWZreg, typ.UInt64)1947		v1.AddArg(x)1948		v2 := b.NewValue0(v.Pos, ssaop.OpS390XMOVWZreg, typ.UInt64)1949		v2.AddArg(y)1950		v0.AddArg2(v1, v2)1951		v.AddArg(v0)1952		return true1953	}1954}1955func rewriteValue_OpITab(v *ssa.Value) bool {1956	v_0 := v.Args[0]1957	// match: (ITab (Load ptr mem))1958	// result: (MOVDload ptr mem)1959	for {1960		if v_0.Op != ssaop.OpLoad {1961			break1962		}1963		mem := v_0.Args[1]1964		ptr := v_0.Args[0]1965		v.Reset(ssaop.OpS390XMOVDload)1966		v.AddArg2(ptr, mem)1967		return true1968	}1969	return false1970}1971func rewriteValue_OpIsInBounds(v *ssa.Value) bool {1972	v_1 := v.Args[1]1973	v_0 := v.Args[0]1974	b := v.Block1975	typ := &b.Func.Config.Types1976	// match: (IsInBounds idx len)1977	// result: (LOCGR {s390x.Less} (MOVDconst [0]) (MOVDconst [1]) (CMPU idx len))1978	for {1979		idx := v_01980		len := v_11981		v.Reset(ssaop.OpS390XLOCGR)1982		v.Aux = ssa.S390xCCMaskToAux(s390x.Less)1983		v0 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1984		v0.AuxInt = ssa.Int64ToAuxInt(0)1985		v1 := b.NewValue0(v.Pos, ssaop.OpS390XMOVDconst, typ.UInt64)1986		v1.AuxInt = ssa.Int64ToAuxInt(1)1987		v2 := b.NewValue0(v.Pos, ssaop.OpS390XCMPU, types.TypeFlags)1988		v2.AddArg2(idx, len)1989		v.AddArg3(v0, v1, v2)1990		return true1991	}1992}1993func rewriteValue_OpIsNonNil(v *ssa.Value) bool {1994	v_0 := v.Args[0]1995	b := v.Block1996	typ := &b.Func.Config.Types1997	// match: (IsNonNil p)1998	// result: (LOCGR {s390x.NotEqual} (MOVDconst [0]) (MOVDconst [1]) (CMPconst p [0]))1999	for {2000		p := v_0

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