(GetG mem) -> (LoweredGetG mem)
(GetClosurePtr) -> (LoweredGetClosurePtr)
(Addr {sym} base) -> (LEAQ {sym} base)
-(ITab (Load ptr mem)) -> (MOVQload ptr mem)
// block rewrites
(If (SETL cmp) yes no) -> (LT cmp yes no)
return rewriteValueAMD64_OpHmul8(v, config)
case OpHmul8u:
return rewriteValueAMD64_OpHmul8u(v, config)
- case OpITab:
- return rewriteValueAMD64_OpITab(v, config)
case OpInterCall:
return rewriteValueAMD64_OpInterCall(v, config)
case OpIsInBounds:
return true
}
}
-func rewriteValueAMD64_OpITab(v *Value, config *Config) bool {
- b := v.Block
- _ = b
- // match: (ITab (Load ptr mem))
- // cond:
- // result: (MOVQload ptr mem)
- for {
- v_0 := v.Args[0]
- if v_0.Op != OpLoad {
- break
- }
- ptr := v_0.Args[0]
- mem := v_0.Args[1]
- v.reset(OpAMD64MOVQload)
- v.AddArg(ptr)
- v.AddArg(mem)
- return true
- }
- return false
-}
func rewriteValueAMD64_OpInterCall(v *Value, config *Config) bool {
b := v.Block
_ = b