// genshift generates a Prog for r = r0 op (r1 shifted by n) private static ref obj.Prog genshift(ref gc.SSAGenState s, obj.As @as, short r0, short r1, short r, long typ, long n) { var p = s.Prog(as); p.From.Type = obj.TYPE_SHIFT; p.From.Offset = makeshift(r1, typ, n); p.Reg = r0; if (r != 0L) { p.To.Type = obj.TYPE_REG; p.To.Reg = r; } return p; }
private static void ssaGenValue(ref gc.SSAGenState _s, ref ssa.Value _v) => func(_s, _v, (ref gc.SSAGenState s, ref ssa.Value v, Defer _, Panic panic, Recover __) => { if (v.Op == ssa.OpCopy || v.Op == ssa.OpARM64MOVDconvert || v.Op == ssa.OpARM64MOVDreg) { if (v.Type.IsMemory()) { return; } var x = v.Args[0L].Reg(); var y = v.Reg(); if (x == y) { return; } var @as = arm64.AMOVD; if (v.Type.IsFloat()) { switch (v.Type.Size()) { case 4L: as = arm64.AFMOVS;