Ilan Schnell
fb3b6a3674
update changelog
0.12.1
2013-11-11 15:22:39 -06:00
Siu Kwan Lam
4e814b7d53
skip test for building executable from native object and assembly on OSX
2013-11-11 12:20:43 -06:00
Siu Kwan Lam
8a6dd7af7f
fix loop-vectorize for llvm-3.3
2013-11-05 16:58:20 -06:00
Siu Kwan Lam
d08095299e
add example for using vector instructions
2013-11-01 16:58:49 -05:00
Siu Kwan Lam
bf5859be7e
fix bad version checking which disables auto-vectorization for llvm 3.3
2013-11-01 16:50:53 -05:00
Siu Kwan Lam
18d3b4809f
Fix py2.6--use Popen instead of check_output
2013-10-05 13:55:26 +08:00
Siu Kwan Lam
a82e876f93
Add test skipping to disable arch specific tests conditionally
2013-10-05 13:37:04 +08:00
Siu Kwan Lam
1f7b9e3922
Fix setup.py
2013-10-04 15:35:22 +08:00
Siu Kwan Lam
fac1bc782d
Reorganize and cleanup tests
2013-10-04 15:24:30 +08:00
Siu Kwan Lam
ea452bd33c
Fix test
2013-09-30 17:18:30 -05:00
Siu Kwan Lam
ddf2007553
Adjust test for win32 x86 ABI
2013-09-30 17:13:06 -05:00
Siu Kwan Lam
e7a7896710
Adjust test for win32 amd64 ABI
2013-09-30 16:59:46 -05:00
Siu Kwan Lam
69a78d0a54
Test ABI for structures and reorganize tests a bit.
2013-09-30 16:24:26 -05:00
Siu Kwan Lam
cc4e4631bd
fix windows build: include all LLVM static library
2013-09-19 17:38:46 -05:00
Siu Kwan Lam
8034854ad4
make visual studio happy
2013-09-19 17:11:54 -05:00
Siu Kwan Lam
733fd7d18e
fix missing re-export for old llvm.ee symbols
2013-09-19 15:05:29 -05:00
Siu Kwan Lam
6e55bfc406
fix spaces redundant trailing spaces and missing line break at EOF
2013-09-18 11:58:05 -05:00
anthony cantor
72192c7e6a
fixed documentation typo
2013-09-18 11:52:22 -05:00
anthony cantor
b303fd532a
fixes to make this branch compatible with llvm versions before 3.4
2013-09-18 11:52:22 -05:00
anthony cantor
aa264cee2d
added align parameter to llvm.mc.Disassembler.decode
...
i cant find any method in llvm to automatically get the
correct instruction alignment for disassembling. i thought
it would be MCAsmInfo.getMinInstAlignment, but that value is
1 for the ARM target machine. since that is clearly the wrong
instruction alignment for disassembling arm, the user should
be able to configure the alignment to whatever is needed.
2013-09-18 11:52:22 -05:00
anthony cantor
3743146121
only convert input bytes if they are a string and we are in python 3
...
in python 2 'str' and 'bytes' are the same. if input bytes are not
a string or bytes, then raise a TypeError.
2013-09-18 11:52:22 -05:00
anthony cantor
8de5c3faff
added some methods to llvm.mc.Operand
...
methods that describe what type of operand it is
2013-09-18 11:52:22 -05:00
anthony cantor
083586464b
add bindings for instruction description methods to MCInstrDesc
...
use these new bindings instead of MCInstrAnalysis bindings in
llvm.mc.Instr because MCInstrAnalaysis is just a thin layer
encapsulating MCInstrInfo that seems largely pointless.
2013-09-18 11:52:22 -05:00
anthony cantor
0f3d5a8127
decode yields a tuple of integers instead of a bytearray
...
a tuple of integers is immutable and more similar to python 3
bytes than bytearray
2013-09-18 11:52:22 -05:00
anthony cantor
3e77a55de3
added methods to Instr which describe possible branch/terminator properties
2013-09-18 11:52:22 -05:00
anthony cantor
65c4558cac
added opcode property to llvm.mc.Instr
2013-09-18 11:52:22 -05:00
anthony cantor
43f7330fda
llvm.mc.Disassembler.decode now yields the byte sequence which generated the instruction
...
added custom method to extra.h to return a PyBytes object
from the bytes read from MemoryObject.readBytes.
also moved the generic methods from StringRefMemoryObject
up to MemoryObject
2013-09-18 11:52:22 -05:00
anthony cantor
1d735e49d2
fix python2/3 incompatibility
...
bytes built-in is different in python2
2013-09-18 11:52:22 -05:00
anthony cantor
fea82991c3
convert str input to bytes
...
StringRefMemoryObject constructor binding specifies bytes as
its input parameter, so we have to convert it.
2013-09-18 11:52:22 -05:00
anthony cantor
b3bf7f86cd
MCExpr pointer is owned by the MCOperand object
2013-09-18 11:52:22 -05:00
anthony cantor
3c06f0d590
add flags, ts_flags properties for Instr class
2013-09-18 11:52:22 -05:00
anthony cantor
cadc53f174
no need for get method in TargetInstrInfo
...
MCInstrInfo parent already has a binding
2013-09-18 11:52:22 -05:00
anthony cantor
0ed471d336
added example-instruction-info.py
...
demonstrates getting flag information for an opcode
2013-09-18 11:52:22 -05:00
anthony cantor
7234b0d200
use getRegInfo instead of creating a register info object
...
also raise exception if a property is accessed which is not
available on that particular TargetMachine.
2013-09-18 11:52:22 -05:00
anthony cantor
fa3aec8353
added some bindings to TargetMachine methods
...
these methods return pointers to MC objects relevant
to the arch the TargetMachine represents.
2013-09-18 11:52:21 -05:00
anthony cantor
bd9d71c713
added some bindings for MC classes
2013-09-18 11:52:21 -05:00
anthony cantor
8dbfc377ad
added functionality to llvm.mc.Instr to print itself
...
uses binding of printInst on MCInstPrinter for printing
instruction.
also fixed a bug in llvm.mc.Disassembler.decode: idx should
start at zero, and we should pass code.getBase() + idx to
getInstruction. idx must start at zero because the while loop
compares it against code.getExtent() which returns only the
length of bs.
2013-09-18 11:52:21 -05:00
anthony cantor
82d9c787f3
added llvm.mc.Operand class
...
Operand encapsulates information that llvm provides about an MCOperand
in an instruction.
2013-09-18 11:52:21 -05:00
anthony cantor
87d444c9e9
added tests to testall for llvm.target and llvm.mc
...
tests dont check for correctness, just exercise the API
2013-09-18 11:52:21 -05:00
anthony cantor
fa26aa1651
fix typo
2013-09-18 11:52:21 -05:00
anthony cantor
cbf4a61a17
moved the MC data type access to TargetMachine
...
Disassembler now simply needs a TargetMachine object
and it will be able to access all the descriptor objects
it needs for disassembly through the target machine.
2013-09-18 11:52:21 -05:00
anthony cantor
0e265a2cc5
TargetTransformInfo stuff doesnt work in llvm >= 3.3
2013-09-18 11:52:21 -05:00
anthony cantor
e65f6174a7
some fixes so that test/testall.py will run
...
some easy changes to core.py which were just conditionals on llvm
version. for the broken tests which i didnt know how to fix i
simply disabled them.
2013-09-18 11:52:21 -05:00
anthony cantor
83299a20a6
refactor TargetMachine into a new target module
...
TargetMachine is generally useful outside of the execution engine
context so i think it makes sense to move it into its own module.
2013-09-18 11:52:21 -05:00
anthony cantor
97c0e15e72
add some MCAsmInfo bindings
2013-09-18 11:52:21 -05:00
anthony cantor
4eab936224
added new MC classes for richer disassembling functionality
2013-09-18 11:52:21 -05:00
anthony cantor
78be6a7f5f
conditionals for compatibility with llvm < 3.4
...
i only intend to support MC bindings (and anything reliant on MC)
for llvm 3.4 and greater.
2013-09-18 11:52:21 -05:00
anthony cantor
bc02b3d90a
use (llvm 3.4) built in StringRefMemoryObject instead of BytesMemoryObject
2013-09-18 11:52:21 -05:00
anthony cantor
aa0ee9b6a6
changes to make llvmpy compatible with development branch of llvm
...
mostly just removing stuff and changing function prototypes.
with these changes, llvmpy compiles and llvm.test() passes.
2013-09-18 11:52:21 -05:00
anthony cantor
0610a27535
add MCAsmInfo
2013-09-18 11:52:21 -05:00