Visual Instruction Set

Visual Instruction Set, or VIS, is a SIMD instruction set extension for SPARC V9 microprocessors developed by Sun Microsystems. There are five versions of VIS: VIS 1, VIS 2, VIS 2+, VIS 3 and VIS 4.[1]

## Contents

* 1 History
* 2 Differences vs x86
* 3 Functionality
* 4 References
* 5 External links

## History

VIS 1 was introduced in 1994 and was first implemented by Sun in their UltraSPARC microprocessor (1995) and by Fujitsu in their SPARC64 GP microprocessors (2000).

VIS 2 was first implemented by the UltraSPARC III. All subsequent UltraSPARC and SPARC64 microprocessors implement the instruction set.

VIS 3 was first implemented in the SPARC T4 microprocessor.

VIS 4 was first implemented in the SPARC M7 microprocessor.

## Differences vs x86

This article's factual accuracy is disputed. Please help to ensure that disputed statements are reliably sourced. (November 2017) (Learn how and when to remove this template message)

|

VIS is not an instruction toolkit like Intel's MMX and SSE. MMX has only 8 registers shared with the FPU stack, while SPARC processors have 32 registers, also aliased to the double-precision (64-bit) floating point registers.

As with the SIMD instruction set extensions on other RISC processors, VIS strictly conforms to the main principle of RISC: keep the instruction set concise and efficient.

This design is very different from comparable extensions on CISC processors, such as MMX, SSE, SSE2, SSE3, SSE4, 3DNow!.

Sometimes, programmers must use several VIS instructions to accomplish an operation that can be done with only one MMX or SSE instruction, but it should be kept in mind that fewer instructions do not automatically result in better performance.

## Functionality

VIS re-uses existing SPARC V9 64-bit floating point registers to hold multiple 8, 16, or 32-bit integer values. In this respect, VIS is more similar to the design of MMX than other SIMD architectures such as SSE/SSE2/AltiVec.

VIS includes a number of operations primarily for graphics support, so most of them are only for integers. These include 3D to 2D conversion, edge processing and pixel distance.

There are four ways to use VIS in code:

* The GCC -mvis option
* Use inline assembly
* Use inline template in VSDK, similar to compiler intrinsics, which have C function like interfaces
* Use the mediaLib multimedia library, which has C function interfaces. It uses VIS on SPARC platforms (and MMX/SSE/SSE2 on x86/x64 platforms) to accelerate multimedia application execution

## References

1. ↑ Liang He; Harlan McGhan (May 2005). "MT mediaLib for Chip MultiThreaded (CMT) Processors" (PDF). Sun Microsystems, Inc.. http://www.sun.com/processors/vis/download/mlib/mlib_wp.pdf.

* Gwennap, Linley (5 December 1995). "UltraSparc Adds Multimedia Instructions". Microprocessor Report.
* Tremblay, Marc et al. (August 1996). "VIS Speeds New Media Processing". IEEE Micro.

## External links

* An introduction to SPARC’s SIMD offerings (small tutorial)
* UltraSPARC and VIS Instruction Set Extensions
* GCC SPARC VIS Built-in Functions

* v
* t
* e

Instruction set extensions

SIMD (RISC)|

* Alpha
* MVI
* ARM
* NEON
* SVE
* MIPS
* MDMX
* MIPS-3D
* MXU
* MIPS SIMD
* PA-RISC
* MAX
* Power ISA
* VMX
* SPARC
* VIS

SIMD (x86)|

* MMX (1996)
* 3DNow! (1998)
* SSE (1999)
* SSE2 (2001)
* SSE3 (2004)
* SSSE3 (2006)
* SSE4 (2006)
* SSE5 ~~(2007)~~
* AVX (2008)
* F16C (2009)
* XOP (2009)
* FMA (FMA4: 2011, FMA3: 2012)
* AVX2 (2013)
* AVX-512 (2015)

Bit manipulation|

* BMI (ABM: 2007, BMI1: 2012, BMI2: 2013, TBM: 2012)
* ADX (2014)

Compressed instructions|

* Thumb
* MIPS16e ASE

Security and cryptography|

* AES-NI (2008); 32- and 64-bit ARMv8 also has AES instructions
* CLMUL (2010)
* RDRAND (2012)
* SHA (2013)
* MPX (2015)
* SGX (2015)

Transactional memory|

* TSX (2013)
* ASF

Virtualization|

* VT-x (2005)
* AMD-V (2006)

Suspended extensions' dates have been ~~struck through~~.

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Visual Instruction Set. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Engineering:Visual_Instruction_Set&oldid=652215"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template