--- /dev/null
+insn,mode,CONDITIONS,Ptype,Etype,0,1,2,3,in1,in2,in3,out,CR in,CR out,PU,out2
+lwz,LDST,~SVP64BREV,2P,EXTRA2,d:RT,s:RA,0,0,RA_OR_ZERO,0,0,RT,0,0,1,0
+lbz,LDST,~SVP64BREV,2P,EXTRA2,d:RT,s:RA,0,0,RA_OR_ZERO,0,0,RT,0,0,1,0
+lhz,LDST,~SVP64BREV,2P,EXTRA2,d:RT,s:RA,0,0,RA_OR_ZERO,0,0,RT,0,0,1,0
+lha,LDST,~SVP64BREV,2P,EXTRA2,d:RT,s:RA,0,0,RA_OR_ZERO,0,0,RT,0,0,1,0
+lfs,LDST,~SVP64BREV,2P,EXTRA2,d:FRT,s:RA,0,0,RA_OR_ZERO,0,0,FRT,0,0,1,0
+lfd,LDST,~SVP64BREV,2P,EXTRA2,d:FRT,s:RA,0,0,RA_OR_ZERO,0,0,FRT,0,0,1,0
+ld,LDST,,2P,EXTRA2,d:RT,s:RA,0,0,RA_OR_ZERO,0,0,RT,0,0,1,0
+lwa,LDST,,2P,EXTRA2,d:RT,s:RA,0,0,RA_OR_ZERO,0,0,RT,0,0,1,0
--- /dev/null
+insn,mode,CONDITIONS,Ptype,Etype,0,1,2,3,in1,in2,in3,out,CR in,CR out,PU,out2
+stw,LDST,,2P,EXTRA2,s:RS,s:RA,0,0,RA_OR_ZERO,0,RS,0,0,0,1,0
+stb,LDST,,2P,EXTRA2,s:RS,s:RA,0,0,RA_OR_ZERO,0,RS,0,0,0,1,0
+sth,LDST,,2P,EXTRA2,s:RS,s:RA,0,0,RA_OR_ZERO,0,RS,0,0,0,1,0
+stfs,LDST,,2P,EXTRA2,s:FRS,s:RA,0,0,RA_OR_ZERO,0,FRS,0,0,0,1,0
+stfd,LDST,,2P,EXTRA2,s:FRS,s:RA,0,0,RA_OR_ZERO,0,FRS,0,0,0,1,0
+std,LDST,,2P,EXTRA2,s:RS,s:RA,0,0,RA_OR_ZERO,0,RS,0,0,0,1,0
# sigh now the fun begins. this isn't the sanest way to do it
# but the patterns are pretty regular.
- if value == 'LDSTRM-2P-1S1D':
+ if value == 'LDSTRM-2P-1S1D-PU': # pack/unpack LD
+ res['Etype'] = 'EXTRA2' # RM EXTRA2 type
+ res['0'] = dRT # RT: Rdest_EXTRA2
+ res['1'] = 's:RA' # RA: Rsrc1_EXTRA2
+
+ elif value == 'LDSTRM-2P-1S1D':
res['Etype'] = 'EXTRA3' # RM EXTRA3 type
res['0'] = dRT # RT: Rdest_EXTRA3
res['1'] = 's:RA' # RA: Rsrc1_EXTRA3
res['1'] = 'd:RA' # RA: Rdest2_EXTRA2
res['2'] = 's:RA' # RA: Rsrc1_EXTRA2
- elif value == 'LDSTRM-2P-2S':
+ elif value == 'LDSTRM-2P-2S-PU': # pack/unpack ST
# stw, std, sth, stb
- res['Etype'] = 'EXTRA3' # RM EXTRA2 type
+ res['Etype'] = 'EXTRA2' # RM EXTRA2 type
res['0'] = sRS # RS: Rdest1_EXTRA2
res['1'] = 's:RA' # RA: Rsrc1_EXTRA2
+ elif value == 'LDSTRM-2P-2S':
+ # stw, std, sth, stb
+ res['Etype'] = 'EXTRA3' # RM EXTRA3 type
+ res['0'] = sRS # RS: Rdest1_EXTRA3
+ res['1'] = 's:RA' # RA: Rsrc1_EXTRA3
+
elif value == 'LDSTRM-2P-2S1D':
if 'st' in insn_name and 'x' not in insn_name: # stwu/stbu etc
res['Etype'] = 'EXTRA2' # RM EXTRA2 type