1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00
llvm-mirror/test/Transforms
Chris Lattner 29475c23d0 X86 supports i8/i16 overflow ops (except i8 multiplies), we should
generate them.  

Now we compile:

define zeroext i8 @X(i8 signext %a, i8 signext %b) nounwind ssp {
entry:
  %0 = tail call %0 @llvm.sadd.with.overflow.i8(i8 %a, i8 %b)
  %cmp = extractvalue %0 %0, 1
  br i1 %cmp, label %if.then, label %if.end

into:

_X:                                     ## @X
## BB#0:                                ## %entry
	subl	$12, %esp
	movb	16(%esp), %al
	addb	20(%esp), %al
	jo	LBB0_2

Before we were generating:

_X:                                     ## @X
## BB#0:                                ## %entry
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movb	12(%ebp), %al
	testb	%al, %al
	setge	%cl
	movb	8(%ebp), %dl
	testb	%dl, %dl
	setge	%ah
	cmpb	%cl, %ah
	sete	%cl
	addb	%al, %dl
	testb	%dl, %dl
	setge	%al
	cmpb	%al, %ah
	setne	%al
	andb	%cl, %al
	testb	%al, %al
	jne	LBB0_2

llvm-svn: 122186
2010-12-19 20:03:11 +00:00
..
ADCE
ArgumentPromotion Make BasicAliasAnalysis a normal AliasAnalysis implementation which 2010-10-18 18:04:47 +00:00
BlockPlacement
BranchFolding
CodeExtractor
CodeGenPrepare revert r122164, I'm going to go with a different approach. 2010-12-19 04:23:03 +00:00
ConstantMerge
ConstProp Teach ConstantFoldInstruction() how to fold insertvalue and extractvalue. 2010-11-29 20:36:52 +00:00
CorrelatedValuePropagation Fix PR8790, another instance where unreachable code can cause instruction simplification to fail, 2010-12-15 00:55:35 +00:00
DeadArgElim
DeadStoreElimination Fix PR8728, a miscompilation I recently introduced. When optimizing 2010-12-06 01:48:06 +00:00
FunctionAttrs Make ModRefBehavior a lattice. Use this to clean up AliasAnalysis 2010-11-10 01:02:18 +00:00
GlobalDCE
GlobalOpt reapply r121100 with a tweak to constant fold ConstExprs with TargetData 2010-12-07 04:33:29 +00:00
GVN Preserve TBAA tags when doing load PRE. 2010-12-15 23:53:55 +00:00
IndVarSimplify Remove LoopIndexSplit pass. It is neither maintained nor used by anyone. 2010-10-07 23:29:37 +00:00
Inline Make BasicAliasAnalysis a normal AliasAnalysis implementation which 2010-10-18 18:04:47 +00:00
InstCombine X86 supports i8/i16 overflow ops (except i8 multiplies), we should 2010-12-19 20:03:11 +00:00
Internalize
IPConstantProp
JumpThreading Teach jump threading to "look through" a select when the branch direction of a terminator depends on it. 2010-12-15 09:51:20 +00:00
LCSSA
LICM Enhance LICM to promote alias sets whose pointers themselves are stored, 2010-12-19 05:57:25 +00:00
LoopDeletion
LoopRotate
LoopSimplify
LoopStrengthReduce
LoopUnroll
LoopUnswitch Factor code for testing whether replacing one value with another 2010-11-18 19:59:41 +00:00
LowerAtomic
LowerInvoke
LowerSetJmp
LowerSwitch
Mem2Reg
MemCpyOpt enhance memcpyopt to zap memcpy's that have the same src/dst. 2010-12-09 07:45:45 +00:00
MergeFunc
PartialSpecialize Now using a variant of the existing inlining heuristics to decide whether to create a given specialization of a function in PartialSpecialization. If the total performance bonus across all callsites passing the same constant exceeds the specialization cost, we create the specialization. 2010-10-09 22:06:36 +00:00
PruneEH
Reassociate
ScalarRepl Treat a call of function pointer like a load of the pointer when considering 2010-11-24 22:04:20 +00:00
SCCP
SimplifyCFG SimplifyCFG: Ranges can be larger than 64 bits. Fixes Release-selfhost build. 2010-12-17 10:48:14 +00:00
SimplifyLibCalls Revert r64460. strtol and friends cannot be marked readonly, even with 2010-12-17 01:09:43 +00:00
Sink Make BasicAliasAnalysis a normal AliasAnalysis implementation which 2010-10-18 18:04:47 +00:00
SRETPromotion
StripSymbols
TailCallElim
TailDup