Bitcasting at control flow exits (#1272)
* Bitcast vectors immediately before a return * Bitcast vectors immediately before a block end * Use helper function for bitcasting arguments * Add FuncTranslationState::peekn_mut; allows mutating of peeked values * Bitcast values in place, avoiding an allocation Also, retrieves the correct EBB header types for bitcasting on Operator::End. * Bitcast values of a function with no explicit Wasm return instruction * Add Signature::return_types method This eliminates some duplicate code and avoids extra `use`s of `Vec`. * Add Signature::param_types method; only collect normal parameters in both this and Signature::return_types * Move normal_args to Signature::num_normal_params method This matches the organization of the other Signature::num_*_params methods. * Bitcast values of Operator::Call and Operator::CallIndirect * Add DataFlowGraph::ebb_param_types * Bitcast values of Operator::Br and Operator::BrIf * Bitcast values of Operator::BrTable
This commit is contained in:
14
cranelift/wasmtests/call-simd.wat
Normal file
14
cranelift/wasmtests/call-simd.wat
Normal file
@@ -0,0 +1,14 @@
|
||||
(module
|
||||
(func $main
|
||||
(v128.const i32x4 1 2 3 4)
|
||||
(v128.const i32x4 1 2 3 4)
|
||||
(call $add)
|
||||
drop
|
||||
)
|
||||
(func $add (param $a v128) (param $b v128) (result v128)
|
||||
(local.get $a)
|
||||
(local.get $b)
|
||||
(i32x4.add)
|
||||
)
|
||||
(start $main)
|
||||
)
|
||||
Reference in New Issue
Block a user