📄 spe.md
字号:
(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"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -