diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-01-10 01:53:24 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-01-10 01:53:24 +0000 |
commit | 5ad95486e63675b2bb3ad665bb2b84eb260c6f29 (patch) | |
tree | 9ed7d02028ba1edd4a74e090fb4c7155b55aafd6 /template/optinsn.inc.tmpl | |
parent | 7c7d47d2369881f8ea22da34077459771276786a (diff) | |
download | ruby-5ad95486e63675b2bb3ad665bb2b84eb260c6f29.tar.gz |
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
Diffstat (limited to 'template/optinsn.inc.tmpl')
-rw-r--r-- | template/optinsn.inc.tmpl | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/template/optinsn.inc.tmpl b/template/optinsn.inc.tmpl new file mode 100644 index 0000000000..b1fba6dea3 --- /dev/null +++ b/template/optinsn.inc.tmpl @@ -0,0 +1,78 @@ +/* -*-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/optinsn.inc.tmpl' + or tool/insns2vm.rb + */ + +static INSN * +insn_operands_unification(INSN *insnobj) +{ +#ifdef OPT_OPERANDS_UNIFICATION + /* optimize rule */ + switch(insnobj->insn_id){ +% opt_insns_map.each do |originsn, optinsns| + case BIN(<%=originsn.name%>): +% optinsns.each {|opti| + if ( +% opti.defopes.each_with_index {|opinfo, i| +% next if opinfo[1] == '*' + insnobj->operands[<%=i%>] == <%=val_as_type(opinfo)%> && +% } + 1) { +% idx = 0 +% opti.defopes.each_with_index {|opinfo, n| +% if opinfo[1] == '*' +% if idx != n + insnobj->operands[<%=idx%>] = insnobj->operands[<%=n%>]; +% end +% idx += 1 +% end +% } + insnobj->insn_id = BIN(<%=opti.name%>); + insnobj->operand_size = <%=idx%>; + break; + } +% } + break; +% end + + default: + /* do nothing */; + break; + } +#endif + return insnobj; +} + +int +rb_insn_unified_local_var_level(VALUE insn) +{ +#ifdef OPT_OPERANDS_UNIFICATION + /* optimize rule */ + switch (insn) { +% opt_insns_map.each do |originsn, optinsns| +% optinsns.each {|opti| + case BIN(<%=opti.name%>): +% opti.defopes.each {|opinfo| +% next if opinfo[1] == '*' + return <%=opinfo[1]%>; +% break +% } +% } +% end + + default: + /* do nothing */; + break; + } +#endif + return -1; +} |