• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021-2022 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6# http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14% Runtime::intrinsics.each do |intrinsic|
15- name: <%= intrinsic.name %>
16  space: <%= intrinsic.space %>
17  class_name: <%= intrinsic.class_name %>
18  method_name: <%= intrinsic.method_name %>
19  safepoint_after_call: <%= intrinsic.respond_to?(:safepoint_after_call) && intrinsic.safepoint_after_call %>
20  private: <%= intrinsic.respond_to?(:private) %>
21  signature:
22    ret: "<%= intrinsic.signature.ret %>"
23    args: <%= intrinsic.signature.args %>
24  static: <%= intrinsic.respond_to?(:static) && intrinsic.static %>
25% if intrinsic.has_impl?
26  impl: <%= intrinsic.wrapper_impl %>
27  impl_signature:
28    ret: "<%= get_ret_effective_type(intrinsic.signature.ret) %>"
29    args: <%= (!intrinsic.static ? [get_effective_type(intrinsic.class_name)] : []) + intrinsic.signature.args.map { |t| get_effective_type(t) }.flatten %>
30%   if intrinsic.need_abi_wrapper?
31  orig_impl: <%= intrinsic.impl %>
32  orig_impl_signature:
33    ret: "<%= get_ret_type(intrinsic.signature.ret) %>"
34    args: <%= (!intrinsic.static ? [get_type(intrinsic.class_name)] : []) + intrinsic.signature.args.map { |t| get_type(t) }.flatten %>
35%   end
36  need_decl: <%= intrinsic.impl.start_with?(Runtime::intrinsics_namespace) %>
37% end
38% if intrinsic.respond_to?(:fast_path)
39  fast_path: <%= intrinsic.fast_path %>
40% end
41  clear_flags: <%= intrinsic.respond_to?(:clear_flags) ? intrinsic.clear_flags : [] %>
42  set_flags: <%= intrinsic.respond_to?(:set_flags) ? intrinsic.set_flags : [] %>
43  additional_temps: <%= intrinsic.respond_to?(:additional_temps) ? intrinsic.additional_temps : 0 %>
44%   if intrinsic.respond_to?(:codegen_func)
45  codegen_func: <%= intrinsic.codegen_func %>
46  codegen_arch: <%= intrinsic.respond_to?(:codegen_arch) ? intrinsic.codegen_arch : ['amd64', 'arm32', 'arm64'] %>
47% if intrinsic.respond_to?(:can_encode_func)
48  can_encode_func: <%= intrinsic.can_encode_func %>
49% end
50%   else
51  codegen_arch: <%= intrinsic.respond_to?(:codegen_arch) ? intrinsic.codegen_arch : [] %>
52%   end
53  need_nullcheck: <%= intrinsic.respond_to?(:need_nullcheck) ? intrinsic.need_nullcheck : [] %>
54% end
55