Disable xhp test for unparser.

Reviewed By: @paroski, @elgenie

Differential Revision: D1741708

Signature: t1:1741708:1418703859:629ec0d54165bd35a1e6d9dd207fd6dd3f059265
Don't sink IncRefs past SyncABIRegs

Summary: SyncABIRegs is supposed to ensure cross-tracelet ABI registers are in
the proper state for leaving the trace, so we shouldn't have anything between
it and the exit following it. We've never verified or depended on this, but the
llvm backend does check some aspects of it now, and this was causing a failure
in one repo mode test.

Reviewed By: @ottoni

Differential Revision: D1739443

Signature: t1:1739443:1418667644:9ea10fe09915ae0fb55215ff22d0b656a14db7e2
Fix some test*im operand sizes

Summary: We were using cmpqim and testlim on the same memory address, first to
check a pointer for null and then to inspect something in its bottom half. This
is only ok on little-endian machines, and the LLVM optimizer will do funky
things to endianness-dependent code. I shuffled things around so we always emit
a properly-sized test instruction in code-gen-x64.cpp, and vasm-x64.cpp will
emit a smaller instruction when appropriate. I know the instruction-shrinking
logic in vasm-x64.cpp could be smarter than it is; I decided to keep it exactly
as smart as it was before for simplicity.

Reviewed By: @jasone

Differential Revision: D1737884

Signature: t1:1737884:1418431658:638373b0d36ab6e731513d355c9306c93c121154
Add timers for llvm codegen

Summary: This will give us a rough idea of how much time we spend in the
various parts of the llvm backend. I considered adding a mode to Timer that
aborts if we punt by throwing an exception, but it looks like it's not possible
to get that 100% correct until std::uncaught_exceptions() in C++17.

Reviewed By: @jasone

Differential Revision: D1739445

Signature: t1:1739445:1418674406:e61081656e29da64c2ddabd98477cf0eab099bb7
Get test/quick passing under llvm

Summary: With this diff, all of test/quick passes with the llvm backend. We're
still punting on a few things (most notably bindcall), but this at least means
the stuff we do support is reasonably correct.

- Pass argument types to Intrinsic::getDeclaration for rounding, sqrt.
- Enable sse4.1 in ExecutionEngine.
- Allocate .rodata sections in mcg->globaData() so they stick around past
  codegen time (llvm likes to put double constants in .rodata).
- Make sure values from vcall's simdArgs tuple are passed as doubles.
- Change loadb to loadtqb, meaning load truncated quad to byte. This is
  necessary because we store Bools as 8 bytes but load them as 1 byte: if we
  actually emit llir with 8 byte stores and 1 byte loads to/from the same
  address the alias analysis pass gets upset.
- Make sure the m_data field of a TypedValue arguments to C++ helpers is always
  passed in a GP register, even when it's a double.

Reviewed By: @jasone

Differential Revision: D1738259

Signature: t1:1738259:1418671189:2a01f24f991302923660b6085678bbc2029e54f7
Fix some llvm issues from test/slow

Summary: - Fix a few places in code-gen-x64.cpp that should've been defining i8, not i64
- Split asInt into zext and narrow, requiring callers to be more explicit
- Class::classof can return a bool now that we handle it properly in the jit
- Add --llvm option to test/run
- Move some tracing around to make debugging locrec issues easier

Reviewed By: @jasone

Differential Revision: D1738588

Signature: t1:1738588:1418673994:fa8a102ab6bed3102f7fc2c9c0b7abb3ec4a276d
Fix ReflectionParameter::getClass() for self

Summary: fixes facebook/hhvm#4465

{sync, type="child", parent="internal", parentrevid="1742311", parentrevfbid="731149410302611", parentdiffid="5962255"}

Reviewed By: @JoelMarcey

Differential Revision: D1742311

Signature: t1:1742311:1418744128:2a04ebe20d1d47c81d9c4a01c949badbe4487389
Travis-CI support OS X and GCC-4.8