mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	Implement InstCombine/add.ll:test21
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14443 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
		| @@ -1520,10 +1520,15 @@ Instruction *InstCombiner::visitSetCondInst(BinaryOperator &I) { | |||||||
|       if (BinaryOperator *BO = dyn_cast<BinaryOperator>(Op0)) { |       if (BinaryOperator *BO = dyn_cast<BinaryOperator>(Op0)) { | ||||||
|         switch (BO->getOpcode()) { |         switch (BO->getOpcode()) { | ||||||
|         case Instruction::Add: |         case Instruction::Add: | ||||||
|           if (CI->isNullValue()) { |           // Replace ((add A, B) != C) with (A != C-B) if B & C are constants. | ||||||
|  |           if (ConstantInt *BOp1C = dyn_cast<ConstantInt>(BO->getOperand(1))) { | ||||||
|  |             return new SetCondInst(I.getOpcode(), BO->getOperand(0), | ||||||
|  |                                    ConstantExpr::getSub(CI, BOp1C)); | ||||||
|  |           } else if (CI->isNullValue()) { | ||||||
|             // Replace ((add A, B) != 0) with (A != -B) if A or B is |             // Replace ((add A, B) != 0) with (A != -B) if A or B is | ||||||
|             // efficiently invertible, or if the add has just this one use. |             // efficiently invertible, or if the add has just this one use. | ||||||
|             Value *BOp0 = BO->getOperand(0), *BOp1 = BO->getOperand(1); |             Value *BOp0 = BO->getOperand(0), *BOp1 = BO->getOperand(1); | ||||||
|  |              | ||||||
|             if (Value *NegVal = dyn_castNegVal(BOp1)) |             if (Value *NegVal = dyn_castNegVal(BOp1)) | ||||||
|               return new SetCondInst(I.getOpcode(), BOp0, NegVal); |               return new SetCondInst(I.getOpcode(), BOp0, NegVal); | ||||||
|             else if (Value *NegVal = dyn_castNegVal(BOp0)) |             else if (Value *NegVal = dyn_castNegVal(BOp0)) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user