(&mut self, num_elts: usize, elt: Self::Value)
| 2059 | } |
| 2060 | |
| 2061 | fn vector_splat(&mut self, num_elts: usize, elt: Self::Value) -> Self::Value { |
| 2062 | let result_type = SpirvType::Vector { |
| 2063 | element: elt.ty, |
| 2064 | count: num_elts as u32, |
| 2065 | } |
| 2066 | .def(self.span(), self); |
| 2067 | if self.builder.lookup_const(elt).is_some() { |
| 2068 | self.constant_composite(result_type, iter::repeat(elt.def(self)).take(num_elts)) |
| 2069 | } else { |
| 2070 | self.emit() |
| 2071 | .composite_construct( |
| 2072 | result_type, |
| 2073 | None, |
| 2074 | iter::repeat(elt.def(self)).take(num_elts), |
| 2075 | ) |
| 2076 | .unwrap() |
| 2077 | .with_type(result_type) |
| 2078 | } |
| 2079 | } |
| 2080 | |
| 2081 | fn extract_value(&mut self, agg_val: Self::Value, idx: u64) -> Self::Value { |
| 2082 | let result_type = match self.lookup_type(agg_val.ty) { |
no test coverage detected