1*9880d681SAndroid Build Coastguard Worker//===---- SparcInstrVIS.td - Visual Instruction Set extensions (VIS) -----===// 2*9880d681SAndroid Build Coastguard Worker// 3*9880d681SAndroid Build Coastguard Worker// The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker// 5*9880d681SAndroid Build Coastguard Worker// This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker// License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker// 8*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker// 10*9880d681SAndroid Build Coastguard Worker// This file contains instruction formats, definitions and patterns needed for 11*9880d681SAndroid Build Coastguard Worker// VIS, VIS II, VIS II instructions on SPARC. 12*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker// VIS Instruction Format. 15*9880d681SAndroid Build Coastguard Workerclass VISInstFormat<bits<9> opfval, dag outs, dag ins, string asmstr, 16*9880d681SAndroid Build Coastguard Worker list<dag> pattern> 17*9880d681SAndroid Build Coastguard Worker : F3_3<0b10, 0b110110, opfval, outs, ins, asmstr, pattern>; 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerclass VISInst<bits<9> opfval, string OpcStr, RegisterClass RC = DFPRegs> 20*9880d681SAndroid Build Coastguard Worker : VISInstFormat<opfval, 21*9880d681SAndroid Build Coastguard Worker (outs RC:$rd), (ins RC:$rs1, RC:$rs2), 22*9880d681SAndroid Build Coastguard Worker !strconcat(OpcStr, " $rs1, $rs2, $rd"), []>; 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker// VIS Instruction with integer destination register. 25*9880d681SAndroid Build Coastguard Workerclass VISInstID<bits<9> opfval, string OpcStr> 26*9880d681SAndroid Build Coastguard Worker : VISInstFormat<opfval, 27*9880d681SAndroid Build Coastguard Worker (outs I64Regs:$rd), (ins DFPRegs:$rs1, DFPRegs:$rs2), 28*9880d681SAndroid Build Coastguard Worker !strconcat(OpcStr, " $rs1, $rs2, $rd"), []>; 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker// For VIS Instructions with no operand. 31*9880d681SAndroid Build Coastguard Workerlet rd = 0, rs1 = 0, rs2 = 0 in 32*9880d681SAndroid Build Coastguard Workerclass VISInst0<bits<9> opfval, string asmstr> 33*9880d681SAndroid Build Coastguard Worker : VISInstFormat<opfval, (outs), (ins), asmstr, []>; 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Worker// For VIS Instructions with only rs1, rd operands. 36*9880d681SAndroid Build Coastguard Workerlet rs2 = 0 in 37*9880d681SAndroid Build Coastguard Workerclass VISInst1<bits<9> opfval, string OpcStr, RegisterClass RC = DFPRegs> 38*9880d681SAndroid Build Coastguard Worker : VISInstFormat<opfval, 39*9880d681SAndroid Build Coastguard Worker (outs RC:$rd), (ins RC:$rs1), 40*9880d681SAndroid Build Coastguard Worker !strconcat(OpcStr, " $rs1, $rd"), []>; 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker// For VIS Instructions with only rs2, rd operands. 43*9880d681SAndroid Build Coastguard Workerlet rs1 = 0 in 44*9880d681SAndroid Build Coastguard Workerclass VISInst2<bits<9> opfval, string OpcStr, RegisterClass RC = DFPRegs> 45*9880d681SAndroid Build Coastguard Worker : VISInstFormat<opfval, 46*9880d681SAndroid Build Coastguard Worker (outs RC:$rd), (ins RC:$rs2), 47*9880d681SAndroid Build Coastguard Worker !strconcat(OpcStr, " $rs2, $rd"), []>; 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker// For VIS Instructions with only rd operand. 50*9880d681SAndroid Build Coastguard Workerlet Constraints = "$rd = $f", rs1 = 0, rs2 = 0 in 51*9880d681SAndroid Build Coastguard Workerclass VISInstD<bits<9> opfval, string OpcStr, RegisterClass RC = DFPRegs> 52*9880d681SAndroid Build Coastguard Worker : VISInstFormat<opfval, 53*9880d681SAndroid Build Coastguard Worker (outs RC:$rd), (ins RC:$f), 54*9880d681SAndroid Build Coastguard Worker !strconcat(OpcStr, " $rd"), []>; 55*9880d681SAndroid Build Coastguard Worker 56*9880d681SAndroid Build Coastguard Worker// VIS 1 Instructions 57*9880d681SAndroid Build Coastguard Workerlet Predicates = [HasVIS] in { 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Workerdef FPADD16 : VISInst<0b001010000, "fpadd16">; 60*9880d681SAndroid Build Coastguard Workerdef FPADD16S : VISInst<0b001010001, "fpadd16s">; 61*9880d681SAndroid Build Coastguard Workerdef FPADD32 : VISInst<0b001010010, "fpadd32">; 62*9880d681SAndroid Build Coastguard Workerdef FPADD32S : VISInst<0b001010011, "fpadd32s">; 63*9880d681SAndroid Build Coastguard Workerdef FPSUB16 : VISInst<0b001010100, "fpsub16">; 64*9880d681SAndroid Build Coastguard Workerdef FPSUB16S : VISInst<0b001010101, "fpsub16S">; 65*9880d681SAndroid Build Coastguard Workerdef FPSUB32 : VISInst<0b001010110, "fpsub32">; 66*9880d681SAndroid Build Coastguard Workerdef FPSUB32S : VISInst<0b001010111, "fpsub32S">; 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Workerdef FPACK16 : VISInst2<0b000111011, "fpack16">; 69*9880d681SAndroid Build Coastguard Workerdef FPACK32 : VISInst <0b000111010, "fpack32">; 70*9880d681SAndroid Build Coastguard Workerdef FPACKFIX : VISInst2<0b000111101, "fpackfix">; 71*9880d681SAndroid Build Coastguard Workerdef FEXPAND : VISInst2<0b001001101, "fexpand">; 72*9880d681SAndroid Build Coastguard Workerdef FPMERGE : VISInst <0b001001011, "fpmerge">; 73*9880d681SAndroid Build Coastguard Worker 74*9880d681SAndroid Build Coastguard Workerdef FMUL8X16 : VISInst<0b000110001, "fmul8x16">; 75*9880d681SAndroid Build Coastguard Workerdef FMUL8X16AU : VISInst<0b000110011, "fmul8x16au">; 76*9880d681SAndroid Build Coastguard Workerdef FMUL8X16AL : VISInst<0b000110101, "fmul8x16al">; 77*9880d681SAndroid Build Coastguard Workerdef FMUL8SUX16 : VISInst<0b000110110, "fmul8sux16">; 78*9880d681SAndroid Build Coastguard Workerdef FMUL8ULX16 : VISInst<0b000110111, "fmul8ulx16">; 79*9880d681SAndroid Build Coastguard Workerdef FMULD8SUX16 : VISInst<0b000111000, "fmuld8sux16">; 80*9880d681SAndroid Build Coastguard Workerdef FMULD8ULX16 : VISInst<0b000111001, "fmuld8ulx16">; 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Workerdef ALIGNADDR : VISInst<0b000011000, "alignaddr", I64Regs>; 83*9880d681SAndroid Build Coastguard Workerdef ALIGNADDRL : VISInst<0b000011010, "alignaddrl", I64Regs>; 84*9880d681SAndroid Build Coastguard Workerdef FALIGNADATA : VISInst<0b001001000, "faligndata">; 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Workerdef FZERO : VISInstD<0b001100000, "fzero">; 87*9880d681SAndroid Build Coastguard Workerdef FZEROS : VISInstD<0b001100001, "fzeros", FPRegs>; 88*9880d681SAndroid Build Coastguard Workerdef FONE : VISInstD<0b001111110, "fone">; 89*9880d681SAndroid Build Coastguard Workerdef FONES : VISInstD<0b001111111, "fones", FPRegs>; 90*9880d681SAndroid Build Coastguard Workerdef FSRC1 : VISInst1<0b001110100, "fsrc1">; 91*9880d681SAndroid Build Coastguard Workerdef FSRC1S : VISInst1<0b001110101, "fsrc1s", FPRegs>; 92*9880d681SAndroid Build Coastguard Workerdef FSRC2 : VISInst2<0b001111000, "fsrc2">; 93*9880d681SAndroid Build Coastguard Workerdef FSRC2S : VISInst2<0b001111001, "fsrc2s", FPRegs>; 94*9880d681SAndroid Build Coastguard Workerdef FNOT1 : VISInst1<0b001101010, "fnot1">; 95*9880d681SAndroid Build Coastguard Workerdef FNOT1S : VISInst1<0b001101011, "fnot1s", FPRegs>; 96*9880d681SAndroid Build Coastguard Workerdef FNOT2 : VISInst2<0b001100110, "fnot2">; 97*9880d681SAndroid Build Coastguard Workerdef FNOT2S : VISInst2<0b001100111, "fnot2s", FPRegs>; 98*9880d681SAndroid Build Coastguard Workerdef FOR : VISInst<0b001111100, "for">; 99*9880d681SAndroid Build Coastguard Workerdef FORS : VISInst<0b001111101, "fors", FPRegs>; 100*9880d681SAndroid Build Coastguard Workerdef FNOR : VISInst<0b001100010, "fnor">; 101*9880d681SAndroid Build Coastguard Workerdef FNORS : VISInst<0b001100011, "fnors", FPRegs>; 102*9880d681SAndroid Build Coastguard Workerdef FAND : VISInst<0b001110000, "fand">; 103*9880d681SAndroid Build Coastguard Workerdef FANDS : VISInst<0b001110001, "fands", FPRegs>; 104*9880d681SAndroid Build Coastguard Workerdef FNAND : VISInst<0b001101110, "fnand">; 105*9880d681SAndroid Build Coastguard Workerdef FNANDS : VISInst<0b001101111, "fnands", FPRegs>; 106*9880d681SAndroid Build Coastguard Workerdef FXOR : VISInst<0b001101100, "fxor">; 107*9880d681SAndroid Build Coastguard Workerdef FXORS : VISInst<0b001101101, "fxors", FPRegs>; 108*9880d681SAndroid Build Coastguard Workerdef FXNOR : VISInst<0b001110010, "fxnor">; 109*9880d681SAndroid Build Coastguard Workerdef FXNORS : VISInst<0b001110011, "fxnors", FPRegs>; 110*9880d681SAndroid Build Coastguard Worker 111*9880d681SAndroid Build Coastguard Workerdef FORNOT1 : VISInst<0b001111010, "fornot1">; 112*9880d681SAndroid Build Coastguard Workerdef FORNOT1S : VISInst<0b001111011, "fornot1s", FPRegs>; 113*9880d681SAndroid Build Coastguard Workerdef FORNOT2 : VISInst<0b001110110, "fornot2">; 114*9880d681SAndroid Build Coastguard Workerdef FORNOT2S : VISInst<0b001110111, "fornot2s", FPRegs>; 115*9880d681SAndroid Build Coastguard Workerdef FANDNOT1 : VISInst<0b001101000, "fandnot1">; 116*9880d681SAndroid Build Coastguard Workerdef FANDNOT1S : VISInst<0b001101001, "fandnot1s", FPRegs>; 117*9880d681SAndroid Build Coastguard Workerdef FANDNOT2 : VISInst<0b001100100, "fandnot2">; 118*9880d681SAndroid Build Coastguard Workerdef FANDNOT2S : VISInst<0b001100101, "fandnot2s", FPRegs>; 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard Workerdef FCMPGT16 : VISInstID<0b000101000, "fcmpgt16">; 121*9880d681SAndroid Build Coastguard Workerdef FCMPGT32 : VISInstID<0b000101100, "fcmpgt32">; 122*9880d681SAndroid Build Coastguard Workerdef FCMPLE16 : VISInstID<0b000100000, "fcmple16">; 123*9880d681SAndroid Build Coastguard Workerdef FCMPLE32 : VISInstID<0b000100100, "fcmple32">; 124*9880d681SAndroid Build Coastguard Workerdef FCMPNE16 : VISInstID<0b000100010, "fcmpne16">; 125*9880d681SAndroid Build Coastguard Workerdef FCMPNE32 : VISInstID<0b000100110, "fcmpne32">; 126*9880d681SAndroid Build Coastguard Workerdef FCMPEQ16 : VISInstID<0b000101010, "fcmpeq16">; 127*9880d681SAndroid Build Coastguard Workerdef FCMPEQ32 : VISInstID<0b000101110, "fcmpeq32">; 128*9880d681SAndroid Build Coastguard Worker 129*9880d681SAndroid Build Coastguard Worker 130*9880d681SAndroid Build Coastguard Workerdef EDGE8 : VISInst<0b000000000, "edge8", I64Regs>; 131*9880d681SAndroid Build Coastguard Workerdef EDGE8L : VISInst<0b000000010, "edge8l", I64Regs>; 132*9880d681SAndroid Build Coastguard Workerdef EDGE16 : VISInst<0b000000100, "edge16", I64Regs>; 133*9880d681SAndroid Build Coastguard Workerdef EDGE16L : VISInst<0b000000110, "edge16l", I64Regs>; 134*9880d681SAndroid Build Coastguard Workerdef EDGE32 : VISInst<0b000001000, "edge32", I64Regs>; 135*9880d681SAndroid Build Coastguard Workerdef EDGE32L : VISInst<0b000001010, "edge32l", I64Regs>; 136*9880d681SAndroid Build Coastguard Worker 137*9880d681SAndroid Build Coastguard Workerdef PDIST : VISInst<0b000111110, "pdist">; 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Workerdef ARRAY8 : VISInst<0b000010000, "array8", I64Regs>; 140*9880d681SAndroid Build Coastguard Workerdef ARRAY16 : VISInst<0b000010010, "array16", I64Regs>; 141*9880d681SAndroid Build Coastguard Workerdef ARRAY32 : VISInst<0b000010100, "array32", I64Regs>; 142*9880d681SAndroid Build Coastguard Worker 143*9880d681SAndroid Build Coastguard Workerdef SHUTDOWN : VISInst0<0b010000000, "shutdown">; 144*9880d681SAndroid Build Coastguard Worker 145*9880d681SAndroid Build Coastguard Worker} // Predicates = [HasVIS] 146*9880d681SAndroid Build Coastguard Worker 147*9880d681SAndroid Build Coastguard Worker 148*9880d681SAndroid Build Coastguard Worker// VIS 2 Instructions. 149*9880d681SAndroid Build Coastguard Workerlet Predicates = [HasVIS2] in { 150*9880d681SAndroid Build Coastguard Worker 151*9880d681SAndroid Build Coastguard Workerdef BMASK : VISInst<0b000011001, "bmask", I64Regs>; 152*9880d681SAndroid Build Coastguard Workerdef BSHUFFLE : VISInst<0b000011100, "bshuffle">; 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Workerdef SIAM : VISInst0<0b010000001, "siam">; 155*9880d681SAndroid Build Coastguard Worker 156*9880d681SAndroid Build Coastguard Workerdef EDGE8N : VISInst<0b000000001, "edge8n", I64Regs>; 157*9880d681SAndroid Build Coastguard Workerdef EDGE8LN : VISInst<0b000000011, "edge8ln", I64Regs>; 158*9880d681SAndroid Build Coastguard Workerdef EDGE16N : VISInst<0b000000101, "edge16n", I64Regs>; 159*9880d681SAndroid Build Coastguard Workerdef EDGE16LN : VISInst<0b000000111, "edge16ln", I64Regs>; 160*9880d681SAndroid Build Coastguard Workerdef EDGE32N : VISInst<0b000001001, "edge32n", I64Regs>; 161*9880d681SAndroid Build Coastguard Workerdef EDGE32LN : VISInst<0b000001011, "edge32ln", I64Regs>; 162*9880d681SAndroid Build Coastguard Worker} // Predicates = [HasVIS2] 163*9880d681SAndroid Build Coastguard Worker 164*9880d681SAndroid Build Coastguard Worker 165*9880d681SAndroid Build Coastguard Worker// VIS 3 Instructions. 166*9880d681SAndroid Build Coastguard Workerlet Predicates = [HasVIS3] in { 167*9880d681SAndroid Build Coastguard Worker 168*9880d681SAndroid Build Coastguard Workerlet Uses = [ICC] in 169*9880d681SAndroid Build Coastguard Workerdef ADDXC : VISInst<0b000010001, "addxc", I64Regs>; 170*9880d681SAndroid Build Coastguard Worker 171*9880d681SAndroid Build Coastguard Workerlet Defs = [ICC], Uses = [ICC] in 172*9880d681SAndroid Build Coastguard Workerdef ADDXCCC : VISInst<0b000010011, "addxccc", I64Regs>; 173*9880d681SAndroid Build Coastguard Worker 174*9880d681SAndroid Build Coastguard Workerlet rd = 0, rs1 = 0 in { 175*9880d681SAndroid Build Coastguard Workerdef CMASK8 : VISInstFormat<0b000011011, (outs), (ins I64Regs:$rs2), 176*9880d681SAndroid Build Coastguard Worker "cmask8 $rs2", []>; 177*9880d681SAndroid Build Coastguard Workerdef CMASK16 : VISInstFormat<0b000011101, (outs), (ins I64Regs:$rs2), 178*9880d681SAndroid Build Coastguard Worker "cmask16 $rs2", []>; 179*9880d681SAndroid Build Coastguard Workerdef CMASK32 : VISInstFormat<0b000011111, (outs), (ins I64Regs:$rs2), 180*9880d681SAndroid Build Coastguard Worker "cmask32 $rs2", []>; 181*9880d681SAndroid Build Coastguard Worker 182*9880d681SAndroid Build Coastguard Worker} 183*9880d681SAndroid Build Coastguard Worker 184*9880d681SAndroid Build Coastguard Workerdef FCHKSM16 : VISInst<0b001000100, "fchksm16">; 185*9880d681SAndroid Build Coastguard Worker 186*9880d681SAndroid Build Coastguard Workerdef FHADDS : F3_3<0b10, 0b110100, 0b001100001, 187*9880d681SAndroid Build Coastguard Worker (outs DFPRegs:$rd), (ins DFPRegs:$rs1, DFPRegs:$rs2), 188*9880d681SAndroid Build Coastguard Worker "fhadds $rs1, $rs2, $rd", []>; 189*9880d681SAndroid Build Coastguard Workerdef FHADDD : F3_3<0b10, 0b110100, 0b001100010, 190*9880d681SAndroid Build Coastguard Worker (outs DFPRegs:$rd), (ins DFPRegs:$rs1, DFPRegs:$rs2), 191*9880d681SAndroid Build Coastguard Worker "fhaddd $rs1, $rs2, $rd", []>; 192*9880d681SAndroid Build Coastguard Workerdef FHSUBS : F3_3<0b10, 0b110100, 0b001100101, 193*9880d681SAndroid Build Coastguard Worker (outs DFPRegs:$rd), (ins DFPRegs:$rs1, DFPRegs:$rs2), 194*9880d681SAndroid Build Coastguard Worker "fhsubs $rs1, $rs2, $rd", []>; 195*9880d681SAndroid Build Coastguard Workerdef FHSUBD : F3_3<0b10, 0b110100, 0b001100110, 196*9880d681SAndroid Build Coastguard Worker (outs DFPRegs:$rd), (ins DFPRegs:$rs1, DFPRegs:$rs2), 197*9880d681SAndroid Build Coastguard Worker "fhsubd $rs1, $rs2, $rd", []>; 198*9880d681SAndroid Build Coastguard Workerdef FLCMPS : VISInstFormat<0b101010001, (outs FCCRegs:$rd), 199*9880d681SAndroid Build Coastguard Worker (ins DFPRegs:$rs1, DFPRegs:$rs2), 200*9880d681SAndroid Build Coastguard Worker "flcmps $rd, $rs1, $rs2", []>; 201*9880d681SAndroid Build Coastguard Workerdef FLCMPD : VISInstFormat<0b101010010, (outs FCCRegs:$rd), 202*9880d681SAndroid Build Coastguard Worker (ins DFPRegs:$rs1, DFPRegs:$rs2), 203*9880d681SAndroid Build Coastguard Worker "flcmpd $rd, $rs1, $rs2", []>; 204*9880d681SAndroid Build Coastguard Worker 205*9880d681SAndroid Build Coastguard Workerdef FMEAN16 : VISInst<0b001000000, "fmean16">; 206*9880d681SAndroid Build Coastguard Worker 207*9880d681SAndroid Build Coastguard Workerdef FNADDS : F3_3<0b10, 0b110100, 0b001010001, 208*9880d681SAndroid Build Coastguard Worker (outs DFPRegs:$rd), (ins DFPRegs:$rs1, DFPRegs:$rs2), 209*9880d681SAndroid Build Coastguard Worker "fnadds $rs1, $rs2, $rd", []>; 210*9880d681SAndroid Build Coastguard Workerdef FNADDD : F3_3<0b10, 0b110100, 0b001010010, 211*9880d681SAndroid Build Coastguard Worker (outs DFPRegs:$rd), (ins DFPRegs:$rs1, DFPRegs:$rs2), 212*9880d681SAndroid Build Coastguard Worker "fnaddd $rs1, $rs2, $rd", []>; 213*9880d681SAndroid Build Coastguard Workerdef FNHADDS : F3_3<0b10, 0b110100, 0b001110001, 214*9880d681SAndroid Build Coastguard Worker (outs DFPRegs:$rd), (ins DFPRegs:$rs1, DFPRegs:$rs2), 215*9880d681SAndroid Build Coastguard Worker "fnhadds $rs1, $rs2, $rd", []>; 216*9880d681SAndroid Build Coastguard Workerdef FNHADDD : F3_3<0b10, 0b110100, 0b001110010, 217*9880d681SAndroid Build Coastguard Worker (outs DFPRegs:$rd), (ins DFPRegs:$rs1, DFPRegs:$rs2), 218*9880d681SAndroid Build Coastguard Worker "fnhaddd $rs1, $rs2, $rd", []>; 219*9880d681SAndroid Build Coastguard Worker 220*9880d681SAndroid Build Coastguard Workerdef FNMULS : F3_3<0b10, 0b110100, 0b001011001, 221*9880d681SAndroid Build Coastguard Worker (outs DFPRegs:$rd), (ins DFPRegs:$rs1, DFPRegs:$rs2), 222*9880d681SAndroid Build Coastguard Worker "fnhadds $rs1, $rs2, $rd", []>; 223*9880d681SAndroid Build Coastguard Workerdef FNMULD : F3_3<0b10, 0b110100, 0b001011010, 224*9880d681SAndroid Build Coastguard Worker (outs DFPRegs:$rd), (ins DFPRegs:$rs1, DFPRegs:$rs2), 225*9880d681SAndroid Build Coastguard Worker "fnhaddd $rs1, $rs2, $rd", []>; 226*9880d681SAndroid Build Coastguard Workerdef FNSMULD : F3_3<0b10, 0b110100, 0b001111001, 227*9880d681SAndroid Build Coastguard Worker (outs DFPRegs:$rd), (ins DFPRegs:$rs1, DFPRegs:$rs2), 228*9880d681SAndroid Build Coastguard Worker "fnhadds $rs1, $rs2, $rd", []>; 229*9880d681SAndroid Build Coastguard Worker 230*9880d681SAndroid Build Coastguard Workerdef FPADD64 : VISInst<0b001000010, "fpadd64">; 231*9880d681SAndroid Build Coastguard Worker 232*9880d681SAndroid Build Coastguard Workerdef FSLL16 : VISInst<0b000100001, "fsll16">; 233*9880d681SAndroid Build Coastguard Workerdef FSRL16 : VISInst<0b000100011, "fsrl16">; 234*9880d681SAndroid Build Coastguard Workerdef FSLL32 : VISInst<0b000100101, "fsll32">; 235*9880d681SAndroid Build Coastguard Workerdef FSRL32 : VISInst<0b000100111, "fsrl32">; 236*9880d681SAndroid Build Coastguard Workerdef FSLAS16 : VISInst<0b000101001, "fslas16">; 237*9880d681SAndroid Build Coastguard Workerdef FSRA16 : VISInst<0b000101011, "fsra16">; 238*9880d681SAndroid Build Coastguard Workerdef FSLAS32 : VISInst<0b000101101, "fslas32">; 239*9880d681SAndroid Build Coastguard Workerdef FSRA32 : VISInst<0b000101111, "fsra32">; 240*9880d681SAndroid Build Coastguard Worker 241*9880d681SAndroid Build Coastguard Workerlet rs1 = 0 in 242*9880d681SAndroid Build Coastguard Workerdef LZCNT : VISInstFormat<0b000010111, (outs I64Regs:$rd), 243*9880d681SAndroid Build Coastguard Worker (ins I64Regs:$rs2), "lzcnt $rs2, $rd", []>; 244*9880d681SAndroid Build Coastguard Worker 245*9880d681SAndroid Build Coastguard Workerlet rs1 = 0 in { 246*9880d681SAndroid Build Coastguard Workerdef MOVSTOSW : VISInstFormat<0b100010011, (outs I64Regs:$rd), 247*9880d681SAndroid Build Coastguard Worker (ins DFPRegs:$rs2), "movstosw $rs2, $rd", []>; 248*9880d681SAndroid Build Coastguard Workerdef MOVSTOUW : VISInstFormat<0b100010001, (outs I64Regs:$rd), 249*9880d681SAndroid Build Coastguard Worker (ins DFPRegs:$rs2), "movstouw $rs2, $rd", []>; 250*9880d681SAndroid Build Coastguard Workerdef MOVDTOX : VISInstFormat<0b100010000, (outs I64Regs:$rd), 251*9880d681SAndroid Build Coastguard Worker (ins DFPRegs:$rs2), "movdtox $rs2, $rd", []>; 252*9880d681SAndroid Build Coastguard Workerdef MOVWTOS : VISInstFormat<0b100011001, (outs DFPRegs:$rd), 253*9880d681SAndroid Build Coastguard Worker (ins I64Regs:$rs2), "movdtox $rs2, $rd", []>; 254*9880d681SAndroid Build Coastguard Workerdef MOVXTOD : VISInstFormat<0b100011000, (outs DFPRegs:$rd), 255*9880d681SAndroid Build Coastguard Worker (ins I64Regs:$rs2), "movdtox $rs2, $rd", []>; 256*9880d681SAndroid Build Coastguard Worker} 257*9880d681SAndroid Build Coastguard Worker 258*9880d681SAndroid Build Coastguard Workerdef PDISTN : VISInst<0b000111111, "pdistn">; 259*9880d681SAndroid Build Coastguard Worker 260*9880d681SAndroid Build Coastguard Workerdef UMULXHI : VISInst<0b000010110, "umulxhi", I64Regs>; 261*9880d681SAndroid Build Coastguard Workerdef XMULX : VISInst<0b100010101, "xmulx", I64Regs>; 262*9880d681SAndroid Build Coastguard Workerdef XMULXHI : VISInst<0b100010111, "xmulxhi", I64Regs>; 263*9880d681SAndroid Build Coastguard Worker} // Predicates = [IsVIS3] 264