xref: /aosp_15_r20/external/llvm/lib/Target/PowerPC/p9-instrs.txt (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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