• Cherry Zhang's avatar
    [dev.ssa] cmd/compile: handle floating point on ARM · 59e11d78
    Cherry Zhang authored
    Machine supports (or the runtime simulates in soft float mode)
    (u)int32<->float conversions. The frontend rewrites int64<->float
    conversions to call to runtime function.
    
    For int64->float32 conversion, the frontend generates
    
    .   .   AS u(100) l(10) tc(1)
    .   .   .   NAME-main.~r1 u(1) a(true) g(1) l(9) x(8+0) class(PPARAMOUT) f(1) float32
    .   .   .   CALLFUNC u(100) l(10) tc(1) float32
    .   .   .   .   NAME-runtime.int64tofloat64 u(1) a(true) x(0+0) class(PFUNC) tc(1) used(true) FUNC-func(int64) float64
    
    The CALLFUNC node has type float32, whereas runtime.int64tofloat64
    returns float64. The legacy backend implicitly makes a float64->float32
    conversion. The SSA backend does not do implicit conversion, so we
    insert an explicit CONV here.
    
    All cmd/compile/internal/gc/testdata/*_ssa.go tests passed.
    
    Progress on SSA for ARM. Still not complete.
    
    Update #15365.
    
    Change-Id: I30937c8ff977271246b068f48224693776804339
    Reviewed-on: https://go-review.googlesource.com/23652Reviewed-by: 's avatarKeith Randall <khr@golang.org>
    59e11d78
opGen.go 131 KB