llvm-6502/utils/TableGen
Evan Cheng 76356d9594 Prevent folding of a node with multiple uses if the node already folds a load!
Here is an example where the load ended up being done twice:

%A = global uint 0

uint %test(uint %B, ubyte %C) {
	%tmp = load uint *%A;
	%X = shl uint %tmp, ubyte %C
	%Cv = sub ubyte 32, %C
	%Y = shr uint %B, ubyte %Cv
	%Z = or uint %Y, %X
	store uint %Z, uint* %A
	ret uint %Z
}

==>

	subl $4, %esp
	movl %ebx, (%esp)
	movl 8(%esp), %edx
	movl A, %eax
	movb 12(%esp), %bl
	movb %bl, %cl
	shldl %cl, %edx, %eax
	movb %bl, %cl
	shldl %cl, %edx, A
	movl (%esp), %ebx
	addl $4, %esp
	ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25471 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-20 01:11:03 +00:00
..
.cvsignore Implement PR614: 2005-08-27 18:50:39 +00:00
AsmWriterEmitter.cpp No longer track value types for asm printer operands, and remove them as 2005-11-30 18:54:35 +00:00
AsmWriterEmitter.h Remove trailing whitespace 2005-04-22 00:00:37 +00:00
CodeEmitterGen.cpp Fix an incompatibility with GCC 4.1, thanks to Vladimir Merzliakov 2005-10-24 15:04:15 +00:00
CodeEmitterGen.h Remove trailing whitespace 2005-04-22 00:00:37 +00:00
CodeGenInstruction.h * Remove instruction fields hasInFlag / hasOutFlag and added SNDPInFlag and 2006-01-09 18:27:06 +00:00
CodeGenRegisters.h Add support for generating v4i32 altivec code 2005-12-30 00:12:56 +00:00
CodeGenTarget.cpp * Remove instruction fields hasInFlag / hasOutFlag and added SNDPInFlag and 2006-01-09 18:27:06 +00:00
CodeGenTarget.h * Added an explicit type field to ComplexPattern. 2005-12-08 02:14:08 +00:00
DAGISelEmitter.cpp Prevent folding of a node with multiple uses if the node already folds a load! 2006-01-20 01:11:03 +00:00
DAGISelEmitter.h fix a broken comment 2006-01-17 21:31:18 +00:00
FileLexer.cpp Regenerated the Lex and Yacc output files on Linux. It seems that our 2006-01-17 17:01:34 +00:00
FileLexer.l Tighten up the specification to allow TableGen/nested-comment.td to pass 2005-09-06 21:23:09 +00:00
FileParser.cpp Regenerated the Lex and Yacc output files on Linux. It seems that our 2006-01-17 17:01:34 +00:00
FileParser.h Regenerated the Lex and Yacc output files on Linux. It seems that our 2006-01-17 17:01:34 +00:00
FileParser.y Refactor this a bit to move ParsingTemplateArgs to only apply to classes, 2005-09-30 04:53:04 +00:00
InstrInfoEmitter.cpp almost got the HP-UX tester up.. :) 2005-12-30 14:56:37 +00:00
InstrInfoEmitter.h Emit itinerary class in instruction info. 2005-10-31 17:16:46 +00:00
Makefile Implement PR614: 2005-08-27 18:50:39 +00:00
Record.cpp more standards-compliance stuff 2005-12-26 05:08:55 +00:00
Record.h Rename Record::getValueAsListDef to getValueAsListOfDefs, to more accurately 2005-10-28 22:49:02 +00:00
RegisterInfoEmitter.cpp This gets most of the backends building with HP HappyC++. 2005-12-27 10:56:22 +00:00
RegisterInfoEmitter.h Remove trailing whitespace 2005-04-22 00:00:37 +00:00
SubtargetEmitter.cpp almost got the HP-UX tester up.. :) 2005-12-30 14:56:37 +00:00
SubtargetEmitter.h Allow itineraries to be passed through the Target Machine. 2005-11-01 20:06:59 +00:00
TableGen.cpp more standards-compliance stuff 2005-12-26 05:08:55 +00:00
TableGenBackend.cpp Remove trailing whitespace 2005-04-22 00:00:37 +00:00
TableGenBackend.h Remove trailing whitespace 2005-04-22 00:00:37 +00:00