// pass which handles phis of these types.
// complex ops
-(ComplexReal (ComplexMake real _ )) -> real
-(ComplexImag (ComplexMake _ imag )) -> imag
+(ComplexReal (ComplexMake real _ )) => real
+(ComplexImag (ComplexMake _ imag )) => imag
-(Load <t> ptr mem) && t.IsComplex() && t.Size() == 8 ->
+(Load <t> ptr mem) && t.IsComplex() && t.Size() == 8 =>
(ComplexMake
(Load <typ.Float32> ptr mem)
(Load <typ.Float32>
(OffPtr <typ.Float32Ptr> [4] ptr)
mem)
)
-(Store {t} dst (ComplexMake real imag) mem) && t.(*types.Type).Size() == 8 ->
+(Store {t} dst (ComplexMake real imag) mem) && t.Size() == 8 =>
(Store {typ.Float32}
(OffPtr <typ.Float32Ptr> [4] dst)
imag
(Store {typ.Float32} dst real mem))
-(Load <t> ptr mem) && t.IsComplex() && t.Size() == 16 ->
+(Load <t> ptr mem) && t.IsComplex() && t.Size() == 16 =>
(ComplexMake
(Load <typ.Float64> ptr mem)
(Load <typ.Float64>
(OffPtr <typ.Float64Ptr> [8] ptr)
mem)
)
-(Store {t} dst (ComplexMake real imag) mem) && t.(*types.Type).Size() == 16 ->
+(Store {t} dst (ComplexMake real imag) mem) && t.Size() == 16 =>
(Store {typ.Float64}
(OffPtr <typ.Float64Ptr> [8] dst)
imag
(Store {typ.Float64} dst real mem))
// string ops
-(StringPtr (StringMake ptr _)) -> ptr
-(StringLen (StringMake _ len)) -> len
+(StringPtr (StringMake ptr _)) => ptr
+(StringLen (StringMake _ len)) => len
-(Load <t> ptr mem) && t.IsString() ->
+(Load <t> ptr mem) && t.IsString() =>
(StringMake
(Load <typ.BytePtr> ptr mem)
(Load <typ.Int>
(OffPtr <typ.IntPtr> [config.PtrSize] ptr)
mem))
-(Store dst (StringMake ptr len) mem) ->
+(Store dst (StringMake ptr len) mem) =>
(Store {typ.Int}
(OffPtr <typ.IntPtr> [config.PtrSize] dst)
len
(Store {typ.BytePtr} dst ptr mem))
// slice ops
-(SlicePtr (SliceMake ptr _ _ )) -> ptr
-(SliceLen (SliceMake _ len _)) -> len
-(SliceCap (SliceMake _ _ cap)) -> cap
+(SlicePtr (SliceMake ptr _ _ )) => ptr
+(SliceLen (SliceMake _ len _)) => len
+(SliceCap (SliceMake _ _ cap)) => cap
-(Load <t> ptr mem) && t.IsSlice() ->
+(Load <t> ptr mem) && t.IsSlice() =>
(SliceMake
(Load <t.Elem().PtrTo()> ptr mem)
(Load <typ.Int>
(Load <typ.Int>
(OffPtr <typ.IntPtr> [2*config.PtrSize] ptr)
mem))
-(Store dst (SliceMake ptr len cap) mem) ->
+(Store dst (SliceMake ptr len cap) mem) =>
(Store {typ.Int}
(OffPtr <typ.IntPtr> [2*config.PtrSize] dst)
cap
(Store {typ.BytePtr} dst ptr mem)))
// interface ops
-(ITab (IMake itab _)) -> itab
-(IData (IMake _ data)) -> data
+(ITab (IMake itab _)) => itab
+(IData (IMake _ data)) => data
-(Load <t> ptr mem) && t.IsInterface() ->
+(Load <t> ptr mem) && t.IsInterface() =>
(IMake
(Load <typ.Uintptr> ptr mem)
(Load <typ.BytePtr>
(OffPtr <typ.BytePtrPtr> [config.PtrSize] ptr)
mem))
-(Store dst (IMake itab data) mem) ->
+(Store dst (IMake itab data) mem) =>
(Store {typ.BytePtr}
(OffPtr <typ.BytePtrPtr> [config.PtrSize] dst)
data
v0.AddArg2(ptr, mem)
v1 := b.NewValue0(v.Pos, OpLoad, typ.Float32)
v2 := b.NewValue0(v.Pos, OpOffPtr, typ.Float32Ptr)
- v2.AuxInt = 4
+ v2.AuxInt = int64ToAuxInt(4)
v2.AddArg(ptr)
v1.AddArg2(v2, mem)
v.AddArg2(v0, v1)
v0.AddArg2(ptr, mem)
v1 := b.NewValue0(v.Pos, OpLoad, typ.Float64)
v2 := b.NewValue0(v.Pos, OpOffPtr, typ.Float64Ptr)
- v2.AuxInt = 8
+ v2.AuxInt = int64ToAuxInt(8)
v2.AddArg(ptr)
v1.AddArg2(v2, mem)
v.AddArg2(v0, v1)
v0.AddArg2(ptr, mem)
v1 := b.NewValue0(v.Pos, OpLoad, typ.Int)
v2 := b.NewValue0(v.Pos, OpOffPtr, typ.IntPtr)
- v2.AuxInt = config.PtrSize
+ v2.AuxInt = int64ToAuxInt(config.PtrSize)
v2.AddArg(ptr)
v1.AddArg2(v2, mem)
v.AddArg2(v0, v1)
v0.AddArg2(ptr, mem)
v1 := b.NewValue0(v.Pos, OpLoad, typ.Int)
v2 := b.NewValue0(v.Pos, OpOffPtr, typ.IntPtr)
- v2.AuxInt = config.PtrSize
+ v2.AuxInt = int64ToAuxInt(config.PtrSize)
v2.AddArg(ptr)
v1.AddArg2(v2, mem)
v3 := b.NewValue0(v.Pos, OpLoad, typ.Int)
v4 := b.NewValue0(v.Pos, OpOffPtr, typ.IntPtr)
- v4.AuxInt = 2 * config.PtrSize
+ v4.AuxInt = int64ToAuxInt(2 * config.PtrSize)
v4.AddArg(ptr)
v3.AddArg2(v4, mem)
v.AddArg3(v0, v1, v3)
v0.AddArg2(ptr, mem)
v1 := b.NewValue0(v.Pos, OpLoad, typ.BytePtr)
v2 := b.NewValue0(v.Pos, OpOffPtr, typ.BytePtrPtr)
- v2.AuxInt = config.PtrSize
+ v2.AuxInt = int64ToAuxInt(config.PtrSize)
v2.AddArg(ptr)
v1.AddArg2(v2, mem)
v.AddArg2(v0, v1)
config := b.Func.Config
typ := &b.Func.Config.Types
// match: (Store {t} dst (ComplexMake real imag) mem)
- // cond: t.(*types.Type).Size() == 8
+ // cond: t.Size() == 8
// result: (Store {typ.Float32} (OffPtr <typ.Float32Ptr> [4] dst) imag (Store {typ.Float32} dst real mem))
for {
- t := v.Aux
+ t := auxToType(v.Aux)
dst := v_0
if v_1.Op != OpComplexMake {
break
imag := v_1.Args[1]
real := v_1.Args[0]
mem := v_2
- if !(t.(*types.Type).Size() == 8) {
+ if !(t.Size() == 8) {
break
}
v.reset(OpStore)
- v.Aux = typ.Float32
+ v.Aux = typeToAux(typ.Float32)
v0 := b.NewValue0(v.Pos, OpOffPtr, typ.Float32Ptr)
- v0.AuxInt = 4
+ v0.AuxInt = int64ToAuxInt(4)
v0.AddArg(dst)
v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
- v1.Aux = typ.Float32
+ v1.Aux = typeToAux(typ.Float32)
v1.AddArg3(dst, real, mem)
v.AddArg3(v0, imag, v1)
return true
}
// match: (Store {t} dst (ComplexMake real imag) mem)
- // cond: t.(*types.Type).Size() == 16
+ // cond: t.Size() == 16
// result: (Store {typ.Float64} (OffPtr <typ.Float64Ptr> [8] dst) imag (Store {typ.Float64} dst real mem))
for {
- t := v.Aux
+ t := auxToType(v.Aux)
dst := v_0
if v_1.Op != OpComplexMake {
break
imag := v_1.Args[1]
real := v_1.Args[0]
mem := v_2
- if !(t.(*types.Type).Size() == 16) {
+ if !(t.Size() == 16) {
break
}
v.reset(OpStore)
- v.Aux = typ.Float64
+ v.Aux = typeToAux(typ.Float64)
v0 := b.NewValue0(v.Pos, OpOffPtr, typ.Float64Ptr)
- v0.AuxInt = 8
+ v0.AuxInt = int64ToAuxInt(8)
v0.AddArg(dst)
v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
- v1.Aux = typ.Float64
+ v1.Aux = typeToAux(typ.Float64)
v1.AddArg3(dst, real, mem)
v.AddArg3(v0, imag, v1)
return true
ptr := v_1.Args[0]
mem := v_2
v.reset(OpStore)
- v.Aux = typ.Int
+ v.Aux = typeToAux(typ.Int)
v0 := b.NewValue0(v.Pos, OpOffPtr, typ.IntPtr)
- v0.AuxInt = config.PtrSize
+ v0.AuxInt = int64ToAuxInt(config.PtrSize)
v0.AddArg(dst)
v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
- v1.Aux = typ.BytePtr
+ v1.Aux = typeToAux(typ.BytePtr)
v1.AddArg3(dst, ptr, mem)
v.AddArg3(v0, len, v1)
return true
len := v_1.Args[1]
mem := v_2
v.reset(OpStore)
- v.Aux = typ.Int
+ v.Aux = typeToAux(typ.Int)
v0 := b.NewValue0(v.Pos, OpOffPtr, typ.IntPtr)
- v0.AuxInt = 2 * config.PtrSize
+ v0.AuxInt = int64ToAuxInt(2 * config.PtrSize)
v0.AddArg(dst)
v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
- v1.Aux = typ.Int
+ v1.Aux = typeToAux(typ.Int)
v2 := b.NewValue0(v.Pos, OpOffPtr, typ.IntPtr)
- v2.AuxInt = config.PtrSize
+ v2.AuxInt = int64ToAuxInt(config.PtrSize)
v2.AddArg(dst)
v3 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
- v3.Aux = typ.BytePtr
+ v3.Aux = typeToAux(typ.BytePtr)
v3.AddArg3(dst, ptr, mem)
v1.AddArg3(v2, len, v3)
v.AddArg3(v0, cap, v1)
itab := v_1.Args[0]
mem := v_2
v.reset(OpStore)
- v.Aux = typ.BytePtr
+ v.Aux = typeToAux(typ.BytePtr)
v0 := b.NewValue0(v.Pos, OpOffPtr, typ.BytePtrPtr)
- v0.AuxInt = config.PtrSize
+ v0.AuxInt = int64ToAuxInt(config.PtrSize)
v0.AddArg(dst)
v1 := b.NewValue0(v.Pos, OpStore, types.TypeMem)
- v1.Aux = typ.Uintptr
+ v1.Aux = typeToAux(typ.Uintptr)
v1.AddArg3(dst, itab, mem)
v.AddArg3(v0, data, v1)
return true