2489 lines
84 KiB
Markdown
2489 lines
84 KiB
Markdown
|
;; e500 SPE description
|
||
|
;; Copyright (C) 2002 Free Software Foundation, Inc.
|
||
|
;; Contributed by Aldy Hernandez (aldy@quesejoda.com)
|
||
|
|
||
|
;; This file is part of GNU CC.
|
||
|
|
||
|
;; GNU CC is free software; you can redistribute it and/or modify
|
||
|
;; it under the terms of the GNU General Public License as published by
|
||
|
;; the Free Software Foundation; either version 2, or (at your option)
|
||
|
;; any later version.
|
||
|
|
||
|
;; GNU CC is distributed in the hope that it will be useful,
|
||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
;; GNU General Public License for more details.
|
||
|
|
||
|
;; You should have received a copy of the GNU General Public License
|
||
|
;; along with GNU CC; see the file COPYING. If not, write to
|
||
|
;; the Free Software Foundation, 59 Temple Place - Suite 330,
|
||
|
;; Boston, MA 02111-1307, USA.
|
||
|
|
||
|
(define_constants
|
||
|
[(SPE_ACC_REGNO 111)
|
||
|
(SPEFSCR_REGNO 112)])
|
||
|
|
||
|
(define_insn "*negsf2_gpr"
|
||
|
[(set (match_operand:SF 0 "gpc_reg_operand" "=r")
|
||
|
(neg:SF (match_operand:SF 1 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_HARD_FLOAT && !TARGET_FPRS"
|
||
|
"efsneg %0,%1"
|
||
|
[(set_attr "type" "fp")])
|
||
|
|
||
|
(define_insn "*abssf2_gpr"
|
||
|
[(set (match_operand:SF 0 "gpc_reg_operand" "=r")
|
||
|
(abs:SF (match_operand:SF 1 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_HARD_FLOAT && !TARGET_FPRS"
|
||
|
"efsabs %0,%1"
|
||
|
[(set_attr "type" "fp")])
|
||
|
|
||
|
(define_insn "*addsf3_gpr"
|
||
|
[(set (match_operand:SF 0 "gpc_reg_operand" "=r")
|
||
|
(plus:SF (match_operand:SF 1 "gpc_reg_operand" "%r")
|
||
|
(match_operand:SF 2 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_HARD_FLOAT && !TARGET_FPRS"
|
||
|
"efsadd %0,%1,%2"
|
||
|
[(set_attr "type" "fp")])
|
||
|
|
||
|
(define_insn "*subsf3_gpr"
|
||
|
[(set (match_operand:SF 0 "gpc_reg_operand" "=r")
|
||
|
(minus:SF (match_operand:SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:SF 2 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_HARD_FLOAT && !TARGET_FPRS"
|
||
|
"efssub %0,%1,%2"
|
||
|
[(set_attr "type" "fp")])
|
||
|
|
||
|
(define_insn "*mulsf3_gpr"
|
||
|
[(set (match_operand:SF 0 "gpc_reg_operand" "=r")
|
||
|
(mult:SF (match_operand:SF 1 "gpc_reg_operand" "%r")
|
||
|
(match_operand:SF 2 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_HARD_FLOAT && !TARGET_FPRS"
|
||
|
"efsmul %0,%1,%2"
|
||
|
[(set_attr "type" "fp")])
|
||
|
|
||
|
(define_insn "*divsf3_gpr"
|
||
|
[(set (match_operand:SF 0 "gpc_reg_operand" "=r")
|
||
|
(div:SF (match_operand:SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:SF 2 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_HARD_FLOAT && !TARGET_FPRS"
|
||
|
"efsdiv %0,%1,%2"
|
||
|
[(set_attr "type" "fp")])
|
||
|
|
||
|
(define_insn "spe_efsctuiz"
|
||
|
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:SI [(match_operand:SF 1 "gpc_reg_operand" "r")] 700))]
|
||
|
"TARGET_HARD_FLOAT && !TARGET_FPRS"
|
||
|
"efsctuiz %0,%1"
|
||
|
[(set_attr "type" "fp")])
|
||
|
|
||
|
(define_insn "spe_fixunssfsi2"
|
||
|
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
|
||
|
(unsigned_fix:SI (fix:SF (match_operand:SF 1 "gpc_reg_operand" "r"))))]
|
||
|
"TARGET_HARD_FLOAT && !TARGET_FPRS"
|
||
|
"efsctui %0,%1"
|
||
|
[(set_attr "type" "fp")])
|
||
|
|
||
|
(define_insn "spe_fix_truncsfsi2"
|
||
|
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
|
||
|
(fix:SI (match_operand:SF 1 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_HARD_FLOAT && !TARGET_FPRS"
|
||
|
"efsctsi %0,%1"
|
||
|
[(set_attr "type" "fp")])
|
||
|
|
||
|
(define_insn "spe_floatunssisf2"
|
||
|
[(set (match_operand:SF 0 "gpc_reg_operand" "=r")
|
||
|
(unsigned_float:SF (match_operand:SI 1 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_HARD_FLOAT && !TARGET_FPRS"
|
||
|
"efscfui %0,%1"
|
||
|
[(set_attr "type" "fp")])
|
||
|
|
||
|
(define_insn "spe_floatsisf2"
|
||
|
[(set (match_operand:SF 0 "gpc_reg_operand" "=r")
|
||
|
(float:SF (match_operand:SI 1 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_HARD_FLOAT && !TARGET_FPRS"
|
||
|
"efscfsi %0,%1"
|
||
|
[(set_attr "type" "fp")])
|
||
|
|
||
|
|
||
|
;; SPE SIMD instructions
|
||
|
|
||
|
(define_insn "spe_evabs"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(abs:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_SPE"
|
||
|
"evabs %0,%1"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evandc"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(and:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(not:V2SI (match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
|
||
|
"TARGET_SPE"
|
||
|
"evandc %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evand"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(and:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_SPE"
|
||
|
"evand %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
;; Vector compare instructions
|
||
|
|
||
|
(define_insn "spe_evcmpeq"
|
||
|
[(set (match_operand:CC 0 "cc_reg_operand" "=y")
|
||
|
(unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 500))]
|
||
|
"TARGET_SPE"
|
||
|
"evcmpeq %0,%1,%2"
|
||
|
[(set_attr "type" "veccmp")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evcmpgts"
|
||
|
[(set (match_operand:CC 0 "cc_reg_operand" "=y")
|
||
|
(unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 501))]
|
||
|
"TARGET_SPE"
|
||
|
"evcmpgts %0,%1,%2"
|
||
|
[(set_attr "type" "veccmp")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evcmpgtu"
|
||
|
[(set (match_operand:CC 0 "cc_reg_operand" "=y")
|
||
|
(unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 502))]
|
||
|
"TARGET_SPE"
|
||
|
"evcmpgtu %0,%1,%2"
|
||
|
[(set_attr "type" "veccmp")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evcmplts"
|
||
|
[(set (match_operand:CC 0 "cc_reg_operand" "=y")
|
||
|
(unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 503))]
|
||
|
"TARGET_SPE"
|
||
|
"evcmplts %0,%1,%2"
|
||
|
[(set_attr "type" "veccmp")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evcmpltu"
|
||
|
[(set (match_operand:CC 0 "cc_reg_operand" "=y")
|
||
|
(unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 504))]
|
||
|
"TARGET_SPE"
|
||
|
"evcmpltu %0,%1,%2"
|
||
|
[(set_attr "type" "veccmp")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
;; Floating point vector compare instructions
|
||
|
|
||
|
(define_insn "spe_evfscmpeq"
|
||
|
[(set (match_operand:CC 0 "cc_reg_operand" "=y")
|
||
|
(unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SF 2 "gpc_reg_operand" "r")] 538))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evfscmpeq %0,%1,%2"
|
||
|
[(set_attr "type" "veccmp")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfscmpgt"
|
||
|
[(set (match_operand:CC 0 "cc_reg_operand" "=y")
|
||
|
(unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SF 2 "gpc_reg_operand" "r")] 539))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evfscmpgt %0,%1,%2"
|
||
|
[(set_attr "type" "veccmp")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfscmplt"
|
||
|
[(set (match_operand:CC 0 "cc_reg_operand" "=y")
|
||
|
(unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SF 2 "gpc_reg_operand" "r")] 540))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evfscmplt %0,%1,%2"
|
||
|
[(set_attr "type" "veccmp")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfststeq"
|
||
|
[(set (match_operand:CC 0 "cc_reg_operand" "=y")
|
||
|
(unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SF 2 "gpc_reg_operand" "r")] 541))]
|
||
|
"TARGET_SPE"
|
||
|
"evfststeq %0,%1,%2"
|
||
|
[(set_attr "type" "veccmp")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfststgt"
|
||
|
[(set (match_operand:CC 0 "cc_reg_operand" "=y")
|
||
|
(unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SF 2 "gpc_reg_operand" "r")] 542))]
|
||
|
"TARGET_SPE"
|
||
|
"evfststgt %0,%1,%2"
|
||
|
[(set_attr "type" "veccmp")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfststlt"
|
||
|
[(set (match_operand:CC 0 "cc_reg_operand" "=y")
|
||
|
(unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SF 2 "gpc_reg_operand" "r")] 543))]
|
||
|
"TARGET_SPE"
|
||
|
"evfststlt %0,%1,%2"
|
||
|
[(set_attr "type" "veccmp")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
;; End of vector compare instructions
|
||
|
|
||
|
(define_insn "spe_evcntlsw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 505))]
|
||
|
"TARGET_SPE"
|
||
|
"evcntlsw %0,%1"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evcntlzw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 506))]
|
||
|
"TARGET_SPE"
|
||
|
"evcntlzw %0,%1"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_eveqv"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(not:V2SI (xor:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
|
||
|
"TARGET_SPE"
|
||
|
"eveqv %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evextsb"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 507))]
|
||
|
"TARGET_SPE"
|
||
|
"evextsb %0,%1"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evextsh"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 508))]
|
||
|
"TARGET_SPE"
|
||
|
"evextsh %0,%1"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evlhhesplat"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:QI 2 "immediate_operand" "i"))))
|
||
|
(unspec [(const_int 0)] 509)]
|
||
|
"TARGET_SPE"
|
||
|
"evlhhesplat %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evlhhesplatx"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:SI 2 "gpc_reg_operand" "r"))))
|
||
|
(unspec [(const_int 0)] 510)]
|
||
|
"TARGET_SPE"
|
||
|
"evlhhesplatx %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evlhhossplat"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:QI 2 "immediate_operand" "i"))))
|
||
|
(unspec [(const_int 0)] 511)]
|
||
|
"TARGET_SPE"
|
||
|
"evlhhossplat %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evlhhossplatx"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:SI 2 "gpc_reg_operand" "r"))))
|
||
|
(unspec [(const_int 0)] 512)]
|
||
|
"TARGET_SPE"
|
||
|
"evlhhossplatx %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evlhhousplat"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:QI 2 "immediate_operand" "i"))))
|
||
|
(unspec [(const_int 0)] 513)]
|
||
|
"TARGET_SPE"
|
||
|
"evlhhousplat %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evlhhousplatx"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:SI 2 "gpc_reg_operand" "r"))))
|
||
|
(unspec [(const_int 0)] 514)]
|
||
|
"TARGET_SPE"
|
||
|
"evlhhousplatx %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evlwhsplat"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:QI 2 "immediate_operand" "i"))))
|
||
|
(unspec [(const_int 0)] 515)]
|
||
|
"TARGET_SPE"
|
||
|
"evlwhsplat %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evlwhsplatx"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:SI 2 "gpc_reg_operand" "r"))))
|
||
|
(unspec [(const_int 0)] 516)]
|
||
|
"TARGET_SPE"
|
||
|
"evlwhsplatx %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evlwwsplat"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:QI 2 "immediate_operand" "i"))))
|
||
|
(unspec [(const_int 0)] 517)]
|
||
|
"TARGET_SPE"
|
||
|
"evlwwsplat %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evlwwsplatx"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:SI 2 "gpc_reg_operand" "r"))))
|
||
|
(unspec [(const_int 0)] 518)]
|
||
|
"TARGET_SPE"
|
||
|
"evlwwsplatx %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmergehi"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(vec_merge:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(vec_select:V2SI
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(parallel [(const_int 1)
|
||
|
(const_int 0)]))
|
||
|
(const_int 2)))]
|
||
|
"TARGET_SPE"
|
||
|
"evmergehi %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmergehilo"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(vec_merge:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(const_int 2)))]
|
||
|
"TARGET_SPE"
|
||
|
"evmergehilo %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmergelo"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(vec_merge:V2SI (vec_select:V2SI
|
||
|
(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(parallel [(const_int 1)
|
||
|
(const_int 0)]))
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(const_int 2)))]
|
||
|
"TARGET_SPE"
|
||
|
"evmergelo %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmergelohi"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(vec_merge:V2SI (vec_select:V2SI
|
||
|
(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(parallel [(const_int 1)
|
||
|
(const_int 0)]))
|
||
|
(vec_select:V2SI
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(parallel [(const_int 1)
|
||
|
(const_int 0)]))
|
||
|
(const_int 2)))]
|
||
|
"TARGET_SPE"
|
||
|
"evmergelohi %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evnand"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(not:V2SI (and:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
|
||
|
"TARGET_SPE"
|
||
|
"evnand %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evneg"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(neg:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_SPE"
|
||
|
"evneg %0,%1"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evnor"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(not:V2SI (ior:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
|
||
|
"TARGET_SPE"
|
||
|
"evnor %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evorc"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(ior:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(not:V2SI (match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
|
||
|
"TARGET_SPE"
|
||
|
"evorc %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evor"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(ior:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_SPE"
|
||
|
"evor %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evrlwi"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:QI 2 "immediate_operand" "i")] 519))]
|
||
|
"TARGET_SPE"
|
||
|
"evrlwi %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evrlw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 520))]
|
||
|
"TARGET_SPE"
|
||
|
"evrlw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evrndw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 521))]
|
||
|
"TARGET_SPE"
|
||
|
"evrndw %0,%1"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evsel"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(match_operand:CC 3 "cc_reg_operand" "y")] 522))]
|
||
|
"TARGET_SPE"
|
||
|
"evsel %0,%1,%2,%3"
|
||
|
[(set_attr "type" "veccmp")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evsel_fs"
|
||
|
[(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SF 2 "gpc_reg_operand" "r")
|
||
|
(match_operand:CC 3 "cc_reg_operand" "y")] 725))]
|
||
|
"TARGET_SPE"
|
||
|
"evsel %0,%1,%2,%3"
|
||
|
[(set_attr "type" "veccmp")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evslwi"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:QI 2 "immediate_operand" "i")]
|
||
|
523))]
|
||
|
"TARGET_SPE"
|
||
|
"evslwi %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evslw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 524))]
|
||
|
"TARGET_SPE"
|
||
|
"evslw %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evsrwis"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:QI 2 "immediate_operand" "i")]
|
||
|
525))]
|
||
|
"TARGET_SPE"
|
||
|
"evsrwis %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evsrwiu"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:QI 2 "immediate_operand" "i")]
|
||
|
526))]
|
||
|
"TARGET_SPE"
|
||
|
"evsrwiu %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evsrws"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 527))]
|
||
|
"TARGET_SPE"
|
||
|
"evsrws %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evsrwu"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 528))]
|
||
|
"TARGET_SPE"
|
||
|
"evsrwu %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evxor"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(xor:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_SPE"
|
||
|
"evxor %0,%1,%2"
|
||
|
[(set_attr "type" "vecsimple")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfsabs"
|
||
|
[(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
|
||
|
(abs:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_SPE"
|
||
|
"evfsabs %0,%1"
|
||
|
[(set_attr "type" "vecfloat")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfsadd"
|
||
|
[(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
|
||
|
(plus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SF 2 "gpc_reg_operand" "r")))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evfsadd %0,%1,%2"
|
||
|
[(set_attr "type" "vecfloat")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfscfsf"
|
||
|
[(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 529))]
|
||
|
"TARGET_SPE"
|
||
|
"evfscfsf %0,%1"
|
||
|
[(set_attr "type" "vecfloat")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfscfsi"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(fix:V2SI (match_operand:V2SF 1 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_SPE"
|
||
|
"evfscfsi %0,%1"
|
||
|
[(set_attr "type" "vecfloat")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfscfuf"
|
||
|
[(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 530))]
|
||
|
"TARGET_SPE"
|
||
|
"evfscfuf %0,%1"
|
||
|
[(set_attr "type" "vecfloat")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfscfui"
|
||
|
[(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SF [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 701))]
|
||
|
"TARGET_SPE"
|
||
|
"evfscfui %0,%1"
|
||
|
[(set_attr "type" "vecfloat")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfsctsf"
|
||
|
[(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 531))]
|
||
|
"TARGET_SPE"
|
||
|
"evfsctsf %0,%1"
|
||
|
[(set_attr "type" "vecfloat")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfsctsi"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 532))]
|
||
|
"TARGET_SPE"
|
||
|
"evfsctsi %0,%1"
|
||
|
[(set_attr "type" "vecfloat")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfsctsiz"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 533))]
|
||
|
"TARGET_SPE"
|
||
|
"evfsctsiz %0,%1"
|
||
|
[(set_attr "type" "vecfloat")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfsctuf"
|
||
|
[(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 534))]
|
||
|
"TARGET_SPE"
|
||
|
"evfsctuf %0,%1"
|
||
|
[(set_attr "type" "vecfloat")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfsctui"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 535))]
|
||
|
"TARGET_SPE"
|
||
|
"evfsctui %0,%1"
|
||
|
[(set_attr "type" "vecfloat")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfsctuiz"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 536))]
|
||
|
"TARGET_SPE"
|
||
|
"evfsctuiz %0,%1"
|
||
|
[(set_attr "type" "vecfloat")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfsdiv"
|
||
|
[(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
|
||
|
(div:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SF 2 "gpc_reg_operand" "r")))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evfsdiv %0,%1,%2"
|
||
|
[(set_attr "type" "vecfloat")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfsmul"
|
||
|
[(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
|
||
|
(mult:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SF 2 "gpc_reg_operand" "r")))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evfsmul %0,%1,%2"
|
||
|
[(set_attr "type" "vecfloat")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfsnabs"
|
||
|
[(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 537))]
|
||
|
"TARGET_SPE"
|
||
|
"evfsnabs %0,%1"
|
||
|
[(set_attr "type" "vecfloat")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfsneg"
|
||
|
[(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
|
||
|
(neg:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_SPE"
|
||
|
"evfsneg %0,%1"
|
||
|
[(set_attr "type" "vecfloat")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evfssub"
|
||
|
[(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
|
||
|
(minus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SF 2 "gpc_reg_operand" "r")))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evfssub %0,%1,%2"
|
||
|
[(set_attr "type" "vecfloat")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
;; SPE SIMD load instructions.
|
||
|
|
||
|
;; Only the hardware engineer who designed the SPE inderstands the
|
||
|
;; plethora of load and store instructions ;-). We have no way of
|
||
|
;; differentiating between them with RTL so use an unspec of const_int 0
|
||
|
;; to avoid identical RTL.
|
||
|
|
||
|
(define_insn "spe_evldd"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:QI 2 "immediate_operand" "i"))))
|
||
|
(unspec [(const_int 0)] 544)]
|
||
|
"TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
|
||
|
"evldd %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evlddx"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:SI 2 "gpc_reg_operand" "r"))))
|
||
|
(unspec [(const_int 0)] 545)]
|
||
|
"TARGET_SPE"
|
||
|
"evlddx %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evldh"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:QI 2 "immediate_operand" "i"))))
|
||
|
(unspec [(const_int 0)] 546)]
|
||
|
"TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
|
||
|
"evldh %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evldhx"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:SI 2 "gpc_reg_operand" "r"))))
|
||
|
(unspec [(const_int 0)] 547)]
|
||
|
"TARGET_SPE"
|
||
|
"evldhx %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evldw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:QI 2 "immediate_operand" "i"))))
|
||
|
(unspec [(const_int 0)] 548)]
|
||
|
"TARGET_SPE"
|
||
|
"evldw %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evldwx"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:SI 2 "gpc_reg_operand" "r"))))
|
||
|
(unspec [(const_int 0)] 549)]
|
||
|
"TARGET_SPE"
|
||
|
"evldwx %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evlwhe"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:QI 2 "immediate_operand" "i"))))
|
||
|
(unspec [(const_int 0)] 550)]
|
||
|
"TARGET_SPE"
|
||
|
"evlwhe %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evlwhex"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:SI 2 "gpc_reg_operand" "r"))))
|
||
|
(unspec [(const_int 0)] 551)]
|
||
|
"TARGET_SPE"
|
||
|
"evlwhex %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evlwhos"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:QI 2 "immediate_operand" "i"))))
|
||
|
(unspec [(const_int 0)] 552)]
|
||
|
"TARGET_SPE"
|
||
|
"evlwhos %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evlwhosx"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:SI 2 "gpc_reg_operand" "r"))))
|
||
|
(unspec [(const_int 0)] 553)]
|
||
|
"TARGET_SPE"
|
||
|
"evlwhosx %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evlwhou"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:QI 2 "immediate_operand" "i"))))
|
||
|
(unspec [(const_int 0)] 554)]
|
||
|
"TARGET_SPE"
|
||
|
"evlwhou %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evlwhoux"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
|
||
|
(match_operand:SI 2 "gpc_reg_operand" "r"))))
|
||
|
(unspec [(const_int 0)] 555)]
|
||
|
"TARGET_SPE"
|
||
|
"evlwhoux %0,%1,%2"
|
||
|
[(set_attr "type" "vecload")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_brinc"
|
||
|
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:SI [(match_operand:SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:SI 2 "gpc_reg_operand" "r")] 556))]
|
||
|
"TARGET_SPE"
|
||
|
"brinc %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhegsmfaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 557))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhegsmfaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhegsmfan"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 558))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhegsmfan %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhegsmiaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 559))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhegsmiaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhegsmian"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 560))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhegsmian %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhegumiaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 561))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhegumiaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhegumian"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 562))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhegumian %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhesmfaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 563))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhesmfaaw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhesmfanw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 564))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhesmfanw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhesmfa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 565))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhesmfa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhesmf"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 566))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhesmf %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhesmiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 567))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhesmiaaw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhesmianw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 568))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhesmianw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhesmia"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 569))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhesmia %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhesmi"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 570))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhesmi %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhessfaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 571))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhessfaaw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhessfanw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 572))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhessfanw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhessfa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 573))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhessfa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhessf"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 574))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhessf %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhessiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 575))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhessiaaw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhessianw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 576))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhessianw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmheumiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 577))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmheumiaaw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmheumianw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 578))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmheumianw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmheumia"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 579))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmheumia %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmheumi"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 580))]
|
||
|
"TARGET_SPE"
|
||
|
"evmheumi %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmheusiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 581))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmheusiaaw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmheusianw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 582))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmheusianw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhogsmfaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 583))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhogsmfaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhogsmfan"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 584))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhogsmfan %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhogsmiaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 585))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhogsmiaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhogsmian"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 586))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhogsmian %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhogumiaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 587))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhogumiaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhogumian"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 588))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhogumian %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhosmfaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 589))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhosmfaaw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhosmfanw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 590))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhosmfanw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhosmfa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 591))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhosmfa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhosmf"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 592))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhosmf %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhosmiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 593))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhosmiaaw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhosmianw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 594))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhosmianw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhosmia"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 595))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhosmia %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhosmi"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 596))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhosmi %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhossfaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 597))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhossfaaw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhossfanw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 598))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhossfanw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhossfa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 599))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhossfa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhossf"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 600))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhossf %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhossiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 601))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhossiaaw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhossianw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 602))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhossianw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhoumiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 603))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhoumiaaw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhoumianw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 604))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhoumianw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhoumia"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 605))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhoumia %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhoumi"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 606))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhoumi %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhousiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 607))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhousiaaw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmhousianw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 608))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmhousianw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmmlssfa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 609))]
|
||
|
"TARGET_SPE"
|
||
|
"evmmlssfa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmmlssf"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 610))]
|
||
|
"TARGET_SPE"
|
||
|
"evmmlssf %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhsmfa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 611))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhsmfa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhsmf"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 612))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhsmf %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhsmia"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 613))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhsmia %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhsmi"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 614))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhsmi %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhssfa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 615))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhssfa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhusian"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 626))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhusian %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhssf"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 628))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhssf %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhumia"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 629))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhumia %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhumi"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 630))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhumi %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwlsmiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 635))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwlsmiaaw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwlsmianw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 636))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwlsmianw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwlssiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 641))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwlssiaaw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwlssianw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 642))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwlssianw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwlumiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 643))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwlumiaaw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwlumianw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 644))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwlumianw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwlumia"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 645))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwlumia %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwlumi"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 646))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwlumi %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwlusiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 647))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwlusiaaw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwlusianw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 648))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwlusianw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwsmfaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 649))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwsmfaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwsmfan"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 650))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwsmfan %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwsmfa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 651))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwsmfa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwsmf"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 652))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwsmf %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwsmiaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 653))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwsmiaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwsmian"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 654))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwsmian %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwsmia"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 655))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwsmia %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwsmi"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 656))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwsmi %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwssfaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 657))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwssfaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwssfan"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 658))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwssfan %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwssfa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 659))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwssfa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwssf"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 660))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwssf %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwumiaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 661))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwumiaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwumian"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 662))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwumian %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwumia"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 663))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwumia %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwumi"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 664))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwumi %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evaddw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(plus:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_SPE"
|
||
|
"evaddw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evaddusiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 673))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evaddusiaaw %0,%1"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evaddumiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 674))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evaddumiaaw %0,%1"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evaddssiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 675))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evaddssiaaw %0,%1"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evaddsmiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 676))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evaddsmiaaw %0,%1"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evaddiw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:QI 2 "immediate_operand" "i")] 677))]
|
||
|
"TARGET_SPE"
|
||
|
"evaddiw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evsubifw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:QI 2 "immediate_operand" "i")] 678))]
|
||
|
"TARGET_SPE"
|
||
|
"evsubifw %0,%2,%1"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evsubfw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(minus:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_SPE"
|
||
|
"evsubfw %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evsubfusiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 679))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evsubfusiaaw %0,%1"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evsubfumiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 680))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evsubfumiaaw %0,%1"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evsubfssiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 681))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evsubfssiaaw %0,%1"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evsubfsmiaaw"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(reg:V2SI SPE_ACC_REGNO)] 682))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evsubfsmiaaw %0,%1"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmra"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(match_operand:V2SI 1 "gpc_reg_operand" "r"))
|
||
|
(set (reg:V2SI SPE_ACC_REGNO)
|
||
|
(unspec:V2SI [(match_dup 1)] 726))]
|
||
|
"TARGET_SPE"
|
||
|
"evmra %0,%1"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evdivws"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(div:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evdivws %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evdivwu"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(udiv:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evdivwu %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evsplatfi"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:QI 1 "immediate_operand" "i")] 684))]
|
||
|
"TARGET_SPE"
|
||
|
"evsplatfi %0,%1"
|
||
|
[(set_attr "type" "vecperm")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evsplati"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:QI 1 "immediate_operand" "i")] 685))]
|
||
|
"TARGET_SPE"
|
||
|
"evsplati %0,%1"
|
||
|
[(set_attr "type" "vecperm")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evstdd"
|
||
|
[(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
|
||
|
(match_operand:QI 1 "immediate_operand" "i")))
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r"))
|
||
|
(unspec [(const_int 0)] 686)]
|
||
|
"TARGET_SPE"
|
||
|
"evstdd %2,%0,%1"
|
||
|
[(set_attr "type" "vecstore")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evstddx"
|
||
|
[(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
|
||
|
(match_operand:SI 1 "gpc_reg_operand" "r")))
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r"))
|
||
|
(unspec [(const_int 0)] 687)]
|
||
|
"TARGET_SPE"
|
||
|
"evstddx %2,%0,%1"
|
||
|
[(set_attr "type" "vecstore")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evstdh"
|
||
|
[(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
|
||
|
(match_operand:QI 1 "immediate_operand" "i")))
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r"))
|
||
|
(unspec [(const_int 0)] 688)]
|
||
|
"TARGET_SPE"
|
||
|
"evstdh %2,%0,%1"
|
||
|
[(set_attr "type" "vecstore")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evstdhx"
|
||
|
[(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
|
||
|
(match_operand:SI 1 "gpc_reg_operand" "r")))
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r"))
|
||
|
(unspec [(const_int 0)] 689)]
|
||
|
"TARGET_SPE"
|
||
|
"evstdhx %2,%0,%1"
|
||
|
[(set_attr "type" "vecstore")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evstdw"
|
||
|
[(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
|
||
|
(match_operand:QI 1 "immediate_operand" "i")))
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r"))
|
||
|
(unspec [(const_int 0)] 690)]
|
||
|
"TARGET_SPE"
|
||
|
"evstdw %2,%0,%1"
|
||
|
[(set_attr "type" "vecstore")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evstdwx"
|
||
|
[(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
|
||
|
(match_operand:SI 1 "gpc_reg_operand" "r")))
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r"))
|
||
|
(unspec [(const_int 0)] 691)]
|
||
|
"TARGET_SPE"
|
||
|
"evstdwx %2,%0,%1"
|
||
|
[(set_attr "type" "vecstore")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evstwhe"
|
||
|
[(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
|
||
|
(match_operand:QI 1 "immediate_operand" "i")))
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r"))
|
||
|
(unspec [(const_int 0)] 692)]
|
||
|
"TARGET_SPE"
|
||
|
"evstwhe %2,%0,%1"
|
||
|
[(set_attr "type" "vecstore")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evstwhex"
|
||
|
[(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
|
||
|
(match_operand:SI 1 "gpc_reg_operand" "r")))
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r"))
|
||
|
(unspec [(const_int 0)] 693)]
|
||
|
"TARGET_SPE"
|
||
|
"evstwhex %2,%0,%1"
|
||
|
[(set_attr "type" "vecstore")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evstwho"
|
||
|
[(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
|
||
|
(match_operand:QI 1 "immediate_operand" "i")))
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r"))
|
||
|
(unspec [(const_int 0)] 694)]
|
||
|
"TARGET_SPE"
|
||
|
"evstwho %2,%0,%1"
|
||
|
[(set_attr "type" "vecstore")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evstwhox"
|
||
|
[(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
|
||
|
(match_operand:SI 1 "gpc_reg_operand" "r")))
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r"))
|
||
|
(unspec [(const_int 0)] 695)]
|
||
|
"TARGET_SPE"
|
||
|
"evstwhox %2,%0,%1"
|
||
|
[(set_attr "type" "vecstore")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evstwwe"
|
||
|
[(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
|
||
|
(match_operand:QI 1 "immediate_operand" "i")))
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r"))
|
||
|
(unspec [(const_int 0)] 696)]
|
||
|
"TARGET_SPE"
|
||
|
"evstwwe %2,%0,%1"
|
||
|
[(set_attr "type" "vecstore")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evstwwex"
|
||
|
[(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
|
||
|
(match_operand:SI 1 "gpc_reg_operand" "r")))
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r"))
|
||
|
(unspec [(const_int 0)] 697)]
|
||
|
"TARGET_SPE"
|
||
|
"evstwwex %2,%0,%1"
|
||
|
[(set_attr "type" "vecstore")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evstwwo"
|
||
|
[(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
|
||
|
(match_operand:QI 1 "immediate_operand" "i")))
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r"))
|
||
|
(unspec [(const_int 0)] 698)]
|
||
|
"TARGET_SPE"
|
||
|
"evstwwo %2,%0,%1"
|
||
|
[(set_attr "type" "vecstore")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evstwwox"
|
||
|
[(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
|
||
|
(match_operand:SI 1 "gpc_reg_operand" "r")))
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r"))
|
||
|
(unspec [(const_int 0)] 699)]
|
||
|
"TARGET_SPE"
|
||
|
"evstwwox %2,%0,%1"
|
||
|
[(set_attr "type" "vecstore")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
;; SPE vector clears
|
||
|
|
||
|
(define_insn "*movv2si_const0"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(match_operand:V2SI 1 "zero_constant" ""))]
|
||
|
"TARGET_SPE"
|
||
|
"evxor %0,%0,%0"
|
||
|
[(set_attr "type" "vecsimple")])
|
||
|
|
||
|
(define_insn "*movv2sf_const0"
|
||
|
[(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
|
||
|
(match_operand:V2SF 1 "zero_constant" ""))]
|
||
|
"TARGET_SPE"
|
||
|
"evxor %0,%0,%0"
|
||
|
[(set_attr "type" "vecsimple")])
|
||
|
|
||
|
(define_insn "*movv4hi_const0"
|
||
|
[(set (match_operand:V4HI 0 "gpc_reg_operand" "=r")
|
||
|
(match_operand:V4HI 1 "zero_constant" ""))]
|
||
|
"TARGET_SPE"
|
||
|
"evxor %0,%0,%0"
|
||
|
[(set_attr "type" "vecsimple")])
|
||
|
|
||
|
(define_insn "*movv1di_const0"
|
||
|
[(set (match_operand:V1DI 0 "gpc_reg_operand" "=r")
|
||
|
(match_operand:V1DI 1 "zero_constant" ""))]
|
||
|
"TARGET_SPE"
|
||
|
"evxor %0,%0,%0"
|
||
|
[(set_attr "type" "vecsimple")])
|
||
|
|
||
|
;; Vector move instructions.
|
||
|
|
||
|
(define_expand "movv2si"
|
||
|
[(set (match_operand:V2SI 0 "nonimmediate_operand" "")
|
||
|
(match_operand:V2SI 1 "any_operand" ""))]
|
||
|
"TARGET_SPE"
|
||
|
"{ rs6000_emit_move (operands[0], operands[1], V2SImode); DONE; }")
|
||
|
|
||
|
|
||
|
(define_insn "*movv2si_internal"
|
||
|
[(set (match_operand:V2SI 0 "nonimmediate_operand" "=m,r,r")
|
||
|
(match_operand:V2SI 1 "input_operand" "r,m,r"))]
|
||
|
"TARGET_SPE"
|
||
|
"@
|
||
|
evstdd%X0 %1,%y0
|
||
|
evldd%X1 %0,%y1
|
||
|
evor %0,%1,%1"
|
||
|
[(set_attr "type" "vecload")])
|
||
|
|
||
|
(define_expand "movv1di"
|
||
|
[(set (match_operand:V1DI 0 "nonimmediate_operand" "")
|
||
|
(match_operand:V1DI 1 "any_operand" ""))]
|
||
|
"TARGET_SPE"
|
||
|
"{ rs6000_emit_move (operands[0], operands[1], V1DImode); DONE; }")
|
||
|
|
||
|
(define_insn "*movv1di_internal"
|
||
|
[(set (match_operand:V1DI 0 "nonimmediate_operand" "=m,r,r")
|
||
|
(match_operand:V1DI 1 "input_operand" "r,m,r"))]
|
||
|
"TARGET_SPE"
|
||
|
"@
|
||
|
evstdd%X0 %1,%y0
|
||
|
evldd%X1 %0,%y1
|
||
|
evor %0,%1,%1"
|
||
|
[(set_attr "type" "vecload")])
|
||
|
|
||
|
(define_expand "movv4hi"
|
||
|
[(set (match_operand:V4HI 0 "nonimmediate_operand" "")
|
||
|
(match_operand:V4HI 1 "any_operand" ""))]
|
||
|
"TARGET_SPE"
|
||
|
"{ rs6000_emit_move (operands[0], operands[1], V4HImode); DONE; }")
|
||
|
|
||
|
(define_insn "*movv4hi_internal"
|
||
|
[(set (match_operand:V4HI 0 "nonimmediate_operand" "=m,r,r")
|
||
|
(match_operand:V4HI 1 "input_operand" "r,m,r"))]
|
||
|
"TARGET_SPE"
|
||
|
"@
|
||
|
evstdd%X0 %1,%y0
|
||
|
evldd%X1 %0,%y1
|
||
|
evor %0,%1,%1"
|
||
|
[(set_attr "type" "vecload")])
|
||
|
|
||
|
(define_expand "movv2sf"
|
||
|
[(set (match_operand:V2SF 0 "nonimmediate_operand" "")
|
||
|
(match_operand:V2SF 1 "any_operand" ""))]
|
||
|
"TARGET_SPE"
|
||
|
"{ rs6000_emit_move (operands[0], operands[1], V2SFmode); DONE; }")
|
||
|
|
||
|
(define_insn "*movv2sf_internal"
|
||
|
[(set (match_operand:V2SF 0 "nonimmediate_operand" "=m,r,r")
|
||
|
(match_operand:V2SF 1 "input_operand" "r,m,r"))]
|
||
|
"TARGET_SPE"
|
||
|
"@
|
||
|
evstdd%X0 %1,%y0
|
||
|
evldd%X1 %0,%y1
|
||
|
evor %0,%1,%1"
|
||
|
[(set_attr "type" "vecload")])
|
||
|
|
||
|
(define_insn "spe_evmwhssfaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 702))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhssfaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhssmaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 703))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhssmaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhsmfaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 704))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhsmfaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhsmiaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 705))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhsmiaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhusiaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 706))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhusiaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhumiaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 707))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhumiaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhssfan"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 708))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhssfan %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhssian"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 709))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhssian %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhsmfan"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 710))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhsmfan %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhsmian"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 711))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhsmian %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhumian"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 713))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhumian %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhgssfaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 714))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhgssfaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhgsmfaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 715))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhgsmfaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhgsmiaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 716))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhgsmiaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhgumiaa"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 717))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhgumiaa %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhgssfan"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 718))
|
||
|
(clobber (reg:SI SPEFSCR_REGNO))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhgssfan %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhgsmfan"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 719))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhgsmfan %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhgsmian"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 720))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhgsmian %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_evmwhgumian"
|
||
|
[(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
|
||
|
(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:V2SI 2 "gpc_reg_operand" "r")] 721))
|
||
|
(clobber (reg:V2SI SPE_ACC_REGNO))]
|
||
|
"TARGET_SPE"
|
||
|
"evmwhgumian %0,%1,%2"
|
||
|
[(set_attr "type" "veccomplex")
|
||
|
(set_attr "length" "4")])
|
||
|
|
||
|
(define_insn "spe_mtspefscr"
|
||
|
[(set (reg:SI SPEFSCR_REGNO)
|
||
|
(unspec_volatile:SI [(match_operand:SI 0 "register_operand" "r")]
|
||
|
722))]
|
||
|
"TARGET_SPE"
|
||
|
"mtspefscr %0"
|
||
|
[(set_attr "type" "vecsimple")])
|
||
|
|
||
|
(define_insn "spe_mfspefscr"
|
||
|
[(set (match_operand:SI 0 "register_operand" "=r")
|
||
|
(unspec_volatile:SI [(reg:SI SPEFSCR_REGNO)] 723))]
|
||
|
"TARGET_SPE"
|
||
|
"mfspefscr %0"
|
||
|
[(set_attr "type" "vecsimple")])
|
||
|
|
||
|
;; MPC8540 single-precision FP instructions on GPRs.
|
||
|
;; We have 2 variants for each. One for IEEE compliant math and one
|
||
|
;; for non IEEE compliant math.
|
||
|
|
||
|
(define_insn "cmpsfeq_gpr"
|
||
|
[(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
|
||
|
(eq:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:SF 2 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_HARD_FLOAT && !TARGET_FPRS && !flag_unsafe_math_optimizations"
|
||
|
"efscmpeq %0,%1,%2"
|
||
|
[(set_attr "type" "fpcompare")])
|
||
|
|
||
|
(define_insn "tstsfeq_gpr"
|
||
|
[(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
|
||
|
(eq:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:SF 2 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_HARD_FLOAT && !TARGET_FPRS && flag_unsafe_math_optimizations"
|
||
|
"efststeq %0,%1,%2"
|
||
|
[(set_attr "type" "fpcompare")])
|
||
|
|
||
|
(define_insn "cmpsfgt_gpr"
|
||
|
[(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
|
||
|
(gt:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:SF 2 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_HARD_FLOAT && !TARGET_FPRS && !flag_unsafe_math_optimizations"
|
||
|
"efscmpgt %0,%1,%2"
|
||
|
[(set_attr "type" "fpcompare")])
|
||
|
|
||
|
(define_insn "tstsfgt_gpr"
|
||
|
[(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
|
||
|
(gt:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:SF 2 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_HARD_FLOAT && !TARGET_FPRS && flag_unsafe_math_optimizations"
|
||
|
"efststgt %0,%1,%2"
|
||
|
[(set_attr "type" "fpcompare")])
|
||
|
|
||
|
(define_insn "cmpsflt_gpr"
|
||
|
[(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
|
||
|
(lt:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:SF 2 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_HARD_FLOAT && !TARGET_FPRS && !flag_unsafe_math_optimizations"
|
||
|
"efscmplt %0,%1,%2"
|
||
|
[(set_attr "type" "fpcompare")])
|
||
|
|
||
|
(define_insn "tstsflt_gpr"
|
||
|
[(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
|
||
|
(lt:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
|
||
|
(match_operand:SF 2 "gpc_reg_operand" "r")))]
|
||
|
"TARGET_HARD_FLOAT && !TARGET_FPRS && flag_unsafe_math_optimizations"
|
||
|
"efststlt %0,%1,%2"
|
||
|
[(set_attr "type" "fpcompare")])
|
||
|
|