⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 altivec.md

📁 linux下的gcc编译器
💻 MD
📖 第 1 页 / 共 5 页
字号:
  "TARGET_ALTIVEC"  "vrefp %0, %1"  [(set_attr "type" "vecfloat")])(define_insn "altivec_vsel_4si"  [(set (match_operand:V4SI 0 "register_operand" "=v")        (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "v")                      (match_operand:V4SI 2 "register_operand" "v")                      (match_operand:V4SI 3 "register_operand" "v")] 159))]  "TARGET_ALTIVEC"  "vsel %0,%1,%2,%3"  [(set_attr "type" "vecperm")])(define_insn "altivec_vsel_4sf"  [(set (match_operand:V4SF 0 "register_operand" "=v")        (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "v")                      (match_operand:V4SF 2 "register_operand" "v")                      (match_operand:V4SI 3 "register_operand" "v")] 160))]  "TARGET_ALTIVEC"  "vsel %0,%1,%2,%3"  [(set_attr "type" "vecperm")])(define_insn "altivec_vsel_8hi"  [(set (match_operand:V8HI 0 "register_operand" "=v")        (unspec:V8HI [(match_operand:V8HI 1 "register_operand" "v")                      (match_operand:V8HI 2 "register_operand" "v")                      (match_operand:V8HI 3 "register_operand" "v")] 161))]  "TARGET_ALTIVEC"  "vsel %0,%1,%2,%3"  [(set_attr "type" "vecperm")])(define_insn "altivec_vsel_16qi"  [(set (match_operand:V16QI 0 "register_operand" "=v")        (unspec:V16QI [(match_operand:V16QI 1 "register_operand" "v")                       (match_operand:V16QI 2 "register_operand" "v")                       (match_operand:V16QI 3 "register_operand" "v")] 162))]  "TARGET_ALTIVEC"  "vsel %0,%1,%2,%3"  [(set_attr "type" "vecperm")])(define_insn "altivec_vsldoi_4si"  [(set (match_operand:V4SI 0 "register_operand" "=v")        (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "v")		      (match_operand:V4SI 2 "register_operand" "v")                      (match_operand:QI 3 "immediate_operand" "i")] 163))]  "TARGET_ALTIVEC"  "vsldoi %0, %1, %2, %3"  [(set_attr "type" "vecperm")])(define_insn "altivec_vsldoi_4sf"  [(set (match_operand:V4SF 0 "register_operand" "=v")        (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "v")		      (match_operand:V4SF 2 "register_operand" "v")                      (match_operand:QI 3 "immediate_operand" "i")] 164))]  "TARGET_ALTIVEC"  "vsldoi %0, %1, %2, %3"  [(set_attr "type" "vecperm")])(define_insn "altivec_vsldoi_8hi"  [(set (match_operand:V8HI 0 "register_operand" "=v")        (unspec:V8HI [(match_operand:V8HI 1 "register_operand" "v")		      (match_operand:V8HI 2 "register_operand" "v")                      (match_operand:QI 3 "immediate_operand" "i")] 165))]  "TARGET_ALTIVEC"  "vsldoi %0, %1, %2, %3"  [(set_attr "type" "vecperm")])(define_insn "altivec_vsldoi_16qi"  [(set (match_operand:V16QI 0 "register_operand" "=v")        (unspec:V16QI [(match_operand:V16QI 1 "register_operand" "v")		       (match_operand:V16QI 2 "register_operand" "v")		       (match_operand:QI 3 "immediate_operand" "i")] 166))]  "TARGET_ALTIVEC"  "vsldoi %0, %1, %2, %3"  [(set_attr "type" "vecperm")])(define_insn "altivec_vupkhsb"  [(set (match_operand:V8HI 0 "register_operand" "=v")  	(unspec:V8HI [(match_operand:V16QI 1 "register_operand" "v")] 167))]  "TARGET_ALTIVEC"  "vupkhsb %0, %1"  [(set_attr "type" "vecperm")])(define_insn "altivec_vupkhpx"  [(set (match_operand:V4SI 0 "register_operand" "=v")  	(unspec:V4SI [(match_operand:V8HI 1 "register_operand" "v")] 168))]  "TARGET_ALTIVEC"  "vupkhpx %0, %1"  [(set_attr "type" "vecperm")])(define_insn "altivec_vupkhsh"  [(set (match_operand:V4SI 0 "register_operand" "=v")  	(unspec:V4SI [(match_operand:V8HI 1 "register_operand" "v")] 169))]  "TARGET_ALTIVEC"  "vupkhsh %0, %1"  [(set_attr "type" "vecperm")])(define_insn "altivec_vupklsb"  [(set (match_operand:V8HI 0 "register_operand" "=v")  	(unspec:V8HI [(match_operand:V16QI 1 "register_operand" "v")] 170))]  "TARGET_ALTIVEC"  "vupklsb %0, %1"  [(set_attr "type" "vecperm")])(define_insn "altivec_vupklpx"  [(set (match_operand:V4SI 0 "register_operand" "=v")  	(unspec:V4SI [(match_operand:V8HI 1 "register_operand" "v")] 171))]  "TARGET_ALTIVEC"  "vupklpx %0, %1"  [(set_attr "type" "vecperm")])(define_insn "altivec_vupklsh"  [(set (match_operand:V4SI 0 "register_operand" "=v")  	(unspec:V4SI [(match_operand:V8HI 1 "register_operand" "v")] 172))]  "TARGET_ALTIVEC"  "vupklsh %0, %1"  [(set_attr "type" "vecperm")]);; AltiVec predicates.(define_expand "cr6_test_for_zero"  [(set (match_operand:SI 0 "register_operand" "=r")	(eq:SI (reg:CC 74)	       (const_int 0)))]  "TARGET_ALTIVEC"  "")	(define_expand "cr6_test_for_zero_reverse"  [(set (match_operand:SI 0 "register_operand" "=r")	(eq:SI (reg:CC 74)	       (const_int 0)))   (set (match_dup 0) (minus:SI (const_int 1) (match_dup 0)))]  "TARGET_ALTIVEC"  "")(define_expand "cr6_test_for_lt"  [(set (match_operand:SI 0 "register_operand" "=r")	(lt:SI (reg:CC 74)	       (const_int 0)))]  "TARGET_ALTIVEC"  "")(define_expand "cr6_test_for_lt_reverse"  [(set (match_operand:SI 0 "register_operand" "=r")	(lt:SI (reg:CC 74)	       (const_int 0)))   (set (match_dup 0) (minus:SI (const_int 1) (match_dup 0)))]  "TARGET_ALTIVEC"  "");; We can get away with generating the opcode on the fly (%3 below);; because all the predicates have the same scheduling parameters.(define_insn "altivec_predicate_v4si"  [(set (reg:CC 74)	(unspec:CC [(match_operand:V4SI 1 "register_operand" "v")		    (match_operand:V4SI 2 "register_operand" "v")		    (match_operand 3 "any_operand" "")] 173))   (clobber (match_scratch:V4SI 0 "=v"))]  "TARGET_ALTIVEC"  "%3 %0,%1,%2"[(set_attr "type" "veccmp")])(define_insn "altivec_predicate_v4sf"  [(set (reg:CC 74)	(unspec:CC [(match_operand:V4SF 1 "register_operand" "v")		    (match_operand:V4SF 2 "register_operand" "v")		    (match_operand 3 "any_operand" "")] 174))   (clobber (match_scratch:V4SF 0 "=v"))]  "TARGET_ALTIVEC"  "%3 %0,%1,%2"[(set_attr "type" "veccmp")])(define_insn "altivec_predicate_v8hi"  [(set (reg:CC 74)	(unspec:CC [(match_operand:V8HI 1 "register_operand" "v")		    (match_operand:V8HI 2 "register_operand" "v")		    (match_operand 3 "any_operand" "")] 175))   (clobber (match_scratch:V8HI 0 "=v"))]  "TARGET_ALTIVEC"  "%3 %0,%1,%2"[(set_attr "type" "veccmp")])(define_insn "altivec_predicate_v16qi"  [(set (reg:CC 74)	(unspec:CC [(match_operand:V16QI 1 "register_operand" "v")		    (match_operand:V16QI 2 "register_operand" "v")		    (match_operand 3 "any_operand" "")] 175))   (clobber (match_scratch:V16QI 0 "=v"))]  "TARGET_ALTIVEC"  "%3 %0,%1,%2"[(set_attr "type" "veccmp")])(define_insn "altivec_mtvscr"  [(set (reg:SI 110)	(unspec_volatile:SI	 [(match_operand:V4SI 0 "register_operand" "v")] 186))]  "TARGET_ALTIVEC"  "mtvscr %0"  [(set_attr "type" "vecsimple")])(define_insn "altivec_mfvscr"  [(set (match_operand:V8HI 0 "register_operand" "=v")	(unspec_volatile:V8HI [(reg:SI 110)] 187))]  "TARGET_ALTIVEC"  "mfvscr %0"  [(set_attr "type" "vecsimple")])(define_insn "altivec_dssall"  [(unspec [(const_int 0)] 188)]  "TARGET_ALTIVEC"  "dssall"  [(set_attr "type" "vecsimple")])(define_insn "altivec_dss"  [(unspec [(match_operand:QI 0 "immediate_operand" "i")] 189)]  "TARGET_ALTIVEC"  "dss %0"  [(set_attr "type" "vecsimple")])(define_insn "altivec_dst"  [(unspec [(match_operand:SI 0 "register_operand" "b")	    (match_operand:SI 1 "register_operand" "r")	    (match_operand:QI 2 "immediate_operand" "i")] 190)]  "TARGET_ALTIVEC"  "dst %0,%1,%2"  [(set_attr "type" "vecsimple")])(define_insn "altivec_dstt"  [(unspec [(match_operand:SI 0 "register_operand" "b")	    (match_operand:SI 1 "register_operand" "r")	    (match_operand:QI 2 "immediate_operand" "i")] 191)]  "TARGET_ALTIVEC"  "dstt %0,%1,%2"  [(set_attr "type" "vecsimple")])(define_insn "altivec_dstst"  [(unspec [(match_operand:SI 0 "register_operand" "b")	    (match_operand:SI 1 "register_operand" "r")	    (match_operand:QI 2 "immediate_operand" "i")] 192)]  "TARGET_ALTIVEC"  "dstst %0,%1,%2"  [(set_attr "type" "vecsimple")])(define_insn "altivec_dststt"  [(unspec [(match_operand:SI 0 "register_operand" "b")	    (match_operand:SI 1 "register_operand" "r")	    (match_operand:QI 2 "immediate_operand" "i")] 193)]  "TARGET_ALTIVEC"  "dststt %0,%1,%2"  [(set_attr "type" "vecsimple")])(define_insn "altivec_lvsl"  [(set (match_operand:V16QI 0 "register_operand" "=v")	(unspec:V16QI [(match_operand:SI 1 "register_operand" "b")		       (match_operand:SI 2 "register_operand" "r")] 194))]  "TARGET_ALTIVEC"  "lvsl %0,%1,%2"  [(set_attr "type" "vecload")])(define_insn "altivec_lvsr"  [(set (match_operand:V16QI 0 "register_operand" "=v")	(unspec:V16QI [(match_operand:SI 1 "register_operand" "b")		       (match_operand:SI 2 "register_operand" "r")] 195))]  "TARGET_ALTIVEC"  "lvsr %0,%1,%2"  [(set_attr "type" "vecload")]);; Parallel some of the LVE* and STV*'s with unspecs because some have;; identical rtl but different instructions-- and gcc gets confused.(define_insn "altivec_lvebx"  [(parallel    [(set (match_operand:V16QI 0 "register_operand" "=v")	  (mem:V16QI (plus:SI (match_operand:SI 1 "register_operand" "b")			      (match_operand:SI 2 "register_operand" "r"))))     (unspec [(const_int 0)] 196)])]  "TARGET_ALTIVEC"  "lvebx %0,%1,%2"  [(set_attr "type" "vecload")])(define_insn "altivec_lvehx"  [(parallel    [(set (match_operand:V8HI 0 "register_operand" "=v")	  (mem:V8HI	   (and:SI (plus:SI (match_operand:SI 1 "register_operand" "b")			    (match_operand:SI 2 "register_operand" "r"))		   (const_int -2))))     (unspec [(const_int 0)] 197)])]  "TARGET_ALTIVEC"  "lvehx %0,%1,%2"  [(set_attr "type" "vecload")])(define_insn "altivec_lvewx"  [(parallel    [(set (match_operand:V4SI 0 "register_operand" "=v")	  (mem:V4SI	   (and:SI (plus:SI (match_operand:SI 1 "register_operand" "b")			    (match_operand:SI 2 "register_operand" "r"))		   (const_int -4))))     (unspec [(const_int 0)] 198)])]  "TARGET_ALTIVEC"  "lvewx %0,%1,%2"  [(set_attr "type" "vecload")])(define_insn "altivec_lvxl"  [(parallel    [(set (match_operand:V4SI 0 "register_operand" "=v")	  (mem:V4SI (plus:SI (match_operand:SI 1 "register_operand" "b")			     (match_operand:SI 2 "register_operand" "r"))))     (unspec [(const_int 0)] 213)])]  "TARGET_ALTIVEC"  "lvxl %0,%1,%2"  [(set_attr "type" "vecload")])(define_insn "altivec_lvx"  [(set (match_operand:V4SI 0 "register_operand" "=v")	(mem:V4SI (plus:SI (match_operand:SI 1 "register_operand" "b")			   (match_operand:SI 2 "register_operand" "r"))))]  "TARGET_ALTIVEC"  "lvx %0,%1,%2"  [(set_attr "type" "vecload")])(define_insn "altivec_stvx"  [(parallel    [(set (mem:V4SI	   (and:SI (plus:SI (match_operand:SI 0 "register_operand" "b")			    (match_operand:SI 1 "register_operand" "r"))		   (const_int -16)))	  (match_operand:V4SI 2 "register_operand" "v"))     (unspec [(const_int 0)] 201)])]  "TARGET_ALTIVEC"  "stvx %2,%0,%1"  [(set_attr "type" "vecstore")])(define_insn "altivec_stvxl"  [(parallel    [(set (mem:V4SI	   (and:SI (plus:SI (match_operand:SI 0 "register_operand" "b")			    (match_operand:SI 1 "register_operand" "r"))		   (const_int -16)))	  (match_operand:V4SI 2 "register_operand" "v"))     (unspec [(const_int 0)] 202)])]  "TARGET_ALTIVEC"  "stvxl %2,%0,%1"  [(set_attr "type" "vecstore")])(define_insn "altivec_stvebx"  [(parallel    [(set (mem:V16QI	   (plus:SI (match_operand:SI 0 "register_operand" "b")		    (match_operand:SI 1 "register_operand" "r")))	  (match_operand:V16QI 2 "register_operand" "v"))     (unspec [(const_int 0)] 203)])]  "TARGET_ALTIVEC"  "stvebx %2,%0,%1"  [(set_attr "type" "vecstore")])(define_insn "altivec_stvehx"  [(parallel    [(set (mem:V8HI	   (and:SI (plus:SI (match_operand:SI 0 "register_operand" "b")			    (match_operand:SI 1 "register_operand" "r"))		   (const_int -2)))	  (match_o

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -