32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			LLVM
		
	
	
	
; RUN: llc < %s -march=sparc -mattr=-v9 | FileCheck %s -check-prefix=V8
 | 
						|
; RUN: llc < %s -march=sparc -mattr=+v9,+popc | FileCheck %s -check-prefix=V9
 | 
						|
; RUN: llc < %s -march=sparc -mcpu=v9 | FileCheck %s -check-prefix=V8
 | 
						|
; RUN: llc < %s -march=sparc -mcpu=ultrasparc  | FileCheck %s -check-prefix=V8
 | 
						|
; RUN: llc < %s -march=sparc -mcpu=ultrasparc3 | FileCheck %s -check-prefix=V8
 | 
						|
; RUN: llc < %s -march=sparc -mcpu=niagara     | FileCheck %s -check-prefix=V8
 | 
						|
; RUN: llc < %s -march=sparc -mcpu=niagara2    | FileCheck %s -check-prefix=V9
 | 
						|
; RUN: llc < %s -march=sparc -mcpu=niagara3    | FileCheck %s -check-prefix=V9
 | 
						|
; RUN: llc < %s -march=sparc -mcpu=niagara4    | FileCheck %s -check-prefix=V9
 | 
						|
; RUN: llc < %s -march=sparcv9 -mattr=+popc | FileCheck %s -check-prefix=SPARC64
 | 
						|
 | 
						|
declare i32 @llvm.ctpop.i32(i32)
 | 
						|
 | 
						|
; V8-LABEL: test
 | 
						|
; V8-NOT: popc
 | 
						|
 | 
						|
; V9-LABEL: test
 | 
						|
; V9:       srl %o0, 0, %o0
 | 
						|
; V9-NEXT:  retl
 | 
						|
; V9-NEXT:  popc %o0, %o0
 | 
						|
 | 
						|
; SPARC64-LABEL: test
 | 
						|
; SPARC64:       srl %o0, 0, %o0
 | 
						|
; SPARC64:       retl
 | 
						|
; SPARC64:       popc %o0, %o0
 | 
						|
 | 
						|
define i32 @test(i32 %X) {
 | 
						|
        %Y = call i32 @llvm.ctpop.i32( i32 %X )         ; <i32> [#uses=1]
 | 
						|
        ret i32 %Y
 | 
						|
}
 | 
						|
 |