1*9880d681SAndroid Build Coastguard WorkerContent: 2*9880d681SAndroid Build Coastguard Worker======== 3*9880d681SAndroid Build Coastguard Worker. Remaining Instructions (Total 56 Instructions, include 2 unknow instructions) 4*9880d681SAndroid Build Coastguard Worker. Done (Total 155 Instructions: 101 VSX, 54 Altivec) 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker//------------------------------------------------------------------------------ 7*9880d681SAndroid Build Coastguard Worker//. Remaining Instructions 8*9880d681SAndroid Build Coastguard Worker//------------------------------------------------------------------------------ 9*9880d681SAndroid Build Coastguard WorkerGCC reference: https://sourceware.org/ml/binutils/2015-11/msg00071.html 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker// Add PC Immediate Shifted DX-form p69 12*9880d681SAndroid Build Coastguard Worker[PO RT d1 d0 XO d2] addpcis RT,D 13*9880d681SAndroid Build Coastguard Worker subpcis Rx,value = addpcis Rx,-value 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker// 6.17.2 Decimal Integer Format Conversion Instructions 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker// Decimal Convert From National VX-form p352 18*9880d681SAndroid Build Coastguard Worker[PO VRT EO VRB 1 PS XO] bcdcfn. VRT,VRB,PS 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker// Decimal Convert From Zoned VX-form p353 21*9880d681SAndroid Build Coastguard Worker[PO VRT EO VRB 1 PS XO] bcdcfz. VRT,VRB,PS 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker// Decimal Convert To National VX-form p354 24*9880d681SAndroid Build Coastguard Worker[PO VRT EO VRB 1 / XO] bcdctn. VRT,VRB 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker// Decimal Convert To Zoned VX-form p355 27*9880d681SAndroid Build Coastguard Worker[PO VRT EO VRB 1 PS XO] bcdctz. VRT,VRB,PS 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker// Decimal Convert From Signed Quadword VX-form p356 30*9880d681SAndroid Build Coastguard Worker[PO VRT EO VRB 1 PS XO] bcdcfsq. VRT,VRB,PS 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker// Decimal Convert To Signed Quadword VX-form p356 33*9880d681SAndroid Build Coastguard Worker[PO VRT EO VRB 1 / XO] bcdctsq. VRT,VRB 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Worker// 6.17.3 Decimal Integer Sign Manipulation Instructions 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker// Decimal Copy Sign VX-form p358 38*9880d681SAndroid Build Coastguard Worker[PO VRT VRA VRB XO] bcdcpsgn. VRT,VRA,VRB 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker// Decimal Set Sign VX-form p358 41*9880d681SAndroid Build Coastguard Worker[PO VRT EO VRB 1 PS XO] bcdsetsgn. VRT,VRB,PS 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Worker// Decimal Shift VX-form p359 44*9880d681SAndroid Build Coastguard Worker[PO VRT VRA VRB 1 PS XO] bcds. VRT,VRA,VRB,PS 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Worker// Decimal Unsigned Shift VX-form p360 47*9880d681SAndroid Build Coastguard Worker[PO VRT VRA VRB 1 / XO] bcdus. VRT,VRA,VRB 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker// Decimal Shift and Round VX-form p361 50*9880d681SAndroid Build Coastguard Worker[PO VRT VRA VRB 1 PS XO] bcdsr. VRT,VRA,VRB,PS 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker// 6.17.5 Decimal Integer Truncate Instructions 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Worker// Decimal Truncate VX-form p362 55*9880d681SAndroid Build Coastguard Worker[PO VRT VRA VRB 1 PS XO] bcdtrunc. VRT,VRA,VRB,PS 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Worker// Decimal Unsigned Truncate VX-form p363 58*9880d681SAndroid Build Coastguard Worker[PO VRT VRA VRB 1 / XO] bcdutrunc. VRT,VRA,VRB 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Worker// 3.3.10.1 Character-Type Compare Instructions 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Worker// Compare Ranged Byte X-form p87 63*9880d681SAndroid Build Coastguard Worker[PO BF / L RA RB XO /] cmprb BF,L,RA,RB 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker// Compare Equal Byte X-form p88 66*9880d681SAndroid Build Coastguard Worker[PO BF // RA RB XO /] cmpeqb BF,RA,RB 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker// 3.3.13 Fixed-Point Logical Instructions 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Worker// Count Trailing Zeros Word X-form p95 71*9880d681SAndroid Build Coastguard Worker[PO RS RA /// XO Rc] cnttzw(.) RA,RS 72*9880d681SAndroid Build Coastguard Worker 73*9880d681SAndroid Build Coastguard Worker// 3.3.13.1 64-bit Fixed-Point Logical Instructions 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Worker// Count Trailing Zeros Doubleword X-form p98 76*9880d681SAndroid Build Coastguard Worker[PO RS RA /// XO Rc] cnttzd(.) RA,RS 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Worker// 4.4 Copy-Paste Facility 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Worker// Copy X-form p858 81*9880d681SAndroid Build Coastguard Worker[PO /// L RA RB XO /] copy RA,RB,L 82*9880d681SAndroid Build Coastguard Worker copy_first = copy RA, RB, 1 83*9880d681SAndroid Build Coastguard Worker// CP_Abort p860 84*9880d681SAndroid Build Coastguard Worker[PO /// /// /// XO /] cp_abort 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Worker// Paste p859 87*9880d681SAndroid Build Coastguard Worker[PO /// L RA RB XO Rc] paste(.) RA,RB,L 88*9880d681SAndroid Build Coastguard Worker paste_last = paste RA,RB,1 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard Worker// 3.3.9 Fixed-Point Arithmetic Instructions 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Worker// Deliver A Random Number X-form p79 93*9880d681SAndroid Build Coastguard Worker[PO RT /// L /// XO /] darn RT,L 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Worker// Multiply-Add High Doubleword VA-form p81 96*9880d681SAndroid Build Coastguard Worker[PO RT RA RB RC XO] maddhd RT,RA.RB,RC 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Worker// Multiply-Add High Doubleword Unsigned VA-form p81 99*9880d681SAndroid Build Coastguard Worker[PO RT RA RB RC XO] maddhdu RT,RA.RB,RC 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard Worker// Multiply-Add Low Doubleword VA-form p81 102*9880d681SAndroid Build Coastguard Worker[PO RT RA RB RC XO] maddld RT,RA.RB,RC 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Worker// Modulo Signed Word X-form p76 105*9880d681SAndroid Build Coastguard Worker[PO RT RA RB XO /] modsw RT,RA,RB 106*9880d681SAndroid Build Coastguard Worker 107*9880d681SAndroid Build Coastguard Worker// Modulo Unsigned Word X-form p76 108*9880d681SAndroid Build Coastguard Worker[PO RT RA RB XO /] moduw RT,RA,RB 109*9880d681SAndroid Build Coastguard Worker 110*9880d681SAndroid Build Coastguard Worker// Modulo Signed Doubleword X-form p84 111*9880d681SAndroid Build Coastguard Worker[PO RT RA RB XO /] modsd RT,RA,RB 112*9880d681SAndroid Build Coastguard Worker 113*9880d681SAndroid Build Coastguard Worker// Modulo Unsigned Doubleword X-form p84 114*9880d681SAndroid Build Coastguard Worker[PO RT RA RB XO /] modud RT,RA,RB 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Worker// DFP Test Significance Immediate [Quad] X-form p204 118*9880d681SAndroid Build Coastguard Worker[PO BF / UIM FRB XO /] dtstsfi BF,UIM,FRB 119*9880d681SAndroid Build Coastguard Worker[PO BF / UIM FRBp XO /] dtstsfiq BF,UIM,FRBp 120*9880d681SAndroid Build Coastguard Worker 121*9880d681SAndroid Build Coastguard Worker// 3.3.14.2.1 64-bit Fixed-Point Shift Instructions 122*9880d681SAndroid Build Coastguard Worker 123*9880d681SAndroid Build Coastguard Worker// Extend-Sign Word and Shift Left Immediate XS-form p109 124*9880d681SAndroid Build Coastguard Worker[PO RS RA sh XO sh Rc] extswsli(.) RA,RS,SH 125*9880d681SAndroid Build Coastguard Worker 126*9880d681SAndroid Build Coastguard Worker// 4.5.1 Load Atomic 127*9880d681SAndroid Build Coastguard Worker 128*9880d681SAndroid Build Coastguard Worker// Load Word Atomic X-form p864 129*9880d681SAndroid Build Coastguard Worker[PO RT RA FC XO /] lwat RT,RA,FC 130*9880d681SAndroid Build Coastguard Worker 131*9880d681SAndroid Build Coastguard Worker// Load Doubleword Atomic X-form p864 132*9880d681SAndroid Build Coastguard Worker[PO RT RA FC XO /] ldat RT,RA,FC 133*9880d681SAndroid Build Coastguard Worker 134*9880d681SAndroid Build Coastguard Worker// 4.5.2 Store Atomic 135*9880d681SAndroid Build Coastguard Worker 136*9880d681SAndroid Build Coastguard Worker// Store Word Atomic X-form p866 137*9880d681SAndroid Build Coastguard Worker[PO RS RA FC XO /] stwat RS,RA,FC 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Worker// Store Doubleword Atomic X-form p866 140*9880d681SAndroid Build Coastguard Worker[PO RS RA FC XO /] stdat RS,RA,FC 141*9880d681SAndroid Build Coastguard Worker 142*9880d681SAndroid Build Coastguard Worker// 3.3.2.1 64-bit Fixed-Point Load Instructions 143*9880d681SAndroid Build Coastguard Worker 144*9880d681SAndroid Build Coastguard Worker// Load Doubleword Monitored Indexed X-form p54 145*9880d681SAndroid Build Coastguard Worker[PO RT RA RB XO /] ldmx RT,RA,RB 146*9880d681SAndroid Build Coastguard Worker 147*9880d681SAndroid Build Coastguard Worker// 3.3.16 Move To/From Vector-Scalar Register Instructions 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Worker// Move From VSR Lower Doubleword XX1-form p111 150*9880d681SAndroid Build Coastguard Worker[PO S RA /// XO SX] mfvsrld RA,XS 151*9880d681SAndroid Build Coastguard Worker 152*9880d681SAndroid Build Coastguard Worker// Move To VSR Double Doubleword XX1-form p114 153*9880d681SAndroid Build Coastguard Worker[PO T RA RB XO TX] mtvsrdd XT,RA,RB 154*9880d681SAndroid Build Coastguard Worker 155*9880d681SAndroid Build Coastguard Worker// Move To VSR Word & Splat XX1-form p115 156*9880d681SAndroid Build Coastguard Worker[PO T RA /// XO TX] mtvsrws XT,RA 157*9880d681SAndroid Build Coastguard Worker 158*9880d681SAndroid Build Coastguard Worker// Move to CR from XER Extended X-form p119 159*9880d681SAndroid Build Coastguard Worker[PO BF // /// /// XO /] mcrxrx BF 160*9880d681SAndroid Build Coastguard Worker 161*9880d681SAndroid Build Coastguard Worker// Set Boolean X-form p121 162*9880d681SAndroid Build Coastguard Worker[PO RT BFA // /// XO /] setb RT,BFA 163*9880d681SAndroid Build Coastguard Worker 164*9880d681SAndroid Build Coastguard Worker// Message Synchronize X-form p1126 165*9880d681SAndroid Build Coastguard Worker[PO /// /// /// XO /] msgsync 166*9880d681SAndroid Build Coastguard Worker 167*9880d681SAndroid Build Coastguard Worker// SLB Invalidate Entry Global X-form p1026 168*9880d681SAndroid Build Coastguard Worker[PO RS /// RB XO /] slbieg RS,RB 169*9880d681SAndroid Build Coastguard Worker 170*9880d681SAndroid Build Coastguard Worker// SLB Synchronize X-form p1031 171*9880d681SAndroid Build Coastguard Worker[PO /// /// /// XO /] slbsync 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Worker// 3.3.2.1 Power-Saving Mode Instruction 174*9880d681SAndroid Build Coastguard Worker 175*9880d681SAndroid Build Coastguard Worker// stop XL-form p957 176*9880d681SAndroid Build Coastguard Worker[PO /// /// /// XO /] stop 177*9880d681SAndroid Build Coastguard Worker 178*9880d681SAndroid Build Coastguard Worker// 4.6.4 Wait Instruction 179*9880d681SAndroid Build Coastguard Worker// Wait X-form p880 180*9880d681SAndroid Build Coastguard Worker[PO /// WC /// /// XO /] wait 181*9880d681SAndroid Build Coastguard Worker 182*9880d681SAndroid Build Coastguard Worker// Unknow Instructions: 183*9880d681SAndroid Build Coastguard Workerurfid 184*9880d681SAndroid Build Coastguard Worker- gcc's implementation: 185*9880d681SAndroid Build Coastguard Worker {"urfid", XL(19,306), 0xffffffff, POWER9, PPCNONE, {0}}, 186*9880d681SAndroid Build Coastguard Worker (4c 00 02 64|64 02 00 4c) urfid 187*9880d681SAndroid Build Coastguard Worker 188*9880d681SAndroid Build Coastguard Workerrmieg 189*9880d681SAndroid Build Coastguard Worker- gcc's implementation: 190*9880d681SAndroid Build Coastguard Worker {"rmieg", X(31,882), XRTRA_MASK, POWER9, PPCNONE, {RB}}, 191*9880d681SAndroid Build Coastguard Worker (7c 00 f6 e4|e4 f6 00 7c) rmieg r30 192*9880d681SAndroid Build Coastguard Worker 193*9880d681SAndroid Build Coastguard Worker//------------------------------------------------------------------------------ 194*9880d681SAndroid Build Coastguard Worker//. Done: 195*9880d681SAndroid Build Coastguard Worker//------------------------------------------------------------------------------ 196*9880d681SAndroid Build Coastguard Worker 197*9880d681SAndroid Build Coastguard Worker//====================================== 198*9880d681SAndroid Build Coastguard Worker"vsx instructions" 199*9880d681SAndroid Build Coastguard Worker 200*9880d681SAndroid Build Coastguard Worker//-------------------------------------- 201*9880d681SAndroid Build Coastguard Worker"7.6.1.2.1 VSX Scalar Move Instructions" 202*9880d681SAndroid Build Coastguard Worker// VSX Scalar Quad-Precision Move Instructions 203*9880d681SAndroid Build Coastguard Worker 204*9880d681SAndroid Build Coastguard Worker// VSX Scalar Copy Sign Quad-Precision X-form p.553 205*9880d681SAndroid Build Coastguard Worker[PO VRT VRA VRB XO /] xscpsgnqp 206*9880d681SAndroid Build Coastguard Worker 207*9880d681SAndroid Build Coastguard Worker// VSX Scalar Absolute Quad-Precision X-form 531 208*9880d681SAndroid Build Coastguard Worker// VSX Scalar Negate Quad-Precision X-form 627 209*9880d681SAndroid Build Coastguard Worker// VSX Scalar Negative Absolute Quad-Precision X-form 626 210*9880d681SAndroid Build Coastguard Worker[PO VRT XO VRB XO /] xsabsqp xsnegqp xsnabsqp 211*9880d681SAndroid Build Coastguard Worker 212*9880d681SAndroid Build Coastguard Worker//-------------------------------------- 213*9880d681SAndroid Build Coastguard Worker"7.6.1.3 VSX Floating-Point Arithmetic Instructions" 214*9880d681SAndroid Build Coastguard Worker 215*9880d681SAndroid Build Coastguard Worker// VSX Scalar Quad-Precision Elementary Arithmetic 216*9880d681SAndroid Build Coastguard Worker 217*9880d681SAndroid Build Coastguard Worker// VSX Scalar Add Quad-Precision [using round to Odd] X-form 539 218*9880d681SAndroid Build Coastguard Worker// VSX Scalar Divide Quad-Precision [using round to Odd] X-form 584 219*9880d681SAndroid Build Coastguard Worker// VSX Scalar Multiply Quad-Precision [using round to Odd] X-form 622 220*9880d681SAndroid Build Coastguard Worker[PO VRT VRA VRB XO RO] xsaddqp xsaddqpo xsdivqp xsdivqpo xsmulqp xsmulqpo 221*9880d681SAndroid Build Coastguard Worker 222*9880d681SAndroid Build Coastguard Worker// VSX Scalar Square Root Quad-Precision [using round to Odd] X-form 662 223*9880d681SAndroid Build Coastguard Worker// VSX Scalar Subtract Quad-Precision [using round to Odd] X-form 667 224*9880d681SAndroid Build Coastguard Worker xssubqp xssubqpo 225*9880d681SAndroid Build Coastguard Worker 226*9880d681SAndroid Build Coastguard Worker[PO VRT XO VRB XO RO] xssqrtqp xssqrtqpo 227*9880d681SAndroid Build Coastguard Worker 228*9880d681SAndroid Build Coastguard Worker// VSX Scalar Quad-Precision Multiply-Add Arithmetic Instructions 229*9880d681SAndroid Build Coastguard Worker 230*9880d681SAndroid Build Coastguard Worker// VSX Scalar Multiply-Add Quad-Precision [using round to Odd] X-form 596 231*9880d681SAndroid Build Coastguard Worker// VSX Scalar Multiply-Subtract Quad-Precision [using round to Odd] X-form 617 232*9880d681SAndroid Build Coastguard Worker// VSX Scalar Negative Multiply-Add Quad-Precision [using round to Odd] X-form 636 233*9880d681SAndroid Build Coastguard Worker// VSX Scalar Negative Multiply-Subtract Quad-Precision [using round to Odd] 234*9880d681SAndroid Build Coastguard Worker// X-form 645 235*9880d681SAndroid Build Coastguard Worker[PO VRT VRA VRB XO RO] xsmaddqp xsmaddqpo xsmsubqp xsmsubqpo 236*9880d681SAndroid Build Coastguard Worker xsnmaddqp xsnmaddqpo xsnmsubqp xsnmsubqpo 237*9880d681SAndroid Build Coastguard Worker 238*9880d681SAndroid Build Coastguard Worker22 239*9880d681SAndroid Build Coastguard Worker//-------------------------------------- 240*9880d681SAndroid Build Coastguard Worker"7.6.1.4 VSX Floating-Point Compare Instructions" 241*9880d681SAndroid Build Coastguard Worker 242*9880d681SAndroid Build Coastguard Worker// VSX Scalar Quad-Precision Compare Instructions 243*9880d681SAndroid Build Coastguard Worker 244*9880d681SAndroid Build Coastguard Worker// VSX Scalar Compare Ordered Quad-Precision X-form 549 245*9880d681SAndroid Build Coastguard Worker// VSX Scalar Compare Unordered Quad-Precision X-form 552 246*9880d681SAndroid Build Coastguard Worker[PO BF // VRA VRB XO /] xscmpoqp xscmpuqp 247*9880d681SAndroid Build Coastguard Worker 248*9880d681SAndroid Build Coastguard Worker"7.6.1.8 VSX Scalar Floating-Point Support Instructions" 249*9880d681SAndroid Build Coastguard Worker// VSX Scalar Compare Exponents Quad-Precision X-form p. 541 542 250*9880d681SAndroid Build Coastguard Worker[PO BF // A B XO AX BX /] xscmpexpdp 251*9880d681SAndroid Build Coastguard Worker[PO BF // VRA VRB XO /] xscmpexpqp 252*9880d681SAndroid Build Coastguard Worker 253*9880d681SAndroid Build Coastguard Worker// VSX Scalar Compare DP, XX3-form, p.543 544 545 254*9880d681SAndroid Build Coastguard Worker// VSX Scalar Compare Equal Double-Precision, 255*9880d681SAndroid Build Coastguard Worker[PO T A B XO AX BX TX] xscmpeqdp xscmpgedp xscmpgtdp xscmpnedp 256*9880d681SAndroid Build Coastguard Worker 257*9880d681SAndroid Build Coastguard Worker// VSX Vector Compare Not Equal Double-Precision XX3-form 691 258*9880d681SAndroid Build Coastguard Worker[PO T A B Rc XO AX BX TX] xvcmpnedp xvcmpnedp. xvcmpnesp xvcmpnesp. 259*9880d681SAndroid Build Coastguard Worker 260*9880d681SAndroid Build Coastguard Worker//-------------------------------------- 261*9880d681SAndroid Build Coastguard Worker"7.6.1.5 VSX FP-FP Conversion Instructions" 262*9880d681SAndroid Build Coastguard Worker// VSX Scalar Quad-Precision Floating-Point Conversion Instructions 263*9880d681SAndroid Build Coastguard Worker 264*9880d681SAndroid Build Coastguard Worker// VSX Scalar round & Convert Quad-Precision format to Double-Precision format 265*9880d681SAndroid Build Coastguard Worker// [using round to Odd] X-form 567 266*9880d681SAndroid Build Coastguard Worker[PO VRT XO VRB XO /] xscvqpdp xscvqpdpo (actually [PO VRT XO VRB XO RO]) 267*9880d681SAndroid Build Coastguard Worker[PO VRT XO VRB XO /] xscvdpqp 268*9880d681SAndroid Build Coastguard Worker 269*9880d681SAndroid Build Coastguard Worker// VSX Scalar Quad-Precision Convert to Integer Instructions 270*9880d681SAndroid Build Coastguard Worker 271*9880d681SAndroid Build Coastguard Worker// VSX Scalar truncate & Convert Quad-Precision format to Signed Doubleword format 272*9880d681SAndroid Build Coastguard Worker// 568 570 572 574 273*9880d681SAndroid Build Coastguard Worker[PO VRT XO VRB XO /] xscvqpsdz xscvqpswz xscvqpudz xscvqpuwz 274*9880d681SAndroid Build Coastguard Worker576 = 580 xscvsdqp xscvudqp 275*9880d681SAndroid Build Coastguard Worker 276*9880d681SAndroid Build Coastguard Worker"7.6.1.7 VSX Round to Floating-Point Integer Instructions" 277*9880d681SAndroid Build Coastguard Worker// VSX Scalar round & Convert Double-Precision format to Half-Precision format 278*9880d681SAndroid Build Coastguard Worker// XX2-form 554 566 279*9880d681SAndroid Build Coastguard Worker[PO T XO B XO BX TX] xscvdphp xscvhpdp 280*9880d681SAndroid Build Coastguard Worker 281*9880d681SAndroid Build Coastguard Worker// VSX Vector Convert Half-Precision format to Single-Precision format 282*9880d681SAndroid Build Coastguard Worker// XX2-form 703 705 283*9880d681SAndroid Build Coastguard Worker[PO T XO B XO BX TX] xvcvhpsp xvcvsphp 284*9880d681SAndroid Build Coastguard Worker 285*9880d681SAndroid Build Coastguard Worker// VSX Scalar Round to Quad-Precision Integer [with Inexact] Z23-form 654 286*9880d681SAndroid Build Coastguard Worker[PO VRT /// R VRB RMC XO EX] xsrqpi xsrqpix 287*9880d681SAndroid Build Coastguard Worker 288*9880d681SAndroid Build Coastguard Worker// VSX Scalar Round Quad-Precision to Double-Extended Precision Z23-form 656 289*9880d681SAndroid Build Coastguard Worker[PO VRT /// R VRB RMC XO /] xsrqpxp 290*9880d681SAndroid Build Coastguard Workerdef XSRQPXP : Z23Form_1<63, 37, 291*9880d681SAndroid Build Coastguard Worker (outs vrrc:$vT), (ins u5imm:$R, vrrc:$vB, u2imm:$RMC), 292*9880d681SAndroid Build Coastguard Worker "xsrqpxp $vT, $R, $vB, $RMC"), IIC_VecFP, []>; 293*9880d681SAndroid Build Coastguard Worker 294*9880d681SAndroid Build Coastguard Worker27~28 295*9880d681SAndroid Build Coastguard Worker//-------------------------------------- 296*9880d681SAndroid Build Coastguard Worker// VSX Scalar Insert Exponent Double-Precision X-form 588 297*9880d681SAndroid Build Coastguard Worker// VSX Scalar Insert Exponent Quad-Precision X-form 589 298*9880d681SAndroid Build Coastguard Worker[PO VT rA rB XO /] xsiexpdp 299*9880d681SAndroid Build Coastguard Worker[PO VRT VRA VRB XO /] xsiexpqp 300*9880d681SAndroid Build Coastguard Worker 301*9880d681SAndroid Build Coastguard Worker// VSX Vector Insert Exponent Double-Precision XX3-form 722 302*9880d681SAndroid Build Coastguard Worker[PO T A B XO AX BX TX] xviexpdp xviexpsp 303*9880d681SAndroid Build Coastguard Worker 304*9880d681SAndroid Build Coastguard Worker// VSX Vector Extract Unsigned Word XX2-form 788 305*9880d681SAndroid Build Coastguard Worker// VSX Vector Insert Word XX2-form 306*9880d681SAndroid Build Coastguard Worker[PO T / UIM B XO BX TX] xxextractuw xxinsertw 307*9880d681SAndroid Build Coastguard Worker 308*9880d681SAndroid Build Coastguard Worker// VSX Scalar Extract Exponent Double-Precision XX2-form 676 309*9880d681SAndroid Build Coastguard Worker[PO BF DCMX B XO BX /] 310*9880d681SAndroid Build Coastguard Worker[PO T XO B XO BX /] xsxexpdp xsxsigdp 311*9880d681SAndroid Build Coastguard Worker// X-form 312*9880d681SAndroid Build Coastguard Worker[PO VRT XO VRB XO /] xsxexpqp xsxsigqp 313*9880d681SAndroid Build Coastguard Worker 314*9880d681SAndroid Build Coastguard Worker// VSX Vector Extract Exponent Double-Precision XX2-form 784 315*9880d681SAndroid Build Coastguard Worker[PO T XO B XO BX TX] xvxexpdp xvxexpsp 316*9880d681SAndroid Build Coastguard Worker 317*9880d681SAndroid Build Coastguard Worker// VSX Vector Extract Significand Double-Precision XX2-form 785 318*9880d681SAndroid Build Coastguard Worker[PO T XO B XO BX TX] xvxsigdp xvxsigsp 319*9880d681SAndroid Build Coastguard Worker 320*9880d681SAndroid Build Coastguard Worker//-------------------------------------- 321*9880d681SAndroid Build Coastguard Worker// VSX Scalar Test Data Class Double-Precision XX2-form p673 322*9880d681SAndroid Build Coastguard Worker// VSX Scalar Test Data Class Quad-Precision X-form 674 323*9880d681SAndroid Build Coastguard Worker// VSX Scalar Test Data Class Single-Precision XX2-form 675 324*9880d681SAndroid Build Coastguard Worker[PO BF DCMX B XO BX /] xststdcdp xststdcsp 325*9880d681SAndroid Build Coastguard Worker[PO BF DCMX VRB XO /] xststdcqp 326*9880d681SAndroid Build Coastguard Worker 327*9880d681SAndroid Build Coastguard Worker// VSX Vector Test Data Class Double-Precision XX2-form 782 783 328*9880d681SAndroid Build Coastguard Worker[PO T dx B XO dc XO dm BX TX] xvtstdcdp xvtstdcsp 329*9880d681SAndroid Build Coastguard Worker 330*9880d681SAndroid Build Coastguard Worker//-------------------------------------- 331*9880d681SAndroid Build Coastguard Worker// VSX Scalar Maximum Type-C Double-Precision XX3-form 601 ~ 609 332*9880d681SAndroid Build Coastguard Worker[PO T A B XO AX BX TX] xsmaxcdp xsmaxjdp xsmincdp xsminjdp 333*9880d681SAndroid Build Coastguard Worker 334*9880d681SAndroid Build Coastguard Worker//-------------------------------------- 335*9880d681SAndroid Build Coastguard Worker// VSX Vector Byte-Reverse Doubleword XX2-form 786 787 336*9880d681SAndroid Build Coastguard Worker[PO T XO B XO BX TX] xxbrd xxbrh xxbrq xxbrw 337*9880d681SAndroid Build Coastguard Worker 338*9880d681SAndroid Build Coastguard Worker// VSX Vector Permute XX3-form 794 339*9880d681SAndroid Build Coastguard Worker[PO T A B XO AX BX TX] xxperm xxpermr 340*9880d681SAndroid Build Coastguard Worker 341*9880d681SAndroid Build Coastguard Worker// VSX Vector Splat Immediate Byte 796 x-form 342*9880d681SAndroid Build Coastguard Worker[PO T EO IMM8 XO TX] xxspltib <= sign or unsigned? 343*9880d681SAndroid Build Coastguard Worker 344*9880d681SAndroid Build Coastguard Worker30 345*9880d681SAndroid Build Coastguard Worker//-------------------------------------- 346*9880d681SAndroid Build Coastguard Worker// Load VSX Vector DQ-form 511 347*9880d681SAndroid Build Coastguard Worker[PO T RA DQ TX XO] lxv 348*9880d681SAndroid Build Coastguard Worker 349*9880d681SAndroid Build Coastguard Worker// Store VSX Vector DQ-form 526 350*9880d681SAndroid Build Coastguard Worker[PO S RA DQ SX XO] stxv 351*9880d681SAndroid Build Coastguard Worker 352*9880d681SAndroid Build Coastguard Worker// Load VSX Scalar Doubleword DS-form 499 353*9880d681SAndroid Build Coastguard Worker// Load VSX Scalar Single DS-form 504 354*9880d681SAndroid Build Coastguard Worker[PO VRT RA DS XO] lxsd lxssp 355*9880d681SAndroid Build Coastguard Worker 356*9880d681SAndroid Build Coastguard Worker// Store VSX Scalar Doubleword DS-form 517 357*9880d681SAndroid Build Coastguard Worker// Store VSX Scalar Single DS-form 520 358*9880d681SAndroid Build Coastguard Worker[PO VRT RA DS XO] stxsd stxssp 359*9880d681SAndroid Build Coastguard Worker 360*9880d681SAndroid Build Coastguard Worker 361*9880d681SAndroid Build Coastguard Worker// Load VSX Vector Indexed X-form 511 362*9880d681SAndroid Build Coastguard Worker// Load VSX Scalar as Integer Byte & Zero Indexed X-form 501 363*9880d681SAndroid Build Coastguard Worker// Load VSX Vector Byte*16 Indexed X-form 506 364*9880d681SAndroid Build Coastguard Worker// Load VSX Vector with Length X-form 508 365*9880d681SAndroid Build Coastguard Worker// Load VSX Vector Left-justified with Length X-form 510 366*9880d681SAndroid Build Coastguard Worker// Load VSX Vector Halfword*8 Indexed X-form 514 367*9880d681SAndroid Build Coastguard Worker// Load VSX Vector Word & Splat Indexed X-form 516 368*9880d681SAndroid Build Coastguard Worker[PO T RA RB XO TX] lxvx lxsibzx lxsihzx lxvb16x lxvl lxvll lxvh8x lxvwsx 369*9880d681SAndroid Build Coastguard Worker 370*9880d681SAndroid Build Coastguard Worker// Store VSX Scalar as Integer Byte Indexed X-form 518 371*9880d681SAndroid Build Coastguard Worker// Store VSX Scalar as Integer Halfword Indexed X-form 518 372*9880d681SAndroid Build Coastguard Worker// Store VSX Vector Byte*16 Indexed X-form 522 373*9880d681SAndroid Build Coastguard Worker// Store VSX Vector Halfword*8 Indexed X-form 524 374*9880d681SAndroid Build Coastguard Worker// Store VSX Vector with Length X-form 526 375*9880d681SAndroid Build Coastguard Worker// Store VSX Vector Left-justified with Length X-form 528 376*9880d681SAndroid Build Coastguard Worker// Store VSX Vector Indexed X-form 529 377*9880d681SAndroid Build Coastguard Worker[PO S RA RB XO SX] stxsibx stxsihx stxvb16x stxvh8x stxvl stxvll stxvx 378*9880d681SAndroid Build Coastguard Worker 379*9880d681SAndroid Build Coastguard Worker21 380*9880d681SAndroid Build Coastguard Worker 381*9880d681SAndroid Build Coastguard Worker//-------------------------------------- 382*9880d681SAndroid Build Coastguard Worker". vector instructions" 383*9880d681SAndroid Build Coastguard Worker 384*9880d681SAndroid Build Coastguard Worker[1] PowerISA-v3.0 p.933 - Table 1, and Chapter 6. Vector Facility (altivec) 385*9880d681SAndroid Build Coastguard Worker[2] https://sourceware.org/ml/binutils/2015-11/msg00071.html 386*9880d681SAndroid Build Coastguard Worker 387*9880d681SAndroid Build Coastguard Worker//-------------------------------------- 388*9880d681SAndroid Build Coastguard WorkerNew patch: 389*9880d681SAndroid Build Coastguard Worker// vector bit, p.367, 6.16 Vector Bit Permute Instruction 390*9880d681SAndroid Build Coastguard Worker[PO VRT VRA VRB XO] vbpermd, (existing: vbpermq) 391*9880d681SAndroid Build Coastguard Worker 392*9880d681SAndroid Build Coastguard Worker// vector permute, p.280 393*9880d681SAndroid Build Coastguard Worker[PO VRT VRA VRB VRC XO] vpermr 394*9880d681SAndroid Build Coastguard Worker 395*9880d681SAndroid Build Coastguard Worker// vector rotate left, p.341 396*9880d681SAndroid Build Coastguard Worker[PO VRT VRA VRB XO] vrlwnm vrlwmi vrldnm vrldmi 397*9880d681SAndroid Build Coastguard Worker 398*9880d681SAndroid Build Coastguard Worker// vector shift, p.285 399*9880d681SAndroid Build Coastguard Worker[PO VRT VRA VRB XO] vslv vsrv 400*9880d681SAndroid Build Coastguard Worker 401*9880d681SAndroid Build Coastguard Worker// vector multiply-by-10, p.375 402*9880d681SAndroid Build Coastguard Worker[PO VRT VRA /// XO] vmul10cuq vmul10uq 403*9880d681SAndroid Build Coastguard Worker[PO VRT VRA VRB XO] vmul10ecuq vmul10euq 404*9880d681SAndroid Build Coastguard Worker 405*9880d681SAndroid Build Coastguard Worker12 406*9880d681SAndroid Build Coastguard Worker//-------------------------------------- 407*9880d681SAndroid Build Coastguard Workerhttp://reviews.llvm.org/D15887 + ext + neg + prty - vbpermd 408*9880d681SAndroid Build Coastguard Worker// vector count leading/trailing zero 409*9880d681SAndroid Build Coastguard Worker. new vx-form: p.31, 1.6.14 VX-FORM 410*9880d681SAndroid Build Coastguard Worker[PO RT EO VRB XO] vclzlsbb vctzlsbb (p.363) 411*9880d681SAndroid Build Coastguard Worker 412*9880d681SAndroid Build Coastguard Worker// Vector Count Trailing Zeros Instructions, 362 413*9880d681SAndroid Build Coastguard Worker[PO VRT EO VRB XO] vctzb vctzh vctzw vctzd (v16i8 v8i16 v4i32 v2i64) 414*9880d681SAndroid Build Coastguard Worker 415*9880d681SAndroid Build Coastguard Worker// vector extend sign (p.314) 416*9880d681SAndroid Build Coastguard Worker[PO VRT EO VRB XO] vextsb2w vextsh2w vextsb2d vextsh2d vextsw2d 417*9880d681SAndroid Build Coastguard Worker 418*9880d681SAndroid Build Coastguard Worker// vector negate, p.313 419*9880d681SAndroid Build Coastguard Worker[PO VRT EO VRB XO] vnegd vnegw 420*9880d681SAndroid Build Coastguard Worker 421*9880d681SAndroid Build Coastguard Worker// vector parity, p.335 422*9880d681SAndroid Build Coastguard Worker[PO VRT EO VRB XO] vprtybd vprtybq vprtybw 423*9880d681SAndroid Build Coastguard Worker 424*9880d681SAndroid Build Coastguard Worker16 425*9880d681SAndroid Build Coastguard Worker//-------------------------------------- 426*9880d681SAndroid Build Coastguard Worker// vector compare, p.330 427*9880d681SAndroid Build Coastguard Worker[PO VRT VRA VRB RC XO] vcmpneb vcmpneb. vcmpneh vcmpneh. vcmpnew vcmpnew. 428*9880d681SAndroid Build Coastguard Worker vcmpnezb vcmpnezb. vcmpnezh vcmpnezh. vcmpnezw vcmpnezw. 429*9880d681SAndroid Build Coastguard Worker12 430*9880d681SAndroid Build Coastguard Worker//-------------------------------------- 431*9880d681SAndroid Build Coastguard Workerhttp://reviews.llvm.org/D15917 + insert 432*9880d681SAndroid Build Coastguard Worker// vector extract (p.287) ref: vspltb (v2.07, p.227) 433*9880d681SAndroid Build Coastguard Worker// vector insert, p.288 434*9880d681SAndroid Build Coastguard Worker[PO VRT / UIM VRB XO] vinsertb vinsertd vinserth vinsertw 435*9880d681SAndroid Build Coastguard Worker 436*9880d681SAndroid Build Coastguard Worker// Vector Extract Unsigned 437*9880d681SAndroid Build Coastguard Worker[PO VRT / UIM VRB XO] vextractub vextractuh vextractuw vextractd 438*9880d681SAndroid Build Coastguard Worker 439*9880d681SAndroid Build Coastguard Worker// p.364: Vector Extract Unsigned Left/Right-Indexed 440*9880d681SAndroid Build Coastguard Worker[PO RT RA VRB XO] vextublx vextubrx vextuhlx vextuhrx vextuwlx vextuwrx 441*9880d681SAndroid Build Coastguard Worker 442*9880d681SAndroid Build Coastguard Worker14 443