forked from website/openpower.foundation
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			34 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
| ---
 | |
| title: Power Vector Library 
 | |
| 
 | |
| 
 | |
| tags:
 | |
|   - software
 | |
|   - vector
 | |
|   - vsx
 | |
|   - vmx
 | |
|   - powervector
 | |
|   - library
 | |
| date: 2022-01-08
 | |
| draft: false
 | |
| ---
 | |
| 
 | |
| The Power Vector Library are header files that contain useful functions leveraging the PowerISA Vector Facilities :
 | |
| Vector Multimedia Extension (VMX AKA Altivec) and Vector Scalar Extension (VSX). Larger functions like
 | |
| quadword multiply and multiple quadword multiply and madd are large enough to justify CPU specific and tuned run-time libraries.
 | |
| The user can choose to bind to platform specific static archives or dynamic shared object libraries which automatically
 | |
| (dynamic linking with IFUNC resolves) select the correct implementation for the CPU it is running on.  
 | |
| 
 | |
| The goal of this project to provide well crafted implementations of useful vector and large number operations :
 | |
| 
 | |
| - Provide equivalent functions across versions of the PowerISA.
 | |
|   For example the Vector Multiply-by-10 Unsigned Quadword operations introduced in PowerISA 3.0 (POWER9) can be
 | |
|   implement in a few vector instructions on earlier PowerISA versions.
 | |
| - Provide equivalent functions across versions of the compiler.
 | |
|   For example builtins provided in later versions of the compiler can be implemented as inline functions with inline asm in earlier compiler versions.
 | |
| - Provide higher order functions not provided directly by the PowerISA.
 | |
|   For example vector SIMD implementation for ASCII ``__isalpha``, etc.
 | |
|   Another example full ``__int128`` implementations of Count Leading Zeros, Population Count, and Multiply.
 | |
| - Provide optimized run-time libraries for quadword integer multiply and multi-quadword integer multiply and add.
 | |
| 
 |