[X86] Add ImmArg markings to intrinsics.
Remove test cases that checked for not crashing when immediate operands were passed not an immediate. These are now considered ill-formed in IR. This was done by manually scanning the intrinsic file for llvm_i32_ty and llvm_i8_ty which are the predominant types we use for immediates. Most of them are on vector intrinsics. I might have missed some other intrinsics. Differential Revision: https://reviews.llvm.org/D58302 llvm-svn: 355993
This commit is contained in:
		
							parent
							
								
									e62366bf1e
								
							
						
					
					
						commit
						9bae5ba076
					
				
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
					@ -1,15 +0,0 @@
 | 
				
			||||||
; RUN: not llc < %s -mcpu=skylake-avx512 2>&1 | FileCheck %s
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
target triple = "x86_64-unknown-linux-gnu"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; make sure we don't crash if scale for gather isn't constant.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; CHECK: LLVM ERROR: Cannot select: intrinsic %llvm.x86.avx512.gather.dpi.512
 | 
					 | 
				
			||||||
declare <16 x i32> @llvm.x86.avx512.gather.dpi.512(<16 x i32>, i8*, <16 x i32>, i16, i32)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
define internal <16 x i32> @__gather_base_offsets32_i32(i8* readonly %ptr, i32 %offset_scale, <16 x i32> %offsets, <16 x i8> %vecmask) {
 | 
					 | 
				
			||||||
  %mask_vec_i1.i.i = icmp ne <16 x i8> %vecmask, zeroinitializer
 | 
					 | 
				
			||||||
  %mask_i16.i = bitcast <16 x i1> %mask_vec_i1.i.i to i16
 | 
					 | 
				
			||||||
  %res = tail call <16 x i32> @llvm.x86.avx512.gather.dpi.512(<16 x i32> undef, i8* %ptr, <16 x i32> %offsets, i16 %mask_i16.i, i32 %offset_scale)
 | 
					 | 
				
			||||||
  ret <16 x i32> %res
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -3,18 +3,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
declare <4 x float> @llvm.x86.sse41.insertps(<4 x float>, <4 x float>, i8) nounwind readnone
 | 
					declare <4 x float> @llvm.x86.sse41.insertps(<4 x float>, <4 x float>, i8) nounwind readnone
 | 
				
			||||||
 | 
					
 | 
				
			||||||
; This should never happen, but make sure we don't crash handling a non-constant immediate byte.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
define <4 x float> @insertps_non_const_imm(<4 x float> %v1, <4 x float> %v2, i8 %c) {
 | 
					 | 
				
			||||||
; CHECK-LABEL: @insertps_non_const_imm(
 | 
					 | 
				
			||||||
; CHECK-NEXT:    [[RES:%.*]] = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %v1, <4 x float> %v2, i8 %c)
 | 
					 | 
				
			||||||
; CHECK-NEXT:    ret <4 x float> [[RES]]
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
  %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %v1, <4 x float> %v2, i8 %c)
 | 
					 | 
				
			||||||
  ret <4 x float> %res
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; If all zero mask bits are set, return a zero regardless of the other control bits.
 | 
					; If all zero mask bits are set, return a zero regardless of the other control bits.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define <4 x float> @insertps_0x0f(<4 x float> %v1, <4 x float> %v2) {
 | 
					define <4 x float> @insertps_0x0f(<4 x float> %v1, <4 x float> %v2) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue