-
Initial skeleton of Subzero. · f7c9a141Jim Stichnoth authored
This includes just enough code to build the high-level ICE IR and dump it back out again. There is a script szdiff.py that does a fuzzy diff of the input and output for verification. See the comment in szdiff.py for a description of the fuzziness. Building llvm2ice requires LLVM headers, libs, and tools (e.g. FileCheck) to be present. These default to something like llvm_i686_linux_work/Release+Asserts/ based on the checked-out and built pnacl-llvm code; I'll try to figure out how to more automatically detect the build configuration. "make check" runs the lit tests. This CL has under 2000 lines of "interesting" Ice*.{h,cpp} code, plus 600 lines of llvm2ice.cpp driver code, and the rest is tests. Here is the high-level mapping of source files to functionality: IceDefs.h, IceTypes.h, IceTypes.cpp: Commonly used types and utilities. IceCfg.h, IceCfg.cpp: Operations at the function level. IceCfgNode.h, IceCfgNode.cpp: Operations on basic blocks (nodes). IceInst.h, IceInst.cpp: Operations on instructions. IceOperand.h, IceOperand.cpp: Operations on operands, such as stack locations, physical registers, and constants. BUG= none R=jfb@chromium.org Review URL: https://codereview.chromium.org/205613002f7c9a141
×