Lines Matching refs:builder
32 builder: &mut FunctionBuilder, in insert_opcode()
40 let val = builder.use_var(var); in insert_opcode()
57 InstructionFormat::NullAry => builder.ins().NullAry(opcode, ctrl_type), in insert_opcode()
58 InstructionFormat::Unary => builder.ins().Unary(opcode, ctrl_type, vals[0]), in insert_opcode()
59 InstructionFormat::Binary => builder.ins().Binary(opcode, ctrl_type, vals[0], vals[1]), in insert_opcode()
60 InstructionFormat::Ternary => builder in insert_opcode()
69 builder.def_var(var, val); in insert_opcode()
76 builder: &mut FunctionBuilder, in insert_call_to_function()
83 builder, in insert_call_to_function()
89 Opcode::Call => builder.ins().call(func_ref, &actuals), in insert_call_to_function()
90 Opcode::ReturnCall => builder.ins().return_call(func_ref, &actuals), in insert_call_to_function()
92 let addr = builder.ins().func_addr(addr_ty, func_ref); in insert_call_to_function()
93 builder.ins().call_indirect(sig_ref, addr, &actuals) in insert_call_to_function()
96 let addr = builder.ins().func_addr(addr_ty, func_ref); in insert_call_to_function()
97 builder.ins().return_call_indirect(sig_ref, addr, &actuals) in insert_call_to_function()
103 let ret_values = builder.inst_results(call).to_vec(); in insert_call_to_function()
107 builder.def_var(var, val); in insert_call_to_function()
115 builder: &mut FunctionBuilder, in insert_call()
122 insert_call_to_function(fgen, builder, opcode, &sig, sig_ref, func_ref) in insert_call()
127 builder: &mut FunctionBuilder, in insert_stack_load()
144 let val = builder.ins().stack_load(typevar, slot, offset); in insert_stack_load()
146 builder.def_var(var, val); in insert_stack_load()
153 builder: &mut FunctionBuilder, in insert_stack_store()
172 let arg0 = builder.use_var(arg0); in insert_stack_store()
174 builder.ins().stack_store(arg0, slot, offset); in insert_stack_store()
180 builder: &mut FunctionBuilder, in insert_cmp()
186 let lhs = builder.use_var(lhs); in insert_cmp()
189 let rhs = builder.use_var(rhs); in insert_cmp()
221 builder.ins().fcmp(cc, lhs, rhs) in insert_cmp()
224 builder.ins().icmp(cc, lhs, rhs) in insert_cmp()
228 builder.def_var(var, res); in insert_cmp()
235 builder: &mut FunctionBuilder, in insert_const()
242 let val = fgen.generate_const(builder, typevar)?; in insert_const()
243 builder.def_var(var, val); in insert_const()
249 builder: &mut FunctionBuilder, in insert_bitcast()
254 let from_val = builder.use_var(from_var); in insert_bitcast()
267 let res = builder.ins().bitcast(rets[0], memflags, from_val); in insert_bitcast()
268 builder.def_var(to_var, res); in insert_bitcast()
274 builder: &mut FunctionBuilder, in insert_load_store()
280 return insert_bitcast(fgen, builder, args, rets); in insert_load_store()
288 fgen.generate_address_and_memflags(builder, type_size, is_atomic)?; in insert_load_store()
295 let (inst, dfg) = builder in insert_load_store()
300 builder.def_var(var, new_val); in insert_load_store()
303 let val = builder.use_var(var); in insert_load_store()
305 builder in insert_load_store()
310 let val = builder.use_var(var); in insert_load_store()
312 builder in insert_load_store()
317 let (inst, dfg) = builder in insert_load_store()
322 builder.def_var(var, new_val); in insert_load_store()
332 builder: &mut FunctionBuilder, in insert_atomic_rmw()
342 let (address, flags, offset) = fgen.generate_address_and_memflags(builder, type_size, true)?; in insert_atomic_rmw()
345 let address = builder.ins().iadd_imm(address, i64::from(offset)); in insert_atomic_rmw()
351 let source_val = builder.use_var(source_var); in insert_atomic_rmw()
352 let new_val = builder in insert_atomic_rmw()
356 builder.def_var(target_var, new_val); in insert_atomic_rmw()
362 builder: &mut FunctionBuilder, in insert_atomic_cas()
370 let (address, flags, offset) = fgen.generate_address_and_memflags(builder, type_size, true)?; in insert_atomic_cas()
373 let address = builder.ins().iadd_imm(address, i64::from(offset)); in insert_atomic_cas()
380 let expected_val = builder.use_var(expected_var); in insert_atomic_cas()
381 let store_val = builder.use_var(store_var); in insert_atomic_cas()
382 let new_val = builder in insert_atomic_cas()
386 builder.def_var(loaded_var, new_val); in insert_atomic_cas()
392 builder: &mut FunctionBuilder, in insert_shuffle()
399 let lhs = builder.use_var(fgen.get_variable_of_type(ctrl_type)?); in insert_shuffle()
400 let rhs = builder.use_var(fgen.get_variable_of_type(ctrl_type)?); in insert_shuffle()
408 builder.func.dfg.immediates.push(lanes) in insert_shuffle()
415 let res = builder.ins().shuffle(lhs, rhs, mask); in insert_shuffle()
418 builder.def_var(target_var, res); in insert_shuffle()
425 builder: &mut FunctionBuilder, in insert_ins_ext_lane()
433 let lhs = builder.use_var(fgen.get_variable_of_type(vector_type)?); in insert_ins_ext_lane()
439 let rhs = builder.use_var(fgen.get_variable_of_type(args[1])?); in insert_ins_ext_lane()
440 builder.ins().insertlane(lhs, rhs, lane) in insert_ins_ext_lane()
442 Opcode::Extractlane => builder.ins().extractlane(lhs, lane), in insert_ins_ext_lane()
447 builder.def_var(target_var, res); in insert_ins_ext_lane()
454 builder: &mut FunctionBuilder,
1317 builder: &mut FunctionBuilder, in generate_load_store_address()
1334 let base_addr = builder.ins().stack_addr(I64, ss, offset as i32); in generate_load_store_address()
1350 builder: &mut FunctionBuilder, in generate_address_and_memflags()
1385 self.generate_load_store_address(builder, min_size, aligned)?; in generate_address_and_memflags()
1409 fn generate_const(&mut self, builder: &mut FunctionBuilder, ty: Type) -> Result<Value> { in generate_const()
1411 DataValue::I8(i) => builder.ins().iconst(ty, i as u8 as i64), in generate_const()
1412 DataValue::I16(i) => builder.ins().iconst(ty, i as u16 as i64), in generate_const()
1413 DataValue::I32(i) => builder.ins().iconst(ty, i as u32 as i64), in generate_const()
1414 DataValue::I64(i) => builder.ins().iconst(ty, i), in generate_const()
1416 let hi = builder.ins().iconst(I64, (i >> 64) as i64); in generate_const()
1417 let lo = builder.ins().iconst(I64, i as i64); in generate_const()
1418 builder.ins().iconcat(lo, hi) in generate_const()
1420 DataValue::F16(f) => builder.ins().f16const(f), in generate_const()
1421 DataValue::F32(f) => builder.ins().f32const(f), in generate_const()
1422 DataValue::F64(f) => builder.ins().f64const(f), in generate_const()
1424 let handle = builder.func.dfg.constants.insert(f.into()); in generate_const()
1425 builder.ins().f128const(handle) in generate_const()
1429 let handle = builder.func.dfg.constants.insert(data); in generate_const()
1430 builder.ins().vconst(ty, handle) in generate_const()
1457 builder: &mut FunctionBuilder, in generate_values_for_block()
1462 .generate_values_for_signature(builder, sig.iter().copied())? in generate_values_for_block()
1470 builder: &mut FunctionBuilder, in generate_values_for_signature()
1476 let val = builder.use_var(var); in generate_values_for_signature()
1486 builder: &mut FunctionBuilder, in insert_terminator()
1494 let rets = &builder.func.signature.returns; in insert_terminator()
1497 let vals = self.generate_values_for_signature(builder, types.into_iter())?; in insert_terminator()
1499 builder.ins().return_(&vals[..]); in insert_terminator()
1502 let args = self.generate_values_for_block(builder, target)?; in insert_terminator()
1503 builder.ins().jump(target, &args[..]); in insert_terminator()
1506 let left_args = self.generate_values_for_block(builder, left)?; in insert_terminator()
1507 let right_args = self.generate_values_for_block(builder, right)?; in insert_terminator()
1511 let val = builder.use_var(self.get_variable_of_type(_type)?); in insert_terminator()
1512 builder in insert_terminator()
1520 let args = self.generate_values_for_block(builder, block)?; in insert_terminator()
1521 jt.push(builder.func.dfg.block_call(block, &args)) in insert_terminator()
1524 let args = self.generate_values_for_block(builder, default)?; in insert_terminator()
1525 let jt_data = JumpTableData::new(builder.func.dfg.block_call(default, &args), &jt); in insert_terminator()
1526 let jt = builder.create_jump_table(jt_data); in insert_terminator()
1529 let val = builder.use_var(self.get_variable_of_type(I32)?); in insert_terminator()
1531 builder.ins().br_table(val, jt); in insert_terminator()
1539 let switch_val = builder.use_var(self.get_variable_of_type(_type)?); in insert_terminator()
1541 switch.emit(builder, switch_val, default); in insert_terminator()
1558 insert_call_to_function(self, builder, opcode, &sig, sig_ref, func_ref)?; in insert_terminator()
1566 fn generate_instructions(&mut self, builder: &mut FunctionBuilder) -> Result<()> { in generate_instructions()
1578 inserter(self, builder, *op, &args, &rets)?; in generate_instructions()
1584 fn generate_funcrefs(&mut self, builder: &mut FunctionBuilder) -> Result<()> { in generate_funcrefs()
1590 let user_func_ref = builder.func.declare_imported_user_function(name.clone()); in generate_funcrefs()
1613 let sig_ref = builder.import_signature(signature.clone()); in generate_funcrefs()
1614 let func_ref = builder.import_function(ExtFuncData { in generate_funcrefs()
1634 fn generate_stack_slots(&mut self, builder: &mut FunctionBuilder) -> Result<()> { in generate_stack_slots()
1641 let slot = builder.create_sized_stack_slot(ss_data); in generate_stack_slots()
1659 fn initialize_stack_slots(&mut self, builder: &mut FunctionBuilder) -> Result<()> { in initialize_stack_slots()
1660 let i8_zero = builder.ins().iconst(I8, 0); in initialize_stack_slots()
1661 let i16_zero = builder.ins().iconst(I16, 0); in initialize_stack_slots()
1662 let i32_zero = builder.ins().iconst(I32, 0); in initialize_stack_slots()
1663 let i64_zero = builder.ins().iconst(I64, 0); in initialize_stack_slots()
1664 let i128_zero = builder.ins().uextend(I128, i64_zero); in initialize_stack_slots()
1679 let addr = builder.ins().stack_addr(I64, slot, offset); in initialize_stack_slots()
1687 builder.ins().store(flags, val, addr, 0); in initialize_stack_slots()
1696 fn generate_blocks(&mut self, builder: &mut FunctionBuilder) -> Result<()> { in generate_blocks()
1707 let block = builder.create_block(); in generate_blocks()
1712 builder.set_cold_block(block); in generate_blocks()
1719 builder.append_block_params_for_function_params(block); in generate_blocks()
1727 builder.append_block_param(block, *ty); in generate_blocks()
1900 fn build_variable_pool(&mut self, builder: &mut FunctionBuilder) -> Result<()> { in build_variable_pool()
1901 let block = builder.current_block().unwrap(); in build_variable_pool()
1904 let mut vars: Vec<_> = builder in build_variable_pool()
1910 .zip(builder.block_params(block).iter().copied()) in build_variable_pool()
1916 let value = self.generate_const(builder, ty)?; in build_variable_pool()
1921 let var = builder.declare_var(ty); in build_variable_pool()
1922 builder.def_var(var, value); in build_variable_pool()
1928 builder.declare_var_needs_stack_map(var); in build_variable_pool()
1953 let mut builder = FunctionBuilder::new(&mut func, &mut fn_builder_ctx); in generate() localVariable
1957 self.generate_funcrefs(&mut builder)?; in generate()
1958 self.generate_blocks(&mut builder)?; in generate()
1961 self.generate_stack_slots(&mut builder)?; in generate()
1966 builder.switch_to_block(block); in generate()
1972 self.build_variable_pool(&mut builder)?; in generate()
1976 self.initialize_stack_slots(&mut builder)?; in generate()
1981 let block_param = builder.block_params(block)[i]; in generate()
1982 builder.def_var(var, block_param); in generate()
1987 self.generate_instructions(&mut builder)?; in generate()
1990 self.insert_terminator(&mut builder, block)?; in generate()
1993 builder.seal_all_blocks(); in generate()
1994 builder.finalize(); in generate()