optunifs.inc
Methods
- G
Instance Public methods
generate()
Link
# File tool/instruction.rb, line 1149 def generate unif_insns_each = '' unif_insns = '' unif_insns_data = [] insns = @insns.find_all{|insn| !insn.is_sc} insns.each{|insn| size = insn.unifs.size if size > 0 insn.unifs.sort_by{|unif| -unif[1].size}.each_with_index{|unif, i| uni_insn, uni_insns = *unif uni_insns = uni_insns[1..-1] unif_insns_each << "static const int UNIFIED_#{insn.name}_#{i}[] = {" + " BIN(#{uni_insn.name}), #{uni_insns.size + 2}, \n " + uni_insns.map{|e| "BIN(#{e.name})"}.join(", ") + "};\n" } else end if size > 0 unif_insns << "static const int *const UNIFIED_#{insn.name}[] = {(int *)#{size+1}, \n" unif_insns << (0...size).map{|e| " UNIFIED_#{insn.name}_#{e}"}.join(",\n") + "};\n" unif_insns_data << " UNIFIED_#{insn.name}" else unif_insns_data << " 0" end } unif_insns_data = "static const int *const *const unified_insns_data[] = {\n" + unif_insns_data.join(",\n") + "};\n" ERB.new(vpath.read('template/optunifs.inc.tmpl')).result(binding) end