mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-11-03 14:21:30 +00:00 
			
		
		
		
	Summary: During icmp lowering it can happen that a constant value can be larger than expected (see the code around the change). APInt::getMinSignedBits() must be checked again as the shift before can change the constant sign to positive. I'm not sure it is the best fix possible though. Test Plan: Regression test included. Reviewers: resistor, chandlerc, spatel, hfinkel Reviewed By: hfinkel Subscribers: hfinkel, llvm-commits Differential Revision: http://reviews.llvm.org/D9147 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237812 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
 | 
						|
; RUN: llc < %s | FileCheck %s
 | 
						|
 | 
						|
; CHECK-LABEL: test_ult
 | 
						|
define i1 @test_ult(i256 %a) nounwind {
 | 
						|
  %1 = icmp ult i256 %a, -6432394258550908438
 | 
						|
  ret i1 %1
 | 
						|
}
 | 
						|
 | 
						|
; CHECK-LABEL: test_ule
 | 
						|
define i1 @test_ule(i256 %a) nounwind {
 | 
						|
  %1 = icmp ule i256 %a, -6432394258550908438
 | 
						|
  ret i1 %1
 | 
						|
}
 | 
						|
 | 
						|
; CHECK-LABEL: test_ugt
 | 
						|
define i1 @test_ugt(i256 %a) nounwind {
 | 
						|
  %1 = icmp ugt i256 %a, -6432394258550908438
 | 
						|
  ret i1 %1
 | 
						|
}
 | 
						|
 | 
						|
; CHECK-LABEL: test_uge
 | 
						|
define i1 @test_uge(i256 %a) nounwind {
 | 
						|
  %1 = icmp uge i256 %a, -6432394258550908438
 | 
						|
  ret i1 %1
 | 
						|
}
 | 
						|
 | 
						|
; CHECK-LABEL: test_slt
 | 
						|
define i1 @test_slt(i256 %a) nounwind {
 | 
						|
  %1 = icmp slt i256 %a, -6432394258550908438
 | 
						|
  ret i1 %1
 | 
						|
}
 | 
						|
 | 
						|
; CHECK-LABEL: test_sle
 | 
						|
define i1 @test_sle(i256 %a) nounwind {
 | 
						|
  %1 = icmp sle i256 %a, -6432394258550908438
 | 
						|
  ret i1 %1
 | 
						|
}
 | 
						|
 | 
						|
; CHECK-LABEL: test_sgt
 | 
						|
define i1 @test_sgt(i256 %a) nounwind {
 | 
						|
  %1 = icmp sgt i256 %a, -6432394258550908438
 | 
						|
  ret i1 %1
 | 
						|
}
 | 
						|
 | 
						|
; CHECK-LABEL: test_sge
 | 
						|
define i1 @test_sge(i256 %a) nounwind {
 | 
						|
  %1 = icmp sge i256 %a, -6432394258550908438
 | 
						|
  ret i1 %1
 | 
						|
}
 |