Return zero register directly for zero immediate
68bd0f278f0202364ec52f3195d5f59a36c5901e52d6e280d9c2c394924d57fe
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 { |