diff options
author | Stephen Hines <srhines@google.com> | 2014-12-01 14:51:49 -0800 |
---|---|---|
committer | Stephen Hines <srhines@google.com> | 2014-12-02 16:08:10 -0800 |
commit | 37ed9c199ca639565f6ce88105f9e39e898d82d0 (patch) | |
tree | 8fb36d3910e3ee4c4e1b7422f4f017108efc52f5 /lib/Target/PowerPC/PPCInstrSPE.td | |
parent | d2327b22152ced7bc46dc629fc908959e8a52d03 (diff) | |
download | external_llvm-37ed9c199ca639565f6ce88105f9e39e898d82d0.zip external_llvm-37ed9c199ca639565f6ce88105f9e39e898d82d0.tar.gz external_llvm-37ed9c199ca639565f6ce88105f9e39e898d82d0.tar.bz2 |
Update aosp/master LLVM for rebase to r222494.
Change-Id: Ic787f5e0124df789bd26f3f24680f45e678eef2d
Diffstat (limited to 'lib/Target/PowerPC/PPCInstrSPE.td')
-rw-r--r-- | lib/Target/PowerPC/PPCInstrSPE.td | 447 |
1 files changed, 447 insertions, 0 deletions
diff --git a/lib/Target/PowerPC/PPCInstrSPE.td b/lib/Target/PowerPC/PPCInstrSPE.td new file mode 100644 index 0000000..cc3a4d2 --- /dev/null +++ b/lib/Target/PowerPC/PPCInstrSPE.td @@ -0,0 +1,447 @@ +//=======-- PPCInstrSPE.td - The PowerPC SPE Extension -*- tablegen -*-=======// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file describes the Signal Processing Engine extension to +// the PowerPC instruction set. +// +//===----------------------------------------------------------------------===// + +class EVXForm_1<bits<11> xo, dag OOL, dag IOL, string asmstr, + InstrItinClass itin> : I<4, OOL, IOL, asmstr, itin> { + bits<5> RT; + bits<5> RA; + bits<5> RB; + + let Pattern = []; + + let Inst{6-10} = RT; + let Inst{11-15} = RA; + let Inst{16-20} = RB; + let Inst{21-31} = xo; +} + +class EVXForm_2<bits<11> xo, dag OOL, dag IOL, string asmstr, + InstrItinClass itin> : EVXForm_1<xo, OOL, IOL, asmstr, itin> { + let RB = 0; +} + +class EVXForm_3<bits<11> xo, dag OOL, dag IOL, string asmstr, + InstrItinClass itin> : I<4, OOL, IOL, asmstr, itin> { + bits<3> crD; + bits<5> RA; + bits<5> RB; + + let Pattern = []; + + let Inst{6-8} = crD; + let Inst{9-10} = 0; + let Inst{11-15} = RA; + let Inst{16-20} = RB; + let Inst{21-31} = xo; +} + +class EVXForm_D<bits<11> xo, dag OOL, dag IOL, string asmstr, + InstrItinClass itin> : I<4, OOL, IOL, asmstr, itin> { + bits<5> RT; + bits<21> D; + + let Pattern = []; + + let Inst{6-10} = RT; + let Inst{20} = D{0}; + let Inst{19} = D{1}; + let Inst{18} = D{2}; + let Inst{17} = D{3}; + let Inst{16} = D{4}; + let Inst{15} = D{5}; + let Inst{14} = D{6}; + let Inst{13} = D{7}; + let Inst{12} = D{8}; + let Inst{11} = D{9}; + let Inst{11-20} = D{0-9}; + let Inst{21-31} = xo; +} + +let Predicates = [HasSPE], isAsmParserOnly = 1 in { + +def EVLDD : EVXForm_D<769, (outs gprc:$RT), (ins spe8dis:$dst), + "evldd $RT, $dst", IIC_VecFP>; +def EVLDW : EVXForm_D<771, (outs gprc:$RT), (ins spe8dis:$dst), + "evldw $RT, $dst", IIC_VecFP>; +def EVLDH : EVXForm_D<773, (outs gprc:$RT), (ins spe8dis:$dst), + "evldh $RT, $dst", IIC_VecFP>; +def EVLHHESPLAT : EVXForm_D<777, (outs gprc:$RT), (ins spe2dis:$dst), + "evlhhesplat $RT, $dst", IIC_VecFP>; +def EVLHHOUSPLAT : EVXForm_D<781, (outs gprc:$RT), (ins spe2dis:$dst), + "evlhhousplat $RT, $dst", IIC_VecFP>; +def EVLHHOSSPLAT : EVXForm_D<783, (outs gprc:$RT), (ins spe2dis:$dst), + "evlhhossplat $RT, $dst", IIC_VecFP>; +def EVLWHE : EVXForm_D<785, (outs gprc:$RT), (ins spe4dis:$dst), + "evlwhe $RT, $dst", IIC_VecFP>; +def EVLWHOU : EVXForm_D<789, (outs gprc:$RT), (ins spe4dis:$dst), + "evlwhou $RT, $dst", IIC_VecFP>; +def EVLWHOS : EVXForm_D<791, (outs gprc:$RT), (ins spe4dis:$dst), + "evlwhos $RT, $dst", IIC_VecFP>; +def EVLWWSPLAT : EVXForm_D<793, (outs gprc:$RT), (ins spe4dis:$dst), + "evlwwsplat $RT, $dst", IIC_VecFP>; +def EVLWHSPLAT : EVXForm_D<797, (outs gprc:$RT), (ins spe4dis:$dst), + "evlwhsplat $RT, $dst", IIC_VecFP>; + +def EVSTDD : EVXForm_D<801, (outs), (ins gprc:$RT, spe8dis:$dst), + "evstdd $RT, $dst", IIC_VecFP>; +def EVSTDH : EVXForm_D<805, (outs), (ins gprc:$RT, spe8dis:$dst), + "evstdh $RT, $dst", IIC_VecFP>; +def EVSTDW : EVXForm_D<803, (outs), (ins gprc:$RT, spe8dis:$dst), + "evstdw $RT, $dst", IIC_VecFP>; +def EVSTWHE : EVXForm_D<817, (outs), (ins gprc:$RT, spe4dis:$dst), + "evstwhe $RT, $dst", IIC_VecFP>; +def EVSTWHO : EVXForm_D<821, (outs), (ins gprc:$RT, spe4dis:$dst), + "evstwho $RT, $dst", IIC_VecFP>; +def EVSTWWE : EVXForm_D<825, (outs), (ins gprc:$RT, spe4dis:$dst), + "evstwwe $RT, $dst", IIC_VecFP>; +def EVSTWWO : EVXForm_D<829, (outs), (ins gprc:$RT, spe4dis:$dst), + "evstwwo $RT, $dst", IIC_VecFP>; + +def EVMRA : EVXForm_1<1220, (outs gprc:$RT), (ins gprc:$RA), + "evmra $RT, $RA", IIC_VecFP> { + let RB = 0; +} + +def BRINC : EVXForm_1<527, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "brinc $RT, $RA, $RB", IIC_VecFP>; +def EVABS : EVXForm_2<520, (outs gprc:$RT), (ins gprc:$RA), + "evabs $RT, $RA", IIC_VecFP>; + +def EVADDIW : EVXForm_1<514, (outs gprc:$RT), (ins gprc:$RA, u5imm:$RB), + "evaddiw $RT, $RB, $RA", IIC_VecFP>; +def EVADDSMIAAW : EVXForm_2<1225, (outs gprc:$RT), (ins gprc:$RA), + "evaddsmiaaw $RT, $RA", IIC_VecFP>; +def EVADDSSIAAW : EVXForm_2<1217, (outs gprc:$RT), (ins gprc:$RA), + "evaddssiaaw $RT, $RA", IIC_VecFP>; +def EVADDUSIAAW : EVXForm_2<1216, (outs gprc:$RT), (ins gprc:$RA), + "evaddusiaaw $RT, $RA", IIC_VecFP>; +def EVADDUMIAAW : EVXForm_2<1224, (outs gprc:$RT), (ins gprc:$RA), + "evaddumiaaw $RT, $RA", IIC_VecFP>; +def EVADDW : EVXForm_1<512, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evaddw $RT, $RA, $RB", IIC_VecFP>; + +def EVAND : EVXForm_1<529, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evand $RT, $RA, $RB", IIC_VecFP>; +def EVANDC : EVXForm_1<530, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evandc $RT, $RA, $RB", IIC_VecFP>; + +def EVCMPEQ : EVXForm_3<564, (outs crrc:$crD), (ins gprc:$RA, gprc:$RB), + "evcmpeq $crD, $RA, $RB", IIC_VecFP>; +def EVCMPGTS : EVXForm_3<561, (outs crrc:$crD), (ins gprc:$RA, gprc:$RB), + "evcmpgts $crD, $RA, $RB", IIC_VecFP>; +def EVCMPGTU : EVXForm_3<560, (outs crrc:$crD), (ins gprc:$RA, gprc:$RB), + "evcmpgtu $crD, $RA, $RB", IIC_VecFP>; +def EVCMPLTS : EVXForm_3<563, (outs crrc:$crD), (ins gprc:$RA, gprc:$RB), + "evcmplts $crD, $RA, $RB", IIC_VecFP>; +def EVCMPLTU : EVXForm_3<562, (outs crrc:$crD), (ins gprc:$RA, gprc:$RB), + "evcmpltu $crD, $RA, $RB", IIC_VecFP>; + +def EVCNTLSW : EVXForm_2<526, (outs gprc:$RT), (ins gprc:$RA), + "evcntlsw $RT, $RA", IIC_VecFP>; +def EVCNTLZW : EVXForm_2<525, (outs gprc:$RT), (ins gprc:$RA), + "evcntlzw $RT, $RA", IIC_VecFP>; + +def EVDIVWS : EVXForm_1<1222, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evdivws $RT, $RA, $RB", IIC_VecFP>; +def EVDIVWU : EVXForm_1<1223, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evdivwu $RT, $RA, $RB", IIC_VecFP>; + +def EVEQV : EVXForm_1<537, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "eveqv $RT, $RA, $RB", IIC_VecFP>; + +def EVEXTSB : EVXForm_2<522, (outs gprc:$RT), (ins gprc:$RA), + "evextsb $RT, $RA", IIC_VecFP>; +def EVEXTSH : EVXForm_2<523, (outs gprc:$RT), (ins gprc:$RA), + "evextsh $RT, $RA", IIC_VecFP>; + +def EVLDDX : EVXForm_1<768, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evlddx $RT, $RA, $RB", IIC_VecFP>; +def EVLDWX : EVXForm_1<770, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evldwx $RT, $RA, $RB", IIC_VecFP>; +def EVLDHX : EVXForm_1<772, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evldhx $RT, $RA, $RB", IIC_VecFP>; +def EVLHHESPLATX : EVXForm_1<776, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evlhhesplatx $RT, $RA, $RB", IIC_VecFP>; +def EVLHHOUSPLATX : EVXForm_1<780, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evlhhousplatx $RT, $RA, $RB", IIC_VecFP>; +def EVLHHOSSPLATX : EVXForm_1<782, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evlhhossplatx $RT, $RA, $RB", IIC_VecFP>; +def EVLWHEX : EVXForm_1<784, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evlwhex $RT, $RA, $RB", IIC_VecFP>; +def EVLWHOUX : EVXForm_1<788, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evlwhoux $RT, $RA, $RB", IIC_VecFP>; +def EVLWHOSX : EVXForm_1<790, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evlwhosx $RT, $RA, $RB", IIC_VecFP>; +def EVLWWSPLATX : EVXForm_1<792, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evlwwsplatx $RT, $RA, $RB", IIC_VecFP>; +def EVLWHSPLATX : EVXForm_1<796, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evlwhsplatx $RT, $RA, $RB", IIC_VecFP>; + +def EVMERGEHI : EVXForm_1<556, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmergehi $RT, $RA, $RB", IIC_VecFP>; +def EVMERGELO : EVXForm_1<557, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmergelo $RT, $RA, $RB", IIC_VecFP>; +def EVMERGEHILO : EVXForm_1<558, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmergehilo $RT, $RA, $RB", IIC_VecFP>; +def EVMERGELOHI : EVXForm_1<559, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmergelohi $RT, $RA, $RB", IIC_VecFP>; + +def EVMHEGSMFAA : EVXForm_1<1323, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhegsmfaa $RT, $RA, $RB", IIC_VecFP>; +def EVMHEGSMFAN : EVXForm_1<1451, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhegsmfan $RT, $RA, $RB", IIC_VecFP>; +def EVMHEGSMIAA : EVXForm_1<1321, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhegsmiaa $RT, $RA, $RB", IIC_VecFP>; +def EVMHEGSMIAN : EVXForm_1<1449, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhegsmian $RT, $RA, $RB", IIC_VecFP>; +def EVMHEGUMIAA : EVXForm_1<1320, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhegumiaa $RT, $RA, $RB", IIC_VecFP>; +def EVMHEGUMIAN : EVXForm_1<1448, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhegumian $RT, $RA, $RB", IIC_VecFP>; + +def EVMHESMF : EVXForm_1<1035, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhesmf $RT, $RA, $RB", IIC_VecFP>; +def EVMHESMFA : EVXForm_1<1067, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhesmfa $RT, $RA, $RB", IIC_VecFP>; +def EVMHESMFAAW : EVXForm_1<1291, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhesmfaaw $RT, $RA, $RB", IIC_VecFP>; +def EVMHESMFANW : EVXForm_1<1419, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhesmfanw $RT, $RA, $RB", IIC_VecFP>; +def EVMHESMI : EVXForm_1<1033, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhesmi $RT, $RA, $RB", IIC_VecFP>; +def EVMHESMIA : EVXForm_1<1065, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhesmia $RT, $RA, $RB", IIC_VecFP>; +def EVMHESMIAAW : EVXForm_1<1289, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhesmiaaw $RT, $RA, $RB", IIC_VecFP>; +def EVMHESMIANW : EVXForm_1<1417, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhesmianw $RT, $RA, $RB", IIC_VecFP>; +def EVMHESSF : EVXForm_1<1027, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhessf $RT, $RA, $RB", IIC_VecFP>; +def EVMHESSFA : EVXForm_1<1059, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhessfa $RT, $RA, $RB", IIC_VecFP>; +def EVMHESSFAAW : EVXForm_1<1283, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhessfaaw $RT, $RA, $RB", IIC_VecFP>; +def EVMHESSFANW : EVXForm_1<1411, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhessfanw $RT, $RA, $RB", IIC_VecFP>; +def EVMHESSIAAW : EVXForm_1<1281, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhessiaaw $RT, $RA, $RB", IIC_VecFP>; +def EVMHESSIANW : EVXForm_1<1409, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhessianw $RT, $RA, $RB", IIC_VecFP>; +def EVMHEUMI : EVXForm_1<1032, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmheumi $RT, $RA, $RB", IIC_VecFP>; +def EVMHEUMIA : EVXForm_1<1064, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmheumia $RT, $RA, $RB", IIC_VecFP>; +def EVMHEUMIAAW : EVXForm_1<1288, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmheumiaaw $RT, $RA, $RB", IIC_VecFP>; +def EVMHEUMIANW : EVXForm_1<1416, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmheumianw $RT, $RA, $RB", IIC_VecFP>; +def EVMHEUSIAAW : EVXForm_1<1280, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmheusiaaw $RT, $RA, $RB", IIC_VecFP>; +def EVMHEUSIANW : EVXForm_1<1408, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmheusianw $RT, $RA, $RB", IIC_VecFP>; +def EVMHOGSMFAA : EVXForm_1<1327, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhogsmfaa $RT, $RA, $RB", IIC_VecFP>; +def EVMHOGSMFAN : EVXForm_1<1455, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhogsmfan $RT, $RA, $RB", IIC_VecFP>; +def EVMHOGSMIAA : EVXForm_1<1325, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhogsmiaa $RT, $RA, $RB", IIC_VecFP>; +def EVMHOGSMIAN : EVXForm_1<1453, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhogsmian $RT, $RA, $RB", IIC_VecFP>; +def EVMHOGUMIAA : EVXForm_1<1324, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhogumiaa $RT, $RA, $RB", IIC_VecFP>; +def EVMHOGUMIAN : EVXForm_1<1452, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhogumian $RT, $RA, $RB", IIC_VecFP>; +def EVMHOSMF : EVXForm_1<1039, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhosmf $RT, $RA, $RB", IIC_VecFP>; +def EVMHOSMFA : EVXForm_1<1071, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhosmfa $RT, $RA, $RB", IIC_VecFP>; +def EVMHOSMFAAW : EVXForm_1<1295, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhosmfaaw $RT, $RA, $RB", IIC_VecFP>; +def EVMHOSMFANW : EVXForm_1<1423, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhosmfanw $RT, $RA, $RB", IIC_VecFP>; +def EVMHOSMI : EVXForm_1<1037, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhosmi $RT, $RA, $RB", IIC_VecFP>; +def EVMHOSMIA : EVXForm_1<1069, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhosmia $RT, $RA, $RB", IIC_VecFP>; +def EVMHOSMIAAW : EVXForm_1<1293, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhosmiaaw $RT, $RA, $RB", IIC_VecFP>; +def EVMHOSMIANW : EVXForm_1<1421, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhosmianw $RT, $RA, $RB", IIC_VecFP>; +def EVMHOSSF : EVXForm_1<1031, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhossf $RT, $RA, $RB", IIC_VecFP>; +def EVMHOSSFA : EVXForm_1<1063, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhossfa $RT, $RA, $RB", IIC_VecFP>; +def EVMHOSSFAAW : EVXForm_1<1287, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhossfaaw $RT, $RA, $RB", IIC_VecFP>; +def EVMHOSSFANW : EVXForm_1<1415, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhossfanw $RT, $RA, $RB", IIC_VecFP>; +def EVMHOSSIAAW : EVXForm_1<1285, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhossiaaw $RT, $RA, $RB", IIC_VecFP>; +def EVMHOSSIANW : EVXForm_1<1413, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhossianw $RT, $RA, $RB", IIC_VecFP>; +def EVMHOUMI : EVXForm_1<1036, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhoumi $RT, $RA, $RB", IIC_VecFP>; +def EVMHOUMIA : EVXForm_1<1068, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhoumia $RT, $RA, $RB", IIC_VecFP>; +def EVMHOUMIAAW : EVXForm_1<1292, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhoumiaaw $RT, $RA, $RB", IIC_VecFP>; +def EVMHOUMIANW : EVXForm_1<1420, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhoumianw $RT, $RA, $RB", IIC_VecFP>; +def EVMHOUSIAAW : EVXForm_1<1284, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhousiaaw $RT, $RA, $RB", IIC_VecFP>; +def EVMHOUSIANW : EVXForm_1<1412, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmhousianw $RT, $RA, $RB", IIC_VecFP>; + + +def EVMWHSMF : EVXForm_1<1103, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwhsmf $RT, $RA, $RB", IIC_VecFP>; +def EVMWHSMFA : EVXForm_1<1135, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwhsmfa $RT, $RA, $RB", IIC_VecFP>; +def EVMWHSMI : EVXForm_1<1101, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwhsmi $RT, $RA, $RB", IIC_VecFP>; +def EVMWHSMIA : EVXForm_1<1133, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwhsmia $RT, $RA, $RB", IIC_VecFP>; +def EVMWHSSF : EVXForm_1<1095, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwhssf $RT, $RA, $RB", IIC_VecFP>; +def EVMWHSSFA : EVXForm_1<1127, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwhssfa $RT, $RA, $RB", IIC_VecFP>; +def EVMWHUMI : EVXForm_1<1100, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwhumi $RT, $RA, $RB", IIC_VecFP>; +def EVMWHUMIA : EVXForm_1<1132, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwhumia $RT, $RA, $RB", IIC_VecFP>; +def EVMWLSMIAAW : EVXForm_1<1353, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwlsmiaaw $RT, $RA, $RB", IIC_VecFP>; +def EVMWLSMIANW : EVXForm_1<1481, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwlsmianw $RT, $RA, $RB", IIC_VecFP>; +def EVMWLSSIAAW : EVXForm_1<1345, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwlssiaaw $RT, $RA, $RB", IIC_VecFP>; +def EVMWLSSIANW : EVXForm_1<1473, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwlssianw $RT, $RA, $RB", IIC_VecFP>; +def EVMWLUMI : EVXForm_1<1096, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwlumi $RT, $RA, $RB", IIC_VecFP>; +def EVMWLUMIA : EVXForm_1<1128, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwlumia $RT, $RA, $RB", IIC_VecFP>; +def EVMWLUMIAAW : EVXForm_1<1352, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwlumiaaw $RT, $RA, $RB", IIC_VecFP>; +def EVMWLUMIANW : EVXForm_1<1480, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwlumianw $RT, $RA, $RB", IIC_VecFP>; +def EVMWLUSIAAW : EVXForm_1<1344, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwlusiaaw $RT, $RA, $RB", IIC_VecFP>; +def EVMWLUSIANW : EVXForm_1<1472, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwlusianw $RT, $RA, $RB", IIC_VecFP>; +def EVMWSMF : EVXForm_1<1115, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwsmf $RT, $RA, $RB", IIC_VecFP>; +def EVMWSMFA : EVXForm_1<1147, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwsmfa $RT, $RA, $RB", IIC_VecFP>; +def EVMWSMFAA : EVXForm_1<1371, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwsmfaa $RT, $RA, $RB", IIC_VecFP>; +def EVMWSMFAN : EVXForm_1<1499, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwsmfan $RT, $RA, $RB", IIC_VecFP>; +def EVMWSMI : EVXForm_1<1113, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwsmi $RT, $RA, $RB", IIC_VecFP>; +def EVMWSMIA : EVXForm_1<1145, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwsmia $RT, $RA, $RB", IIC_VecFP>; +def EVMWSMIAA : EVXForm_1<1369, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwsmiaa $RT, $RA, $RB", IIC_VecFP>; +def EVMWSMIAN : EVXForm_1<1497, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwsmian $RT, $RA, $RB", IIC_VecFP>; +def EVMWSSF : EVXForm_1<1107, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwssf $RT, $RA, $RB", IIC_VecFP>; +def EVMWSSFA : EVXForm_1<1139, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwssfa $RT, $RA, $RB", IIC_VecFP>; +def EVMWSSFAA : EVXForm_1<1363, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwssfaa $RT, $RA, $RB", IIC_VecFP>; +def EVMWSSFAN : EVXForm_1<1491, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwssfan $RT, $RA, $RB", IIC_VecFP>; +def EVMWUMI : EVXForm_1<1112, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwumi $RT, $RA, $RB", IIC_VecFP>; +def EVMWUMIA : EVXForm_1<1144, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwumia $RT, $RA, $RB", IIC_VecFP>; +def EVMWUMIAA : EVXForm_1<1368, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwumiaa $RT, $RA, $RB", IIC_VecFP>; +def EVMWUMIAN : EVXForm_1<1496, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evmwumian $RT, $RA, $RB", IIC_VecFP>; + + +def EVNAND : EVXForm_1<542, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evnand $RT, $RA, $RB", IIC_VecFP>; + +def EVNEG : EVXForm_2<521, (outs gprc:$RT), (ins gprc:$RA), + "evneg $RT, $RA", IIC_VecFP>; + +def EVNOR : EVXForm_1<536, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evnor $RT, $RA, $RB", IIC_VecFP>; +def EVOR : EVXForm_1<535, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evor $RT, $RA, $RB", IIC_VecFP>; +def EVORC : EVXForm_1<539, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evorc $RT, $RA, $RB", IIC_VecFP>; + +def EVRLWI : EVXForm_1<554, (outs gprc:$RT), (ins gprc:$RA, u5imm:$RB), + "evrlwi $RT, $RA, $RB", IIC_VecFP>; +def EVRLW : EVXForm_1<552, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evrlw $RT, $RA, $RB", IIC_VecFP>; + +def EVRNDW : EVXForm_2<524, (outs gprc:$RT), (ins gprc:$RA), + "evrndw $RT, $RA", IIC_VecFP>; + +def EVSLWI : EVXForm_1<550, (outs gprc:$RT), (ins gprc:$RA, u5imm:$RB), + "evslwi $RT, $RA, $RB", IIC_VecFP>; +def EVSLW : EVXForm_1<548, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evslw $RT, $RA, $RB", IIC_VecFP>; + +def EVSPLATFI : EVXForm_2<555, (outs gprc:$RT), (ins i32imm:$RA), + "evsplatfi $RT, $RA", IIC_VecFP>; +def EVSPLATI : EVXForm_2<553, (outs gprc:$RT), (ins i32imm:$RA), + "evsplati $RT, $RA", IIC_VecFP>; + +def EVSRWIS : EVXForm_1<547, (outs gprc:$RT), (ins gprc:$RA, u5imm:$RB), + "evsrwis $RT, $RA, $RB", IIC_VecFP>; +def EVSRWIU : EVXForm_1<546, (outs gprc:$RT), (ins gprc:$RA, u5imm:$RB), + "evsrwiu $RT, $RA, $RB", IIC_VecFP>; +def EVSRWS : EVXForm_1<545, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evsrws $RT, $RA, $RB", IIC_VecFP>; +def EVSRWU : EVXForm_1<544, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evsrwu $RT, $RA, $RB", IIC_VecFP>; + +def EVSTDDX : EVXForm_1<800, (outs), (ins gprc:$RT, gprc:$RA, gprc:$RB), + "evstddx $RT, $RA, $RB", IIC_VecFP>; +def EVSTDHX : EVXForm_1<804, (outs), (ins gprc:$RT, gprc:$RA, gprc:$RB), + "evstdhx $RT, $RA, $RB", IIC_VecFP>; +def EVSTDWX : EVXForm_1<802, (outs), (ins gprc:$RT, gprc:$RA, gprc:$RB), + "evstdwx $RT, $RA, $RB", IIC_VecFP>; +def EVSTWHEX : EVXForm_1<816, (outs), (ins gprc:$RT, gprc:$RA, gprc:$RB), + "evstwhex $RT, $RA, $RB", IIC_VecFP>; +def EVSTWHOX : EVXForm_1<820, (outs), (ins gprc:$RT, gprc:$RA, gprc:$RB), + "evstwhox $RT, $RA, $RB", IIC_VecFP>; +def EVSTWWEX : EVXForm_1<824, (outs), (ins gprc:$RT, gprc:$RA, gprc:$RB), + "evstwwex $RT, $RA, $RB", IIC_VecFP>; +def EVSTWWOX : EVXForm_1<828, (outs), (ins gprc:$RT, gprc:$RA, gprc:$RB), + "evstwwox $RT, $RA, $RB", IIC_VecFP>; + +def EVSUBFSSIAAW : EVXForm_2<1219, (outs gprc:$RT), (ins gprc:$RA), + "evsubfssiaaw $RT, $RA", IIC_VecFP>; +def EVSUBFSMIAAW : EVXForm_2<1227, (outs gprc:$RT), (ins gprc:$RA), + "evsubfsmiaaw $RT, $RA", IIC_VecFP>; +def EVSUBFUMIAAW : EVXForm_2<1226, (outs gprc:$RT), (ins gprc:$RA), + "evsubfumiaaw $RT, $RA", IIC_VecFP>; +def EVSUBFUSIAAW : EVXForm_2<1218, (outs gprc:$RT), (ins gprc:$RA), + "evsubfusiaaw $RT, $RA", IIC_VecFP>; +def EVSUBFW : EVXForm_1<516, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evsubfw $RT, $RA, $RB", IIC_VecFP>; +def EVSUBIFW : EVXForm_1<518, (outs gprc:$RT), (ins u5imm:$RA, gprc:$RB), + "evsubifw $RT, $RA, $RB", IIC_VecFP>; +def EVXOR : EVXForm_1<534, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), + "evxor $RT, $RA, $RB", IIC_VecFP>; + +} // HasSPE |