Return zero register directly for zero immediate

68bd0f278f0202364ec52f3195d5f59a36c5901e52d6e280d9c2c394924d57fe
Alexis Sellier committed ago 1 parent eace45a7
lib/std/arch/rv64/isel.rad +3 -0
151 151
    match val {
152 152
        case il::Val::Reg(r) => {
153 153
            return getSrcReg(s, r, scratch);
154 154
        },
155 155
        case il::Val::Imm(imm) => {
156 +
            if imm == 0 {
157 +
                return super::ZERO;
158 +
            }
156 159
            emit::loadImm(s.e, scratch, imm);
157 160
            return scratch;
158 161
        },
159 162
        case il::Val::DataSym(name) => {
160 163
            let addr = try lookupDataSym(s, name) catch {