mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	This patch fixes issues with vector constant folding not correctly handling scalar input operands if they require implicit truncation - this was tested with llvm-stress as recommended by Patrik H Hagglund. The patch ensures that integer input scalars from a build vector are correctly truncated before folding, and that constant integer scalar results are promoted to a legal type before inclusion in the new folded build vector. I have added another crash test case and also a test for UINT_TO_FP / SINT_TO_FP using an non-truncated scalar input, which was failing before this patch. Differential Revision: http://reviews.llvm.org/D9282 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236308 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			14 lines
		
	
	
		
			502 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			14 lines
		
	
	
		
			502 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; RUN: llc < %s -mtriple=i686-unknown -mattr=+avx | FileCheck %s
 | |
| ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx | FileCheck %s
 | |
| 
 | |
| ; Check that constant integers are correctly being truncated before float conversion
 | |
| 
 | |
| define <4 x float> @test1() {
 | |
| ; CHECK-LABEL: test1
 | |
| ; CHECK: movaps {{.*#+}} xmm0 = [-1.000000e+00,0.000000e+00,-1.000000e+00,0.000000e+00]
 | |
| ; CHECK-NEXT: ret
 | |
|   %1 = trunc <4 x i3> <i3 -1, i3 -22, i3 7, i3 8> to <4 x i1>
 | |
|   %2 = sitofp <4 x i1> %1 to <4 x float>
 | |
|   ret <4 x float> %2
 | |
| }
 |