Defines a new value with randomized properties.
(&mut self, bank: RegBank)
| 315 | |
| 316 | /// Defines a new value with randomized properties. |
| 317 | fn new_value(&mut self, bank: RegBank) -> Result<Value> { |
| 318 | let remat = if !self.remat_class_per_bank[bank].is_empty() && self.u.arbitrary()? { |
| 319 | let cost = if self.u.arbitrary()? { |
| 320 | RematCost::CheaperThanMove |
| 321 | } else { |
| 322 | RematCost::CheaperThanLoad |
| 323 | }; |
| 324 | let class = *self.u.choose(&self.remat_class_per_bank[bank])?; |
| 325 | Some((cost, class)) |
| 326 | } else { |
| 327 | None |
| 328 | }; |
| 329 | let value = self.func.values.push(ValueData { |
| 330 | bank, |
| 331 | remat, |
| 332 | indirect_remat: None, |
| 333 | }); |
| 334 | Ok(value) |
| 335 | } |
| 336 | |
| 337 | /// Adds incoming block parameters to blocks that allow them. |
| 338 | fn add_blockparams(&mut self) -> Result<()> { |
no test coverage detected