10b57cec5SDimitry Andric//=======-- PPCInstrSPE.td - The PowerPC SPE Extension -*- tablegen -*-=======// 20b57cec5SDimitry Andric// 30b57cec5SDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric// See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric// 70b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric// 90b57cec5SDimitry Andric// This file describes the Signal Processing Engine extension to 100b57cec5SDimitry Andric// the PowerPC instruction set. 110b57cec5SDimitry Andric// 120b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 130b57cec5SDimitry Andric 140b57cec5SDimitry Andricclass EFXForm_1<bits<11> xo, dag OOL, dag IOL, string asmstr, 150b57cec5SDimitry Andric InstrItinClass itin, list<dag> pattern> : 160b57cec5SDimitry Andric I<4, OOL, IOL, asmstr, itin> { 170b57cec5SDimitry Andric bits<5> RT; 180b57cec5SDimitry Andric bits<5> RA; 190b57cec5SDimitry Andric bits<5> RB; 200b57cec5SDimitry Andric 210b57cec5SDimitry Andric let Pattern = pattern; 220b57cec5SDimitry Andric 230b57cec5SDimitry Andric let Inst{6-10} = RT; 240b57cec5SDimitry Andric let Inst{11-15} = RA; 250b57cec5SDimitry Andric let Inst{16-20} = RB; 260b57cec5SDimitry Andric let Inst{21-31} = xo; 270b57cec5SDimitry Andric} 280b57cec5SDimitry Andric 290b57cec5SDimitry Andricclass EFXForm_2<bits<11> xo, dag OOL, dag IOL, string asmstr, 300b57cec5SDimitry Andric InstrItinClass itin, list<dag> pattern> : 310b57cec5SDimitry Andric EFXForm_1<xo, OOL, IOL, asmstr, itin, pattern> { 320b57cec5SDimitry Andric let RB = 0; 330b57cec5SDimitry Andric} 340b57cec5SDimitry Andric 350b57cec5SDimitry Andricclass EFXForm_2a<bits<11> xo, dag OOL, dag IOL, string asmstr, 360b57cec5SDimitry Andric InstrItinClass itin, list<dag> pattern> : 370b57cec5SDimitry Andric EFXForm_1<xo, OOL, IOL, asmstr, itin, pattern> { 380b57cec5SDimitry Andric let RA = 0; 390b57cec5SDimitry Andric} 400b57cec5SDimitry Andric 410b57cec5SDimitry Andricclass EFXForm_3<bits<11> xo, dag OOL, dag IOL, string asmstr, 420b57cec5SDimitry Andric InstrItinClass itin> : 430b57cec5SDimitry Andric I<4, OOL, IOL, asmstr, itin> { 440b57cec5SDimitry Andric bits<3> crD; 450b57cec5SDimitry Andric bits<5> RA; 460b57cec5SDimitry Andric bits<5> RB; 470b57cec5SDimitry Andric 480b57cec5SDimitry Andric let Inst{6-8} = crD; 490b57cec5SDimitry Andric let Inst{9-10} = 0; 500b57cec5SDimitry Andric let Inst{11-15} = RA; 510b57cec5SDimitry Andric let Inst{16-20} = RB; 520b57cec5SDimitry Andric let Inst{21-31} = xo; 530b57cec5SDimitry Andric} 540b57cec5SDimitry Andric 550b57cec5SDimitry Andricclass EVXForm_1<bits<11> xo, dag OOL, dag IOL, string asmstr, 560b57cec5SDimitry Andric InstrItinClass itin, list<dag> pattern> : 570b57cec5SDimitry Andric I<4, OOL, IOL, asmstr, itin> { 580b57cec5SDimitry Andric bits<5> RT; 590b57cec5SDimitry Andric bits<5> RA; 600b57cec5SDimitry Andric bits<5> RB; 610b57cec5SDimitry Andric 620b57cec5SDimitry Andric let Pattern = pattern; 630b57cec5SDimitry Andric 640b57cec5SDimitry Andric let Inst{6-10} = RT; 650b57cec5SDimitry Andric let Inst{11-15} = RA; 660b57cec5SDimitry Andric let Inst{16-20} = RB; 670b57cec5SDimitry Andric let Inst{21-31} = xo; 680b57cec5SDimitry Andric} 690b57cec5SDimitry Andric 700b57cec5SDimitry Andricclass EVXForm_2<bits<11> xo, dag OOL, dag IOL, string asmstr, 710b57cec5SDimitry Andric InstrItinClass itin, list<dag> pattern> : 720b57cec5SDimitry Andric EVXForm_1<xo, OOL, IOL, asmstr, itin, pattern> { 730b57cec5SDimitry Andric let RB = 0; 740b57cec5SDimitry Andric} 750b57cec5SDimitry Andric 760b57cec5SDimitry Andricclass EVXForm_2a<bits<11> xo, dag OOL, dag IOL, string asmstr, 770b57cec5SDimitry Andric InstrItinClass itin, list<dag> pattern> : 780b57cec5SDimitry Andric EVXForm_1<xo, OOL, IOL, asmstr, itin, pattern> { 790b57cec5SDimitry Andric let RA = 0; 800b57cec5SDimitry Andric} 810b57cec5SDimitry Andric 820b57cec5SDimitry Andricclass EVXForm_3<bits<11> xo, dag OOL, dag IOL, string asmstr, 830b57cec5SDimitry Andric InstrItinClass itin, list<dag> pattern> : 840b57cec5SDimitry Andric I<4, OOL, IOL, asmstr, itin> { 850b57cec5SDimitry Andric bits<3> crD; 860b57cec5SDimitry Andric bits<5> RA; 870b57cec5SDimitry Andric bits<5> RB; 880b57cec5SDimitry Andric 890b57cec5SDimitry Andric let Pattern = pattern; 900b57cec5SDimitry Andric 910b57cec5SDimitry Andric let Inst{6-8} = crD; 920b57cec5SDimitry Andric let Inst{9-10} = 0; 930b57cec5SDimitry Andric let Inst{11-15} = RA; 940b57cec5SDimitry Andric let Inst{16-20} = RB; 950b57cec5SDimitry Andric let Inst{21-31} = xo; 960b57cec5SDimitry Andric} 970b57cec5SDimitry Andric 980b57cec5SDimitry Andricclass EVXForm_4<bits<8> xo, dag OOL, dag IOL, string asmstr, 990b57cec5SDimitry Andric InstrItinClass itin, list<dag> pattern> : 1000b57cec5SDimitry Andric I<4, OOL, IOL, asmstr, itin> { 1010b57cec5SDimitry Andric bits<3> crD; 1020b57cec5SDimitry Andric bits<5> RA; 1030b57cec5SDimitry Andric bits<5> RB; 1040b57cec5SDimitry Andric bits<5> RT; 1050b57cec5SDimitry Andric 1060b57cec5SDimitry Andric let Pattern = pattern; 1070b57cec5SDimitry Andric 1080b57cec5SDimitry Andric let Inst{6-10} = RT; 1090b57cec5SDimitry Andric let Inst{11-15} = RA; 1100b57cec5SDimitry Andric let Inst{16-20} = RB; 1110b57cec5SDimitry Andric let Inst{21-28} = xo; 1120b57cec5SDimitry Andric let Inst{29-31} = crD; 1130b57cec5SDimitry Andric} 1140b57cec5SDimitry Andric 1150b57cec5SDimitry Andricclass EVXForm_D<bits<11> xo, dag OOL, dag IOL, string asmstr, 1160b57cec5SDimitry Andric InstrItinClass itin, list<dag> pattern> : 1170b57cec5SDimitry Andric I<4, OOL, IOL, asmstr, itin> { 1180b57cec5SDimitry Andric bits<5> RT; 119*06c3fb27SDimitry Andric bits<5> RA; 120*06c3fb27SDimitry Andric bits<5> D; 1210b57cec5SDimitry Andric 1220b57cec5SDimitry Andric let Pattern = pattern; 1230b57cec5SDimitry Andric 1240b57cec5SDimitry Andric let Inst{6-10} = RT; 125*06c3fb27SDimitry Andric let Inst{11-15} = RA; 126*06c3fb27SDimitry Andric let Inst{16-20} = D; 1270b57cec5SDimitry Andric let Inst{21-31} = xo; 1280b57cec5SDimitry Andric} 1290b57cec5SDimitry Andric 1300b57cec5SDimitry Andriclet DecoderNamespace = "SPE", Predicates = [HasSPE] in { 1310b57cec5SDimitry Andric 1320b57cec5SDimitry Andricdef BRINC : EVXForm_1<527, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB), 1330b57cec5SDimitry Andric "brinc $RT, $RA, $RB", IIC_IntSimple, []>; 1340b57cec5SDimitry Andric 1350b57cec5SDimitry Andric// Double-precision floating point 1360b57cec5SDimitry Andricdef EFDABS : EFXForm_2<740, (outs sperc:$RT), (ins sperc:$RA), 1370b57cec5SDimitry Andric "efdabs $RT, $RA", IIC_FPDGeneral, 1380b57cec5SDimitry Andric [(set f64:$RT, (fabs f64:$RA))]>; 1390b57cec5SDimitry Andric 1400b57cec5SDimitry Andricdef EFDADD : EFXForm_1<736, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 1410b57cec5SDimitry Andric "efdadd $RT, $RA, $RB", IIC_FPAddSub, 142fe6060f1SDimitry Andric [(set f64:$RT, (any_fadd f64:$RA, f64:$RB))]>; 1430b57cec5SDimitry Andric 1440b57cec5SDimitry Andricdef EFDCFS : EFXForm_2a<751, (outs sperc:$RT), (ins spe4rc:$RB), 1450b57cec5SDimitry Andric "efdcfs $RT, $RB", IIC_FPDGeneral, 146fe6060f1SDimitry Andric [(set f64:$RT, (any_fpextend f32:$RB))]>; 1470b57cec5SDimitry Andric 1480b57cec5SDimitry Andricdef EFDCFSF : EFXForm_2a<755, (outs sperc:$RT), (ins spe4rc:$RB), 1490b57cec5SDimitry Andric "efdcfsf $RT, $RB", IIC_FPDGeneral, []>; 1500b57cec5SDimitry Andric 1510b57cec5SDimitry Andricdef EFDCFSI : EFXForm_2a<753, (outs sperc:$RT), (ins gprc:$RB), 1520b57cec5SDimitry Andric "efdcfsi $RT, $RB", IIC_FPDGeneral, 1535ffd83dbSDimitry Andric [(set f64:$RT, (any_sint_to_fp i32:$RB))]>; 1540b57cec5SDimitry Andric 1550b57cec5SDimitry Andricdef EFDCFSID : EFXForm_2a<739, (outs sperc:$RT), (ins gprc:$RB), 1560b57cec5SDimitry Andric "efdcfsid $RT, $RB", IIC_FPDGeneral, 1570b57cec5SDimitry Andric []>; 1580b57cec5SDimitry Andric 1590b57cec5SDimitry Andricdef EFDCFUF : EFXForm_2a<754, (outs sperc:$RT), (ins spe4rc:$RB), 1600b57cec5SDimitry Andric "efdcfuf $RT, $RB", IIC_FPDGeneral, []>; 1610b57cec5SDimitry Andric 1620b57cec5SDimitry Andricdef EFDCFUI : EFXForm_2a<752, (outs sperc:$RT), (ins gprc:$RB), 1630b57cec5SDimitry Andric "efdcfui $RT, $RB", IIC_FPDGeneral, 1645ffd83dbSDimitry Andric [(set f64:$RT, (any_uint_to_fp i32:$RB))]>; 1650b57cec5SDimitry Andric 1660b57cec5SDimitry Andricdef EFDCFUID : EFXForm_2a<738, (outs sperc:$RT), (ins gprc:$RB), 1670b57cec5SDimitry Andric "efdcfuid $RT, $RB", IIC_FPDGeneral, 1680b57cec5SDimitry Andric []>; 1690b57cec5SDimitry Andric 1700b57cec5SDimitry Andriclet isCompare = 1 in { 1710b57cec5SDimitry Andricdef EFDCMPEQ : EFXForm_3<750, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 1720b57cec5SDimitry Andric "efdcmpeq $crD, $RA, $RB", IIC_FPDGeneral>; 1730b57cec5SDimitry Andricdef EFDCMPGT : EFXForm_3<748, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 1740b57cec5SDimitry Andric "efdcmpgt $crD, $RA, $RB", IIC_FPDGeneral>; 1750b57cec5SDimitry Andricdef EFDCMPLT : EFXForm_3<749, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 1760b57cec5SDimitry Andric "efdcmplt $crD, $RA, $RB", IIC_FPDGeneral>; 1770b57cec5SDimitry Andric} 1780b57cec5SDimitry Andric 1790b57cec5SDimitry Andricdef EFDCTSF : EFXForm_2a<759, (outs sperc:$RT), (ins spe4rc:$RB), 1800b57cec5SDimitry Andric "efdctsf $RT, $RB", IIC_FPDGeneral, []>; 1810b57cec5SDimitry Andric 1820b57cec5SDimitry Andricdef EFDCTSI : EFXForm_2a<757, (outs gprc:$RT), (ins sperc:$RB), 1830b57cec5SDimitry Andric "efdctsi $RT, $RB", IIC_FPDGeneral, 1840b57cec5SDimitry Andric []>; 1850b57cec5SDimitry Andric 1860b57cec5SDimitry Andricdef EFDCTSIDZ : EFXForm_2a<747, (outs gprc:$RT), (ins sperc:$RB), 1870b57cec5SDimitry Andric "efdctsidz $RT, $RB", IIC_FPDGeneral, 1880b57cec5SDimitry Andric []>; 1890b57cec5SDimitry Andric 1900b57cec5SDimitry Andricdef EFDCTSIZ : EFXForm_2a<762, (outs gprc:$RT), (ins sperc:$RB), 1910b57cec5SDimitry Andric "efdctsiz $RT, $RB", IIC_FPDGeneral, 1925ffd83dbSDimitry Andric [(set i32:$RT, (any_fp_to_sint f64:$RB))]>; 1930b57cec5SDimitry Andric 1940b57cec5SDimitry Andricdef EFDCTUF : EFXForm_2a<758, (outs sperc:$RT), (ins spe4rc:$RB), 1950b57cec5SDimitry Andric "efdctuf $RT, $RB", IIC_FPDGeneral, []>; 1960b57cec5SDimitry Andric 1970b57cec5SDimitry Andricdef EFDCTUI : EFXForm_2a<756, (outs gprc:$RT), (ins sperc:$RB), 1980b57cec5SDimitry Andric "efdctui $RT, $RB", IIC_FPDGeneral, 1990b57cec5SDimitry Andric []>; 2000b57cec5SDimitry Andric 2010b57cec5SDimitry Andricdef EFDCTUIDZ : EFXForm_2a<746, (outs gprc:$RT), (ins sperc:$RB), 2020b57cec5SDimitry Andric "efdctuidz $RT, $RB", IIC_FPDGeneral, 2030b57cec5SDimitry Andric []>; 2040b57cec5SDimitry Andric 2050b57cec5SDimitry Andricdef EFDCTUIZ : EFXForm_2a<760, (outs gprc:$RT), (ins sperc:$RB), 2060b57cec5SDimitry Andric "efdctuiz $RT, $RB", IIC_FPDGeneral, 2075ffd83dbSDimitry Andric [(set i32:$RT, (any_fp_to_uint f64:$RB))]>; 2080b57cec5SDimitry Andric 2090b57cec5SDimitry Andricdef EFDDIV : EFXForm_1<745, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 2100b57cec5SDimitry Andric "efddiv $RT, $RA, $RB", IIC_FPDivD, 211fe6060f1SDimitry Andric [(set f64:$RT, (any_fdiv f64:$RA, f64:$RB))]>; 2120b57cec5SDimitry Andric 2130b57cec5SDimitry Andricdef EFDMUL : EFXForm_1<744, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 2140b57cec5SDimitry Andric "efdmul $RT, $RA, $RB", IIC_FPDGeneral, 215fe6060f1SDimitry Andric [(set f64:$RT, (any_fmul f64:$RA, f64:$RB))]>; 2160b57cec5SDimitry Andric 2170b57cec5SDimitry Andricdef EFDNABS : EFXForm_2<741, (outs sperc:$RT), (ins sperc:$RA), 2180b57cec5SDimitry Andric "efdnabs $RT, $RA", IIC_FPDGeneral, 2190b57cec5SDimitry Andric [(set f64:$RT, (fneg (fabs f64:$RA)))]>; 2200b57cec5SDimitry Andric 2210b57cec5SDimitry Andricdef EFDNEG : EFXForm_2<742, (outs sperc:$RT), (ins sperc:$RA), 2220b57cec5SDimitry Andric "efdneg $RT, $RA", IIC_FPDGeneral, 2230b57cec5SDimitry Andric [(set f64:$RT, (fneg f64:$RA))]>; 2240b57cec5SDimitry Andric 2250b57cec5SDimitry Andricdef EFDSUB : EFXForm_1<737, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 2260b57cec5SDimitry Andric "efdsub $RT, $RA, $RB", IIC_FPDGeneral, 227fe6060f1SDimitry Andric [(set f64:$RT, (any_fsub f64:$RA, f64:$RB))]>; 2280b57cec5SDimitry Andric 2290b57cec5SDimitry Andriclet isCompare = 1 in { 2300b57cec5SDimitry Andricdef EFDTSTEQ : EFXForm_3<766, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 2310b57cec5SDimitry Andric "efdtsteq $crD, $RA, $RB", IIC_FPDGeneral>; 2320b57cec5SDimitry Andricdef EFDTSTGT : EFXForm_3<764, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 2330b57cec5SDimitry Andric "efdtstgt $crD, $RA, $RB", IIC_FPDGeneral>; 2340b57cec5SDimitry Andricdef EFDTSTLT : EFXForm_3<765, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 2350b57cec5SDimitry Andric "efdtstlt $crD, $RA, $RB", IIC_FPDGeneral>; 2360b57cec5SDimitry Andric} 2370b57cec5SDimitry Andric 2380b57cec5SDimitry Andric// Single-precision floating point 2390b57cec5SDimitry Andricdef EFSABS : EFXForm_2<708, (outs spe4rc:$RT), (ins spe4rc:$RA), 2400b57cec5SDimitry Andric "efsabs $RT, $RA", IIC_FPSGeneral, 2410b57cec5SDimitry Andric [(set f32:$RT, (fabs f32:$RA))]>; 2420b57cec5SDimitry Andric 2430b57cec5SDimitry Andricdef EFSADD : EFXForm_1<704, (outs spe4rc:$RT), (ins spe4rc:$RA, spe4rc:$RB), 2440b57cec5SDimitry Andric "efsadd $RT, $RA, $RB", IIC_FPAddSub, 245fe6060f1SDimitry Andric [(set f32:$RT, (any_fadd f32:$RA, f32:$RB))]>; 2460b57cec5SDimitry Andric 2470b57cec5SDimitry Andricdef EFSCFD : EFXForm_2a<719, (outs spe4rc:$RT), (ins sperc:$RB), 2480b57cec5SDimitry Andric "efscfd $RT, $RB", IIC_FPSGeneral, 249fe6060f1SDimitry Andric [(set f32:$RT, (any_fpround f64:$RB))]>; 2500b57cec5SDimitry Andric 2510b57cec5SDimitry Andricdef EFSCFSF : EFXForm_2a<723, (outs spe4rc:$RT), (ins spe4rc:$RB), 2520b57cec5SDimitry Andric "efscfsf $RT, $RB", IIC_FPSGeneral, []>; 2530b57cec5SDimitry Andric 2540b57cec5SDimitry Andricdef EFSCFSI : EFXForm_2a<721, (outs spe4rc:$RT), (ins gprc:$RB), 2550b57cec5SDimitry Andric "efscfsi $RT, $RB", IIC_FPSGeneral, 2565ffd83dbSDimitry Andric [(set f32:$RT, (any_sint_to_fp i32:$RB))]>; 2570b57cec5SDimitry Andric 2580b57cec5SDimitry Andricdef EFSCFUF : EFXForm_2a<722, (outs spe4rc:$RT), (ins spe4rc:$RB), 2590b57cec5SDimitry Andric "efscfuf $RT, $RB", IIC_FPSGeneral, []>; 2600b57cec5SDimitry Andric 2610b57cec5SDimitry Andricdef EFSCFUI : EFXForm_2a<720, (outs spe4rc:$RT), (ins gprc:$RB), 2620b57cec5SDimitry Andric "efscfui $RT, $RB", IIC_FPSGeneral, 2635ffd83dbSDimitry Andric [(set f32:$RT, (any_uint_to_fp i32:$RB))]>; 2640b57cec5SDimitry Andric 2650b57cec5SDimitry Andriclet isCompare = 1 in { 2660b57cec5SDimitry Andricdef EFSCMPEQ : EFXForm_3<718, (outs crrc:$crD), (ins spe4rc:$RA, spe4rc:$RB), 2670b57cec5SDimitry Andric "efscmpeq $crD, $RA, $RB", IIC_FPCompare>; 2680b57cec5SDimitry Andricdef EFSCMPGT : EFXForm_3<716, (outs crrc:$crD), (ins spe4rc:$RA, spe4rc:$RB), 2690b57cec5SDimitry Andric "efscmpgt $crD, $RA, $RB", IIC_FPCompare>; 2700b57cec5SDimitry Andricdef EFSCMPLT : EFXForm_3<717, (outs crrc:$crD), (ins spe4rc:$RA, spe4rc:$RB), 2710b57cec5SDimitry Andric "efscmplt $crD, $RA, $RB", IIC_FPCompare>; 2720b57cec5SDimitry Andric} 2730b57cec5SDimitry Andric 2740b57cec5SDimitry Andricdef EFSCTSF : EFXForm_2a<727, (outs spe4rc:$RT), (ins spe4rc:$RB), 2750b57cec5SDimitry Andric "efsctsf $RT, $RB", IIC_FPSGeneral, []>; 2760b57cec5SDimitry Andric 2770b57cec5SDimitry Andricdef EFSCTSI : EFXForm_2a<725, (outs gprc:$RT), (ins spe4rc:$RB), 2780b57cec5SDimitry Andric "efsctsi $RT, $RB", IIC_FPSGeneral, 2790b57cec5SDimitry Andric []>; 2800b57cec5SDimitry Andric 2810b57cec5SDimitry Andricdef EFSCTSIZ : EFXForm_2a<730, (outs gprc:$RT), (ins spe4rc:$RB), 2820b57cec5SDimitry Andric "efsctsiz $RT, $RB", IIC_FPSGeneral, 2835ffd83dbSDimitry Andric [(set i32:$RT, (any_fp_to_sint f32:$RB))]>; 2840b57cec5SDimitry Andric 2850b57cec5SDimitry Andricdef EFSCTUF : EFXForm_2a<726, (outs sperc:$RT), (ins spe4rc:$RB), 2860b57cec5SDimitry Andric "efsctuf $RT, $RB", IIC_FPSGeneral, []>; 2870b57cec5SDimitry Andric 2880b57cec5SDimitry Andricdef EFSCTUI : EFXForm_2a<724, (outs gprc:$RT), (ins spe4rc:$RB), 2890b57cec5SDimitry Andric "efsctui $RT, $RB", IIC_FPSGeneral, 2900b57cec5SDimitry Andric []>; 2910b57cec5SDimitry Andric 2920b57cec5SDimitry Andricdef EFSCTUIZ : EFXForm_2a<728, (outs gprc:$RT), (ins spe4rc:$RB), 2930b57cec5SDimitry Andric "efsctuiz $RT, $RB", IIC_FPSGeneral, 2945ffd83dbSDimitry Andric [(set i32:$RT, (any_fp_to_uint f32:$RB))]>; 2950b57cec5SDimitry Andric 2960b57cec5SDimitry Andricdef EFSDIV : EFXForm_1<713, (outs spe4rc:$RT), (ins spe4rc:$RA, spe4rc:$RB), 2970b57cec5SDimitry Andric "efsdiv $RT, $RA, $RB", IIC_FPDivD, 298fe6060f1SDimitry Andric [(set f32:$RT, (any_fdiv f32:$RA, f32:$RB))]>; 2990b57cec5SDimitry Andric 3000b57cec5SDimitry Andricdef EFSMUL : EFXForm_1<712, (outs spe4rc:$RT), (ins spe4rc:$RA, spe4rc:$RB), 3010b57cec5SDimitry Andric "efsmul $RT, $RA, $RB", IIC_FPGeneral, 302fe6060f1SDimitry Andric [(set f32:$RT, (any_fmul f32:$RA, f32:$RB))]>; 3030b57cec5SDimitry Andric 3040b57cec5SDimitry Andricdef EFSNABS : EFXForm_2<709, (outs spe4rc:$RT), (ins spe4rc:$RA), 3050b57cec5SDimitry Andric "efsnabs $RT, $RA", IIC_FPGeneral, 3060b57cec5SDimitry Andric [(set f32:$RT, (fneg (fabs f32:$RA)))]>; 3070b57cec5SDimitry Andric 3080b57cec5SDimitry Andricdef EFSNEG : EFXForm_2<710, (outs spe4rc:$RT), (ins spe4rc:$RA), 3090b57cec5SDimitry Andric "efsneg $RT, $RA", IIC_FPGeneral, 3100b57cec5SDimitry Andric [(set f32:$RT, (fneg f32:$RA))]>; 3110b57cec5SDimitry Andric 3120b57cec5SDimitry Andricdef EFSSUB : EFXForm_1<705, (outs spe4rc:$RT), (ins spe4rc:$RA, spe4rc:$RB), 3130b57cec5SDimitry Andric "efssub $RT, $RA, $RB", IIC_FPSGeneral, 314fe6060f1SDimitry Andric [(set f32:$RT, (any_fsub f32:$RA, f32:$RB))]>; 3150b57cec5SDimitry Andric 3160b57cec5SDimitry Andriclet isCompare = 1 in { 3170b57cec5SDimitry Andricdef EFSTSTEQ : EFXForm_3<734, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 3180b57cec5SDimitry Andric "efststeq $crD, $RA, $RB", IIC_FPCompare>; 3190b57cec5SDimitry Andricdef EFSTSTGT : EFXForm_3<732, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 3200b57cec5SDimitry Andric "efststgt $crD, $RA, $RB", IIC_FPCompare>; 3210b57cec5SDimitry Andricdef EFSTSTLT : EFXForm_3<733, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 3220b57cec5SDimitry Andric "efststlt $crD, $RA, $RB", IIC_FPCompare>; 3230b57cec5SDimitry Andric} 3240b57cec5SDimitry Andric 3250b57cec5SDimitry Andric// SPE Vector operations 3260b57cec5SDimitry Andric 3270b57cec5SDimitry Andricdef EVABS : EVXForm_2<520, (outs sperc:$RT), (ins sperc:$RA), 3280b57cec5SDimitry Andric "evabs $RT, $RA", IIC_VecGeneral, 3290b57cec5SDimitry Andric []>; 3300b57cec5SDimitry Andric 3310b57cec5SDimitry Andricdef EVADDIW : EVXForm_1<514, (outs sperc:$RT), (ins sperc:$RA, u5imm:$RB), 3320b57cec5SDimitry Andric "evaddiw $RT, $RB, $RA", IIC_VecGeneral, []>; 3330b57cec5SDimitry Andricdef EVADDSMIAAW : EVXForm_2<1225, (outs sperc:$RT), (ins sperc:$RA), 3340b57cec5SDimitry Andric "evaddsmiaaw $RT, $RA", IIC_VecComplex, []>; 3350b57cec5SDimitry Andricdef EVADDSSIAAW : EVXForm_2<1217, (outs sperc:$RT), (ins sperc:$RA), 3360b57cec5SDimitry Andric "evaddssiaaw $RT, $RA", IIC_VecComplex, []>; 3370b57cec5SDimitry Andricdef EVADDUSIAAW : EVXForm_2<1216, (outs sperc:$RT), (ins sperc:$RA), 3380b57cec5SDimitry Andric "evaddusiaaw $RT, $RA", IIC_VecComplex, []>; 3390b57cec5SDimitry Andricdef EVADDUMIAAW : EVXForm_2<1224, (outs sperc:$RT), (ins sperc:$RA), 3400b57cec5SDimitry Andric "evaddumiaaw $RT, $RA", IIC_VecComplex, []>; 3410b57cec5SDimitry Andricdef EVADDW : EVXForm_1<512, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 3420b57cec5SDimitry Andric "evaddw $RT, $RA, $RB", IIC_VecGeneral, 3430b57cec5SDimitry Andric []>; 3440b57cec5SDimitry Andric 3450b57cec5SDimitry Andricdef EVAND : EVXForm_1<529, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 3460b57cec5SDimitry Andric "evand $RT, $RA, $RB", IIC_VecGeneral, 3470b57cec5SDimitry Andric []>; 3480b57cec5SDimitry Andricdef EVANDC : EVXForm_1<530, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 3490b57cec5SDimitry Andric "evandc $RT, $RA, $RB", IIC_VecGeneral, 3500b57cec5SDimitry Andric []>; 3510b57cec5SDimitry Andric 3520b57cec5SDimitry Andriclet isCompare = 1 in { 3530b57cec5SDimitry Andricdef EVCMPEQ : EVXForm_3<564, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 3540b57cec5SDimitry Andric "evcmpeq $crD, $RA, $RB", IIC_VecGeneral, []>; 3550b57cec5SDimitry Andricdef EVCMPGTS : EVXForm_3<561, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 3560b57cec5SDimitry Andric "evcmpgts $crD, $RA, $RB", IIC_VecGeneral, []>; 3570b57cec5SDimitry Andricdef EVCMPGTU : EVXForm_3<560, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 3580b57cec5SDimitry Andric "evcmpgtu $crD, $RA, $RB", IIC_VecGeneral, []>; 3590b57cec5SDimitry Andricdef EVCMPLTS : EVXForm_3<563, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 3600b57cec5SDimitry Andric "evcmplts $crD, $RA, $RB", IIC_VecGeneral, []>; 3610b57cec5SDimitry Andricdef EVCMPLTU : EVXForm_3<562, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 3620b57cec5SDimitry Andric "evcmpltu $crD, $RA, $RB", IIC_VecGeneral, []>; 3630b57cec5SDimitry Andric} 3640b57cec5SDimitry Andric 3650b57cec5SDimitry Andricdef EVCNTLSW : EVXForm_2<526, (outs sperc:$RT), (ins sperc:$RA), 3660b57cec5SDimitry Andric "evcntlsw $RT, $RA", IIC_VecGeneral, []>; 3670b57cec5SDimitry Andricdef EVCNTLZW : EVXForm_2<525, (outs sperc:$RT), (ins sperc:$RA), 3680b57cec5SDimitry Andric "evcntlzw $RT, $RA", IIC_VecGeneral, 3690b57cec5SDimitry Andric []>; 3700b57cec5SDimitry Andric 3710b57cec5SDimitry Andricdef EVDIVWS : EVXForm_1<1222, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 3720b57cec5SDimitry Andric "evdivws $RT, $RA, $RB", IIC_VecComplex, 3730b57cec5SDimitry Andric []>; 3740b57cec5SDimitry Andricdef EVDIVWU : EVXForm_1<1223, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 3750b57cec5SDimitry Andric "evdivwu $RT, $RA, $RB", IIC_VecComplex, 3760b57cec5SDimitry Andric []>; 3770b57cec5SDimitry Andric 3780b57cec5SDimitry Andricdef EVEQV : EVXForm_1<537, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 3790b57cec5SDimitry Andric "eveqv $RT, $RA, $RB", IIC_VecGeneral, 3800b57cec5SDimitry Andric []>; 3810b57cec5SDimitry Andric 3820b57cec5SDimitry Andricdef EVEXTSB : EVXForm_2<522, (outs sperc:$RT), (ins sperc:$RA), 3830b57cec5SDimitry Andric "evextsb $RT, $RA", IIC_VecGeneral, 3840b57cec5SDimitry Andric []>; 3850b57cec5SDimitry Andricdef EVEXTSH : EVXForm_2<523, (outs sperc:$RT), (ins sperc:$RA), 3860b57cec5SDimitry Andric "evextsh $RT, $RA", IIC_VecGeneral, 3870b57cec5SDimitry Andric []>; 3880b57cec5SDimitry Andric 3890b57cec5SDimitry Andricdef EVFSABS : EVXForm_2<644, (outs sperc:$RT), (ins sperc:$RA), 3900b57cec5SDimitry Andric "evfsabs $RT, $RA", IIC_VecGeneral, 3910b57cec5SDimitry Andric []>; 3920b57cec5SDimitry Andricdef EVFSADD : EVXForm_1<640, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 3930b57cec5SDimitry Andric "evfsadd $RT, $RA, $RB", IIC_VecComplex, 3940b57cec5SDimitry Andric []>; 3950b57cec5SDimitry Andricdef EVFSCFSF : EVXForm_2a<659, (outs sperc:$RT), (ins sperc:$RB), 3960b57cec5SDimitry Andric "evfscfsf $RT, $RB", IIC_VecComplex, []>; 3970b57cec5SDimitry Andricdef EVFSCFSI : EVXForm_2a<657, (outs sperc:$RT), (ins sperc:$RB), 3980b57cec5SDimitry Andric "evfscfsi $RT, $RB", IIC_VecComplex, 3990b57cec5SDimitry Andric []>; 4000b57cec5SDimitry Andricdef EVFSCFUF : EVXForm_2a<658, (outs sperc:$RT), (ins sperc:$RB), 4010b57cec5SDimitry Andric "evfscfuf $RT, $RB", IIC_VecComplex, []>; 4020b57cec5SDimitry Andricdef EVFSCFUI : EVXForm_2a<650, (outs sperc:$RT), (ins sperc:$RB), 4030b57cec5SDimitry Andric "evfscfui $RT, $RB", IIC_VecComplex, 4040b57cec5SDimitry Andric []>; 4050b57cec5SDimitry Andriclet isCompare = 1 in { 4060b57cec5SDimitry Andricdef EVFSCMPEQ : EVXForm_3<654, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 4070b57cec5SDimitry Andric "evfscmpeq $crD, $RA, $RB", IIC_FPSGeneral, []>; 4080b57cec5SDimitry Andricdef EVFSCMPGT : EVXForm_3<652, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 4090b57cec5SDimitry Andric "evfscmpgt $crD, $RA, $RB", IIC_FPSGeneral, []>; 4100b57cec5SDimitry Andricdef EVFSCMPLT : EVXForm_3<653, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 4110b57cec5SDimitry Andric "evfscmplt $crD, $RA, $RB", IIC_FPSGeneral, []>; 4120b57cec5SDimitry Andric} 4130b57cec5SDimitry Andric 4140b57cec5SDimitry Andricdef EVFSCTSF : EVXForm_2a<663, (outs sperc:$RT), (ins sperc:$RB), 4150b57cec5SDimitry Andric "evfsctsf $RT, $RB", IIC_VecComplex, []>; 4160b57cec5SDimitry Andricdef EVFSCTSI : EVXForm_2a<661, (outs sperc:$RT), (ins sperc:$RB), 4170b57cec5SDimitry Andric "evfsctsi $RT, $RB", IIC_VecComplex, 4180b57cec5SDimitry Andric []>; 4190b57cec5SDimitry Andricdef EVFSCTSIZ : EVXForm_2a<666, (outs sperc:$RT), (ins sperc:$RB), 4200b57cec5SDimitry Andric "evfsctsiz $RT, $RB", IIC_VecComplex, 4210b57cec5SDimitry Andric []>; 4220b57cec5SDimitry Andricdef EVFSCTUF : EVXForm_2a<662, (outs sperc:$RT), (ins sperc:$RB), 4230b57cec5SDimitry Andric "evfsctsf $RT, $RB", IIC_VecComplex, []>; 4240b57cec5SDimitry Andricdef EVFSCTUI : EVXForm_2a<660, (outs sperc:$RT), (ins sperc:$RB), 4250b57cec5SDimitry Andric "evfsctui $RT, $RB", IIC_VecComplex, 4260b57cec5SDimitry Andric []>; 4270b57cec5SDimitry Andricdef EVFSCTUIZ : EVXForm_2a<664, (outs sperc:$RT), (ins sperc:$RB), 4280b57cec5SDimitry Andric "evfsctsiz $RT, $RB", IIC_VecComplex, 4290b57cec5SDimitry Andric []>; 4300b57cec5SDimitry Andricdef EVFSDIV : EVXForm_1<649, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 4310b57cec5SDimitry Andric "evfsdiv $RT, $RA, $RB", IIC_FPDivD, 4320b57cec5SDimitry Andric []>; 4330b57cec5SDimitry Andricdef EVFSMUL : EVXForm_1<648, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 4340b57cec5SDimitry Andric "evfsmul $RT, $RA, $RB", IIC_VecComplex, 4350b57cec5SDimitry Andric []>; 4360b57cec5SDimitry Andricdef EVFSNABS : EVXForm_2<645, (outs sperc:$RT), (ins sperc:$RA), 4370b57cec5SDimitry Andric "evfsnabs $RT, $RA", IIC_VecGeneral, 4380b57cec5SDimitry Andric []>; 4390b57cec5SDimitry Andricdef EVFSNEG : EVXForm_2<646, (outs sperc:$RT), (ins sperc:$RA), 4400b57cec5SDimitry Andric "evfsneg $RT, $RA", IIC_VecGeneral, 4410b57cec5SDimitry Andric []>; 4420b57cec5SDimitry Andricdef EVFSSUB : EVXForm_1<641, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 4430b57cec5SDimitry Andric "evfssub $RT, $RA, $RB", IIC_VecComplex, 4440b57cec5SDimitry Andric []>; 4450b57cec5SDimitry Andric 4460b57cec5SDimitry Andriclet isCompare = 1 in { 4470b57cec5SDimitry Andricdef EVFSTSTEQ : EVXForm_3<670, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 4480b57cec5SDimitry Andric "evfststeq $crD, $RA, $RB", IIC_VecGeneral, []>; 4490b57cec5SDimitry Andricdef EVFSTSTGT : EVXForm_3<668, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 4500b57cec5SDimitry Andric "evfststgt $crD, $RA, $RB", IIC_VecGeneral, []>; 4510b57cec5SDimitry Andricdef EVFSTSTLT : EVXForm_3<669, (outs crrc:$crD), (ins sperc:$RA, sperc:$RB), 4520b57cec5SDimitry Andric "evfststlt $crD, $RA, $RB", IIC_VecGeneral, []>; 4530b57cec5SDimitry Andric} 4540b57cec5SDimitry Andric 455*06c3fb27SDimitry Andricdef EVLDD : EVXForm_D<769, (outs sperc:$RT), (ins (spe8dis $D, $RA):$dst), 4560b57cec5SDimitry Andric "evldd $RT, $dst", IIC_LdStLoad, 4570b57cec5SDimitry Andric [(set f64:$RT, (load iaddr:$dst))]>; 458*06c3fb27SDimitry Andricdef EVLDDX : EVXForm_1<768, (outs sperc:$RT), (ins (memrr $RA, $RB):$src), 4590b57cec5SDimitry Andric "evlddx $RT, $src", IIC_LdStLoad, 4600b57cec5SDimitry Andric [(set f64:$RT, (load xaddr:$src))]>; 461*06c3fb27SDimitry Andricdef EVLDH : EVXForm_D<773, (outs sperc:$RT), (ins (spe8dis $D, $RA):$dst), 4620b57cec5SDimitry Andric "evldh $RT, $dst", IIC_LdStLoad, []>; 463*06c3fb27SDimitry Andricdef EVLDHX : EVXForm_1<772, (outs sperc:$RT), (ins (memrr $RA, $RB):$src), 4640b57cec5SDimitry Andric "evldhx $RT, $src", IIC_LdStLoad, []>; 465*06c3fb27SDimitry Andricdef EVLDW : EVXForm_D<771, (outs sperc:$RT), (ins (spe8dis $D, $RA):$dst), 4660b57cec5SDimitry Andric "evldw $RT, $dst", IIC_LdStLoad, 4670b57cec5SDimitry Andric []>; 468*06c3fb27SDimitry Andricdef EVLDWX : EVXForm_1<770, (outs sperc:$RT), (ins (memrr $RA, $RB):$src), 4690b57cec5SDimitry Andric "evldwx $RT, $src", IIC_LdStLoad, 4700b57cec5SDimitry Andric []>; 471*06c3fb27SDimitry Andricdef EVLHHESPLAT : EVXForm_D<777, (outs sperc:$RT), (ins (spe2dis $D, $RA):$dst), 4720b57cec5SDimitry Andric "evlhhesplat $RT, $dst", IIC_LdStLoad, []>; 473*06c3fb27SDimitry Andricdef EVLHHESPLATX : EVXForm_1<776, (outs sperc:$RT), (ins (memrr $RA, $RB):$src), 4740b57cec5SDimitry Andric "evlhhesplatx $RT, $src", IIC_LdStLoad, []>; 475*06c3fb27SDimitry Andricdef EVLHHOUSPLAT : EVXForm_D<781, (outs sperc:$RT), (ins (spe2dis $D, $RA):$dst), 4760b57cec5SDimitry Andric "evlhhousplat $RT, $dst", IIC_LdStLoad, []>; 477*06c3fb27SDimitry Andricdef EVLHHOUSPLATX : EVXForm_1<780, (outs sperc:$RT), (ins (memrr $RA, $RB):$src), 4780b57cec5SDimitry Andric "evlhhousplatx $RT, $src", IIC_LdStLoad, []>; 479*06c3fb27SDimitry Andricdef EVLHHOSSPLAT : EVXForm_D<783, (outs sperc:$RT), (ins (spe2dis $D, $RA):$dst), 4800b57cec5SDimitry Andric "evlhhossplat $RT, $dst", IIC_LdStLoad, []>; 481*06c3fb27SDimitry Andricdef EVLHHOSSPLATX : EVXForm_1<782, (outs sperc:$RT), (ins (memrr $RA, $RB):$src), 4820b57cec5SDimitry Andric "evlhhossplatx $RT, $src", IIC_LdStLoad, []>; 483*06c3fb27SDimitry Andricdef EVLWHE : EVXForm_D<785, (outs sperc:$RT), (ins (spe4dis $D, $RA):$dst), 4840b57cec5SDimitry Andric "evlwhe $RT, $dst", IIC_LdStLoad, []>; 485*06c3fb27SDimitry Andricdef EVLWHEX : EVXForm_1<784, (outs sperc:$RT), (ins (memrr $RA, $RB):$src), 4860b57cec5SDimitry Andric "evlwhex $RT, $src", IIC_LdStLoad, []>; 487*06c3fb27SDimitry Andricdef EVLWHOS : EVXForm_D<791, (outs sperc:$RT), (ins (spe4dis $D, $RA):$dst), 4880b57cec5SDimitry Andric "evlwhos $RT, $dst", IIC_LdStLoad, []>; 489*06c3fb27SDimitry Andricdef EVLWHOSX : EVXForm_1<790, (outs sperc:$RT), (ins (memrr $RA, $RB):$src), 4900b57cec5SDimitry Andric "evlwhosx $RT, $src", IIC_LdStLoad, []>; 491*06c3fb27SDimitry Andricdef EVLWHOU : EVXForm_D<789, (outs sperc:$RT), (ins (spe4dis $D, $RA):$dst), 4920b57cec5SDimitry Andric "evlwhou $RT, $dst", IIC_LdStLoad, []>; 493*06c3fb27SDimitry Andricdef EVLWHOUX : EVXForm_1<788, (outs sperc:$RT), (ins (memrr $RA, $RB):$src), 4940b57cec5SDimitry Andric "evlwhoux $RT, $src", IIC_LdStLoad, []>; 495*06c3fb27SDimitry Andricdef EVLWHSPLAT : EVXForm_D<797, (outs sperc:$RT), (ins (spe4dis $D, $RA):$dst), 4960b57cec5SDimitry Andric "evlwhsplat $RT, $dst", IIC_LdStLoad, []>; 497*06c3fb27SDimitry Andricdef EVLWHSPLATX : EVXForm_1<796, (outs sperc:$RT), (ins (memrr $RA, $RB):$src), 4980b57cec5SDimitry Andric "evlwhsplatx $RT, $src", IIC_LdStLoad, []>; 499*06c3fb27SDimitry Andricdef EVLWWSPLAT : EVXForm_D<793, (outs sperc:$RT), (ins (spe4dis $D, $RA):$dst), 5000b57cec5SDimitry Andric "evlwwsplat $RT, $dst", IIC_LdStLoad, []>; 501*06c3fb27SDimitry Andricdef EVLWWSPLATX : EVXForm_1<792, (outs sperc:$RT), (ins (memrr $RA, $RB):$src), 5020b57cec5SDimitry Andric "evlwwsplatx $RT, $src", IIC_LdStLoad, []>; 5030b57cec5SDimitry Andric 5040b57cec5SDimitry Andricdef EVMERGEHI : EVXForm_1<556, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5050b57cec5SDimitry Andric "evmergehi $RT, $RA, $RB", IIC_VecGeneral, []>; 5060b57cec5SDimitry Andricdef EVMERGELO : EVXForm_1<557, (outs sperc:$RT), (ins gprc:$RA, gprc:$RB), 5070b57cec5SDimitry Andric "evmergelo $RT, $RA, $RB", IIC_VecGeneral, []>; 5080b57cec5SDimitry Andricdef EVMERGEHILO : EVXForm_1<558, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5090b57cec5SDimitry Andric "evmergehilo $RT, $RA, $RB", IIC_VecGeneral, []>; 5100b57cec5SDimitry Andricdef EVMERGELOHI : EVXForm_1<559, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5110b57cec5SDimitry Andric "evmergelohi $RT, $RA, $RB", IIC_VecGeneral, []>; 5120b57cec5SDimitry Andric 5130b57cec5SDimitry Andricdef EVMHEGSMFAA : EVXForm_1<1323, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5140b57cec5SDimitry Andric "evmhegsmfaa $RT, $RA, $RB", IIC_VecComplex, []>; 5150b57cec5SDimitry Andricdef EVMHEGSMFAN : EVXForm_1<1451, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5160b57cec5SDimitry Andric "evmhegsmfan $RT, $RA, $RB", IIC_VecComplex, []>; 5170b57cec5SDimitry Andricdef EVMHEGSMIAA : EVXForm_1<1321, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5180b57cec5SDimitry Andric "evmhegsmiaa $RT, $RA, $RB", IIC_VecComplex, []>; 5190b57cec5SDimitry Andricdef EVMHEGSMIAN : EVXForm_1<1449, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5200b57cec5SDimitry Andric "evmhegsmian $RT, $RA, $RB", IIC_VecComplex, []>; 5210b57cec5SDimitry Andricdef EVMHEGUMIAA : EVXForm_1<1320, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5220b57cec5SDimitry Andric "evmhegumiaa $RT, $RA, $RB", IIC_VecComplex, []>; 5230b57cec5SDimitry Andricdef EVMHEGUMIAN : EVXForm_1<1448, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5240b57cec5SDimitry Andric "evmhegumian $RT, $RA, $RB", IIC_VecComplex, []>; 5250b57cec5SDimitry Andric 5260b57cec5SDimitry Andricdef EVMHESMF : EVXForm_1<1035, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5270b57cec5SDimitry Andric "evmhesmf $RT, $RA, $RB", IIC_VecComplex, []>; 5280b57cec5SDimitry Andricdef EVMHESMFA : EVXForm_1<1067, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5290b57cec5SDimitry Andric "evmhesmfa $RT, $RA, $RB", IIC_VecComplex, []>; 5300b57cec5SDimitry Andricdef EVMHESMFAAW : EVXForm_1<1291, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5310b57cec5SDimitry Andric "evmhesmfaaw $RT, $RA, $RB", IIC_VecComplex, []>; 5320b57cec5SDimitry Andricdef EVMHESMFANW : EVXForm_1<1419, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5330b57cec5SDimitry Andric "evmhesmfanw $RT, $RA, $RB", IIC_VecComplex, []>; 5340b57cec5SDimitry Andricdef EVMHESMI : EVXForm_1<1033, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5350b57cec5SDimitry Andric "evmhesmi $RT, $RA, $RB", IIC_VecComplex, []>; 5360b57cec5SDimitry Andricdef EVMHESMIA : EVXForm_1<1065, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5370b57cec5SDimitry Andric "evmhesmia $RT, $RA, $RB", IIC_VecComplex, []>; 5380b57cec5SDimitry Andricdef EVMHESMIAAW : EVXForm_1<1289, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5390b57cec5SDimitry Andric "evmhesmiaaw $RT, $RA, $RB", IIC_VecComplex, []>; 5400b57cec5SDimitry Andricdef EVMHESMIANW : EVXForm_1<1417, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5410b57cec5SDimitry Andric "evmhesmianw $RT, $RA, $RB", IIC_VecComplex, []>; 5420b57cec5SDimitry Andricdef EVMHESSF : EVXForm_1<1027, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5430b57cec5SDimitry Andric "evmhessf $RT, $RA, $RB", IIC_VecComplex, []>; 5440b57cec5SDimitry Andricdef EVMHESSFA : EVXForm_1<1059, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5450b57cec5SDimitry Andric "evmhessfa $RT, $RA, $RB", IIC_VecComplex, []>; 5460b57cec5SDimitry Andricdef EVMHESSFAAW : EVXForm_1<1283, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5470b57cec5SDimitry Andric "evmhessfaaw $RT, $RA, $RB", IIC_VecComplex, []>; 5480b57cec5SDimitry Andricdef EVMHESSFANW : EVXForm_1<1411, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5490b57cec5SDimitry Andric "evmhessfanw $RT, $RA, $RB", IIC_VecComplex, []>; 5500b57cec5SDimitry Andricdef EVMHESSIAAW : EVXForm_1<1281, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5510b57cec5SDimitry Andric "evmhessiaaw $RT, $RA, $RB", IIC_VecComplex, []>; 5520b57cec5SDimitry Andricdef EVMHESSIANW : EVXForm_1<1409, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5530b57cec5SDimitry Andric "evmhessianw $RT, $RA, $RB", IIC_VecComplex, []>; 5540b57cec5SDimitry Andricdef EVMHEUMI : EVXForm_1<1032, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5550b57cec5SDimitry Andric "evmheumi $RT, $RA, $RB", IIC_VecComplex, []>; 5560b57cec5SDimitry Andricdef EVMHEUMIA : EVXForm_1<1064, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5570b57cec5SDimitry Andric "evmheumia $RT, $RA, $RB", IIC_VecComplex, []>; 5580b57cec5SDimitry Andricdef EVMHEUMIAAW : EVXForm_1<1288, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5590b57cec5SDimitry Andric "evmheumiaaw $RT, $RA, $RB", IIC_VecComplex, []>; 5600b57cec5SDimitry Andricdef EVMHEUMIANW : EVXForm_1<1416, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5610b57cec5SDimitry Andric "evmheumianw $RT, $RA, $RB", IIC_VecComplex, []>; 5620b57cec5SDimitry Andricdef EVMHEUSIAAW : EVXForm_1<1280, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5630b57cec5SDimitry Andric "evmheusiaaw $RT, $RA, $RB", IIC_VecComplex, []>; 5640b57cec5SDimitry Andricdef EVMHEUSIANW : EVXForm_1<1408, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5650b57cec5SDimitry Andric "evmheusianw $RT, $RA, $RB", IIC_VecComplex, []>; 5660b57cec5SDimitry Andricdef EVMHOGSMFAA : EVXForm_1<1327, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5670b57cec5SDimitry Andric "evmhogsmfaa $RT, $RA, $RB", IIC_VecComplex, []>; 5680b57cec5SDimitry Andricdef EVMHOGSMFAN : EVXForm_1<1455, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5690b57cec5SDimitry Andric "evmhogsmfan $RT, $RA, $RB", IIC_VecComplex, []>; 5700b57cec5SDimitry Andricdef EVMHOGSMIAA : EVXForm_1<1325, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5710b57cec5SDimitry Andric "evmhogsmiaa $RT, $RA, $RB", IIC_VecComplex, []>; 5720b57cec5SDimitry Andricdef EVMHOGSMIAN : EVXForm_1<1453, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5730b57cec5SDimitry Andric "evmhogsmian $RT, $RA, $RB", IIC_VecComplex, []>; 5740b57cec5SDimitry Andricdef EVMHOGUMIAA : EVXForm_1<1324, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5750b57cec5SDimitry Andric "evmhogumiaa $RT, $RA, $RB", IIC_VecComplex, []>; 5760b57cec5SDimitry Andricdef EVMHOGUMIAN : EVXForm_1<1452, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5770b57cec5SDimitry Andric "evmhogumian $RT, $RA, $RB", IIC_VecComplex, []>; 5780b57cec5SDimitry Andricdef EVMHOSMF : EVXForm_1<1039, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5790b57cec5SDimitry Andric "evmhosmf $RT, $RA, $RB", IIC_VecComplex, []>; 5800b57cec5SDimitry Andricdef EVMHOSMFA : EVXForm_1<1071, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5810b57cec5SDimitry Andric "evmhosmfa $RT, $RA, $RB", IIC_VecComplex, []>; 5820b57cec5SDimitry Andricdef EVMHOSMFAAW : EVXForm_1<1295, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5830b57cec5SDimitry Andric "evmhosmfaaw $RT, $RA, $RB", IIC_VecComplex, []>; 5840b57cec5SDimitry Andricdef EVMHOSMFANW : EVXForm_1<1423, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5850b57cec5SDimitry Andric "evmhosmfanw $RT, $RA, $RB", IIC_VecComplex, []>; 5860b57cec5SDimitry Andricdef EVMHOSMI : EVXForm_1<1037, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5870b57cec5SDimitry Andric "evmhosmi $RT, $RA, $RB", IIC_VecComplex, []>; 5880b57cec5SDimitry Andricdef EVMHOSMIA : EVXForm_1<1069, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5890b57cec5SDimitry Andric "evmhosmia $RT, $RA, $RB", IIC_VecComplex, []>; 5900b57cec5SDimitry Andricdef EVMHOSMIAAW : EVXForm_1<1293, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5910b57cec5SDimitry Andric "evmhosmiaaw $RT, $RA, $RB", IIC_VecComplex, []>; 5920b57cec5SDimitry Andricdef EVMHOSMIANW : EVXForm_1<1421, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5930b57cec5SDimitry Andric "evmhosmianw $RT, $RA, $RB", IIC_VecComplex, []>; 5940b57cec5SDimitry Andricdef EVMHOSSF : EVXForm_1<1031, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5950b57cec5SDimitry Andric "evmhossf $RT, $RA, $RB", IIC_VecComplex, []>; 5960b57cec5SDimitry Andricdef EVMHOSSFA : EVXForm_1<1063, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5970b57cec5SDimitry Andric "evmhossfa $RT, $RA, $RB", IIC_VecComplex, []>; 5980b57cec5SDimitry Andricdef EVMHOSSFAAW : EVXForm_1<1287, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 5990b57cec5SDimitry Andric "evmhossfaaw $RT, $RA, $RB", IIC_VecComplex, []>; 6000b57cec5SDimitry Andricdef EVMHOSSFANW : EVXForm_1<1415, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6010b57cec5SDimitry Andric "evmhossfanw $RT, $RA, $RB", IIC_VecComplex, []>; 6020b57cec5SDimitry Andricdef EVMHOSSIAAW : EVXForm_1<1285, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6030b57cec5SDimitry Andric "evmhossiaaw $RT, $RA, $RB", IIC_VecComplex, []>; 6040b57cec5SDimitry Andricdef EVMHOSSIANW : EVXForm_1<1413, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6050b57cec5SDimitry Andric "evmhossianw $RT, $RA, $RB", IIC_VecComplex, []>; 6060b57cec5SDimitry Andricdef EVMHOUMI : EVXForm_1<1036, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6070b57cec5SDimitry Andric "evmhoumi $RT, $RA, $RB", IIC_VecComplex, []>; 6080b57cec5SDimitry Andricdef EVMHOUMIA : EVXForm_1<1068, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6090b57cec5SDimitry Andric "evmhoumia $RT, $RA, $RB", IIC_VecComplex, []>; 6100b57cec5SDimitry Andricdef EVMHOUMIAAW : EVXForm_1<1292, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6110b57cec5SDimitry Andric "evmhoumiaaw $RT, $RA, $RB", IIC_VecComplex, []>; 6120b57cec5SDimitry Andricdef EVMHOUMIANW : EVXForm_1<1420, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6130b57cec5SDimitry Andric "evmhoumianw $RT, $RA, $RB", IIC_VecComplex, []>; 6140b57cec5SDimitry Andricdef EVMHOUSIAAW : EVXForm_1<1284, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6150b57cec5SDimitry Andric "evmhousiaaw $RT, $RA, $RB", IIC_VecComplex, []>; 6160b57cec5SDimitry Andricdef EVMHOUSIANW : EVXForm_1<1412, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6170b57cec5SDimitry Andric "evmhousianw $RT, $RA, $RB", IIC_VecComplex, []>; 6180b57cec5SDimitry Andric 6190b57cec5SDimitry Andricdef EVMRA : EVXForm_2<1220, (outs sperc:$RT), (ins sperc:$RA), 6200b57cec5SDimitry Andric "evmra $RT, $RA", IIC_VecComplex, []>; 6210b57cec5SDimitry Andric 6220b57cec5SDimitry Andricdef EVMWHSMF : EVXForm_1<1103, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6230b57cec5SDimitry Andric "evmwhsmf $RT, $RA, $RB", IIC_VecComplex, []>; 6240b57cec5SDimitry Andricdef EVMWHSMFA : EVXForm_1<1135, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6250b57cec5SDimitry Andric "evmwhsmfa $RT, $RA, $RB", IIC_VecComplex, []>; 6260b57cec5SDimitry Andricdef EVMWHSMI : EVXForm_1<1101, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6270b57cec5SDimitry Andric "evmwhsmi $RT, $RA, $RB", IIC_VecComplex, []>; 6280b57cec5SDimitry Andricdef EVMWHSMIA : EVXForm_1<1133, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6290b57cec5SDimitry Andric "evmwhsmia $RT, $RA, $RB", IIC_VecComplex, []>; 6300b57cec5SDimitry Andricdef EVMWHSSF : EVXForm_1<1095, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6310b57cec5SDimitry Andric "evmwhssf $RT, $RA, $RB", IIC_VecComplex, []>; 6320b57cec5SDimitry Andricdef EVMWHSSFA : EVXForm_1<1127, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6330b57cec5SDimitry Andric "evmwhssfa $RT, $RA, $RB", IIC_VecComplex, []>; 6340b57cec5SDimitry Andricdef EVMWHUMI : EVXForm_1<1100, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6350b57cec5SDimitry Andric "evmwhumi $RT, $RA, $RB", IIC_VecComplex, []>; 6360b57cec5SDimitry Andricdef EVMWHUMIA : EVXForm_1<1132, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6370b57cec5SDimitry Andric "evmwhumia $RT, $RA, $RB", IIC_VecComplex, []>; 6380b57cec5SDimitry Andricdef EVMWLSMIAAW : EVXForm_1<1353, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6390b57cec5SDimitry Andric "evmwlsmiaaw $RT, $RA, $RB", IIC_VecComplex, []>; 6400b57cec5SDimitry Andricdef EVMWLSMIANW : EVXForm_1<1481, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6410b57cec5SDimitry Andric "evmwlsmianw $RT, $RA, $RB", IIC_VecComplex, []>; 6420b57cec5SDimitry Andricdef EVMWLSSIAAW : EVXForm_1<1345, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6430b57cec5SDimitry Andric "evmwlssiaaw $RT, $RA, $RB", IIC_VecComplex, []>; 6440b57cec5SDimitry Andricdef EVMWLSSIANW : EVXForm_1<1473, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6450b57cec5SDimitry Andric "evmwlssianw $RT, $RA, $RB", IIC_VecComplex, []>; 6460b57cec5SDimitry Andricdef EVMWLUMI : EVXForm_1<1096, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6470b57cec5SDimitry Andric "evmwlumi $RT, $RA, $RB", IIC_VecComplex, 6480b57cec5SDimitry Andric []>; 6490b57cec5SDimitry Andricdef EVMWLUMIA : EVXForm_1<1128, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6500b57cec5SDimitry Andric "evmwlumia $RT, $RA, $RB", IIC_VecComplex, []>; 6510b57cec5SDimitry Andricdef EVMWLUMIAAW : EVXForm_1<1352, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6520b57cec5SDimitry Andric "evmwlumiaaw $RT, $RA, $RB", IIC_VecComplex, []>; 6530b57cec5SDimitry Andricdef EVMWLUMIANW : EVXForm_1<1480, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6540b57cec5SDimitry Andric "evmwlumianw $RT, $RA, $RB", IIC_VecComplex, []>; 6550b57cec5SDimitry Andricdef EVMWLUSIAAW : EVXForm_1<1344, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6560b57cec5SDimitry Andric "evmwlusiaaw $RT, $RA, $RB", IIC_VecComplex, []>; 6570b57cec5SDimitry Andricdef EVMWLUSIANW : EVXForm_1<1472, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6580b57cec5SDimitry Andric "evmwlusianw $RT, $RA, $RB", IIC_VecComplex, []>; 6590b57cec5SDimitry Andricdef EVMWSMF : EVXForm_1<1115, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6600b57cec5SDimitry Andric "evmwsmf $RT, $RA, $RB", IIC_VecComplex, []>; 6610b57cec5SDimitry Andricdef EVMWSMFA : EVXForm_1<1147, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6620b57cec5SDimitry Andric "evmwsmfa $RT, $RA, $RB", IIC_VecComplex, []>; 6630b57cec5SDimitry Andricdef EVMWSMFAA : EVXForm_1<1371, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6640b57cec5SDimitry Andric "evmwsmfaa $RT, $RA, $RB", IIC_VecComplex, []>; 6650b57cec5SDimitry Andricdef EVMWSMFAN : EVXForm_1<1499, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6660b57cec5SDimitry Andric "evmwsmfan $RT, $RA, $RB", IIC_VecComplex, []>; 6670b57cec5SDimitry Andricdef EVMWSMI : EVXForm_1<1113, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6680b57cec5SDimitry Andric "evmwsmi $RT, $RA, $RB", IIC_VecComplex, []>; 6690b57cec5SDimitry Andricdef EVMWSMIA : EVXForm_1<1145, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6700b57cec5SDimitry Andric "evmwsmia $RT, $RA, $RB", IIC_VecComplex, []>; 6710b57cec5SDimitry Andricdef EVMWSMIAA : EVXForm_1<1369, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6720b57cec5SDimitry Andric "evmwsmiaa $RT, $RA, $RB", IIC_VecComplex, []>; 6730b57cec5SDimitry Andricdef EVMWSMIAN : EVXForm_1<1497, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6740b57cec5SDimitry Andric "evmwsmian $RT, $RA, $RB", IIC_VecComplex, []>; 6750b57cec5SDimitry Andricdef EVMWSSF : EVXForm_1<1107, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6760b57cec5SDimitry Andric "evmwssf $RT, $RA, $RB", IIC_VecComplex, []>; 6770b57cec5SDimitry Andricdef EVMWSSFA : EVXForm_1<1139, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6780b57cec5SDimitry Andric "evmwssfa $RT, $RA, $RB", IIC_VecComplex, []>; 6790b57cec5SDimitry Andricdef EVMWSSFAA : EVXForm_1<1363, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6800b57cec5SDimitry Andric "evmwssfaa $RT, $RA, $RB", IIC_VecComplex, []>; 6810b57cec5SDimitry Andricdef EVMWSSFAN : EVXForm_1<1491, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6820b57cec5SDimitry Andric "evmwssfan $RT, $RA, $RB", IIC_VecComplex, []>; 6830b57cec5SDimitry Andricdef EVMWUMI : EVXForm_1<1112, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6840b57cec5SDimitry Andric "evmwumi $RT, $RA, $RB", IIC_VecComplex, []>; 6850b57cec5SDimitry Andricdef EVMWUMIA : EVXForm_1<1144, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6860b57cec5SDimitry Andric "evmwumia $RT, $RA, $RB", IIC_VecComplex, []>; 6870b57cec5SDimitry Andricdef EVMWUMIAA : EVXForm_1<1368, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6880b57cec5SDimitry Andric "evmwumiaa $RT, $RA, $RB", IIC_VecComplex, []>; 6890b57cec5SDimitry Andricdef EVMWUMIAN : EVXForm_1<1496, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6900b57cec5SDimitry Andric "evmwumian $RT, $RA, $RB", IIC_VecComplex, []>; 6910b57cec5SDimitry Andric 6920b57cec5SDimitry Andric 6930b57cec5SDimitry Andricdef EVNAND : EVXForm_1<542, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 6940b57cec5SDimitry Andric "evnand $RT, $RA, $RB", IIC_VecGeneral, 6950b57cec5SDimitry Andric []>; 6960b57cec5SDimitry Andric 6970b57cec5SDimitry Andricdef EVNEG : EVXForm_2<521, (outs sperc:$RT), (ins sperc:$RA), 6980b57cec5SDimitry Andric "evneg $RT, $RA", IIC_VecGeneral, 6990b57cec5SDimitry Andric []>; 7000b57cec5SDimitry Andric 7010b57cec5SDimitry Andricdef EVNOR : EVXForm_1<536, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 7020b57cec5SDimitry Andric "evnor $RT, $RA, $RB", IIC_VecGeneral, 7030b57cec5SDimitry Andric []>; 7040b57cec5SDimitry Andricdef EVOR : EVXForm_1<535, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 7050b57cec5SDimitry Andric "evor $RT, $RA, $RB", IIC_VecGeneral, 7060b57cec5SDimitry Andric []>; 7070b57cec5SDimitry Andricdef EVORC : EVXForm_1<539, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 7080b57cec5SDimitry Andric "evorc $RT, $RA, $RB", IIC_VecGeneral, 7090b57cec5SDimitry Andric []>; 7100b57cec5SDimitry Andric 7110b57cec5SDimitry Andricdef EVRLWI : EVXForm_1<554, (outs sperc:$RT), (ins sperc:$RA, u5imm:$RB), 7120b57cec5SDimitry Andric "evrlwi $RT, $RA, $RB", IIC_VecGeneral, []>; 7130b57cec5SDimitry Andricdef EVRLW : EVXForm_1<552, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 7140b57cec5SDimitry Andric "evrlw $RT, $RA, $RB", IIC_VecGeneral, 7150b57cec5SDimitry Andric []>; 7160b57cec5SDimitry Andric 7170b57cec5SDimitry Andricdef EVRNDW : EVXForm_2<524, (outs sperc:$RT), (ins sperc:$RA), 7180b57cec5SDimitry Andric "evrndw $RT, $RA", IIC_VecGeneral, []>; 7190b57cec5SDimitry Andric 7200b57cec5SDimitry Andricdef EVSEL : EVXForm_4<79, (outs sperc:$RT), 7210b57cec5SDimitry Andric (ins sperc:$RA, sperc:$RB, crrc:$crD), 7220b57cec5SDimitry Andric "evsel crD,$RT,$RA,$RB", IIC_VecGeneral, []>; 7230b57cec5SDimitry Andric 7240b57cec5SDimitry Andricdef EVSLWI : EVXForm_1<550, (outs sperc:$RT), (ins sperc:$RA, u5imm:$RB), 7250b57cec5SDimitry Andric "evslwi $RT, $RA, $RB", IIC_VecGeneral, []>; 7260b57cec5SDimitry Andricdef EVSLW : EVXForm_1<548, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 7270b57cec5SDimitry Andric "evslw $RT, $RA, $RB", IIC_VecGeneral, 7280b57cec5SDimitry Andric []>; 7290b57cec5SDimitry Andric 7300b57cec5SDimitry Andricdef EVSPLATFI : EVXForm_2<555, (outs sperc:$RT), (ins s5imm:$RA), 7310b57cec5SDimitry Andric "evsplatfi $RT, $RA", IIC_VecGeneral, []>; 7320b57cec5SDimitry Andricdef EVSPLATI : EVXForm_2<553, (outs sperc:$RT), (ins s5imm:$RA), 7330b57cec5SDimitry Andric "evsplati $RT, $RA", IIC_VecGeneral, []>; 7340b57cec5SDimitry Andric 7350b57cec5SDimitry Andricdef EVSRWIS : EVXForm_1<547, (outs sperc:$RT), (ins sperc:$RA, u5imm:$RB), 7360b57cec5SDimitry Andric "evsrwis $RT, $RA, $RB", IIC_VecGeneral, []>; 7370b57cec5SDimitry Andricdef EVSRWIU : EVXForm_1<546, (outs sperc:$RT), (ins sperc:$RA, u5imm:$RB), 7380b57cec5SDimitry Andric "evsrwiu $RT, $RA, $RB", IIC_VecGeneral, []>; 7390b57cec5SDimitry Andricdef EVSRWS : EVXForm_1<545, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 7400b57cec5SDimitry Andric "evsrws $RT, $RA, $RB", IIC_VecGeneral, 7410b57cec5SDimitry Andric []>; 7420b57cec5SDimitry Andricdef EVSRWU : EVXForm_1<544, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 7430b57cec5SDimitry Andric "evsrwu $RT, $RA, $RB", IIC_VecGeneral, 7440b57cec5SDimitry Andric []>; 7450b57cec5SDimitry Andric 746*06c3fb27SDimitry Andricdef EVSTDD : EVXForm_D<801, (outs), (ins sperc:$RT, (spe8dis $D, $RA):$dst), 7470b57cec5SDimitry Andric "evstdd $RT, $dst", IIC_LdStStore, 7480b57cec5SDimitry Andric [(store f64:$RT, iaddr:$dst)]>; 749*06c3fb27SDimitry Andricdef EVSTDDX : EVXForm_1<800, (outs), (ins sperc:$RT, (memrr $RA, $RB):$dst), 7500b57cec5SDimitry Andric "evstddx $RT, $dst", IIC_LdStStore, 7510b57cec5SDimitry Andric [(store f64:$RT, xaddr:$dst)]>; 752*06c3fb27SDimitry Andricdef EVSTDH : EVXForm_D<805, (outs), (ins sperc:$RT, (spe8dis $D, $RA):$dst), 7530b57cec5SDimitry Andric "evstdh $RT, $dst", IIC_LdStStore, []>; 754*06c3fb27SDimitry Andricdef EVSTDHX : EVXForm_1<804, (outs), (ins sperc:$RT, (memrr $RA, $RB):$dst), 7550b57cec5SDimitry Andric "evstdhx $RT, $dst", IIC_LdStStore, []>; 756*06c3fb27SDimitry Andricdef EVSTDW : EVXForm_D<803, (outs), (ins sperc:$RT, (spe8dis $D, $RA):$dst), 7570b57cec5SDimitry Andric "evstdw $RT, $dst", IIC_LdStStore, 7580b57cec5SDimitry Andric []>; 759*06c3fb27SDimitry Andricdef EVSTDWX : EVXForm_1<802, (outs), (ins sperc:$RT, (memrr $RA, $RB):$dst), 7600b57cec5SDimitry Andric "evstdwx $RT, $dst", IIC_LdStStore, 7610b57cec5SDimitry Andric []>; 762*06c3fb27SDimitry Andricdef EVSTWHE : EVXForm_D<817, (outs), (ins sperc:$RT, (spe4dis $D, $RA):$dst), 7630b57cec5SDimitry Andric "evstwhe $RT, $dst", IIC_LdStStore, []>; 764*06c3fb27SDimitry Andricdef EVSTWHEX : EVXForm_1<816, (outs), (ins sperc:$RT, (memrr $RA, $RB):$dst), 7650b57cec5SDimitry Andric "evstwhex $RT, $dst", IIC_LdStStore, []>; 766*06c3fb27SDimitry Andricdef EVSTWHO : EVXForm_D<821, (outs), (ins sperc:$RT, (spe4dis $D, $RA):$dst), 7670b57cec5SDimitry Andric "evstwho $RT, $dst", IIC_LdStStore, []>; 768*06c3fb27SDimitry Andricdef EVSTWHOX : EVXForm_1<820, (outs), (ins sperc:$RT, (memrr $RA, $RB):$dst), 7690b57cec5SDimitry Andric "evstwhox $RT, $dst", IIC_LdStStore, []>; 770*06c3fb27SDimitry Andricdef EVSTWWE : EVXForm_D<825, (outs), (ins sperc:$RT, (spe4dis $D, $RA):$dst), 7710b57cec5SDimitry Andric "evstwwe $RT, $dst", IIC_LdStStore, []>; 772*06c3fb27SDimitry Andricdef EVSTWWEX : EVXForm_1<824, (outs), (ins sperc:$RT, (memrr $RA, $RB):$dst), 7730b57cec5SDimitry Andric "evstwwex $RT, $dst", IIC_LdStStore, []>; 774*06c3fb27SDimitry Andricdef EVSTWWO : EVXForm_D<829, (outs), (ins sperc:$RT, (spe4dis $D, $RA):$dst), 7750b57cec5SDimitry Andric "evstwwo $RT, $dst", IIC_LdStStore, []>; 776*06c3fb27SDimitry Andricdef EVSTWWOX : EVXForm_1<828, (outs), (ins sperc:$RT, (memrr $RA, $RB):$dst), 7770b57cec5SDimitry Andric "evstwwox $RT, $dst", IIC_LdStStore, []>; 7780b57cec5SDimitry Andric 7790b57cec5SDimitry Andricdef EVSUBFSSIAAW : EVXForm_2<1219, (outs sperc:$RT), (ins sperc:$RA), 7800b57cec5SDimitry Andric "evsubfssiaaw $RT, $RA", IIC_VecComplex, []>; 7810b57cec5SDimitry Andricdef EVSUBFSMIAAW : EVXForm_2<1227, (outs sperc:$RT), (ins sperc:$RA), 7820b57cec5SDimitry Andric "evsubfsmiaaw $RT, $RA", IIC_VecComplex, []>; 7830b57cec5SDimitry Andricdef EVSUBFUMIAAW : EVXForm_2<1226, (outs sperc:$RT), (ins sperc:$RA), 7840b57cec5SDimitry Andric "evsubfumiaaw $RT, $RA", IIC_VecComplex, []>; 7850b57cec5SDimitry Andricdef EVSUBFUSIAAW : EVXForm_2<1218, (outs sperc:$RT), (ins sperc:$RA), 7860b57cec5SDimitry Andric "evsubfusiaaw $RT, $RA", IIC_VecComplex, []>; 7870b57cec5SDimitry Andricdef EVSUBFW : EVXForm_1<516, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 7880b57cec5SDimitry Andric "evsubfw $RT, $RA, $RB", IIC_VecGeneral, 7890b57cec5SDimitry Andric []>; 7900b57cec5SDimitry Andricdef EVSUBIFW : EVXForm_1<518, (outs sperc:$RT), (ins u5imm:$RA, sperc:$RB), 7910b57cec5SDimitry Andric "evsubifw $RT, $RA, $RB", IIC_VecGeneral, []>; 7920b57cec5SDimitry Andricdef EVXOR : EVXForm_1<534, (outs sperc:$RT), (ins sperc:$RA, sperc:$RB), 7930b57cec5SDimitry Andric "evxor $RT, $RA, $RB", IIC_VecGeneral, 7940b57cec5SDimitry Andric []>; 7950b57cec5SDimitry Andric 7960b57cec5SDimitry Andriclet isAsmParserOnly = 1 in { 7970b57cec5SDimitry Andric// Identical to the integer Load/Stores, but to handle floats 798*06c3fb27SDimitry Andricdef SPELWZ : DForm_1<32, (outs spe4rc:$RST), (ins (memri $D, $RA):$addr), 799*06c3fb27SDimitry Andric "lwz $RST, $addr", IIC_LdStLoad, 800*06c3fb27SDimitry Andric [(set f32:$RST, (load iaddr:$addr))]>; 801*06c3fb27SDimitry Andricdef SPELWZX : XForm_1<31, 23, (outs spe4rc:$RST), (ins (memrr $RA, $RB):$addr), 802*06c3fb27SDimitry Andric "lwzx $RST, $addr", IIC_LdStLoad, 803*06c3fb27SDimitry Andric [(set f32:$RST, (load xaddr:$addr))]>; 804*06c3fb27SDimitry Andricdef SPESTW : DForm_1<36, (outs), (ins spe4rc:$RST, (memri $D, $RA):$addr), 805*06c3fb27SDimitry Andric "stw $RST, $addr", IIC_LdStStore, 806*06c3fb27SDimitry Andric [(store f32:$RST, iaddr:$addr)]>; 807*06c3fb27SDimitry Andricdef SPESTWX : XForm_8<31, 151, (outs), (ins spe4rc:$RST, (memrr $RA, $RB):$addr), 808*06c3fb27SDimitry Andric "stwx $RST, $addr", IIC_LdStStore, 809*06c3fb27SDimitry Andric [(store f32:$RST, xaddr:$addr)]>; 8100b57cec5SDimitry Andric} 8110b57cec5SDimitry Andric 8120b57cec5SDimitry Andric} // HasSPE 8130b57cec5SDimitry Andric 8140b57cec5SDimitry Andriclet Predicates = [HasSPE] in { 8150b57cec5SDimitry Andricdef SELECT_CC_SPE4 : PPCCustomInserterPseudo<(outs spe4rc:$dst), 8160b57cec5SDimitry Andric (ins crrc:$cond, spe4rc:$T, spe4rc:$F, 8170b57cec5SDimitry Andric i32imm:$BROPC), "#SELECT_CC_SPE4", 8180b57cec5SDimitry Andric []>; 8190b57cec5SDimitry Andricdef SELECT_CC_SPE : PPCCustomInserterPseudo<(outs sperc:$dst), 8200b57cec5SDimitry Andric (ins crrc:$cond, sperc:$T, sperc:$F, i32imm:$BROPC), 8210b57cec5SDimitry Andric "#SELECT_CC_SPE", 8220b57cec5SDimitry Andric []>; 8230b57cec5SDimitry Andricdef SELECT_SPE4 : PPCCustomInserterPseudo<(outs spe4rc:$dst), (ins crbitrc:$cond, 8240b57cec5SDimitry Andric spe4rc:$T, spe4rc:$F), "#SELECT_SPE4", 8250b57cec5SDimitry Andric [(set f32:$dst, (select i1:$cond, f32:$T, f32:$F))]>; 8260b57cec5SDimitry Andricdef SELECT_SPE : PPCCustomInserterPseudo<(outs sperc:$dst), (ins crbitrc:$cond, 8270b57cec5SDimitry Andric sperc:$T, sperc:$F), "#SELECT_SPE", 8280b57cec5SDimitry Andric [(set f64:$dst, (select i1:$cond, f64:$T, f64:$F))]>; 8290b57cec5SDimitry Andric 8300b57cec5SDimitry Andricdef : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETLT)), 8310b57cec5SDimitry Andric (SELECT_SPE4 (CRANDC $lhs, $rhs), $tval, $fval)>; 8320b57cec5SDimitry Andricdef : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETULT)), 8330b57cec5SDimitry Andric (SELECT_SPE4 (CRANDC $rhs, $lhs), $tval, $fval)>; 8340b57cec5SDimitry Andricdef : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETLE)), 8350b57cec5SDimitry Andric (SELECT_SPE4 (CRORC $lhs, $rhs), $tval, $fval)>; 8360b57cec5SDimitry Andricdef : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETULE)), 8370b57cec5SDimitry Andric (SELECT_SPE4 (CRORC $rhs, $lhs), $tval, $fval)>; 8380b57cec5SDimitry Andricdef : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETEQ)), 8390b57cec5SDimitry Andric (SELECT_SPE4 (CREQV $lhs, $rhs), $tval, $fval)>; 8400b57cec5SDimitry Andricdef : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETGE)), 8410b57cec5SDimitry Andric (SELECT_SPE4 (CRORC $rhs, $lhs), $tval, $fval)>; 8420b57cec5SDimitry Andricdef : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETUGE)), 8430b57cec5SDimitry Andric (SELECT_SPE4 (CRORC $lhs, $rhs), $tval, $fval)>; 8440b57cec5SDimitry Andricdef : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETGT)), 8450b57cec5SDimitry Andric (SELECT_SPE4 (CRANDC $rhs, $lhs), $tval, $fval)>; 8460b57cec5SDimitry Andricdef : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETUGT)), 8470b57cec5SDimitry Andric (SELECT_SPE4 (CRANDC $lhs, $rhs), $tval, $fval)>; 8480b57cec5SDimitry Andricdef : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETNE)), 8490b57cec5SDimitry Andric (SELECT_SPE4 (CRXOR $lhs, $rhs), $tval, $fval)>; 8500b57cec5SDimitry Andric 8510b57cec5SDimitry Andricdef : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETLT)), 8520b57cec5SDimitry Andric (SELECT_SPE (CRANDC $lhs, $rhs), $tval, $fval)>; 8530b57cec5SDimitry Andricdef : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETULT)), 8540b57cec5SDimitry Andric (SELECT_SPE (CRANDC $rhs, $lhs), $tval, $fval)>; 8550b57cec5SDimitry Andricdef : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETLE)), 8560b57cec5SDimitry Andric (SELECT_SPE (CRORC $lhs, $rhs), $tval, $fval)>; 8570b57cec5SDimitry Andricdef : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETULE)), 8580b57cec5SDimitry Andric (SELECT_SPE (CRORC $rhs, $lhs), $tval, $fval)>; 8590b57cec5SDimitry Andricdef : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETEQ)), 8600b57cec5SDimitry Andric (SELECT_SPE (CREQV $lhs, $rhs), $tval, $fval)>; 8610b57cec5SDimitry Andricdef : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETGE)), 8620b57cec5SDimitry Andric (SELECT_SPE (CRORC $rhs, $lhs), $tval, $fval)>; 8630b57cec5SDimitry Andricdef : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETUGE)), 8640b57cec5SDimitry Andric (SELECT_SPE (CRORC $lhs, $rhs), $tval, $fval)>; 8650b57cec5SDimitry Andricdef : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETGT)), 8660b57cec5SDimitry Andric (SELECT_SPE (CRANDC $rhs, $lhs), $tval, $fval)>; 8670b57cec5SDimitry Andricdef : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETUGT)), 8680b57cec5SDimitry Andric (SELECT_SPE (CRANDC $lhs, $rhs), $tval, $fval)>; 8690b57cec5SDimitry Andricdef : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETNE)), 8700b57cec5SDimitry Andric (SELECT_SPE (CRXOR $lhs, $rhs), $tval, $fval)>; 8710b57cec5SDimitry Andric 8720b57cec5SDimitry Andric 8730b57cec5SDimitry Andricdef : Pat<(f64 (PPCbuild_spe64 i32:$rB, i32:$rA)), 8740b57cec5SDimitry Andric (f64 (COPY_TO_REGCLASS (EVMERGELO $rA, $rB), SPERC))>; 8750b57cec5SDimitry Andric 8760b57cec5SDimitry Andricdef : Pat<(i32 (PPCextract_spe f64:$rA, 1)), 8770b57cec5SDimitry Andric (i32 (EXTRACT_SUBREG (EVMERGEHI $rA, $rA), sub_32))>; 8780b57cec5SDimitry Andricdef : Pat<(i32 (PPCextract_spe f64:$rA, 0)), 8790b57cec5SDimitry Andric (i32 (EXTRACT_SUBREG $rA, sub_32))>; 8800b57cec5SDimitry Andric 8810b57cec5SDimitry Andric} 882