37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			LLVM
		
	
	
	
; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s
 | 
						|
 | 
						|
;
 | 
						|
; PTEST
 | 
						|
;
 | 
						|
 | 
						|
define i1 @ptest_any(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a) {
 | 
						|
; CHECK-LABEL: ptest_any:
 | 
						|
; CHECK: ptest p0, p1.b
 | 
						|
; CHECK-NEXT: cset w0, ne
 | 
						|
; CHECK-NEXT: ret
 | 
						|
  %out = call i1 @llvm.aarch64.sve.ptest.any(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a)
 | 
						|
  ret i1 %out
 | 
						|
}
 | 
						|
 | 
						|
define i1 @ptest_first(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a) {
 | 
						|
; CHECK-LABEL: ptest_first:
 | 
						|
; CHECK: ptest p0, p1.b
 | 
						|
; CHECK-NEXT: cset w0, mi
 | 
						|
; CHECK-NEXT: ret
 | 
						|
  %out = call i1 @llvm.aarch64.sve.ptest.first(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a)
 | 
						|
  ret i1 %out
 | 
						|
}
 | 
						|
 | 
						|
define i1 @ptest_last(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a) {
 | 
						|
; CHECK-LABEL: ptest_last:
 | 
						|
; CHECK: ptest p0, p1.b
 | 
						|
; CHECK-NEXT: cset w0, lo
 | 
						|
; CHECK-NEXT: ret
 | 
						|
  %out = call i1 @llvm.aarch64.sve.ptest.last(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a)
 | 
						|
  ret i1 %out
 | 
						|
}
 | 
						|
 | 
						|
declare i1 @llvm.aarch64.sve.ptest.any(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a)
 | 
						|
declare i1 @llvm.aarch64.sve.ptest.first(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a)
 | 
						|
declare i1 @llvm.aarch64.sve.ptest.last(<vscale x 16 x i1> %pg, <vscale x 16 x i1> %a)
 |