| OLD | NEW |
| 1 #!/usr/bin/env python2 | 1 #!/usr/bin/env python2 |
| 2 | 2 |
| 3 import argparse | 3 import argparse |
| 4 import os | 4 import os |
| 5 import re | 5 import re |
| 6 import subprocess | 6 import subprocess |
| 7 import sys | 7 import sys |
| 8 import tempfile | 8 import tempfile |
| 9 | 9 |
| 10 sys.path.insert(0, '../pydir') | 10 sys.path.insert(0, '../pydir') |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 help='Driver program') | 36 help='Driver program') |
| 37 argparser.add_argument('--target', required=False, default='x8632', | 37 argparser.add_argument('--target', required=False, default='x8632', |
| 38 choices=arch_map.keys(), | 38 choices=arch_map.keys(), |
| 39 metavar='TARGET', | 39 metavar='TARGET', |
| 40 help='Translation target architecture') | 40 help='Translation target architecture') |
| 41 argparser.add_argument('-O', required=False, default='2', dest='optlevel', | 41 argparser.add_argument('-O', required=False, default='2', dest='optlevel', |
| 42 choices=['m1', '-1', '0', '1', '2'], | 42 choices=['m1', '-1', '0', '1', '2'], |
| 43 metavar='OPTLEVEL', | 43 metavar='OPTLEVEL', |
| 44 help='Optimization level ' + | 44 help='Optimization level ' + |
| 45 '(m1 and -1 are equivalent)') | 45 '(m1 and -1 are equivalent)') |
| 46 argparser.add_argument('--mattr', required=False, default='sse2', |
| 47 dest='attr', choices=['sse2', 'sse4.1'], |
| 48 metavar='ATTRIBUTE', help='Target attribute') |
| 46 argparser.add_argument('--prefix', required=True, | 49 argparser.add_argument('--prefix', required=True, |
| 47 metavar='SZ_PREFIX', | 50 metavar='SZ_PREFIX', |
| 48 help='String prepended to Subzero symbol names') | 51 help='String prepended to Subzero symbol names') |
| 49 argparser.add_argument('--output', '-o', required=True, | 52 argparser.add_argument('--output', '-o', required=True, |
| 50 metavar='EXECUTABLE', | 53 metavar='EXECUTABLE', |
| 51 help='Executable to produce') | 54 help='Executable to produce') |
| 52 argparser.add_argument('--dir', required=False, default='.', | 55 argparser.add_argument('--dir', required=False, default='.', |
| 53 metavar='OUTPUT_DIR', | 56 metavar='OUTPUT_DIR', |
| 54 help='Output directory for all files') | 57 help='Output directory for all files') |
| 55 argparser.add_argument('--llvm-bin-path', required=False, | 58 argparser.add_argument('--llvm-bin-path', required=False, |
| (...skipping 30 matching lines...) Expand all Loading... |
| 86 line = fix_target.sub('i686-pc-linux-gnu', line) | 89 line = fix_target.sub('i686-pc-linux-gnu', line) |
| 87 f.write(line) | 90 f.write(line) |
| 88 f.close() | 91 f.close() |
| 89 | 92 |
| 90 base_sz = '%s.O%s.%s' % (base, args.optlevel, args.target) | 93 base_sz = '%s.O%s.%s' % (base, args.optlevel, args.target) |
| 91 asm_sz = os.path.join(args.dir, base_sz + '.sz.s') | 94 asm_sz = os.path.join(args.dir, base_sz + '.sz.s') |
| 92 obj_sz = os.path.join(args.dir, base_sz + '.sz.o') | 95 obj_sz = os.path.join(args.dir, base_sz + '.sz.o') |
| 93 obj_llc = os.path.join(args.dir, base + '.llc.o') | 96 obj_llc = os.path.join(args.dir, base + '.llc.o') |
| 94 shellcmd(['../llvm2ice', | 97 shellcmd(['../llvm2ice', |
| 95 '-O' + args.optlevel, | 98 '-O' + args.optlevel, |
| 99 '-mattr=' + args.attr, |
| 96 '--target=' + args.target, | 100 '--target=' + args.target, |
| 97 '--prefix=' + args.prefix, | 101 '--prefix=' + args.prefix, |
| 98 '-o=' + asm_sz, | 102 '-o=' + asm_sz, |
| 99 bitcode]) | 103 bitcode]) |
| 100 shellcmd([os.path.join(llvm_bin_path, 'llvm-mc'), | 104 shellcmd([os.path.join(llvm_bin_path, 'llvm-mc'), |
| 101 '-arch=' + arch_map[args.target], | 105 '-arch=' + arch_map[args.target], |
| 102 '-x86-asm-syntax=intel', | 106 '-x86-asm-syntax=intel', |
| 103 '-filetype=obj', | 107 '-filetype=obj', |
| 104 '-o=' + obj_sz, | 108 '-o=' + obj_sz, |
| 105 asm_sz]) | 109 asm_sz]) |
| (...skipping 21 matching lines...) Expand all Loading... |
| 127 bitcode]) | 131 bitcode]) |
| 128 objs.append(obj_llc) | 132 objs.append(obj_llc) |
| 129 else: | 133 else: |
| 130 objs.append(bitcode) | 134 objs.append(bitcode) |
| 131 | 135 |
| 132 linker = 'clang' if os.path.splitext(args.driver)[1] == '.c' else 'clang++' | 136 linker = 'clang' if os.path.splitext(args.driver)[1] == '.c' else 'clang++' |
| 133 # TODO: Remove -mstackrealign after Subzero supports stack alignment. | 137 # TODO: Remove -mstackrealign after Subzero supports stack alignment. |
| 134 shellcmd([os.path.join(llvm_bin_path, linker), '-g', '-m32', | 138 shellcmd([os.path.join(llvm_bin_path, linker), '-g', '-m32', |
| 135 '-mstackrealign', args.driver] + objs + | 139 '-mstackrealign', args.driver] + objs + |
| 136 ['-lm', '-lpthread', '-o', os.path.join(args.dir, args.output)]) | 140 ['-lm', '-lpthread', '-o', os.path.join(args.dir, args.output)]) |
| OLD | NEW |