DescriptionChange usage of naclcall and nacljmp pseudo-instructions to match x86 gas
x86 gas uses "call" for direct calls and "naclcall" for indirect calls,
and implicitly handles bundle-align-to-end for all calls in nacl mode;
previously we used "naclcall" for all calls which used bundle alignment.
This makes the assembler automatically align bare "call"
instructions. On x86-32 we remove our custom nacl-flavored
call instruction in favor of the bare call. On x86-64 we
still need a different codegen target for isel that takes
a 32-bit operand due to our pointer-size differences,
but we also sandbox bare call instructions.
Also for 64-bit forms of "nacljmp %foo, %r15" gas uses 32-bit operands
(nacljmp %r11d, %r15), whereas we had been using 64-bit operands
(nacljmp %r11, %r15). Using a 32-bit operand makes some sense since
the pointers are 32 bits; using a 64-bit operand makes some sense since
the entire register is cleared, but it's better to match. The operands
used in codegen are the same so again this is mostly just a change in
assembler spelling that's invisible to the compiler.
R=jvoung@chromium.org
BUG= https://code.google.com/p/nativeclient/issues/detail?id=3966
Committed: https://gerrit.chromium.org/gerrit/gitweb?p=native_client/pnacl-llvm.git;a=commit;h=e9104b5e4a843c4dd440be5b14ebbdd2912a99c8
Patch Set 1 #
Total comments: 2
Patch Set 2 : remove NACL_call32d and auto-align bare call #
Total comments: 6
Messages
Total messages: 6 (0 generated)
|