1117395Skan;; e500 SPE description 2169689Skan;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 3117395Skan;; Contributed by Aldy Hernandez (aldy@quesejoda.com) 4117395Skan 5132718Skan;; This file is part of GCC. 6117395Skan 7132718Skan;; GCC is free software; you can redistribute it and/or modify it 8132718Skan;; under the terms of the GNU General Public License as published 9132718Skan;; by the Free Software Foundation; either version 2, or (at your 10132718Skan;; option) any later version. 11117395Skan 12132718Skan;; GCC is distributed in the hope that it will be useful, but WITHOUT 13132718Skan;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 14132718Skan;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 15132718Skan;; License for more details. 16117395Skan 17117395Skan;; You should have received a copy of the GNU General Public License 18132718Skan;; along with GCC; see the file COPYING. If not, write to the 19169689Skan;; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, 20169689Skan;; MA 02110-1301, USA. 21117395Skan 22117395Skan(define_constants 23117395Skan [(SPE_ACC_REGNO 111) 24169689Skan (SPEFSCR_REGNO 112) 25117395Skan 26169689Skan (CMPDFEQ_GPR 1006) 27169689Skan (TSTDFEQ_GPR 1007) 28169689Skan (CMPDFGT_GPR 1008) 29169689Skan (TSTDFGT_GPR 1009) 30169689Skan (CMPDFLT_GPR 1010) 31169689Skan (TSTDFLT_GPR 1011) 32169689Skan (E500_CR_IOR_COMPARE 1012) 33169689Skan ]) 34169689Skan 35169689Skan;; Modes using a 64-bit register. 36169689Skan(define_mode_macro SPE64 [DF V4HI V2SF V1DI V2SI]) 37169689Skan 38117395Skan(define_insn "*negsf2_gpr" 39117395Skan [(set (match_operand:SF 0 "gpc_reg_operand" "=r") 40117395Skan (neg:SF (match_operand:SF 1 "gpc_reg_operand" "r")))] 41117395Skan "TARGET_HARD_FLOAT && !TARGET_FPRS" 42117395Skan "efsneg %0,%1" 43132718Skan [(set_attr "type" "fpsimple")]) 44117395Skan 45117395Skan(define_insn "*abssf2_gpr" 46117395Skan [(set (match_operand:SF 0 "gpc_reg_operand" "=r") 47117395Skan (abs:SF (match_operand:SF 1 "gpc_reg_operand" "r")))] 48117395Skan "TARGET_HARD_FLOAT && !TARGET_FPRS" 49117395Skan "efsabs %0,%1" 50132718Skan [(set_attr "type" "fpsimple")]) 51117395Skan 52132718Skan(define_insn "*nabssf2_gpr" 53132718Skan [(set (match_operand:SF 0 "gpc_reg_operand" "=r") 54132718Skan (neg:SF (abs:SF (match_operand:SF 1 "gpc_reg_operand" "r"))))] 55132718Skan "TARGET_HARD_FLOAT && !TARGET_FPRS" 56132718Skan "efsnabs %0,%1" 57132718Skan [(set_attr "type" "fpsimple")]) 58132718Skan 59117395Skan(define_insn "*addsf3_gpr" 60117395Skan [(set (match_operand:SF 0 "gpc_reg_operand" "=r") 61117395Skan (plus:SF (match_operand:SF 1 "gpc_reg_operand" "%r") 62117395Skan (match_operand:SF 2 "gpc_reg_operand" "r")))] 63117395Skan "TARGET_HARD_FLOAT && !TARGET_FPRS" 64117395Skan "efsadd %0,%1,%2" 65117395Skan [(set_attr "type" "fp")]) 66117395Skan 67117395Skan(define_insn "*subsf3_gpr" 68117395Skan [(set (match_operand:SF 0 "gpc_reg_operand" "=r") 69117395Skan (minus:SF (match_operand:SF 1 "gpc_reg_operand" "r") 70117395Skan (match_operand:SF 2 "gpc_reg_operand" "r")))] 71117395Skan "TARGET_HARD_FLOAT && !TARGET_FPRS" 72117395Skan "efssub %0,%1,%2" 73117395Skan [(set_attr "type" "fp")]) 74117395Skan 75117395Skan(define_insn "*mulsf3_gpr" 76117395Skan [(set (match_operand:SF 0 "gpc_reg_operand" "=r") 77117395Skan (mult:SF (match_operand:SF 1 "gpc_reg_operand" "%r") 78117395Skan (match_operand:SF 2 "gpc_reg_operand" "r")))] 79117395Skan "TARGET_HARD_FLOAT && !TARGET_FPRS" 80117395Skan "efsmul %0,%1,%2" 81117395Skan [(set_attr "type" "fp")]) 82117395Skan 83117395Skan(define_insn "*divsf3_gpr" 84117395Skan [(set (match_operand:SF 0 "gpc_reg_operand" "=r") 85117395Skan (div:SF (match_operand:SF 1 "gpc_reg_operand" "r") 86117395Skan (match_operand:SF 2 "gpc_reg_operand" "r")))] 87117395Skan "TARGET_HARD_FLOAT && !TARGET_FPRS" 88117395Skan "efsdiv %0,%1,%2" 89132718Skan [(set_attr "type" "vecfdiv")]) 90117395Skan 91169689Skan;; Floating point conversion instructions. 92169689Skan 93169689Skan(define_insn "fixuns_truncdfsi2" 94169689Skan [(set (match_operand:SI 0 "gpc_reg_operand" "=r") 95169689Skan (unsigned_fix:SI (match_operand:DF 1 "gpc_reg_operand" "r")))] 96169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE" 97169689Skan "efdctuiz %0,%1" 98169689Skan [(set_attr "type" "fp")]) 99169689Skan 100169689Skan(define_insn "spe_extendsfdf2" 101169689Skan [(set (match_operand:DF 0 "gpc_reg_operand" "=r") 102169689Skan (float_extend:DF (match_operand:SF 1 "gpc_reg_operand" "r")))] 103169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE" 104169689Skan "efdcfs %0,%1" 105169689Skan [(set_attr "type" "fp")]) 106169689Skan 107132718Skan(define_insn "spe_fixuns_truncsfsi2" 108117395Skan [(set (match_operand:SI 0 "gpc_reg_operand" "=r") 109132718Skan (unsigned_fix:SI (match_operand:SF 1 "gpc_reg_operand" "r")))] 110117395Skan "TARGET_HARD_FLOAT && !TARGET_FPRS" 111117395Skan "efsctuiz %0,%1" 112117395Skan [(set_attr "type" "fp")]) 113117395Skan 114117395Skan(define_insn "spe_fix_truncsfsi2" 115117395Skan [(set (match_operand:SI 0 "gpc_reg_operand" "=r") 116117395Skan (fix:SI (match_operand:SF 1 "gpc_reg_operand" "r")))] 117117395Skan "TARGET_HARD_FLOAT && !TARGET_FPRS" 118132718Skan "efsctsiz %0,%1" 119117395Skan [(set_attr "type" "fp")]) 120117395Skan 121169689Skan(define_insn "spe_fix_truncdfsi2" 122169689Skan [(set (match_operand:SI 0 "gpc_reg_operand" "=r") 123169689Skan (fix:SI (match_operand:DF 1 "gpc_reg_operand" "r")))] 124169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE" 125169689Skan "efdctsiz %0,%1" 126169689Skan [(set_attr "type" "fp")]) 127169689Skan 128117395Skan(define_insn "spe_floatunssisf2" 129117395Skan [(set (match_operand:SF 0 "gpc_reg_operand" "=r") 130117395Skan (unsigned_float:SF (match_operand:SI 1 "gpc_reg_operand" "r")))] 131117395Skan "TARGET_HARD_FLOAT && !TARGET_FPRS" 132117395Skan "efscfui %0,%1" 133117395Skan [(set_attr "type" "fp")]) 134117395Skan 135169689Skan(define_insn "spe_floatunssidf2" 136169689Skan [(set (match_operand:DF 0 "gpc_reg_operand" "=r") 137169689Skan (unsigned_float:DF (match_operand:SI 1 "gpc_reg_operand" "r")))] 138169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE" 139169689Skan "efdcfui %0,%1" 140169689Skan [(set_attr "type" "fp")]) 141169689Skan 142117395Skan(define_insn "spe_floatsisf2" 143117395Skan [(set (match_operand:SF 0 "gpc_reg_operand" "=r") 144117395Skan (float:SF (match_operand:SI 1 "gpc_reg_operand" "r")))] 145117395Skan "TARGET_HARD_FLOAT && !TARGET_FPRS" 146117395Skan "efscfsi %0,%1" 147117395Skan [(set_attr "type" "fp")]) 148117395Skan 149169689Skan(define_insn "spe_floatsidf2" 150169689Skan [(set (match_operand:DF 0 "gpc_reg_operand" "=r") 151169689Skan (float:DF (match_operand:SI 1 "gpc_reg_operand" "r")))] 152169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE" 153169689Skan "efdcfsi %0,%1" 154169689Skan [(set_attr "type" "fp")]) 155117395Skan 156117395Skan;; SPE SIMD instructions 157117395Skan 158117395Skan(define_insn "spe_evabs" 159117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 160117395Skan (abs:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")))] 161117395Skan "TARGET_SPE" 162117395Skan "evabs %0,%1" 163117395Skan [(set_attr "type" "vecsimple") 164117395Skan (set_attr "length" "4")]) 165117395Skan 166117395Skan(define_insn "spe_evandc" 167117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 168117395Skan (and:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r") 169117395Skan (not:V2SI (match_operand:V2SI 2 "gpc_reg_operand" "r"))))] 170117395Skan "TARGET_SPE" 171117395Skan "evandc %0,%1,%2" 172117395Skan [(set_attr "type" "vecsimple") 173117395Skan (set_attr "length" "4")]) 174117395Skan 175117395Skan(define_insn "spe_evand" 176117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 177117395Skan (and:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r") 178117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")))] 179117395Skan "TARGET_SPE" 180117395Skan "evand %0,%1,%2" 181117395Skan [(set_attr "type" "vecsimple") 182117395Skan (set_attr "length" "4")]) 183117395Skan 184117395Skan;; Vector compare instructions 185117395Skan 186117395Skan(define_insn "spe_evcmpeq" 187117395Skan [(set (match_operand:CC 0 "cc_reg_operand" "=y") 188117395Skan (unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r") 189117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 500))] 190117395Skan "TARGET_SPE" 191117395Skan "evcmpeq %0,%1,%2" 192117395Skan [(set_attr "type" "veccmp") 193117395Skan (set_attr "length" "4")]) 194117395Skan 195117395Skan(define_insn "spe_evcmpgts" 196117395Skan [(set (match_operand:CC 0 "cc_reg_operand" "=y") 197117395Skan (unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r") 198117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 501))] 199117395Skan "TARGET_SPE" 200117395Skan "evcmpgts %0,%1,%2" 201117395Skan [(set_attr "type" "veccmp") 202117395Skan (set_attr "length" "4")]) 203117395Skan 204117395Skan(define_insn "spe_evcmpgtu" 205117395Skan [(set (match_operand:CC 0 "cc_reg_operand" "=y") 206117395Skan (unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r") 207117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 502))] 208117395Skan "TARGET_SPE" 209117395Skan "evcmpgtu %0,%1,%2" 210117395Skan [(set_attr "type" "veccmp") 211117395Skan (set_attr "length" "4")]) 212117395Skan 213117395Skan(define_insn "spe_evcmplts" 214117395Skan [(set (match_operand:CC 0 "cc_reg_operand" "=y") 215117395Skan (unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r") 216117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 503))] 217117395Skan "TARGET_SPE" 218117395Skan "evcmplts %0,%1,%2" 219117395Skan [(set_attr "type" "veccmp") 220117395Skan (set_attr "length" "4")]) 221117395Skan 222117395Skan(define_insn "spe_evcmpltu" 223117395Skan [(set (match_operand:CC 0 "cc_reg_operand" "=y") 224117395Skan (unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r") 225117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 504))] 226117395Skan "TARGET_SPE" 227117395Skan "evcmpltu %0,%1,%2" 228117395Skan [(set_attr "type" "veccmp") 229117395Skan (set_attr "length" "4")]) 230117395Skan 231117395Skan;; Floating point vector compare instructions 232117395Skan 233117395Skan(define_insn "spe_evfscmpeq" 234117395Skan [(set (match_operand:CC 0 "cc_reg_operand" "=y") 235117395Skan (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r") 236117395Skan (match_operand:V2SF 2 "gpc_reg_operand" "r")] 538)) 237117395Skan (clobber (reg:SI SPEFSCR_REGNO))] 238117395Skan "TARGET_SPE" 239117395Skan "evfscmpeq %0,%1,%2" 240117395Skan [(set_attr "type" "veccmp") 241117395Skan (set_attr "length" "4")]) 242117395Skan 243117395Skan(define_insn "spe_evfscmpgt" 244117395Skan [(set (match_operand:CC 0 "cc_reg_operand" "=y") 245117395Skan (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r") 246117395Skan (match_operand:V2SF 2 "gpc_reg_operand" "r")] 539)) 247117395Skan (clobber (reg:SI SPEFSCR_REGNO))] 248117395Skan "TARGET_SPE" 249117395Skan "evfscmpgt %0,%1,%2" 250117395Skan [(set_attr "type" "veccmp") 251117395Skan (set_attr "length" "4")]) 252117395Skan 253117395Skan(define_insn "spe_evfscmplt" 254117395Skan [(set (match_operand:CC 0 "cc_reg_operand" "=y") 255117395Skan (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r") 256117395Skan (match_operand:V2SF 2 "gpc_reg_operand" "r")] 540)) 257117395Skan (clobber (reg:SI SPEFSCR_REGNO))] 258117395Skan "TARGET_SPE" 259117395Skan "evfscmplt %0,%1,%2" 260117395Skan [(set_attr "type" "veccmp") 261117395Skan (set_attr "length" "4")]) 262117395Skan 263117395Skan(define_insn "spe_evfststeq" 264117395Skan [(set (match_operand:CC 0 "cc_reg_operand" "=y") 265117395Skan (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r") 266117395Skan (match_operand:V2SF 2 "gpc_reg_operand" "r")] 541))] 267117395Skan "TARGET_SPE" 268117395Skan "evfststeq %0,%1,%2" 269117395Skan [(set_attr "type" "veccmp") 270117395Skan (set_attr "length" "4")]) 271117395Skan 272117395Skan(define_insn "spe_evfststgt" 273117395Skan [(set (match_operand:CC 0 "cc_reg_operand" "=y") 274117395Skan (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r") 275117395Skan (match_operand:V2SF 2 "gpc_reg_operand" "r")] 542))] 276117395Skan "TARGET_SPE" 277117395Skan "evfststgt %0,%1,%2" 278117395Skan [(set_attr "type" "veccmp") 279117395Skan (set_attr "length" "4")]) 280117395Skan 281117395Skan(define_insn "spe_evfststlt" 282117395Skan [(set (match_operand:CC 0 "cc_reg_operand" "=y") 283117395Skan (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r") 284117395Skan (match_operand:V2SF 2 "gpc_reg_operand" "r")] 543))] 285117395Skan "TARGET_SPE" 286117395Skan "evfststlt %0,%1,%2" 287117395Skan [(set_attr "type" "veccmp") 288117395Skan (set_attr "length" "4")]) 289117395Skan 290117395Skan;; End of vector compare instructions 291117395Skan 292117395Skan(define_insn "spe_evcntlsw" 293117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 294117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 505))] 295117395Skan "TARGET_SPE" 296117395Skan "evcntlsw %0,%1" 297117395Skan [(set_attr "type" "vecsimple") 298117395Skan (set_attr "length" "4")]) 299117395Skan 300117395Skan(define_insn "spe_evcntlzw" 301117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 302117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 506))] 303117395Skan "TARGET_SPE" 304117395Skan "evcntlzw %0,%1" 305117395Skan [(set_attr "type" "vecsimple") 306117395Skan (set_attr "length" "4")]) 307117395Skan 308117395Skan(define_insn "spe_eveqv" 309117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 310117395Skan (not:V2SI (xor:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r") 311117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r"))))] 312117395Skan "TARGET_SPE" 313117395Skan "eveqv %0,%1,%2" 314117395Skan [(set_attr "type" "vecsimple") 315117395Skan (set_attr "length" "4")]) 316117395Skan 317117395Skan(define_insn "spe_evextsb" 318117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 319117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 507))] 320117395Skan "TARGET_SPE" 321117395Skan "evextsb %0,%1" 322117395Skan [(set_attr "type" "vecsimple") 323117395Skan (set_attr "length" "4")]) 324117395Skan 325117395Skan(define_insn "spe_evextsh" 326117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 327117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 508))] 328117395Skan "TARGET_SPE" 329117395Skan "evextsh %0,%1" 330117395Skan [(set_attr "type" "vecsimple") 331117395Skan (set_attr "length" "4")]) 332117395Skan 333117395Skan(define_insn "spe_evlhhesplat" 334132718Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 335132718Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 336117395Skan (match_operand:QI 2 "immediate_operand" "i")))) 337117395Skan (unspec [(const_int 0)] 509)] 338132718Skan "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31" 339132718Skan "evlhhesplat %0,%2*2(%1)" 340117395Skan [(set_attr "type" "vecload") 341117395Skan (set_attr "length" "4")]) 342117395Skan 343117395Skan(define_insn "spe_evlhhesplatx" 344117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 345117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 346117395Skan (match_operand:SI 2 "gpc_reg_operand" "r")))) 347117395Skan (unspec [(const_int 0)] 510)] 348117395Skan "TARGET_SPE" 349117395Skan "evlhhesplatx %0,%1,%2" 350117395Skan [(set_attr "type" "vecload") 351117395Skan (set_attr "length" "4")]) 352117395Skan 353117395Skan(define_insn "spe_evlhhossplat" 354117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 355117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 356117395Skan (match_operand:QI 2 "immediate_operand" "i")))) 357117395Skan (unspec [(const_int 0)] 511)] 358132718Skan "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31" 359132718Skan "evlhhossplat %0,%2*2(%1)" 360117395Skan [(set_attr "type" "vecload") 361117395Skan (set_attr "length" "4")]) 362117395Skan 363117395Skan(define_insn "spe_evlhhossplatx" 364117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 365117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 366117395Skan (match_operand:SI 2 "gpc_reg_operand" "r")))) 367117395Skan (unspec [(const_int 0)] 512)] 368117395Skan "TARGET_SPE" 369117395Skan "evlhhossplatx %0,%1,%2" 370117395Skan [(set_attr "type" "vecload") 371117395Skan (set_attr "length" "4")]) 372117395Skan 373117395Skan(define_insn "spe_evlhhousplat" 374117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 375117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 376117395Skan (match_operand:QI 2 "immediate_operand" "i")))) 377117395Skan (unspec [(const_int 0)] 513)] 378132718Skan "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31" 379132718Skan "evlhhousplat %0,%2*2(%1)" 380117395Skan [(set_attr "type" "vecload") 381117395Skan (set_attr "length" "4")]) 382117395Skan 383117395Skan(define_insn "spe_evlhhousplatx" 384117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 385117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 386117395Skan (match_operand:SI 2 "gpc_reg_operand" "r")))) 387117395Skan (unspec [(const_int 0)] 514)] 388117395Skan "TARGET_SPE" 389117395Skan "evlhhousplatx %0,%1,%2" 390117395Skan [(set_attr "type" "vecload") 391117395Skan (set_attr "length" "4")]) 392117395Skan 393117395Skan(define_insn "spe_evlwhsplat" 394117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 395117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 396117395Skan (match_operand:QI 2 "immediate_operand" "i")))) 397117395Skan (unspec [(const_int 0)] 515)] 398132718Skan "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31" 399132718Skan "evlwhsplat %0,%2*4(%1)" 400117395Skan [(set_attr "type" "vecload") 401117395Skan (set_attr "length" "4")]) 402117395Skan 403117395Skan(define_insn "spe_evlwhsplatx" 404117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 405117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 406117395Skan (match_operand:SI 2 "gpc_reg_operand" "r")))) 407117395Skan (unspec [(const_int 0)] 516)] 408117395Skan "TARGET_SPE" 409117395Skan "evlwhsplatx %0,%1,%2" 410117395Skan [(set_attr "type" "vecload") 411117395Skan (set_attr "length" "4")]) 412117395Skan 413117395Skan(define_insn "spe_evlwwsplat" 414117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 415117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 416117395Skan (match_operand:QI 2 "immediate_operand" "i")))) 417117395Skan (unspec [(const_int 0)] 517)] 418132718Skan "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31" 419132718Skan "evlwwsplat %0,%2*4(%1)" 420117395Skan [(set_attr "type" "vecload") 421117395Skan (set_attr "length" "4")]) 422117395Skan 423117395Skan(define_insn "spe_evlwwsplatx" 424117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 425117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 426117395Skan (match_operand:SI 2 "gpc_reg_operand" "r")))) 427117395Skan (unspec [(const_int 0)] 518)] 428117395Skan "TARGET_SPE" 429117395Skan "evlwwsplatx %0,%1,%2" 430117395Skan [(set_attr "type" "vecload") 431117395Skan (set_attr "length" "4")]) 432117395Skan 433117395Skan(define_insn "spe_evmergehi" 434117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 435117395Skan (vec_merge:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r") 436117395Skan (vec_select:V2SI 437117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 438117395Skan (parallel [(const_int 1) 439117395Skan (const_int 0)])) 440117395Skan (const_int 2)))] 441117395Skan "TARGET_SPE" 442117395Skan "evmergehi %0,%1,%2" 443117395Skan [(set_attr "type" "vecsimple") 444117395Skan (set_attr "length" "4")]) 445117395Skan 446117395Skan(define_insn "spe_evmergehilo" 447117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 448117395Skan (vec_merge:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r") 449117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 450117395Skan (const_int 2)))] 451117395Skan "TARGET_SPE" 452117395Skan "evmergehilo %0,%1,%2" 453117395Skan [(set_attr "type" "vecsimple") 454117395Skan (set_attr "length" "4")]) 455117395Skan 456117395Skan(define_insn "spe_evmergelo" 457117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 458117395Skan (vec_merge:V2SI (vec_select:V2SI 459117395Skan (match_operand:V2SI 1 "gpc_reg_operand" "r") 460117395Skan (parallel [(const_int 1) 461117395Skan (const_int 0)])) 462117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 463117395Skan (const_int 2)))] 464117395Skan "TARGET_SPE" 465117395Skan "evmergelo %0,%1,%2" 466117395Skan [(set_attr "type" "vecsimple") 467117395Skan (set_attr "length" "4")]) 468117395Skan 469117395Skan(define_insn "spe_evmergelohi" 470117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 471117395Skan (vec_merge:V2SI (vec_select:V2SI 472117395Skan (match_operand:V2SI 1 "gpc_reg_operand" "r") 473117395Skan (parallel [(const_int 1) 474117395Skan (const_int 0)])) 475117395Skan (vec_select:V2SI 476117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 477117395Skan (parallel [(const_int 1) 478117395Skan (const_int 0)])) 479117395Skan (const_int 2)))] 480117395Skan "TARGET_SPE" 481117395Skan "evmergelohi %0,%1,%2" 482117395Skan [(set_attr "type" "vecsimple") 483117395Skan (set_attr "length" "4")]) 484117395Skan 485117395Skan(define_insn "spe_evnand" 486117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 487117395Skan (not:V2SI (and:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r") 488117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r"))))] 489117395Skan "TARGET_SPE" 490117395Skan "evnand %0,%1,%2" 491117395Skan [(set_attr "type" "vecsimple") 492117395Skan (set_attr "length" "4")]) 493117395Skan 494132718Skan(define_insn "negv2si2" 495117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 496117395Skan (neg:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")))] 497117395Skan "TARGET_SPE" 498117395Skan "evneg %0,%1" 499117395Skan [(set_attr "type" "vecsimple") 500117395Skan (set_attr "length" "4")]) 501117395Skan 502117395Skan(define_insn "spe_evnor" 503117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 504117395Skan (not:V2SI (ior:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r") 505117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r"))))] 506117395Skan "TARGET_SPE" 507117395Skan "evnor %0,%1,%2" 508117395Skan [(set_attr "type" "vecsimple") 509117395Skan (set_attr "length" "4")]) 510117395Skan 511117395Skan(define_insn "spe_evorc" 512117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 513117395Skan (ior:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r") 514117395Skan (not:V2SI (match_operand:V2SI 2 "gpc_reg_operand" "r"))))] 515117395Skan "TARGET_SPE" 516117395Skan "evorc %0,%1,%2" 517117395Skan [(set_attr "type" "vecsimple") 518117395Skan (set_attr "length" "4")]) 519117395Skan 520117395Skan(define_insn "spe_evor" 521117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 522117395Skan (ior:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r") 523117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")))] 524117395Skan "TARGET_SPE" 525117395Skan "evor %0,%1,%2" 526117395Skan [(set_attr "type" "vecsimple") 527117395Skan (set_attr "length" "4")]) 528117395Skan 529117395Skan(define_insn "spe_evrlwi" 530117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 531117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 532117395Skan (match_operand:QI 2 "immediate_operand" "i")] 519))] 533117395Skan "TARGET_SPE" 534117395Skan "evrlwi %0,%1,%2" 535117395Skan [(set_attr "type" "vecsimple") 536117395Skan (set_attr "length" "4")]) 537117395Skan 538117395Skan(define_insn "spe_evrlw" 539117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 540117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 541117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 520))] 542117395Skan "TARGET_SPE" 543117395Skan "evrlw %0,%1,%2" 544117395Skan [(set_attr "type" "veccomplex") 545117395Skan (set_attr "length" "4")]) 546117395Skan 547117395Skan(define_insn "spe_evrndw" 548117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 549117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 521))] 550117395Skan "TARGET_SPE" 551117395Skan "evrndw %0,%1" 552117395Skan [(set_attr "type" "vecsimple") 553117395Skan (set_attr "length" "4")]) 554117395Skan 555117395Skan(define_insn "spe_evsel" 556117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 557117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 558117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 559117395Skan (match_operand:CC 3 "cc_reg_operand" "y")] 522))] 560117395Skan "TARGET_SPE" 561117395Skan "evsel %0,%1,%2,%3" 562117395Skan [(set_attr "type" "veccmp") 563117395Skan (set_attr "length" "4")]) 564117395Skan 565117395Skan(define_insn "spe_evsel_fs" 566117395Skan [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r") 567117395Skan (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r") 568117395Skan (match_operand:V2SF 2 "gpc_reg_operand" "r") 569117395Skan (match_operand:CC 3 "cc_reg_operand" "y")] 725))] 570117395Skan "TARGET_SPE" 571117395Skan "evsel %0,%1,%2,%3" 572117395Skan [(set_attr "type" "veccmp") 573117395Skan (set_attr "length" "4")]) 574117395Skan 575117395Skan(define_insn "spe_evslwi" 576117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 577117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 578117395Skan (match_operand:QI 2 "immediate_operand" "i")] 579117395Skan 523))] 580117395Skan "TARGET_SPE" 581117395Skan "evslwi %0,%1,%2" 582117395Skan [(set_attr "type" "vecsimple") 583117395Skan (set_attr "length" "4")]) 584117395Skan 585117395Skan(define_insn "spe_evslw" 586117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 587117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 588117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 524))] 589117395Skan "TARGET_SPE" 590117395Skan "evslw %0,%1,%2" 591117395Skan [(set_attr "type" "vecsimple") 592117395Skan (set_attr "length" "4")]) 593117395Skan 594117395Skan(define_insn "spe_evsrwis" 595117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 596117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 597117395Skan (match_operand:QI 2 "immediate_operand" "i")] 598117395Skan 525))] 599117395Skan "TARGET_SPE" 600117395Skan "evsrwis %0,%1,%2" 601117395Skan [(set_attr "type" "vecsimple") 602117395Skan (set_attr "length" "4")]) 603117395Skan 604117395Skan(define_insn "spe_evsrwiu" 605117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 606117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 607117395Skan (match_operand:QI 2 "immediate_operand" "i")] 608117395Skan 526))] 609117395Skan "TARGET_SPE" 610117395Skan "evsrwiu %0,%1,%2" 611117395Skan [(set_attr "type" "vecsimple") 612117395Skan (set_attr "length" "4")]) 613117395Skan 614117395Skan(define_insn "spe_evsrws" 615117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 616117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 617117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 527))] 618117395Skan "TARGET_SPE" 619117395Skan "evsrws %0,%1,%2" 620117395Skan [(set_attr "type" "vecsimple") 621117395Skan (set_attr "length" "4")]) 622117395Skan 623117395Skan(define_insn "spe_evsrwu" 624117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 625117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 626117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 528))] 627117395Skan "TARGET_SPE" 628117395Skan "evsrwu %0,%1,%2" 629117395Skan [(set_attr "type" "vecsimple") 630117395Skan (set_attr "length" "4")]) 631117395Skan 632132718Skan;; vector xors 633132718Skan 634132718Skan(define_insn "xorv2si3" 635117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 636117395Skan (xor:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r") 637117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")))] 638117395Skan "TARGET_SPE" 639117395Skan "evxor %0,%1,%2" 640117395Skan [(set_attr "type" "vecsimple") 641117395Skan (set_attr "length" "4")]) 642117395Skan 643132718Skan(define_insn "xorv4hi3" 644132718Skan [(set (match_operand:V4HI 0 "gpc_reg_operand" "=r") 645132718Skan (xor:V4HI (match_operand:V4HI 1 "gpc_reg_operand" "r") 646132718Skan (match_operand:V4HI 2 "gpc_reg_operand" "r")))] 647132718Skan "TARGET_SPE" 648132718Skan "evxor %0,%1,%2" 649132718Skan [(set_attr "type" "vecsimple") 650132718Skan (set_attr "length" "4")]) 651132718Skan 652132718Skan(define_insn "xorv1di3" 653132718Skan [(set (match_operand:V1DI 0 "gpc_reg_operand" "=r") 654132718Skan (xor:V1DI (match_operand:V1DI 1 "gpc_reg_operand" "r") 655132718Skan (match_operand:V1DI 2 "gpc_reg_operand" "r")))] 656132718Skan "TARGET_SPE" 657132718Skan "evxor %0,%1,%2" 658132718Skan [(set_attr "type" "vecsimple") 659132718Skan (set_attr "length" "4")]) 660132718Skan 661132718Skan;; end of vector xors 662132718Skan 663117395Skan(define_insn "spe_evfsabs" 664117395Skan [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r") 665117395Skan (abs:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")))] 666117395Skan "TARGET_SPE" 667117395Skan "evfsabs %0,%1" 668132718Skan [(set_attr "type" "vecsimple") 669117395Skan (set_attr "length" "4")]) 670117395Skan 671117395Skan(define_insn "spe_evfsadd" 672117395Skan [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r") 673117395Skan (plus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r") 674117395Skan (match_operand:V2SF 2 "gpc_reg_operand" "r"))) 675117395Skan (clobber (reg:SI SPEFSCR_REGNO))] 676117395Skan "TARGET_SPE" 677117395Skan "evfsadd %0,%1,%2" 678117395Skan [(set_attr "type" "vecfloat") 679117395Skan (set_attr "length" "4")]) 680117395Skan 681117395Skan(define_insn "spe_evfscfsf" 682117395Skan [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r") 683117395Skan (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 529))] 684117395Skan "TARGET_SPE" 685117395Skan "evfscfsf %0,%1" 686117395Skan [(set_attr "type" "vecfloat") 687117395Skan (set_attr "length" "4")]) 688117395Skan 689117395Skan(define_insn "spe_evfscfsi" 690132718Skan [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r") 691132718Skan (float:V2SF (match_operand:V2SI 1 "gpc_reg_operand" "r")))] 692117395Skan "TARGET_SPE" 693117395Skan "evfscfsi %0,%1" 694117395Skan [(set_attr "type" "vecfloat") 695117395Skan (set_attr "length" "4")]) 696117395Skan 697117395Skan(define_insn "spe_evfscfuf" 698117395Skan [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r") 699117395Skan (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 530))] 700117395Skan "TARGET_SPE" 701117395Skan "evfscfuf %0,%1" 702117395Skan [(set_attr "type" "vecfloat") 703117395Skan (set_attr "length" "4")]) 704117395Skan 705117395Skan(define_insn "spe_evfscfui" 706117395Skan [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r") 707117395Skan (unspec:V2SF [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 701))] 708117395Skan "TARGET_SPE" 709117395Skan "evfscfui %0,%1" 710117395Skan [(set_attr "type" "vecfloat") 711117395Skan (set_attr "length" "4")]) 712117395Skan 713117395Skan(define_insn "spe_evfsctsf" 714117395Skan [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r") 715117395Skan (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 531))] 716117395Skan "TARGET_SPE" 717117395Skan "evfsctsf %0,%1" 718117395Skan [(set_attr "type" "vecfloat") 719117395Skan (set_attr "length" "4")]) 720117395Skan 721117395Skan(define_insn "spe_evfsctsi" 722117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 723117395Skan (unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 532))] 724117395Skan "TARGET_SPE" 725117395Skan "evfsctsi %0,%1" 726117395Skan [(set_attr "type" "vecfloat") 727117395Skan (set_attr "length" "4")]) 728117395Skan 729117395Skan(define_insn "spe_evfsctsiz" 730117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 731117395Skan (unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 533))] 732117395Skan "TARGET_SPE" 733117395Skan "evfsctsiz %0,%1" 734117395Skan [(set_attr "type" "vecfloat") 735117395Skan (set_attr "length" "4")]) 736117395Skan 737117395Skan(define_insn "spe_evfsctuf" 738117395Skan [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r") 739117395Skan (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 534))] 740117395Skan "TARGET_SPE" 741117395Skan "evfsctuf %0,%1" 742117395Skan [(set_attr "type" "vecfloat") 743117395Skan (set_attr "length" "4")]) 744117395Skan 745117395Skan(define_insn "spe_evfsctui" 746117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 747117395Skan (unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 535))] 748117395Skan "TARGET_SPE" 749117395Skan "evfsctui %0,%1" 750117395Skan [(set_attr "type" "vecfloat") 751117395Skan (set_attr "length" "4")]) 752117395Skan 753117395Skan(define_insn "spe_evfsctuiz" 754117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 755117395Skan (unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 536))] 756117395Skan "TARGET_SPE" 757117395Skan "evfsctuiz %0,%1" 758117395Skan [(set_attr "type" "vecfloat") 759117395Skan (set_attr "length" "4")]) 760117395Skan 761117395Skan(define_insn "spe_evfsdiv" 762117395Skan [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r") 763117395Skan (div:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r") 764117395Skan (match_operand:V2SF 2 "gpc_reg_operand" "r"))) 765117395Skan (clobber (reg:SI SPEFSCR_REGNO))] 766117395Skan "TARGET_SPE" 767117395Skan "evfsdiv %0,%1,%2" 768132718Skan [(set_attr "type" "vecfdiv") 769117395Skan (set_attr "length" "4")]) 770117395Skan 771117395Skan(define_insn "spe_evfsmul" 772117395Skan [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r") 773117395Skan (mult:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r") 774117395Skan (match_operand:V2SF 2 "gpc_reg_operand" "r"))) 775117395Skan (clobber (reg:SI SPEFSCR_REGNO))] 776117395Skan "TARGET_SPE" 777117395Skan "evfsmul %0,%1,%2" 778117395Skan [(set_attr "type" "vecfloat") 779117395Skan (set_attr "length" "4")]) 780117395Skan 781117395Skan(define_insn "spe_evfsnabs" 782117395Skan [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r") 783117395Skan (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 537))] 784117395Skan "TARGET_SPE" 785117395Skan "evfsnabs %0,%1" 786132718Skan [(set_attr "type" "vecsimple") 787117395Skan (set_attr "length" "4")]) 788117395Skan 789117395Skan(define_insn "spe_evfsneg" 790117395Skan [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r") 791117395Skan (neg:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")))] 792117395Skan "TARGET_SPE" 793117395Skan "evfsneg %0,%1" 794132718Skan [(set_attr "type" "vecsimple") 795117395Skan (set_attr "length" "4")]) 796117395Skan 797117395Skan(define_insn "spe_evfssub" 798117395Skan [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r") 799117395Skan (minus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r") 800117395Skan (match_operand:V2SF 2 "gpc_reg_operand" "r"))) 801117395Skan (clobber (reg:SI SPEFSCR_REGNO))] 802117395Skan "TARGET_SPE" 803117395Skan "evfssub %0,%1,%2" 804117395Skan [(set_attr "type" "vecfloat") 805117395Skan (set_attr "length" "4")]) 806117395Skan 807117395Skan;; SPE SIMD load instructions. 808117395Skan 809132718Skan;; Only the hardware engineer who designed the SPE understands the 810117395Skan;; plethora of load and store instructions ;-). We have no way of 811117395Skan;; differentiating between them with RTL so use an unspec of const_int 0 812117395Skan;; to avoid identical RTL. 813117395Skan 814117395Skan(define_insn "spe_evldd" 815117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 816117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 817117395Skan (match_operand:QI 2 "immediate_operand" "i")))) 818117395Skan (unspec [(const_int 0)] 544)] 819117395Skan "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31" 820132718Skan "evldd %0,%2*8(%1)" 821117395Skan [(set_attr "type" "vecload") 822117395Skan (set_attr "length" "4")]) 823117395Skan 824117395Skan(define_insn "spe_evlddx" 825117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 826117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 827117395Skan (match_operand:SI 2 "gpc_reg_operand" "r")))) 828117395Skan (unspec [(const_int 0)] 545)] 829117395Skan "TARGET_SPE" 830117395Skan "evlddx %0,%1,%2" 831117395Skan [(set_attr "type" "vecload") 832117395Skan (set_attr "length" "4")]) 833117395Skan 834117395Skan(define_insn "spe_evldh" 835117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 836117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 837117395Skan (match_operand:QI 2 "immediate_operand" "i")))) 838117395Skan (unspec [(const_int 0)] 546)] 839117395Skan "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31" 840132718Skan "evldh %0,%2*8(%1)" 841117395Skan [(set_attr "type" "vecload") 842117395Skan (set_attr "length" "4")]) 843117395Skan 844117395Skan(define_insn "spe_evldhx" 845117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 846117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 847117395Skan (match_operand:SI 2 "gpc_reg_operand" "r")))) 848117395Skan (unspec [(const_int 0)] 547)] 849117395Skan "TARGET_SPE" 850117395Skan "evldhx %0,%1,%2" 851117395Skan [(set_attr "type" "vecload") 852117395Skan (set_attr "length" "4")]) 853117395Skan 854117395Skan(define_insn "spe_evldw" 855117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 856117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 857117395Skan (match_operand:QI 2 "immediate_operand" "i")))) 858117395Skan (unspec [(const_int 0)] 548)] 859132718Skan "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31" 860132718Skan "evldw %0,%2*8(%1)" 861117395Skan [(set_attr "type" "vecload") 862117395Skan (set_attr "length" "4")]) 863117395Skan 864117395Skan(define_insn "spe_evldwx" 865117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 866117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 867117395Skan (match_operand:SI 2 "gpc_reg_operand" "r")))) 868117395Skan (unspec [(const_int 0)] 549)] 869117395Skan "TARGET_SPE" 870117395Skan "evldwx %0,%1,%2" 871117395Skan [(set_attr "type" "vecload") 872117395Skan (set_attr "length" "4")]) 873117395Skan 874117395Skan(define_insn "spe_evlwhe" 875117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 876117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 877117395Skan (match_operand:QI 2 "immediate_operand" "i")))) 878117395Skan (unspec [(const_int 0)] 550)] 879132718Skan "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31" 880132718Skan "evlwhe %0,%2*4(%1)" 881117395Skan [(set_attr "type" "vecload") 882117395Skan (set_attr "length" "4")]) 883117395Skan 884117395Skan(define_insn "spe_evlwhex" 885117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 886117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 887117395Skan (match_operand:SI 2 "gpc_reg_operand" "r")))) 888117395Skan (unspec [(const_int 0)] 551)] 889117395Skan "TARGET_SPE" 890117395Skan "evlwhex %0,%1,%2" 891117395Skan [(set_attr "type" "vecload") 892117395Skan (set_attr "length" "4")]) 893117395Skan 894117395Skan(define_insn "spe_evlwhos" 895117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 896117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 897117395Skan (match_operand:QI 2 "immediate_operand" "i")))) 898117395Skan (unspec [(const_int 0)] 552)] 899132718Skan "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31" 900132718Skan "evlwhos %0,%2*4(%1)" 901117395Skan [(set_attr "type" "vecload") 902117395Skan (set_attr "length" "4")]) 903117395Skan 904117395Skan(define_insn "spe_evlwhosx" 905117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 906117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 907117395Skan (match_operand:SI 2 "gpc_reg_operand" "r")))) 908117395Skan (unspec [(const_int 0)] 553)] 909117395Skan "TARGET_SPE" 910117395Skan "evlwhosx %0,%1,%2" 911117395Skan [(set_attr "type" "vecload") 912117395Skan (set_attr "length" "4")]) 913117395Skan 914117395Skan(define_insn "spe_evlwhou" 915117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 916117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 917117395Skan (match_operand:QI 2 "immediate_operand" "i")))) 918117395Skan (unspec [(const_int 0)] 554)] 919132718Skan "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31" 920132718Skan "evlwhou %0,%2*4(%1)" 921117395Skan [(set_attr "type" "vecload") 922117395Skan (set_attr "length" "4")]) 923117395Skan 924117395Skan(define_insn "spe_evlwhoux" 925117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 926117395Skan (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b") 927117395Skan (match_operand:SI 2 "gpc_reg_operand" "r")))) 928117395Skan (unspec [(const_int 0)] 555)] 929117395Skan "TARGET_SPE" 930117395Skan "evlwhoux %0,%1,%2" 931117395Skan [(set_attr "type" "vecload") 932117395Skan (set_attr "length" "4")]) 933117395Skan 934117395Skan(define_insn "spe_brinc" 935117395Skan [(set (match_operand:SI 0 "gpc_reg_operand" "=r") 936117395Skan (unspec:SI [(match_operand:SI 1 "gpc_reg_operand" "r") 937117395Skan (match_operand:SI 2 "gpc_reg_operand" "r")] 556))] 938117395Skan "TARGET_SPE" 939117395Skan "brinc %0,%1,%2" 940132718Skan [(set_attr "type" "brinc") 941117395Skan (set_attr "length" "4")]) 942117395Skan 943117395Skan(define_insn "spe_evmhegsmfaa" 944117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 945117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 946117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 947117395Skan (reg:V2SI SPE_ACC_REGNO)] 557)) 948132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 949117395Skan "TARGET_SPE" 950117395Skan "evmhegsmfaa %0,%1,%2" 951117395Skan [(set_attr "type" "veccomplex") 952117395Skan (set_attr "length" "4")]) 953117395Skan 954117395Skan(define_insn "spe_evmhegsmfan" 955117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 956117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 957117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 958117395Skan (reg:V2SI SPE_ACC_REGNO)] 558)) 959132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 960117395Skan "TARGET_SPE" 961117395Skan "evmhegsmfan %0,%1,%2" 962117395Skan [(set_attr "type" "veccomplex") 963117395Skan (set_attr "length" "4")]) 964117395Skan 965117395Skan(define_insn "spe_evmhegsmiaa" 966117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 967117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 968117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 969117395Skan (reg:V2SI SPE_ACC_REGNO)] 559)) 970132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 971117395Skan "TARGET_SPE" 972117395Skan "evmhegsmiaa %0,%1,%2" 973117395Skan [(set_attr "type" "veccomplex") 974117395Skan (set_attr "length" "4")]) 975117395Skan 976117395Skan(define_insn "spe_evmhegsmian" 977117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 978117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 979117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 980117395Skan (reg:V2SI SPE_ACC_REGNO)] 560)) 981132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 982117395Skan "TARGET_SPE" 983117395Skan "evmhegsmian %0,%1,%2" 984117395Skan [(set_attr "type" "veccomplex") 985117395Skan (set_attr "length" "4")]) 986117395Skan 987117395Skan(define_insn "spe_evmhegumiaa" 988117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 989117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 990117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 991117395Skan (reg:V2SI SPE_ACC_REGNO)] 561)) 992132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 993117395Skan "TARGET_SPE" 994117395Skan "evmhegumiaa %0,%1,%2" 995117395Skan [(set_attr "type" "veccomplex") 996117395Skan (set_attr "length" "4")]) 997117395Skan 998117395Skan(define_insn "spe_evmhegumian" 999117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1000117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1001117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1002117395Skan (reg:V2SI SPE_ACC_REGNO)] 562)) 1003132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1004117395Skan "TARGET_SPE" 1005117395Skan "evmhegumian %0,%1,%2" 1006117395Skan [(set_attr "type" "veccomplex") 1007117395Skan (set_attr "length" "4")]) 1008117395Skan 1009117395Skan(define_insn "spe_evmhesmfaaw" 1010117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1011117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1012117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1013117395Skan (reg:V2SI SPE_ACC_REGNO)] 563)) 1014132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1015117395Skan "TARGET_SPE" 1016117395Skan "evmhesmfaaw %0,%1,%2" 1017117395Skan [(set_attr "type" "veccomplex") 1018117395Skan (set_attr "length" "4")]) 1019117395Skan 1020117395Skan(define_insn "spe_evmhesmfanw" 1021117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1022117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1023117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1024117395Skan (reg:V2SI SPE_ACC_REGNO)] 564)) 1025132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1026117395Skan "TARGET_SPE" 1027117395Skan "evmhesmfanw %0,%1,%2" 1028117395Skan [(set_attr "type" "veccomplex") 1029117395Skan (set_attr "length" "4")]) 1030117395Skan 1031117395Skan(define_insn "spe_evmhesmfa" 1032117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1033117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1034117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 565)) 1035132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1036117395Skan "TARGET_SPE" 1037117395Skan "evmhesmfa %0,%1,%2" 1038117395Skan [(set_attr "type" "veccomplex") 1039117395Skan (set_attr "length" "4")]) 1040117395Skan 1041117395Skan(define_insn "spe_evmhesmf" 1042117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1043117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1044117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 566))] 1045117395Skan "TARGET_SPE" 1046117395Skan "evmhesmf %0,%1,%2" 1047117395Skan [(set_attr "type" "veccomplex") 1048117395Skan (set_attr "length" "4")]) 1049117395Skan 1050117395Skan(define_insn "spe_evmhesmiaaw" 1051117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1052117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1053117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1054117395Skan (reg:V2SI SPE_ACC_REGNO)] 567)) 1055132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1056117395Skan "TARGET_SPE" 1057117395Skan "evmhesmiaaw %0,%1,%2" 1058117395Skan [(set_attr "type" "veccomplex") 1059117395Skan (set_attr "length" "4")]) 1060117395Skan 1061117395Skan(define_insn "spe_evmhesmianw" 1062117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1063117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1064117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1065117395Skan (reg:V2SI SPE_ACC_REGNO)] 568)) 1066132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1067117395Skan "TARGET_SPE" 1068117395Skan "evmhesmianw %0,%1,%2" 1069117395Skan [(set_attr "type" "veccomplex") 1070117395Skan (set_attr "length" "4")]) 1071117395Skan 1072117395Skan(define_insn "spe_evmhesmia" 1073117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1074117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1075117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 569)) 1076132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1077117395Skan "TARGET_SPE" 1078117395Skan "evmhesmia %0,%1,%2" 1079117395Skan [(set_attr "type" "veccomplex") 1080117395Skan (set_attr "length" "4")]) 1081117395Skan 1082117395Skan(define_insn "spe_evmhesmi" 1083117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1084117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1085117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 570))] 1086117395Skan "TARGET_SPE" 1087117395Skan "evmhesmi %0,%1,%2" 1088117395Skan [(set_attr "type" "veccomplex") 1089117395Skan (set_attr "length" "4")]) 1090117395Skan 1091117395Skan(define_insn "spe_evmhessfaaw" 1092117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1093117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1094117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1095117395Skan (reg:V2SI SPE_ACC_REGNO)] 571)) 1096117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1097132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1098117395Skan "TARGET_SPE" 1099117395Skan "evmhessfaaw %0,%1,%2" 1100117395Skan [(set_attr "type" "veccomplex") 1101117395Skan (set_attr "length" "4")]) 1102117395Skan 1103117395Skan(define_insn "spe_evmhessfanw" 1104117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1105117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1106117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1107117395Skan (reg:V2SI SPE_ACC_REGNO)] 572)) 1108117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1109132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1110117395Skan "TARGET_SPE" 1111117395Skan "evmhessfanw %0,%1,%2" 1112117395Skan [(set_attr "type" "veccomplex") 1113117395Skan (set_attr "length" "4")]) 1114117395Skan 1115117395Skan(define_insn "spe_evmhessfa" 1116117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1117117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1118117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 573)) 1119117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1120132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1121117395Skan "TARGET_SPE" 1122117395Skan "evmhessfa %0,%1,%2" 1123117395Skan [(set_attr "type" "veccomplex") 1124117395Skan (set_attr "length" "4")]) 1125117395Skan 1126117395Skan(define_insn "spe_evmhessf" 1127117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1128117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1129117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 574)) 1130117395Skan (clobber (reg:SI SPEFSCR_REGNO))] 1131117395Skan "TARGET_SPE" 1132117395Skan "evmhessf %0,%1,%2" 1133117395Skan [(set_attr "type" "veccomplex") 1134117395Skan (set_attr "length" "4")]) 1135117395Skan 1136117395Skan(define_insn "spe_evmhessiaaw" 1137117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1138117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1139117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1140117395Skan (reg:V2SI SPE_ACC_REGNO)] 575)) 1141117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1142132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1143117395Skan "TARGET_SPE" 1144117395Skan "evmhessiaaw %0,%1,%2" 1145117395Skan [(set_attr "type" "veccomplex") 1146117395Skan (set_attr "length" "4")]) 1147117395Skan 1148117395Skan(define_insn "spe_evmhessianw" 1149117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1150117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1151117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1152117395Skan (reg:V2SI SPE_ACC_REGNO)] 576)) 1153117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1154132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1155117395Skan "TARGET_SPE" 1156117395Skan "evmhessianw %0,%1,%2" 1157117395Skan [(set_attr "type" "veccomplex") 1158117395Skan (set_attr "length" "4")]) 1159117395Skan 1160117395Skan(define_insn "spe_evmheumiaaw" 1161117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1162117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1163117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1164117395Skan (reg:V2SI SPE_ACC_REGNO)] 577)) 1165132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1166117395Skan "TARGET_SPE" 1167117395Skan "evmheumiaaw %0,%1,%2" 1168117395Skan [(set_attr "type" "veccomplex") 1169117395Skan (set_attr "length" "4")]) 1170117395Skan 1171117395Skan(define_insn "spe_evmheumianw" 1172117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1173117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1174117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1175117395Skan (reg:V2SI SPE_ACC_REGNO)] 578)) 1176132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1177117395Skan "TARGET_SPE" 1178117395Skan "evmheumianw %0,%1,%2" 1179117395Skan [(set_attr "type" "veccomplex") 1180117395Skan (set_attr "length" "4")]) 1181117395Skan 1182117395Skan(define_insn "spe_evmheumia" 1183117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1184117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1185117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 579)) 1186132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1187117395Skan "TARGET_SPE" 1188117395Skan "evmheumia %0,%1,%2" 1189117395Skan [(set_attr "type" "veccomplex") 1190117395Skan (set_attr "length" "4")]) 1191117395Skan 1192117395Skan(define_insn "spe_evmheumi" 1193117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1194117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1195117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 580))] 1196117395Skan "TARGET_SPE" 1197117395Skan "evmheumi %0,%1,%2" 1198117395Skan [(set_attr "type" "veccomplex") 1199117395Skan (set_attr "length" "4")]) 1200117395Skan 1201117395Skan(define_insn "spe_evmheusiaaw" 1202117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1203117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1204117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1205117395Skan (reg:V2SI SPE_ACC_REGNO)] 581)) 1206117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1207132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1208117395Skan "TARGET_SPE" 1209117395Skan "evmheusiaaw %0,%1,%2" 1210117395Skan [(set_attr "type" "veccomplex") 1211117395Skan (set_attr "length" "4")]) 1212117395Skan 1213117395Skan(define_insn "spe_evmheusianw" 1214117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1215117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1216117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1217117395Skan (reg:V2SI SPE_ACC_REGNO)] 582)) 1218117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1219132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1220117395Skan "TARGET_SPE" 1221117395Skan "evmheusianw %0,%1,%2" 1222117395Skan [(set_attr "type" "veccomplex") 1223117395Skan (set_attr "length" "4")]) 1224117395Skan 1225117395Skan(define_insn "spe_evmhogsmfaa" 1226117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1227117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1228117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1229117395Skan (reg:V2SI SPE_ACC_REGNO)] 583)) 1230132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1231117395Skan "TARGET_SPE" 1232117395Skan "evmhogsmfaa %0,%1,%2" 1233117395Skan [(set_attr "type" "veccomplex") 1234117395Skan (set_attr "length" "4")]) 1235117395Skan 1236117395Skan(define_insn "spe_evmhogsmfan" 1237117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1238117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1239117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1240117395Skan (reg:V2SI SPE_ACC_REGNO)] 584)) 1241132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1242117395Skan "TARGET_SPE" 1243117395Skan "evmhogsmfan %0,%1,%2" 1244117395Skan [(set_attr "type" "veccomplex") 1245117395Skan (set_attr "length" "4")]) 1246117395Skan 1247117395Skan(define_insn "spe_evmhogsmiaa" 1248117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1249117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1250117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1251117395Skan (reg:V2SI SPE_ACC_REGNO)] 585)) 1252132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1253117395Skan "TARGET_SPE" 1254117395Skan "evmhogsmiaa %0,%1,%2" 1255117395Skan [(set_attr "type" "veccomplex") 1256117395Skan (set_attr "length" "4")]) 1257117395Skan 1258117395Skan(define_insn "spe_evmhogsmian" 1259117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1260117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1261117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1262117395Skan (reg:V2SI SPE_ACC_REGNO)] 586)) 1263132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1264117395Skan "TARGET_SPE" 1265117395Skan "evmhogsmian %0,%1,%2" 1266117395Skan [(set_attr "type" "veccomplex") 1267117395Skan (set_attr "length" "4")]) 1268117395Skan 1269117395Skan(define_insn "spe_evmhogumiaa" 1270117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1271117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1272117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1273117395Skan (reg:V2SI SPE_ACC_REGNO)] 587)) 1274132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1275117395Skan "TARGET_SPE" 1276117395Skan "evmhogumiaa %0,%1,%2" 1277117395Skan [(set_attr "type" "veccomplex") 1278117395Skan (set_attr "length" "4")]) 1279117395Skan 1280117395Skan(define_insn "spe_evmhogumian" 1281117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1282117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1283117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1284117395Skan (reg:V2SI SPE_ACC_REGNO)] 588)) 1285132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1286117395Skan "TARGET_SPE" 1287117395Skan "evmhogumian %0,%1,%2" 1288117395Skan [(set_attr "type" "veccomplex") 1289117395Skan (set_attr "length" "4")]) 1290117395Skan 1291117395Skan(define_insn "spe_evmhosmfaaw" 1292117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1293117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1294117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1295117395Skan (reg:V2SI SPE_ACC_REGNO)] 589)) 1296132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1297117395Skan "TARGET_SPE" 1298117395Skan "evmhosmfaaw %0,%1,%2" 1299117395Skan [(set_attr "type" "veccomplex") 1300117395Skan (set_attr "length" "4")]) 1301117395Skan 1302117395Skan(define_insn "spe_evmhosmfanw" 1303117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1304117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1305117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1306117395Skan (reg:V2SI SPE_ACC_REGNO)] 590)) 1307132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1308117395Skan "TARGET_SPE" 1309117395Skan "evmhosmfanw %0,%1,%2" 1310117395Skan [(set_attr "type" "veccomplex") 1311117395Skan (set_attr "length" "4")]) 1312117395Skan 1313117395Skan(define_insn "spe_evmhosmfa" 1314117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1315117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1316117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 591))] 1317117395Skan "TARGET_SPE" 1318117395Skan "evmhosmfa %0,%1,%2" 1319117395Skan [(set_attr "type" "veccomplex") 1320117395Skan (set_attr "length" "4")]) 1321117395Skan 1322117395Skan(define_insn "spe_evmhosmf" 1323117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1324117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1325117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 592)) 1326132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1327117395Skan "TARGET_SPE" 1328117395Skan "evmhosmf %0,%1,%2" 1329117395Skan [(set_attr "type" "veccomplex") 1330117395Skan (set_attr "length" "4")]) 1331117395Skan 1332117395Skan(define_insn "spe_evmhosmiaaw" 1333117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1334117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1335117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1336117395Skan (reg:V2SI SPE_ACC_REGNO)] 593)) 1337132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1338117395Skan "TARGET_SPE" 1339117395Skan "evmhosmiaaw %0,%1,%2" 1340117395Skan [(set_attr "type" "veccomplex") 1341117395Skan (set_attr "length" "4")]) 1342117395Skan 1343117395Skan(define_insn "spe_evmhosmianw" 1344117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1345117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1346117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1347117395Skan (reg:V2SI SPE_ACC_REGNO)] 594)) 1348132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1349117395Skan "TARGET_SPE" 1350117395Skan "evmhosmianw %0,%1,%2" 1351117395Skan [(set_attr "type" "veccomplex") 1352117395Skan (set_attr "length" "4")]) 1353117395Skan 1354117395Skan(define_insn "spe_evmhosmia" 1355117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1356117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1357117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 595)) 1358132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1359117395Skan "TARGET_SPE" 1360117395Skan "evmhosmia %0,%1,%2" 1361117395Skan [(set_attr "type" "veccomplex") 1362117395Skan (set_attr "length" "4")]) 1363117395Skan 1364117395Skan(define_insn "spe_evmhosmi" 1365117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1366117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1367117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 596))] 1368117395Skan "TARGET_SPE" 1369117395Skan "evmhosmi %0,%1,%2" 1370117395Skan [(set_attr "type" "veccomplex") 1371117395Skan (set_attr "length" "4")]) 1372117395Skan 1373117395Skan(define_insn "spe_evmhossfaaw" 1374117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1375117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1376117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1377117395Skan (reg:V2SI SPE_ACC_REGNO)] 597)) 1378117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1379132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1380117395Skan "TARGET_SPE" 1381117395Skan "evmhossfaaw %0,%1,%2" 1382117395Skan [(set_attr "type" "veccomplex") 1383117395Skan (set_attr "length" "4")]) 1384117395Skan 1385117395Skan(define_insn "spe_evmhossfanw" 1386117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1387117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1388117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1389117395Skan (reg:V2SI SPE_ACC_REGNO)] 598)) 1390117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1391132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1392117395Skan "TARGET_SPE" 1393117395Skan "evmhossfanw %0,%1,%2" 1394117395Skan [(set_attr "type" "veccomplex") 1395117395Skan (set_attr "length" "4")]) 1396117395Skan 1397117395Skan(define_insn "spe_evmhossfa" 1398117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1399117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1400117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1401117395Skan (reg:V2SI SPE_ACC_REGNO)] 599)) 1402117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1403132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1404117395Skan "TARGET_SPE" 1405117395Skan "evmhossfa %0,%1,%2" 1406117395Skan [(set_attr "type" "veccomplex") 1407117395Skan (set_attr "length" "4")]) 1408117395Skan 1409117395Skan(define_insn "spe_evmhossf" 1410117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1411117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1412117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 600)) 1413117395Skan (clobber (reg:SI SPEFSCR_REGNO))] 1414117395Skan "TARGET_SPE" 1415117395Skan "evmhossf %0,%1,%2" 1416117395Skan [(set_attr "type" "veccomplex") 1417117395Skan (set_attr "length" "4")]) 1418117395Skan 1419117395Skan(define_insn "spe_evmhossiaaw" 1420117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1421117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1422117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1423117395Skan (reg:V2SI SPE_ACC_REGNO)] 601)) 1424117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1425132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1426117395Skan "TARGET_SPE" 1427117395Skan "evmhossiaaw %0,%1,%2" 1428117395Skan [(set_attr "type" "veccomplex") 1429117395Skan (set_attr "length" "4")]) 1430117395Skan 1431117395Skan(define_insn "spe_evmhossianw" 1432117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1433117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1434117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1435117395Skan (reg:V2SI SPE_ACC_REGNO)] 602)) 1436117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1437132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1438117395Skan "TARGET_SPE" 1439117395Skan "evmhossianw %0,%1,%2" 1440117395Skan [(set_attr "type" "veccomplex") 1441117395Skan (set_attr "length" "4")]) 1442117395Skan 1443117395Skan(define_insn "spe_evmhoumiaaw" 1444117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1445117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1446117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1447117395Skan (reg:V2SI SPE_ACC_REGNO)] 603)) 1448132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1449117395Skan "TARGET_SPE" 1450117395Skan "evmhoumiaaw %0,%1,%2" 1451117395Skan [(set_attr "type" "veccomplex") 1452117395Skan (set_attr "length" "4")]) 1453117395Skan 1454117395Skan(define_insn "spe_evmhoumianw" 1455117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1456117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1457117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1458117395Skan (reg:V2SI SPE_ACC_REGNO)] 604)) 1459132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1460117395Skan "TARGET_SPE" 1461117395Skan "evmhoumianw %0,%1,%2" 1462117395Skan [(set_attr "type" "veccomplex") 1463117395Skan (set_attr "length" "4")]) 1464117395Skan 1465117395Skan(define_insn "spe_evmhoumia" 1466117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1467117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1468117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 605)) 1469132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1470117395Skan "TARGET_SPE" 1471117395Skan "evmhoumia %0,%1,%2" 1472117395Skan [(set_attr "type" "veccomplex") 1473117395Skan (set_attr "length" "4")]) 1474117395Skan 1475117395Skan(define_insn "spe_evmhoumi" 1476117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1477117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1478117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 606))] 1479117395Skan "TARGET_SPE" 1480117395Skan "evmhoumi %0,%1,%2" 1481117395Skan [(set_attr "type" "veccomplex") 1482117395Skan (set_attr "length" "4")]) 1483117395Skan 1484117395Skan(define_insn "spe_evmhousiaaw" 1485117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1486117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1487117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1488117395Skan (reg:V2SI SPE_ACC_REGNO)] 607)) 1489117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1490132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1491117395Skan "TARGET_SPE" 1492117395Skan "evmhousiaaw %0,%1,%2" 1493117395Skan [(set_attr "type" "veccomplex") 1494117395Skan (set_attr "length" "4")]) 1495117395Skan 1496117395Skan(define_insn "spe_evmhousianw" 1497117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1498117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1499117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1500117395Skan (reg:V2SI SPE_ACC_REGNO)] 608)) 1501117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1502132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1503117395Skan "TARGET_SPE" 1504117395Skan "evmhousianw %0,%1,%2" 1505117395Skan [(set_attr "type" "veccomplex") 1506117395Skan (set_attr "length" "4")]) 1507117395Skan 1508117395Skan(define_insn "spe_evmmlssfa" 1509117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1510117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1511117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 609))] 1512117395Skan "TARGET_SPE" 1513117395Skan "evmmlssfa %0,%1,%2" 1514117395Skan [(set_attr "type" "veccomplex") 1515117395Skan (set_attr "length" "4")]) 1516117395Skan 1517117395Skan(define_insn "spe_evmmlssf" 1518117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1519117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1520117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 610))] 1521117395Skan "TARGET_SPE" 1522117395Skan "evmmlssf %0,%1,%2" 1523117395Skan [(set_attr "type" "veccomplex") 1524117395Skan (set_attr "length" "4")]) 1525117395Skan 1526117395Skan(define_insn "spe_evmwhsmfa" 1527117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1528117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1529117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 611)) 1530132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1531117395Skan "TARGET_SPE" 1532117395Skan "evmwhsmfa %0,%1,%2" 1533117395Skan [(set_attr "type" "veccomplex") 1534117395Skan (set_attr "length" "4")]) 1535117395Skan 1536117395Skan(define_insn "spe_evmwhsmf" 1537117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1538117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1539117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 612))] 1540117395Skan "TARGET_SPE" 1541117395Skan "evmwhsmf %0,%1,%2" 1542117395Skan [(set_attr "type" "veccomplex") 1543117395Skan (set_attr "length" "4")]) 1544117395Skan 1545117395Skan(define_insn "spe_evmwhsmia" 1546117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1547117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1548117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 613)) 1549132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1550117395Skan "TARGET_SPE" 1551117395Skan "evmwhsmia %0,%1,%2" 1552117395Skan [(set_attr "type" "veccomplex") 1553117395Skan (set_attr "length" "4")]) 1554117395Skan 1555117395Skan(define_insn "spe_evmwhsmi" 1556117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1557117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1558117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 614))] 1559117395Skan "TARGET_SPE" 1560117395Skan "evmwhsmi %0,%1,%2" 1561117395Skan [(set_attr "type" "veccomplex") 1562117395Skan (set_attr "length" "4")]) 1563117395Skan 1564117395Skan(define_insn "spe_evmwhssfa" 1565117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1566117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1567117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 615)) 1568117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1569132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1570117395Skan "TARGET_SPE" 1571117395Skan "evmwhssfa %0,%1,%2" 1572117395Skan [(set_attr "type" "veccomplex") 1573117395Skan (set_attr "length" "4")]) 1574117395Skan 1575117395Skan(define_insn "spe_evmwhusian" 1576117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1577117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1578117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 626))] 1579117395Skan "TARGET_SPE" 1580117395Skan "evmwhusian %0,%1,%2" 1581117395Skan [(set_attr "type" "veccomplex") 1582117395Skan (set_attr "length" "4")]) 1583117395Skan 1584117395Skan(define_insn "spe_evmwhssf" 1585117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1586117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1587117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 628)) 1588117395Skan (clobber (reg:SI SPEFSCR_REGNO))] 1589117395Skan "TARGET_SPE" 1590117395Skan "evmwhssf %0,%1,%2" 1591117395Skan [(set_attr "type" "veccomplex") 1592117395Skan (set_attr "length" "4")]) 1593117395Skan 1594117395Skan(define_insn "spe_evmwhumia" 1595117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1596117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1597117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 629)) 1598132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1599117395Skan "TARGET_SPE" 1600117395Skan "evmwhumia %0,%1,%2" 1601117395Skan [(set_attr "type" "veccomplex") 1602117395Skan (set_attr "length" "4")]) 1603117395Skan 1604117395Skan(define_insn "spe_evmwhumi" 1605117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1606117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1607117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 630))] 1608117395Skan "TARGET_SPE" 1609117395Skan "evmwhumi %0,%1,%2" 1610117395Skan [(set_attr "type" "veccomplex") 1611117395Skan (set_attr "length" "4")]) 1612117395Skan 1613117395Skan(define_insn "spe_evmwlsmiaaw" 1614117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1615117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1616117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1617117395Skan (reg:V2SI SPE_ACC_REGNO)] 635)) 1618132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1619117395Skan "TARGET_SPE" 1620117395Skan "evmwlsmiaaw %0,%1,%2" 1621117395Skan [(set_attr "type" "veccomplex") 1622117395Skan (set_attr "length" "4")]) 1623117395Skan 1624117395Skan(define_insn "spe_evmwlsmianw" 1625117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1626117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1627117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1628117395Skan (reg:V2SI SPE_ACC_REGNO)] 636)) 1629132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1630117395Skan "TARGET_SPE" 1631117395Skan "evmwlsmianw %0,%1,%2" 1632117395Skan [(set_attr "type" "veccomplex") 1633117395Skan (set_attr "length" "4")]) 1634117395Skan 1635117395Skan(define_insn "spe_evmwlssiaaw" 1636117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1637117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1638117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1639117395Skan (reg:V2SI SPE_ACC_REGNO)] 641)) 1640117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1641132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1642117395Skan "TARGET_SPE" 1643117395Skan "evmwlssiaaw %0,%1,%2" 1644117395Skan [(set_attr "type" "veccomplex") 1645117395Skan (set_attr "length" "4")]) 1646117395Skan 1647117395Skan(define_insn "spe_evmwlssianw" 1648117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1649117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1650117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1651117395Skan (reg:V2SI SPE_ACC_REGNO)] 642)) 1652117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1653132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1654117395Skan "TARGET_SPE" 1655117395Skan "evmwlssianw %0,%1,%2" 1656117395Skan [(set_attr "type" "veccomplex") 1657117395Skan (set_attr "length" "4")]) 1658117395Skan 1659117395Skan(define_insn "spe_evmwlumiaaw" 1660117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1661117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1662117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1663117395Skan (reg:V2SI SPE_ACC_REGNO)] 643)) 1664132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1665117395Skan "TARGET_SPE" 1666117395Skan "evmwlumiaaw %0,%1,%2" 1667117395Skan [(set_attr "type" "veccomplex") 1668117395Skan (set_attr "length" "4")]) 1669117395Skan 1670117395Skan(define_insn "spe_evmwlumianw" 1671117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1672117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1673117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1674117395Skan (reg:V2SI SPE_ACC_REGNO)] 644)) 1675132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1676117395Skan "TARGET_SPE" 1677117395Skan "evmwlumianw %0,%1,%2" 1678117395Skan [(set_attr "type" "veccomplex") 1679117395Skan (set_attr "length" "4")]) 1680117395Skan 1681117395Skan(define_insn "spe_evmwlumia" 1682117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1683117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1684117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 645)) 1685132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1686117395Skan "TARGET_SPE" 1687117395Skan "evmwlumia %0,%1,%2" 1688117395Skan [(set_attr "type" "veccomplex") 1689117395Skan (set_attr "length" "4")]) 1690117395Skan 1691117395Skan(define_insn "spe_evmwlumi" 1692117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1693117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1694117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 646))] 1695117395Skan "TARGET_SPE" 1696117395Skan "evmwlumi %0,%1,%2" 1697117395Skan [(set_attr "type" "veccomplex") 1698117395Skan (set_attr "length" "4")]) 1699117395Skan 1700117395Skan(define_insn "spe_evmwlusiaaw" 1701117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1702117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1703117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1704117395Skan (reg:V2SI SPE_ACC_REGNO)] 647)) 1705117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1706132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1707117395Skan "TARGET_SPE" 1708117395Skan "evmwlusiaaw %0,%1,%2" 1709117395Skan [(set_attr "type" "veccomplex") 1710117395Skan (set_attr "length" "4")]) 1711117395Skan 1712117395Skan(define_insn "spe_evmwlusianw" 1713117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1714117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1715117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1716117395Skan (reg:V2SI SPE_ACC_REGNO)] 648)) 1717117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1718132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1719117395Skan "TARGET_SPE" 1720117395Skan "evmwlusianw %0,%1,%2" 1721117395Skan [(set_attr "type" "veccomplex") 1722117395Skan (set_attr "length" "4")]) 1723117395Skan 1724117395Skan(define_insn "spe_evmwsmfaa" 1725117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1726117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1727117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1728117395Skan (reg:V2SI SPE_ACC_REGNO)] 649)) 1729132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1730117395Skan "TARGET_SPE" 1731117395Skan "evmwsmfaa %0,%1,%2" 1732117395Skan [(set_attr "type" "veccomplex") 1733117395Skan (set_attr "length" "4")]) 1734117395Skan 1735117395Skan(define_insn "spe_evmwsmfan" 1736117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1737117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1738117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1739117395Skan (reg:V2SI SPE_ACC_REGNO)] 650)) 1740132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1741117395Skan "TARGET_SPE" 1742117395Skan "evmwsmfan %0,%1,%2" 1743117395Skan [(set_attr "type" "veccomplex") 1744117395Skan (set_attr "length" "4")]) 1745117395Skan 1746117395Skan(define_insn "spe_evmwsmfa" 1747117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1748117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1749117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 651)) 1750132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1751117395Skan "TARGET_SPE" 1752117395Skan "evmwsmfa %0,%1,%2" 1753117395Skan [(set_attr "type" "veccomplex") 1754117395Skan (set_attr "length" "4")]) 1755117395Skan 1756117395Skan(define_insn "spe_evmwsmf" 1757117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1758117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1759117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 652))] 1760117395Skan "TARGET_SPE" 1761117395Skan "evmwsmf %0,%1,%2" 1762117395Skan [(set_attr "type" "veccomplex") 1763117395Skan (set_attr "length" "4")]) 1764117395Skan 1765117395Skan(define_insn "spe_evmwsmiaa" 1766117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1767117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1768117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1769117395Skan (reg:V2SI SPE_ACC_REGNO)] 653)) 1770132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1771117395Skan "TARGET_SPE" 1772117395Skan "evmwsmiaa %0,%1,%2" 1773117395Skan [(set_attr "type" "veccomplex") 1774117395Skan (set_attr "length" "4")]) 1775117395Skan 1776117395Skan(define_insn "spe_evmwsmian" 1777117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1778117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1779117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1780117395Skan (reg:V2SI SPE_ACC_REGNO)] 654)) 1781132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1782117395Skan "TARGET_SPE" 1783117395Skan "evmwsmian %0,%1,%2" 1784117395Skan [(set_attr "type" "veccomplex") 1785117395Skan (set_attr "length" "4")]) 1786117395Skan 1787117395Skan(define_insn "spe_evmwsmia" 1788117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1789117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1790117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 655)) 1791132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1792117395Skan "TARGET_SPE" 1793117395Skan "evmwsmia %0,%1,%2" 1794117395Skan [(set_attr "type" "veccomplex") 1795117395Skan (set_attr "length" "4")]) 1796117395Skan 1797117395Skan(define_insn "spe_evmwsmi" 1798117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1799117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1800117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 656))] 1801117395Skan "TARGET_SPE" 1802117395Skan "evmwsmi %0,%1,%2" 1803117395Skan [(set_attr "type" "veccomplex") 1804117395Skan (set_attr "length" "4")]) 1805117395Skan 1806117395Skan(define_insn "spe_evmwssfaa" 1807117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1808117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1809117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1810117395Skan (reg:V2SI SPE_ACC_REGNO)] 657)) 1811117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1812132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1813117395Skan "TARGET_SPE" 1814117395Skan "evmwssfaa %0,%1,%2" 1815117395Skan [(set_attr "type" "veccomplex") 1816117395Skan (set_attr "length" "4")]) 1817117395Skan 1818117395Skan(define_insn "spe_evmwssfan" 1819117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1820117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1821117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1822117395Skan (reg:V2SI SPE_ACC_REGNO)] 658)) 1823117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1824132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1825117395Skan "TARGET_SPE" 1826117395Skan "evmwssfan %0,%1,%2" 1827117395Skan [(set_attr "type" "veccomplex") 1828117395Skan (set_attr "length" "4")]) 1829117395Skan 1830117395Skan(define_insn "spe_evmwssfa" 1831117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1832117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1833117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 659)) 1834117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1835132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1836117395Skan "TARGET_SPE" 1837117395Skan "evmwssfa %0,%1,%2" 1838117395Skan [(set_attr "type" "veccomplex") 1839117395Skan (set_attr "length" "4")]) 1840117395Skan 1841117395Skan(define_insn "spe_evmwssf" 1842117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1843117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1844117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 660)) 1845117395Skan (clobber (reg:SI SPEFSCR_REGNO))] 1846117395Skan "TARGET_SPE" 1847117395Skan "evmwssf %0,%1,%2" 1848117395Skan [(set_attr "type" "veccomplex") 1849117395Skan (set_attr "length" "4")]) 1850117395Skan 1851117395Skan(define_insn "spe_evmwumiaa" 1852117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1853117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1854117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1855117395Skan (reg:V2SI SPE_ACC_REGNO)] 661)) 1856132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1857117395Skan "TARGET_SPE" 1858117395Skan "evmwumiaa %0,%1,%2" 1859117395Skan [(set_attr "type" "veccomplex") 1860117395Skan (set_attr "length" "4")]) 1861117395Skan 1862117395Skan(define_insn "spe_evmwumian" 1863117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1864117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1865117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r") 1866117395Skan (reg:V2SI SPE_ACC_REGNO)] 662)) 1867132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1868117395Skan "TARGET_SPE" 1869117395Skan "evmwumian %0,%1,%2" 1870117395Skan [(set_attr "type" "veccomplex") 1871117395Skan (set_attr "length" "4")]) 1872117395Skan 1873117395Skan(define_insn "spe_evmwumia" 1874117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1875117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1876117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 663)) 1877132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1878117395Skan "TARGET_SPE" 1879117395Skan "evmwumia %0,%1,%2" 1880117395Skan [(set_attr "type" "veccomplex") 1881117395Skan (set_attr "length" "4")]) 1882117395Skan 1883117395Skan(define_insn "spe_evmwumi" 1884117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1885117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1886117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 664))] 1887117395Skan "TARGET_SPE" 1888117395Skan "evmwumi %0,%1,%2" 1889117395Skan [(set_attr "type" "veccomplex") 1890117395Skan (set_attr "length" "4")]) 1891117395Skan 1892117395Skan(define_insn "spe_evaddw" 1893117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1894117395Skan (plus:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r") 1895117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")))] 1896117395Skan "TARGET_SPE" 1897117395Skan "evaddw %0,%1,%2" 1898132718Skan [(set_attr "type" "vecsimple") 1899117395Skan (set_attr "length" "4")]) 1900117395Skan 1901117395Skan(define_insn "spe_evaddusiaaw" 1902117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1903117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1904117395Skan (reg:V2SI SPE_ACC_REGNO)] 673)) 1905117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1906132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1907117395Skan "TARGET_SPE" 1908117395Skan "evaddusiaaw %0,%1" 1909117395Skan [(set_attr "type" "veccomplex") 1910117395Skan (set_attr "length" "4")]) 1911117395Skan 1912117395Skan(define_insn "spe_evaddumiaaw" 1913117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1914117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1915117395Skan (reg:V2SI SPE_ACC_REGNO)] 674)) 1916132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1917117395Skan "TARGET_SPE" 1918117395Skan "evaddumiaaw %0,%1" 1919117395Skan [(set_attr "type" "veccomplex") 1920117395Skan (set_attr "length" "4")]) 1921117395Skan 1922117395Skan(define_insn "spe_evaddssiaaw" 1923117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1924117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1925117395Skan (reg:V2SI SPE_ACC_REGNO)] 675)) 1926117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1927132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1928117395Skan "TARGET_SPE" 1929117395Skan "evaddssiaaw %0,%1" 1930117395Skan [(set_attr "type" "veccomplex") 1931117395Skan (set_attr "length" "4")]) 1932117395Skan 1933117395Skan(define_insn "spe_evaddsmiaaw" 1934117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1935117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1936117395Skan (reg:V2SI SPE_ACC_REGNO)] 676)) 1937132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1938117395Skan "TARGET_SPE" 1939117395Skan "evaddsmiaaw %0,%1" 1940117395Skan [(set_attr "type" "veccomplex") 1941117395Skan (set_attr "length" "4")]) 1942117395Skan 1943117395Skan(define_insn "spe_evaddiw" 1944117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1945117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1946117395Skan (match_operand:QI 2 "immediate_operand" "i")] 677))] 1947117395Skan "TARGET_SPE" 1948117395Skan "evaddiw %0,%1,%2" 1949132718Skan [(set_attr "type" "vecsimple") 1950117395Skan (set_attr "length" "4")]) 1951117395Skan 1952117395Skan(define_insn "spe_evsubifw" 1953117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1954117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1955117395Skan (match_operand:QI 2 "immediate_operand" "i")] 678))] 1956117395Skan "TARGET_SPE" 1957117395Skan "evsubifw %0,%2,%1" 1958117395Skan [(set_attr "type" "veccomplex") 1959117395Skan (set_attr "length" "4")]) 1960117395Skan 1961117395Skan(define_insn "spe_evsubfw" 1962117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1963117395Skan (minus:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r") 1964117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")))] 1965117395Skan "TARGET_SPE" 1966132718Skan "evsubfw %0,%2,%1" 1967117395Skan [(set_attr "type" "veccomplex") 1968117395Skan (set_attr "length" "4")]) 1969117395Skan 1970117395Skan(define_insn "spe_evsubfusiaaw" 1971117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1972117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1973117395Skan (reg:V2SI SPE_ACC_REGNO)] 679)) 1974117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1975132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1976117395Skan "TARGET_SPE" 1977117395Skan "evsubfusiaaw %0,%1" 1978117395Skan [(set_attr "type" "veccomplex") 1979117395Skan (set_attr "length" "4")]) 1980117395Skan 1981117395Skan(define_insn "spe_evsubfumiaaw" 1982117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1983117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1984117395Skan (reg:V2SI SPE_ACC_REGNO)] 680)) 1985132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1986117395Skan "TARGET_SPE" 1987117395Skan "evsubfumiaaw %0,%1" 1988117395Skan [(set_attr "type" "veccomplex") 1989117395Skan (set_attr "length" "4")]) 1990117395Skan 1991117395Skan(define_insn "spe_evsubfssiaaw" 1992117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 1993117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 1994117395Skan (reg:V2SI SPE_ACC_REGNO)] 681)) 1995117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 1996132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 1997117395Skan "TARGET_SPE" 1998117395Skan "evsubfssiaaw %0,%1" 1999117395Skan [(set_attr "type" "veccomplex") 2000117395Skan (set_attr "length" "4")]) 2001117395Skan 2002117395Skan(define_insn "spe_evsubfsmiaaw" 2003117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2004117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2005117395Skan (reg:V2SI SPE_ACC_REGNO)] 682)) 2006132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2007117395Skan "TARGET_SPE" 2008117395Skan "evsubfsmiaaw %0,%1" 2009117395Skan [(set_attr "type" "veccomplex") 2010117395Skan (set_attr "length" "4")]) 2011117395Skan 2012117395Skan(define_insn "spe_evmra" 2013117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2014117395Skan (match_operand:V2SI 1 "gpc_reg_operand" "r")) 2015117395Skan (set (reg:V2SI SPE_ACC_REGNO) 2016117395Skan (unspec:V2SI [(match_dup 1)] 726))] 2017117395Skan "TARGET_SPE" 2018117395Skan "evmra %0,%1" 2019117395Skan [(set_attr "type" "veccomplex") 2020117395Skan (set_attr "length" "4")]) 2021117395Skan 2022117395Skan(define_insn "spe_evdivws" 2023117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2024117395Skan (div:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r") 2025117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r"))) 2026117395Skan (clobber (reg:SI SPEFSCR_REGNO))] 2027117395Skan "TARGET_SPE" 2028117395Skan "evdivws %0,%1,%2" 2029132718Skan [(set_attr "type" "vecdiv") 2030117395Skan (set_attr "length" "4")]) 2031117395Skan 2032117395Skan(define_insn "spe_evdivwu" 2033117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2034117395Skan (udiv:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r") 2035117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r"))) 2036117395Skan (clobber (reg:SI SPEFSCR_REGNO))] 2037117395Skan "TARGET_SPE" 2038117395Skan "evdivwu %0,%1,%2" 2039132718Skan [(set_attr "type" "vecdiv") 2040117395Skan (set_attr "length" "4")]) 2041117395Skan 2042117395Skan(define_insn "spe_evsplatfi" 2043117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2044117395Skan (unspec:V2SI [(match_operand:QI 1 "immediate_operand" "i")] 684))] 2045117395Skan "TARGET_SPE" 2046117395Skan "evsplatfi %0,%1" 2047117395Skan [(set_attr "type" "vecperm") 2048117395Skan (set_attr "length" "4")]) 2049117395Skan 2050117395Skan(define_insn "spe_evsplati" 2051117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2052117395Skan (unspec:V2SI [(match_operand:QI 1 "immediate_operand" "i")] 685))] 2053117395Skan "TARGET_SPE" 2054117395Skan "evsplati %0,%1" 2055117395Skan [(set_attr "type" "vecperm") 2056117395Skan (set_attr "length" "4")]) 2057117395Skan 2058117395Skan(define_insn "spe_evstdd" 2059117395Skan [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b") 2060117395Skan (match_operand:QI 1 "immediate_operand" "i"))) 2061117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")) 2062117395Skan (unspec [(const_int 0)] 686)] 2063132718Skan "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31" 2064132718Skan "evstdd %2,%1*8(%0)" 2065117395Skan [(set_attr "type" "vecstore") 2066117395Skan (set_attr "length" "4")]) 2067117395Skan 2068117395Skan(define_insn "spe_evstddx" 2069117395Skan [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b") 2070117395Skan (match_operand:SI 1 "gpc_reg_operand" "r"))) 2071117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")) 2072117395Skan (unspec [(const_int 0)] 687)] 2073117395Skan "TARGET_SPE" 2074117395Skan "evstddx %2,%0,%1" 2075117395Skan [(set_attr "type" "vecstore") 2076117395Skan (set_attr "length" "4")]) 2077117395Skan 2078117395Skan(define_insn "spe_evstdh" 2079117395Skan [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b") 2080117395Skan (match_operand:QI 1 "immediate_operand" "i"))) 2081117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")) 2082117395Skan (unspec [(const_int 0)] 688)] 2083132718Skan "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31" 2084132718Skan "evstdh %2,%1*8(%0)" 2085117395Skan [(set_attr "type" "vecstore") 2086117395Skan (set_attr "length" "4")]) 2087117395Skan 2088117395Skan(define_insn "spe_evstdhx" 2089117395Skan [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b") 2090117395Skan (match_operand:SI 1 "gpc_reg_operand" "r"))) 2091117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")) 2092117395Skan (unspec [(const_int 0)] 689)] 2093117395Skan "TARGET_SPE" 2094117395Skan "evstdhx %2,%0,%1" 2095117395Skan [(set_attr "type" "vecstore") 2096117395Skan (set_attr "length" "4")]) 2097117395Skan 2098117395Skan(define_insn "spe_evstdw" 2099117395Skan [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b") 2100117395Skan (match_operand:QI 1 "immediate_operand" "i"))) 2101117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")) 2102117395Skan (unspec [(const_int 0)] 690)] 2103132718Skan "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31" 2104132718Skan "evstdw %2,%1*8(%0)" 2105117395Skan [(set_attr "type" "vecstore") 2106117395Skan (set_attr "length" "4")]) 2107117395Skan 2108117395Skan(define_insn "spe_evstdwx" 2109117395Skan [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b") 2110117395Skan (match_operand:SI 1 "gpc_reg_operand" "r"))) 2111117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")) 2112117395Skan (unspec [(const_int 0)] 691)] 2113117395Skan "TARGET_SPE" 2114117395Skan "evstdwx %2,%0,%1" 2115117395Skan [(set_attr "type" "vecstore") 2116117395Skan (set_attr "length" "4")]) 2117117395Skan 2118117395Skan(define_insn "spe_evstwhe" 2119117395Skan [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b") 2120117395Skan (match_operand:QI 1 "immediate_operand" "i"))) 2121117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")) 2122117395Skan (unspec [(const_int 0)] 692)] 2123132718Skan "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31" 2124132718Skan "evstwhe %2,%1*4(%0)" 2125117395Skan [(set_attr "type" "vecstore") 2126117395Skan (set_attr "length" "4")]) 2127117395Skan 2128117395Skan(define_insn "spe_evstwhex" 2129117395Skan [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b") 2130117395Skan (match_operand:SI 1 "gpc_reg_operand" "r"))) 2131117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")) 2132117395Skan (unspec [(const_int 0)] 693)] 2133117395Skan "TARGET_SPE" 2134117395Skan "evstwhex %2,%0,%1" 2135117395Skan [(set_attr "type" "vecstore") 2136117395Skan (set_attr "length" "4")]) 2137117395Skan 2138117395Skan(define_insn "spe_evstwho" 2139117395Skan [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b") 2140117395Skan (match_operand:QI 1 "immediate_operand" "i"))) 2141117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")) 2142117395Skan (unspec [(const_int 0)] 694)] 2143132718Skan "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31" 2144132718Skan "evstwho %2,%1*4(%0)" 2145117395Skan [(set_attr "type" "vecstore") 2146117395Skan (set_attr "length" "4")]) 2147117395Skan 2148117395Skan(define_insn "spe_evstwhox" 2149117395Skan [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b") 2150117395Skan (match_operand:SI 1 "gpc_reg_operand" "r"))) 2151117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")) 2152117395Skan (unspec [(const_int 0)] 695)] 2153117395Skan "TARGET_SPE" 2154117395Skan "evstwhox %2,%0,%1" 2155117395Skan [(set_attr "type" "vecstore") 2156117395Skan (set_attr "length" "4")]) 2157117395Skan 2158117395Skan(define_insn "spe_evstwwe" 2159117395Skan [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b") 2160117395Skan (match_operand:QI 1 "immediate_operand" "i"))) 2161117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")) 2162117395Skan (unspec [(const_int 0)] 696)] 2163132718Skan "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31" 2164132718Skan "evstwwe %2,%1*4(%0)" 2165117395Skan [(set_attr "type" "vecstore") 2166117395Skan (set_attr "length" "4")]) 2167117395Skan 2168117395Skan(define_insn "spe_evstwwex" 2169117395Skan [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b") 2170117395Skan (match_operand:SI 1 "gpc_reg_operand" "r"))) 2171117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")) 2172117395Skan (unspec [(const_int 0)] 697)] 2173117395Skan "TARGET_SPE" 2174117395Skan "evstwwex %2,%0,%1" 2175117395Skan [(set_attr "type" "vecstore") 2176117395Skan (set_attr "length" "4")]) 2177117395Skan 2178117395Skan(define_insn "spe_evstwwo" 2179117395Skan [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b") 2180117395Skan (match_operand:QI 1 "immediate_operand" "i"))) 2181117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")) 2182117395Skan (unspec [(const_int 0)] 698)] 2183132718Skan "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31" 2184132718Skan "evstwwo %2,%1*4(%0)" 2185117395Skan [(set_attr "type" "vecstore") 2186117395Skan (set_attr "length" "4")]) 2187117395Skan 2188117395Skan(define_insn "spe_evstwwox" 2189117395Skan [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b") 2190117395Skan (match_operand:SI 1 "gpc_reg_operand" "r"))) 2191117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")) 2192117395Skan (unspec [(const_int 0)] 699)] 2193117395Skan "TARGET_SPE" 2194117395Skan "evstwwox %2,%0,%1" 2195117395Skan [(set_attr "type" "vecstore") 2196117395Skan (set_attr "length" "4")]) 2197117395Skan 2198169689Skan;; Double-precision floating point instructions. 2199169689Skan 2200169689Skan;; FIXME: Add o=r option. 2201169689Skan(define_insn "*frob_df_di" 2202169689Skan [(set (match_operand:DF 0 "nonimmediate_operand" "=r,r") 2203169689Skan (subreg:DF (match_operand:DI 1 "input_operand" "r,m") 0))] 2204169689Skan "TARGET_E500_DOUBLE" 2205169689Skan "@ 2206169689Skan evmergelo %0,%1,%L1 2207169689Skan evldd%X1 %0,%y1") 2208169689Skan 2209169689Skan(define_insn "*frob_di_df" 2210169689Skan [(set (match_operand:DI 0 "nonimmediate_operand" "=&r") 2211169689Skan (subreg:DI (match_operand:DF 1 "input_operand" "r") 0))] 2212169689Skan "TARGET_E500_DOUBLE" 2213169689Skan "evmergehi %0,%1,%1\;mr %L0,%1" 2214169689Skan [(set_attr "length" "8")]) 2215169689Skan 2216169689Skan(define_insn "*frob_di_df_2" 2217169689Skan [(set (subreg:DF (match_operand:DI 0 "register_operand" "=&r,r") 0) 2218169689Skan (match_operand:DF 1 "input_operand" "r,m"))] 2219169689Skan "TARGET_E500_DOUBLE" 2220169689Skan "* 2221169689Skan{ 2222169689Skan switch (which_alternative) 2223169689Skan { 2224169689Skan default: 2225169689Skan gcc_unreachable (); 2226169689Skan case 0: 2227169689Skan return \"evmergehi %0,%1,%1\;mr %L0,%1\"; 2228169689Skan case 1: 2229169689Skan /* If the address is not offsettable we need to load the whole 2230169689Skan doubleword into a 64-bit register and then copy the high word 2231169689Skan to form the correct output layout. */ 2232169689Skan if (!offsettable_nonstrict_memref_p (operands[1])) 2233169689Skan return \"evldd%X1 %L0,%y1\;evmergehi %0,%L0,%L0\"; 2234169689Skan /* If the low-address word is used in the address, we must load 2235169689Skan it last. Otherwise, load it first. Note that we cannot have 2236169689Skan auto-increment in that case since the address register is 2237169689Skan known to be dead. */ 2238169689Skan if (refers_to_regno_p (REGNO (operands[0]), REGNO (operands[0]) + 1, 2239169689Skan operands[1], 0)) 2240169689Skan return \"{l|lwz} %L0,%L1\;{l|lwz} %0,%1\"; 2241169689Skan else 2242169689Skan return \"{l%U1%X1|lwz%U1%X1} %0,%1\;{l|lwz} %L0,%L1\"; 2243169689Skan } 2244169689Skan}" 2245169689Skan [(set_attr "length" "8,8")]) 2246169689Skan 2247169689Skan(define_insn "*mov_si<mode>_e500_subreg0" 2248169689Skan [(set (subreg:SI (match_operand:SPE64 0 "register_operand" "+r,&r") 0) 2249169689Skan (match_operand:SI 1 "input_operand" "r,m"))] 2250169689Skan "(TARGET_E500_DOUBLE && <MODE>mode == DFmode) || (TARGET_SPE && <MODE>mode != DFmode)" 2251169689Skan "@ 2252169689Skan evmergelo %0,%1,%0 2253169689Skan evmergelohi %0,%0,%0\;{l%U1%X1|lwz%U1%X1} %0,%1\;evmergelohi %0,%0,%0") 2254169689Skan 2255169689Skan;; ??? Could use evstwwe for memory stores in some cases, depending on 2256169689Skan;; the offset. 2257169689Skan(define_insn "*mov_si<mode>_e500_subreg0_2" 2258169689Skan [(set (match_operand:SI 0 "rs6000_nonimmediate_operand" "+r,m") 2259169689Skan (subreg:SI (match_operand:SPE64 1 "register_operand" "+r,&r") 0))] 2260169689Skan "(TARGET_E500_DOUBLE && <MODE>mode == DFmode) || (TARGET_SPE && <MODE>mode != DFmode)" 2261169689Skan "@ 2262169689Skan evmergehi %0,%0,%1 2263169689Skan evmergelohi %1,%1,%1\;{st%U0%X0|stw%U0%X0} %1,%0") 2264169689Skan 2265169689Skan(define_insn "*mov_si<mode>_e500_subreg4" 2266169689Skan [(set (subreg:SI (match_operand:SPE64 0 "register_operand" "+r,r") 4) 2267169689Skan (match_operand:SI 1 "input_operand" "r,m"))] 2268169689Skan "(TARGET_E500_DOUBLE && <MODE>mode == DFmode) || (TARGET_SPE && <MODE>mode != DFmode)" 2269169689Skan "@ 2270169689Skan mr %0,%1 2271169689Skan {l%U1%X1|lwz%U1%X1} %0,%1") 2272169689Skan 2273169689Skan(define_insn "*mov_si<mode>_e500_subreg4_2" 2274169689Skan [(set (match_operand:SI 0 "rs6000_nonimmediate_operand" "+r,m") 2275169689Skan (subreg:SI (match_operand:SPE64 1 "register_operand" "r,r") 4))] 2276169689Skan "(TARGET_E500_DOUBLE && <MODE>mode == DFmode) || (TARGET_SPE && <MODE>mode != DFmode)" 2277169689Skan "@ 2278169689Skan mr %0,%1 2279169689Skan {st%U0%X0|stw%U0%X0} %1,%0") 2280169689Skan 2281169689Skan;; FIXME: Allow r=CONST0. 2282169689Skan(define_insn "*movdf_e500_double" 2283169689Skan [(set (match_operand:DF 0 "rs6000_nonimmediate_operand" "=r,r,m") 2284169689Skan (match_operand:DF 1 "input_operand" "r,m,r"))] 2285169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE 2286169689Skan && (gpc_reg_operand (operands[0], DFmode) 2287169689Skan || gpc_reg_operand (operands[1], DFmode))" 2288169689Skan "* 2289169689Skan { 2290169689Skan switch (which_alternative) 2291169689Skan { 2292169689Skan case 0: 2293169689Skan return \"evor %0,%1,%1\"; 2294169689Skan case 1: 2295169689Skan return \"evldd%X1 %0,%y1\"; 2296169689Skan case 2: 2297169689Skan return \"evstdd%X0 %1,%y0\"; 2298169689Skan default: 2299169689Skan gcc_unreachable (); 2300169689Skan } 2301169689Skan }" 2302169689Skan [(set_attr "type" "*,vecload,vecstore") 2303169689Skan (set_attr "length" "*,*,*")]) 2304169689Skan 2305169689Skan(define_insn "spe_truncdfsf2" 2306169689Skan [(set (match_operand:SF 0 "gpc_reg_operand" "=r") 2307169689Skan (float_truncate:SF (match_operand:DF 1 "gpc_reg_operand" "r")))] 2308169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE" 2309169689Skan "efscfd %0,%1") 2310169689Skan 2311169689Skan(define_insn "spe_absdf2" 2312169689Skan [(set (match_operand:DF 0 "gpc_reg_operand" "=r") 2313169689Skan (abs:DF (match_operand:DF 1 "gpc_reg_operand" "r")))] 2314169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE" 2315169689Skan "efdabs %0,%1") 2316169689Skan 2317169689Skan(define_insn "spe_nabsdf2" 2318169689Skan [(set (match_operand:DF 0 "gpc_reg_operand" "=r") 2319169689Skan (neg:DF (abs:DF (match_operand:DF 1 "gpc_reg_operand" "r"))))] 2320169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE" 2321169689Skan "efdnabs %0,%1") 2322169689Skan 2323169689Skan(define_insn "spe_negdf2" 2324169689Skan [(set (match_operand:DF 0 "gpc_reg_operand" "=r") 2325169689Skan (neg:DF (match_operand:DF 1 "gpc_reg_operand" "r")))] 2326169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE" 2327169689Skan "efdneg %0,%1") 2328169689Skan 2329169689Skan(define_insn "spe_adddf3" 2330169689Skan [(set (match_operand:DF 0 "gpc_reg_operand" "=r") 2331169689Skan (plus:DF (match_operand:DF 1 "gpc_reg_operand" "r") 2332169689Skan (match_operand:DF 2 "gpc_reg_operand" "r")))] 2333169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE" 2334169689Skan "efdadd %0,%1,%2") 2335169689Skan 2336169689Skan(define_insn "spe_subdf3" 2337169689Skan [(set (match_operand:DF 0 "gpc_reg_operand" "=r") 2338169689Skan (minus:DF (match_operand:DF 1 "gpc_reg_operand" "r") 2339169689Skan (match_operand:DF 2 "gpc_reg_operand" "r")))] 2340169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE" 2341169689Skan "efdsub %0,%1,%2") 2342169689Skan 2343169689Skan(define_insn "spe_muldf3" 2344169689Skan [(set (match_operand:DF 0 "gpc_reg_operand" "=r") 2345169689Skan (mult:DF (match_operand:DF 1 "gpc_reg_operand" "r") 2346169689Skan (match_operand:DF 2 "gpc_reg_operand" "r")))] 2347169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE" 2348169689Skan "efdmul %0,%1,%2") 2349169689Skan 2350169689Skan(define_insn "spe_divdf3" 2351169689Skan [(set (match_operand:DF 0 "gpc_reg_operand" "=r") 2352169689Skan (div:DF (match_operand:DF 1 "gpc_reg_operand" "r") 2353169689Skan (match_operand:DF 2 "gpc_reg_operand" "r")))] 2354169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE" 2355169689Skan "efddiv %0,%1,%2") 2356169689Skan 2357117395Skan;; Vector move instructions. 2358117395Skan 2359117395Skan(define_expand "movv2si" 2360117395Skan [(set (match_operand:V2SI 0 "nonimmediate_operand" "") 2361117395Skan (match_operand:V2SI 1 "any_operand" ""))] 2362117395Skan "TARGET_SPE" 2363117395Skan "{ rs6000_emit_move (operands[0], operands[1], V2SImode); DONE; }") 2364117395Skan 2365117395Skan(define_insn "*movv2si_internal" 2366132718Skan [(set (match_operand:V2SI 0 "nonimmediate_operand" "=m,r,r,r") 2367132718Skan (match_operand:V2SI 1 "input_operand" "r,m,r,W"))] 2368132718Skan "TARGET_SPE 2369132718Skan && (gpc_reg_operand (operands[0], V2SImode) 2370132718Skan || gpc_reg_operand (operands[1], V2SImode))" 2371132718Skan "* 2372132718Skan{ 2373132718Skan switch (which_alternative) 2374132718Skan { 2375132718Skan case 0: return \"evstdd%X0 %1,%y0\"; 2376132718Skan case 1: return \"evldd%X1 %0,%y1\"; 2377132718Skan case 2: return \"evor %0,%1,%1\"; 2378132718Skan case 3: return output_vec_const_move (operands); 2379169689Skan default: gcc_unreachable (); 2380132718Skan } 2381132718Skan}" 2382132718Skan [(set_attr "type" "vecload,vecstore,*,*") 2383132718Skan (set_attr "length" "*,*,*,12")]) 2384117395Skan 2385132718Skan(define_split 2386132718Skan [(set (match_operand:V2SI 0 "register_operand" "") 2387132718Skan (match_operand:V2SI 1 "zero_constant" ""))] 2388132718Skan "TARGET_SPE && reload_completed" 2389132718Skan [(set (match_dup 0) 2390132718Skan (xor:V2SI (match_dup 0) (match_dup 0)))] 2391132718Skan "") 2392132718Skan 2393117395Skan(define_expand "movv1di" 2394117395Skan [(set (match_operand:V1DI 0 "nonimmediate_operand" "") 2395117395Skan (match_operand:V1DI 1 "any_operand" ""))] 2396117395Skan "TARGET_SPE" 2397117395Skan "{ rs6000_emit_move (operands[0], operands[1], V1DImode); DONE; }") 2398117395Skan 2399117395Skan(define_insn "*movv1di_internal" 2400132718Skan [(set (match_operand:V1DI 0 "nonimmediate_operand" "=m,r,r,r") 2401132718Skan (match_operand:V1DI 1 "input_operand" "r,m,r,W"))] 2402132718Skan "TARGET_SPE 2403132718Skan && (gpc_reg_operand (operands[0], V1DImode) 2404132718Skan || gpc_reg_operand (operands[1], V1DImode))" 2405117395Skan "@ 2406117395Skan evstdd%X0 %1,%y0 2407117395Skan evldd%X1 %0,%y1 2408132718Skan evor %0,%1,%1 2409132718Skan evxor %0,%0,%0" 2410132718Skan [(set_attr "type" "vecload,vecstore,*,*") 2411132718Skan (set_attr "length" "*,*,*,*")]) 2412117395Skan 2413117395Skan(define_expand "movv4hi" 2414117395Skan [(set (match_operand:V4HI 0 "nonimmediate_operand" "") 2415117395Skan (match_operand:V4HI 1 "any_operand" ""))] 2416117395Skan "TARGET_SPE" 2417117395Skan "{ rs6000_emit_move (operands[0], operands[1], V4HImode); DONE; }") 2418117395Skan 2419117395Skan(define_insn "*movv4hi_internal" 2420169689Skan [(set (match_operand:V4HI 0 "nonimmediate_operand" "=m,r,r,r") 2421169689Skan (match_operand:V4HI 1 "input_operand" "r,m,r,W"))] 2422132718Skan "TARGET_SPE 2423132718Skan && (gpc_reg_operand (operands[0], V4HImode) 2424132718Skan || gpc_reg_operand (operands[1], V4HImode))" 2425117395Skan "@ 2426117395Skan evstdd%X0 %1,%y0 2427117395Skan evldd%X1 %0,%y1 2428169689Skan evor %0,%1,%1 2429169689Skan evxor %0,%0,%0" 2430117395Skan [(set_attr "type" "vecload")]) 2431117395Skan 2432117395Skan(define_expand "movv2sf" 2433117395Skan [(set (match_operand:V2SF 0 "nonimmediate_operand" "") 2434117395Skan (match_operand:V2SF 1 "any_operand" ""))] 2435117395Skan "TARGET_SPE" 2436117395Skan "{ rs6000_emit_move (operands[0], operands[1], V2SFmode); DONE; }") 2437117395Skan 2438117395Skan(define_insn "*movv2sf_internal" 2439132718Skan [(set (match_operand:V2SF 0 "nonimmediate_operand" "=m,r,r,r") 2440132718Skan (match_operand:V2SF 1 "input_operand" "r,m,r,W"))] 2441132718Skan "TARGET_SPE 2442132718Skan && (gpc_reg_operand (operands[0], V2SFmode) 2443132718Skan || gpc_reg_operand (operands[1], V2SFmode))" 2444117395Skan "@ 2445117395Skan evstdd%X0 %1,%y0 2446117395Skan evldd%X1 %0,%y1 2447132718Skan evor %0,%1,%1 2448132718Skan evxor %0,%0,%0" 2449132718Skan [(set_attr "type" "vecload,vecstore,*,*") 2450132718Skan (set_attr "length" "*,*,*,*")]) 2451117395Skan 2452132718Skan;; End of vector move instructions. 2453132718Skan 2454117395Skan(define_insn "spe_evmwhssfaa" 2455117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2456117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2457117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 702)) 2458117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 2459132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2460117395Skan "TARGET_SPE" 2461117395Skan "evmwhssfaa %0,%1,%2" 2462117395Skan [(set_attr "type" "veccomplex") 2463117395Skan (set_attr "length" "4")]) 2464117395Skan 2465117395Skan(define_insn "spe_evmwhssmaa" 2466117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2467117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2468117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 703)) 2469117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 2470132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2471117395Skan "TARGET_SPE" 2472117395Skan "evmwhssmaa %0,%1,%2" 2473117395Skan [(set_attr "type" "veccomplex") 2474117395Skan (set_attr "length" "4")]) 2475117395Skan 2476117395Skan(define_insn "spe_evmwhsmfaa" 2477117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2478117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2479117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 704)) 2480132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2481117395Skan "TARGET_SPE" 2482117395Skan "evmwhsmfaa %0,%1,%2" 2483117395Skan [(set_attr "type" "veccomplex") 2484117395Skan (set_attr "length" "4")]) 2485117395Skan 2486117395Skan(define_insn "spe_evmwhsmiaa" 2487117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2488117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2489117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 705)) 2490132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2491117395Skan "TARGET_SPE" 2492117395Skan "evmwhsmiaa %0,%1,%2" 2493117395Skan [(set_attr "type" "veccomplex") 2494117395Skan (set_attr "length" "4")]) 2495117395Skan 2496117395Skan(define_insn "spe_evmwhusiaa" 2497117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2498117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2499117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 706)) 2500117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 2501132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2502117395Skan "TARGET_SPE" 2503117395Skan "evmwhusiaa %0,%1,%2" 2504117395Skan [(set_attr "type" "veccomplex") 2505117395Skan (set_attr "length" "4")]) 2506117395Skan 2507117395Skan(define_insn "spe_evmwhumiaa" 2508117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2509117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2510117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 707)) 2511132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2512117395Skan "TARGET_SPE" 2513117395Skan "evmwhumiaa %0,%1,%2" 2514117395Skan [(set_attr "type" "veccomplex") 2515117395Skan (set_attr "length" "4")]) 2516117395Skan 2517117395Skan(define_insn "spe_evmwhssfan" 2518117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2519117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2520117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 708)) 2521117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 2522132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2523117395Skan "TARGET_SPE" 2524117395Skan "evmwhssfan %0,%1,%2" 2525117395Skan [(set_attr "type" "veccomplex") 2526117395Skan (set_attr "length" "4")]) 2527117395Skan 2528117395Skan(define_insn "spe_evmwhssian" 2529117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2530117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2531117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 709)) 2532117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 2533132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2534117395Skan "TARGET_SPE" 2535117395Skan "evmwhssian %0,%1,%2" 2536117395Skan [(set_attr "type" "veccomplex") 2537117395Skan (set_attr "length" "4")]) 2538117395Skan 2539117395Skan(define_insn "spe_evmwhsmfan" 2540117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2541117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2542117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 710)) 2543132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2544117395Skan "TARGET_SPE" 2545117395Skan "evmwhsmfan %0,%1,%2" 2546117395Skan [(set_attr "type" "veccomplex") 2547117395Skan (set_attr "length" "4")]) 2548117395Skan 2549117395Skan(define_insn "spe_evmwhsmian" 2550117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2551117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2552117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 711)) 2553132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2554117395Skan "TARGET_SPE" 2555117395Skan "evmwhsmian %0,%1,%2" 2556117395Skan [(set_attr "type" "veccomplex") 2557117395Skan (set_attr "length" "4")]) 2558117395Skan 2559117395Skan(define_insn "spe_evmwhumian" 2560117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2561117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2562117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 713)) 2563132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2564117395Skan "TARGET_SPE" 2565117395Skan "evmwhumian %0,%1,%2" 2566117395Skan [(set_attr "type" "veccomplex") 2567117395Skan (set_attr "length" "4")]) 2568117395Skan 2569117395Skan(define_insn "spe_evmwhgssfaa" 2570117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2571117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2572117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 714)) 2573117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 2574132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2575117395Skan "TARGET_SPE" 2576117395Skan "evmwhgssfaa %0,%1,%2" 2577117395Skan [(set_attr "type" "veccomplex") 2578117395Skan (set_attr "length" "4")]) 2579117395Skan 2580117395Skan(define_insn "spe_evmwhgsmfaa" 2581117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2582117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2583117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 715)) 2584132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2585117395Skan "TARGET_SPE" 2586117395Skan "evmwhgsmfaa %0,%1,%2" 2587117395Skan [(set_attr "type" "veccomplex") 2588117395Skan (set_attr "length" "4")]) 2589117395Skan 2590117395Skan(define_insn "spe_evmwhgsmiaa" 2591117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2592117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2593117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 716)) 2594132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2595117395Skan "TARGET_SPE" 2596117395Skan "evmwhgsmiaa %0,%1,%2" 2597117395Skan [(set_attr "type" "veccomplex") 2598117395Skan (set_attr "length" "4")]) 2599117395Skan 2600117395Skan(define_insn "spe_evmwhgumiaa" 2601117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2602117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2603117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 717)) 2604132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2605117395Skan "TARGET_SPE" 2606117395Skan "evmwhgumiaa %0,%1,%2" 2607117395Skan [(set_attr "type" "veccomplex") 2608117395Skan (set_attr "length" "4")]) 2609117395Skan 2610117395Skan(define_insn "spe_evmwhgssfan" 2611117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2612117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2613117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 718)) 2614117395Skan (clobber (reg:SI SPEFSCR_REGNO)) 2615132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2616117395Skan "TARGET_SPE" 2617117395Skan "evmwhgssfan %0,%1,%2" 2618117395Skan [(set_attr "type" "veccomplex") 2619117395Skan (set_attr "length" "4")]) 2620117395Skan 2621117395Skan(define_insn "spe_evmwhgsmfan" 2622117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2623117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2624117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 719)) 2625132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2626117395Skan "TARGET_SPE" 2627117395Skan "evmwhgsmfan %0,%1,%2" 2628117395Skan [(set_attr "type" "veccomplex") 2629117395Skan (set_attr "length" "4")]) 2630117395Skan 2631117395Skan(define_insn "spe_evmwhgsmian" 2632117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2633117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2634117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 720)) 2635132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2636117395Skan "TARGET_SPE" 2637117395Skan "evmwhgsmian %0,%1,%2" 2638117395Skan [(set_attr "type" "veccomplex") 2639117395Skan (set_attr "length" "4")]) 2640117395Skan 2641117395Skan(define_insn "spe_evmwhgumian" 2642117395Skan [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r") 2643117395Skan (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r") 2644117395Skan (match_operand:V2SI 2 "gpc_reg_operand" "r")] 721)) 2645132718Skan (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI [(const_int 0)] 0))] 2646117395Skan "TARGET_SPE" 2647117395Skan "evmwhgumian %0,%1,%2" 2648117395Skan [(set_attr "type" "veccomplex") 2649117395Skan (set_attr "length" "4")]) 2650117395Skan 2651117395Skan(define_insn "spe_mtspefscr" 2652117395Skan [(set (reg:SI SPEFSCR_REGNO) 2653117395Skan (unspec_volatile:SI [(match_operand:SI 0 "register_operand" "r")] 2654117395Skan 722))] 2655117395Skan "TARGET_SPE" 2656117395Skan "mtspefscr %0" 2657117395Skan [(set_attr "type" "vecsimple")]) 2658117395Skan 2659117395Skan(define_insn "spe_mfspefscr" 2660117395Skan [(set (match_operand:SI 0 "register_operand" "=r") 2661117395Skan (unspec_volatile:SI [(reg:SI SPEFSCR_REGNO)] 723))] 2662117395Skan "TARGET_SPE" 2663117395Skan "mfspefscr %0" 2664117395Skan [(set_attr "type" "vecsimple")]) 2665117395Skan 2666132718Skan;; FP comparison stuff. 2667132718Skan 2668132718Skan;; Flip the GT bit. 2669169689Skan(define_insn "e500_flip_gt_bit" 2670132718Skan [(set (match_operand:CCFP 0 "cc_reg_operand" "=y") 2671169689Skan (unspec:CCFP 2672169689Skan [(match_operand:CCFP 1 "cc_reg_operand" "y")] 999))] 2673132718Skan "!TARGET_FPRS && TARGET_HARD_FLOAT" 2674132718Skan "* 2675132718Skan{ 2676169689Skan return output_e500_flip_gt_bit (operands[0], operands[1]); 2677132718Skan}" 2678132718Skan [(set_attr "type" "cr_logical")]) 2679132718Skan 2680117395Skan;; MPC8540 single-precision FP instructions on GPRs. 2681117395Skan;; We have 2 variants for each. One for IEEE compliant math and one 2682117395Skan;; for non IEEE compliant math. 2683117395Skan 2684117395Skan(define_insn "cmpsfeq_gpr" 2685117395Skan [(set (match_operand:CCFP 0 "cc_reg_operand" "=y") 2686169689Skan (unspec:CCFP 2687169689Skan [(compare:CCFP (match_operand:SF 1 "gpc_reg_operand" "r") 2688169689Skan (match_operand:SF 2 "gpc_reg_operand" "r"))] 2689169689Skan 1000))] 2690117395Skan "TARGET_HARD_FLOAT && !TARGET_FPRS && !flag_unsafe_math_optimizations" 2691117395Skan "efscmpeq %0,%1,%2" 2692132718Skan [(set_attr "type" "veccmp")]) 2693117395Skan 2694117395Skan(define_insn "tstsfeq_gpr" 2695117395Skan [(set (match_operand:CCFP 0 "cc_reg_operand" "=y") 2696169689Skan (unspec:CCFP 2697169689Skan [(compare:CCFP (match_operand:SF 1 "gpc_reg_operand" "r") 2698169689Skan (match_operand:SF 2 "gpc_reg_operand" "r"))] 2699169689Skan 1001))] 2700117395Skan "TARGET_HARD_FLOAT && !TARGET_FPRS && flag_unsafe_math_optimizations" 2701117395Skan "efststeq %0,%1,%2" 2702132718Skan [(set_attr "type" "veccmpsimple")]) 2703117395Skan 2704117395Skan(define_insn "cmpsfgt_gpr" 2705117395Skan [(set (match_operand:CCFP 0 "cc_reg_operand" "=y") 2706169689Skan (unspec:CCFP 2707169689Skan [(compare:CCFP (match_operand:SF 1 "gpc_reg_operand" "r") 2708169689Skan (match_operand:SF 2 "gpc_reg_operand" "r"))] 2709169689Skan 1002))] 2710117395Skan "TARGET_HARD_FLOAT && !TARGET_FPRS && !flag_unsafe_math_optimizations" 2711117395Skan "efscmpgt %0,%1,%2" 2712132718Skan [(set_attr "type" "veccmp")]) 2713117395Skan 2714117395Skan(define_insn "tstsfgt_gpr" 2715117395Skan [(set (match_operand:CCFP 0 "cc_reg_operand" "=y") 2716169689Skan (unspec:CCFP 2717169689Skan [(compare:CCFP (match_operand:SF 1 "gpc_reg_operand" "r") 2718169689Skan (match_operand:SF 2 "gpc_reg_operand" "r"))] 2719169689Skan 1003))] 2720117395Skan "TARGET_HARD_FLOAT && !TARGET_FPRS && flag_unsafe_math_optimizations" 2721117395Skan "efststgt %0,%1,%2" 2722132718Skan [(set_attr "type" "veccmpsimple")]) 2723117395Skan 2724117395Skan(define_insn "cmpsflt_gpr" 2725117395Skan [(set (match_operand:CCFP 0 "cc_reg_operand" "=y") 2726169689Skan (unspec:CCFP 2727169689Skan [(compare:CCFP (match_operand:SF 1 "gpc_reg_operand" "r") 2728169689Skan (match_operand:SF 2 "gpc_reg_operand" "r"))] 2729169689Skan 1004))] 2730117395Skan "TARGET_HARD_FLOAT && !TARGET_FPRS && !flag_unsafe_math_optimizations" 2731117395Skan "efscmplt %0,%1,%2" 2732132718Skan [(set_attr "type" "veccmp")]) 2733117395Skan 2734117395Skan(define_insn "tstsflt_gpr" 2735117395Skan [(set (match_operand:CCFP 0 "cc_reg_operand" "=y") 2736169689Skan (unspec:CCFP 2737169689Skan [(compare:CCFP (match_operand:SF 1 "gpc_reg_operand" "r") 2738169689Skan (match_operand:SF 2 "gpc_reg_operand" "r"))] 2739169689Skan 1005))] 2740117395Skan "TARGET_HARD_FLOAT && !TARGET_FPRS && flag_unsafe_math_optimizations" 2741117395Skan "efststlt %0,%1,%2" 2742132718Skan [(set_attr "type" "veccmpsimple")]) 2743169689Skan 2744169689Skan;; Same thing, but for double-precision. 2745169689Skan 2746169689Skan(define_insn "cmpdfeq_gpr" 2747169689Skan [(set (match_operand:CCFP 0 "cc_reg_operand" "=y") 2748169689Skan (unspec:CCFP 2749169689Skan [(compare:CCFP (match_operand:DF 1 "gpc_reg_operand" "r") 2750169689Skan (match_operand:DF 2 "gpc_reg_operand" "r"))] 2751169689Skan CMPDFEQ_GPR))] 2752169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE && !flag_unsafe_math_optimizations" 2753169689Skan "efdcmpeq %0,%1,%2" 2754169689Skan [(set_attr "type" "veccmp")]) 2755169689Skan 2756169689Skan(define_insn "tstdfeq_gpr" 2757169689Skan [(set (match_operand:CCFP 0 "cc_reg_operand" "=y") 2758169689Skan (unspec:CCFP 2759169689Skan [(compare:CCFP (match_operand:DF 1 "gpc_reg_operand" "r") 2760169689Skan (match_operand:DF 2 "gpc_reg_operand" "r"))] 2761169689Skan TSTDFEQ_GPR))] 2762169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE && flag_unsafe_math_optimizations" 2763169689Skan "efdtsteq %0,%1,%2" 2764169689Skan [(set_attr "type" "veccmpsimple")]) 2765169689Skan 2766169689Skan(define_insn "cmpdfgt_gpr" 2767169689Skan [(set (match_operand:CCFP 0 "cc_reg_operand" "=y") 2768169689Skan (unspec:CCFP 2769169689Skan [(compare:CCFP (match_operand:DF 1 "gpc_reg_operand" "r") 2770169689Skan (match_operand:DF 2 "gpc_reg_operand" "r"))] 2771169689Skan CMPDFGT_GPR))] 2772169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE && !flag_unsafe_math_optimizations" 2773169689Skan "efdcmpgt %0,%1,%2" 2774169689Skan [(set_attr "type" "veccmp")]) 2775169689Skan 2776169689Skan(define_insn "tstdfgt_gpr" 2777169689Skan [(set (match_operand:CCFP 0 "cc_reg_operand" "=y") 2778169689Skan (unspec:CCFP 2779169689Skan [(compare:CCFP (match_operand:DF 1 "gpc_reg_operand" "r") 2780169689Skan (match_operand:DF 2 "gpc_reg_operand" "r"))] 2781169689Skan TSTDFGT_GPR))] 2782169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE && flag_unsafe_math_optimizations" 2783169689Skan "efdtstgt %0,%1,%2" 2784169689Skan [(set_attr "type" "veccmpsimple")]) 2785169689Skan 2786169689Skan(define_insn "cmpdflt_gpr" 2787169689Skan [(set (match_operand:CCFP 0 "cc_reg_operand" "=y") 2788169689Skan (unspec:CCFP 2789169689Skan [(compare:CCFP (match_operand:DF 1 "gpc_reg_operand" "r") 2790169689Skan (match_operand:DF 2 "gpc_reg_operand" "r"))] 2791169689Skan CMPDFLT_GPR))] 2792169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE && !flag_unsafe_math_optimizations" 2793169689Skan "efdcmplt %0,%1,%2" 2794169689Skan [(set_attr "type" "veccmp")]) 2795169689Skan 2796169689Skan(define_insn "tstdflt_gpr" 2797169689Skan [(set (match_operand:CCFP 0 "cc_reg_operand" "=y") 2798169689Skan (unspec:CCFP 2799169689Skan [(compare:CCFP (match_operand:DF 1 "gpc_reg_operand" "r") 2800169689Skan (match_operand:DF 2 "gpc_reg_operand" "r"))] 2801169689Skan TSTDFLT_GPR))] 2802169689Skan "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE && flag_unsafe_math_optimizations" 2803169689Skan "efdtstlt %0,%1,%2" 2804169689Skan [(set_attr "type" "veccmpsimple")]) 2805169689Skan 2806169689Skan;; Like cceq_ior_compare, but compare the GT bits. 2807169689Skan(define_insn "e500_cr_ior_compare" 2808169689Skan [(set (match_operand:CCFP 0 "cc_reg_operand" "=y") 2809169689Skan (unspec:CCFP [(match_operand 1 "cc_reg_operand" "y") 2810169689Skan (match_operand 2 "cc_reg_operand" "y")] 2811169689Skan E500_CR_IOR_COMPARE))] 2812169689Skan "TARGET_E500" 2813169689Skan "cror 4*%0+gt,4*%1+gt,4*%2+gt" 2814169689Skan [(set_attr "type" "cr_logical")]) 2815