J ® Power ISA™ Version 3.0 Programming Model Bulletin May 10, 2016 IBM Hardware Support Documentation © Copyright International Business Machines Corporation 2016 Printed in the United States of America May, 2016 IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other compa-nies. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” at www.ibm.com/legal/copytrade.shtml. Other company, product, and service names may be trademarks or service marks of others. All information contained in this document is subject to change without notice. The products described in this document are NOT intended for use in applications such as implantation, life support, or other hazardous uses where malfunction could result in death, bodily injury, or catastrophic property damage. The information contained in this document does not affect or change IBM product specifications or warranties. Nothing in this document shall operate as an express or implied license or indemnity under the intellectual property rights of IBM or third parties. All information contained in this docu-ment was obtained in specific environments, and is presented as an illustration. The results obtained in other operating environments may vary. While the information contained herein is believed to be accurate, such information is preliminary, and should not be relied upon for accuracy or completeness, and no representations or warranties of accuracy or completeness are made. Note: This document contains information on products in the design, sampling and/or initial production phases of development. This information is subject to change without notice. Verify with your IBM field applications engineer that you have the latest version of this document before finalizing a design. This document is intended for development of technology products compatible with Power Architecture®. You may use this document, for any purpose (commercial or personal) and make modifications and distribute; however, modifications to this document may violate Power Architecture and should be carefully considered. Any distribution of this document or its derivative works shall include this Notice page including but not limited to the IBM warranty disclaimer and IBM liability limitation. No other licenses, expressed or implied, estoppel or otherwise to any intellectual property rights is granted by this document. THE INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED ON AN “AS IS” BASIS. IBM makes no represen-tations or warranties, either express or implied, including but not limited to, warranties of merchantability, fitness for a particular purpose, or non-infringement, or that any practice or implementation of the IBM documentation will not infringe any third party patents, copyrights, trade secrets, or other rights. In no event will IBM be liable for damages arising directly or indirectly from any use of the information contained in this document. IBM Systems and Technology Group 2070 Route 52, Bldg. 330 Hopewell Junction, NY 12533-6351 The IBM home page can be found at ibm.com®. ii Power ISA v3.0 Programming Model Bulletin IBM Hardware Support Documentation The following changes are made to the Power ISA v3.0 (November 30, 2015) specification. 1. The following three instructions are withdrawn from the architecture, and the opcodes assigned to these instructions are returned to the available pool of opcodes. VSX Scalar Compare Not Equal Double-Precision (xscmpnedp) VSX Vector Compare Not Equal Double-Precision (xvcmpnedp) VSX Vector Compare Not Equal Single-Precision (xvcmpnesp) Instruction sequences using these instructions can be replaced with equivalent or near-equivalent sequences. For example, the C conditional operator (x!=y)?a:b can be implemented using xscmpeqdp-xxsel in the form, (x==y)?b:a, by reversing the order of the a and b operands in the xxsel instruction. 2. The Vector Shift Left (vsl) and Vector Shift Right (vsr) instructions require the shift count to be replicated in every byte of the Vector Register providing the shift count. Therefore, a Vector Splat Byte (vspltb) instruction should be inserted prior to the vsl and vsr instructions in the instruction sequence in the Programming Note on page 264, as follows, vslo vspltb vsl Vz,Vx,Vy Vy,Vy,15 Vz,Vz,Vy and in the instruction sequence in the Programming Note on page 267, as follows. vslo vspltb vsl vsububm vsro vspltb vsr vor 3. Vt1,Vw,Vy Vy,Vy,15 Vt1,Vt1,Vy Vt3,V0,Vy Vt2,Vx,Vt3 Vt3,Vt3,15 Vt2,Vt2,Vt3 Vz,Vt1,Vt2 # shift high-order reg left # adjust shift count ((V0)=0) # shift low-order reg right # merge to get final result The number of bytes (nb) to be loaded/stored by the Load VSX Vector with Length (lxvl) (page 490), Load VSX Vector Left-justified with Length (lxvll) (page 492), Store VSX Vector with Length (stxvl) (page 508) and Store VSX Vector Left-justified with Length (stxvll) (page 510) instructions is clamped to 16 if the value in byte 0 of GPR[RB] is greater than 16. The RTL for the instructions should also include this clamping function by adding the new statement if nb>16 then nb ← 16 after the existing statement nb ← EXTZ(GPR[RB].bit[0:7]) in each of these instructions’ RTL description. Power ISA v3.0 Programming Model Bulletin