DescriptionConvert Constant->emit() definitions to allow multiple targets to define them.
Wasn't sure how to allow TargetX8632 and TargetARM32
to both define "ConstantInteger32::emit(GlobalContext *)",
and define them differently if both targets happen to be
ifdef'ed into the code. Rearranged things so that it's now
"TargetFoo::emit(ConstantInteger32 *)", so that each
TargetFoo can have a separate definition.
Some targets may allow emitting some types of constants
while other targets do not (64-bit int for x86-64?).
Also they emit constants with a different style.
E.g., the prefix for x86 is "$" while the prefix for ARM
is "#" and there isn't a prefix for mips(?).
Renamed emitWithoutDollar to emitWithoutPrefix.
Did this sort of multi-method dispatch via a visitor
pattern, which is a bit verbose though.
We may be able to remove the emitWithoutDollar/Prefix for
ConstantPrimitive by just inlining that into the few places
that need it (only needed for ConstantInteger32). This
undoes the unreachable methods added by: https://codereview.chromium.org/1017373002/diff/60001/src/IceTargetLoweringX8632.cpp
The only place extra was for emitting calls to constants.
There was already an inlined instance for OperandX8632Mem.
BUG= https://code.google.com/p/nativeclient/issues/detail?id=4076
R=stichnot@chromium.org
Committed: https://gerrit.chromium.org/gerrit/gitweb?p=native_client/pnacl-subzero.git;a=commit;h=76bb0bec94b99765be86525fa1ae2c607e66d9b6
Patch Set 1 #Patch Set 2 : undo the emitWithoutDollar for every ConstantPrimitive #Patch Set 3 : clang-format #Patch Set 4 : replace with unimplemented as a reminder #
Total comments: 3
Patch Set 5 : typo #Patch Set 6 : report fatal #
Messages
Total messages: 6 (1 generated)
|