From 5ad95486e63675b2bb3ad665bb2b84eb260c6f29 Mon Sep 17 00:00:00 2001 From: shyouhei Date: Wed, 10 Jan 2018 01:53:24 +0000 Subject: merge revisions 61753:61750 61747:61740 61737:61728 Revert all the VM generator rewrites; requested by naruse git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61755 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- template/optunifs.inc.tmpl | 67 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 template/optunifs.inc.tmpl (limited to 'template/optunifs.inc.tmpl') diff --git a/template/optunifs.inc.tmpl b/template/optunifs.inc.tmpl new file mode 100644 index 0000000000..3ac5872346 --- /dev/null +++ b/template/optunifs.inc.tmpl @@ -0,0 +1,67 @@ +/* -*-c-*- *********************************************************/ +/*******************************************************************/ +/*******************************************************************/ +/** + This file is for threaded code. + + ---- + This file is auto generated by insns2vm.rb + DO NOT TOUCH! + + If you want to fix something, you must edit 'template/optunifs.inc.tmpl' + or tool/insns2vm.rb + */ + +/* + static const int UNIFIED_insn_name_1[] = {id, size, ...}; + static const int UNIFIED_insn_name_2[] = {id, size, ...}; + ... + + static const int *const UNIFIED_insn_name[] = {size, + UNIFIED_insn_name_1, + UNIFIED_insn_name_2, ...}; + ... + + static const int *const *const unified_insns_data[] = { + UNIFIED_insn_nameA, + UNIFIED_insn_nameB, ...}; + */ + +% unif_insns_data = @insns.find_all {|insn| !insn.is_sc}.map do |insn| +% size = insn.unifs.size +% if size > 0 +% name = "UNIFIED_#{insn.name}" +% insn.unifs.sort_by{|unif| -unif[1].size}.each_with_index do |(uni_insn, uni_insns), i| +% uni_insns = uni_insns[1..-1] +static const int <%=name%>_<%=i%>[] = { + BIN(<%=uni_insn.name%>), <%=uni_insns.size + 2%>, + <% uni_insns.map{|e| -%> +BIN(<%=e.name%>),<% -%> +% } + +}; +% end + +static const int *const <%=name%>[] = {(int *)<%=size+1%>, +% size.times do |e| + <%=name%>_<%=e%>, +% end +}; +% name +% end +% end + +static const int *const *const unified_insns_data[] = {<%#-%> +% unif_insns_data.each_with_index do |insn, i| +% if (i%8).zero? + + <% -%> +% end + <%=insn || "0"%>,<%#-%> +% end + +}; + +#undef GET_INSN_NAME + +ASSERT_VM_INSTRUCTION_SIZE(unified_insns_data); -- cgit v1.2.3