altivec.md (vec_widen_umult_even_v16qi): Change define_insn to define_expand that uses even patterns for big endian and...
2013-11-05 Bill Schmidt <wschmidt@linux.vnet.ibm.com> * config/rs6000/altivec.md (vec_widen_umult_even_v16qi): Change define_insn to define_expand that uses even patterns for big endian and odd patterns for little endian. (vec_widen_smult_even_v16qi): Likewise. (vec_widen_umult_even_v8hi): Likewise. (vec_widen_smult_even_v8hi): Likewise. (vec_widen_umult_odd_v16qi): Likewise. (vec_widen_smult_odd_v16qi): Likewise. (vec_widen_umult_odd_v8hi): Likewise. (vec_widen_smult_odd_v8hi): Likewise. (altivec_vmuleub): New define_insn. (altivec_vmuloub): Likewise. (altivec_vmulesb): Likewise. (altivec_vmulosb): Likewise. (altivec_vmuleuh): Likewise. (altivec_vmulouh): Likewise. (altivec_vmulesh): Likewise. (altivec_vmulosh): Likewise. From-SVN: r204439
This commit is contained in:
parent
82f63633f2
commit
1a5d226128
@ -1,3 +1,24 @@
|
|||||||
|
2013-11-05 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
|
||||||
|
|
||||||
|
* config/rs6000/altivec.md (vec_widen_umult_even_v16qi): Change
|
||||||
|
define_insn to define_expand that uses even patterns for big
|
||||||
|
endian and odd patterns for little endian.
|
||||||
|
(vec_widen_smult_even_v16qi): Likewise.
|
||||||
|
(vec_widen_umult_even_v8hi): Likewise.
|
||||||
|
(vec_widen_smult_even_v8hi): Likewise.
|
||||||
|
(vec_widen_umult_odd_v16qi): Likewise.
|
||||||
|
(vec_widen_smult_odd_v16qi): Likewise.
|
||||||
|
(vec_widen_umult_odd_v8hi): Likewise.
|
||||||
|
(vec_widen_smult_odd_v8hi): Likewise.
|
||||||
|
(altivec_vmuleub): New define_insn.
|
||||||
|
(altivec_vmuloub): Likewise.
|
||||||
|
(altivec_vmulesb): Likewise.
|
||||||
|
(altivec_vmulosb): Likewise.
|
||||||
|
(altivec_vmuleuh): Likewise.
|
||||||
|
(altivec_vmulouh): Likewise.
|
||||||
|
(altivec_vmulesh): Likewise.
|
||||||
|
(altivec_vmulosh): Likewise.
|
||||||
|
|
||||||
2013-11-05 Mike Stump <mikestump@comcast.net>
|
2013-11-05 Mike Stump <mikestump@comcast.net>
|
||||||
|
|
||||||
* Makefile.in (mostlyclean): Remove c-family objects.
|
* Makefile.in (mostlyclean): Remove c-family objects.
|
||||||
|
@ -972,7 +972,111 @@
|
|||||||
"vmrgow %0,%1,%2"
|
"vmrgow %0,%1,%2"
|
||||||
[(set_attr "type" "vecperm")])
|
[(set_attr "type" "vecperm")])
|
||||||
|
|
||||||
(define_insn "vec_widen_umult_even_v16qi"
|
(define_expand "vec_widen_umult_even_v16qi"
|
||||||
|
[(use (match_operand:V8HI 0 "register_operand" ""))
|
||||||
|
(use (match_operand:V16QI 1 "register_operand" ""))
|
||||||
|
(use (match_operand:V16QI 2 "register_operand" ""))]
|
||||||
|
"TARGET_ALTIVEC"
|
||||||
|
{
|
||||||
|
if (BYTES_BIG_ENDIAN)
|
||||||
|
emit_insn (gen_altivec_vmuleub (operands[0], operands[1], operands[2]));
|
||||||
|
else
|
||||||
|
emit_insn (gen_altivec_vmuloub (operands[0], operands[1], operands[2]));
|
||||||
|
DONE;
|
||||||
|
})
|
||||||
|
|
||||||
|
(define_expand "vec_widen_smult_even_v16qi"
|
||||||
|
[(use (match_operand:V8HI 0 "register_operand" ""))
|
||||||
|
(use (match_operand:V16QI 1 "register_operand" ""))
|
||||||
|
(use (match_operand:V16QI 2 "register_operand" ""))]
|
||||||
|
"TARGET_ALTIVEC"
|
||||||
|
{
|
||||||
|
if (BYTES_BIG_ENDIAN)
|
||||||
|
emit_insn (gen_altivec_vmulesb (operands[0], operands[1], operands[2]));
|
||||||
|
else
|
||||||
|
emit_insn (gen_altivec_vmulosb (operands[0], operands[1], operands[2]));
|
||||||
|
DONE;
|
||||||
|
})
|
||||||
|
|
||||||
|
(define_expand "vec_widen_umult_even_v8hi"
|
||||||
|
[(use (match_operand:V4SI 0 "register_operand" ""))
|
||||||
|
(use (match_operand:V8HI 1 "register_operand" ""))
|
||||||
|
(use (match_operand:V8HI 2 "register_operand" ""))]
|
||||||
|
"TARGET_ALTIVEC"
|
||||||
|
{
|
||||||
|
if (BYTES_BIG_ENDIAN)
|
||||||
|
emit_insn (gen_altivec_vmuleuh (operands[0], operands[1], operands[2]));
|
||||||
|
else
|
||||||
|
emit_insn (gen_altivec_vmulouh (operands[0], operands[1], operands[2]));
|
||||||
|
DONE;
|
||||||
|
})
|
||||||
|
|
||||||
|
(define_expand "vec_widen_smult_even_v8hi"
|
||||||
|
[(use (match_operand:V4SI 0 "register_operand" ""))
|
||||||
|
(use (match_operand:V8HI 1 "register_operand" ""))
|
||||||
|
(use (match_operand:V8HI 2 "register_operand" ""))]
|
||||||
|
"TARGET_ALTIVEC"
|
||||||
|
{
|
||||||
|
if (BYTES_BIG_ENDIAN)
|
||||||
|
emit_insn (gen_altivec_vmulesh (operands[0], operands[1], operands[2]));
|
||||||
|
else
|
||||||
|
emit_insn (gen_altivec_vmulosh (operands[0], operands[1], operands[2]));
|
||||||
|
DONE;
|
||||||
|
})
|
||||||
|
|
||||||
|
(define_expand "vec_widen_umult_odd_v16qi"
|
||||||
|
[(use (match_operand:V8HI 0 "register_operand" ""))
|
||||||
|
(use (match_operand:V16QI 1 "register_operand" ""))
|
||||||
|
(use (match_operand:V16QI 2 "register_operand" ""))]
|
||||||
|
"TARGET_ALTIVEC"
|
||||||
|
{
|
||||||
|
if (BYTES_BIG_ENDIAN)
|
||||||
|
emit_insn (gen_altivec_vmuloub (operands[0], operands[1], operands[2]));
|
||||||
|
else
|
||||||
|
emit_insn (gen_altivec_vmuleub (operands[0], operands[1], operands[2]));
|
||||||
|
DONE;
|
||||||
|
})
|
||||||
|
|
||||||
|
(define_expand "vec_widen_smult_odd_v16qi"
|
||||||
|
[(use (match_operand:V8HI 0 "register_operand" ""))
|
||||||
|
(use (match_operand:V16QI 1 "register_operand" ""))
|
||||||
|
(use (match_operand:V16QI 2 "register_operand" ""))]
|
||||||
|
"TARGET_ALTIVEC"
|
||||||
|
{
|
||||||
|
if (BYTES_BIG_ENDIAN)
|
||||||
|
emit_insn (gen_altivec_vmulosb (operands[0], operands[1], operands[2]));
|
||||||
|
else
|
||||||
|
emit_insn (gen_altivec_vmulesb (operands[0], operands[1], operands[2]));
|
||||||
|
DONE;
|
||||||
|
})
|
||||||
|
|
||||||
|
(define_expand "vec_widen_umult_odd_v8hi"
|
||||||
|
[(use (match_operand:V4SI 0 "register_operand" ""))
|
||||||
|
(use (match_operand:V8HI 1 "register_operand" ""))
|
||||||
|
(use (match_operand:V8HI 2 "register_operand" ""))]
|
||||||
|
"TARGET_ALTIVEC"
|
||||||
|
{
|
||||||
|
if (BYTES_BIG_ENDIAN)
|
||||||
|
emit_insn (gen_altivec_vmulouh (operands[0], operands[1], operands[2]));
|
||||||
|
else
|
||||||
|
emit_insn (gen_altivec_vmuleuh (operands[0], operands[1], operands[2]));
|
||||||
|
DONE;
|
||||||
|
})
|
||||||
|
|
||||||
|
(define_expand "vec_widen_smult_odd_v8hi"
|
||||||
|
[(use (match_operand:V4SI 0 "register_operand" ""))
|
||||||
|
(use (match_operand:V8HI 1 "register_operand" ""))
|
||||||
|
(use (match_operand:V8HI 2 "register_operand" ""))]
|
||||||
|
"TARGET_ALTIVEC"
|
||||||
|
{
|
||||||
|
if (BYTES_BIG_ENDIAN)
|
||||||
|
emit_insn (gen_altivec_vmulosh (operands[0], operands[1], operands[2]));
|
||||||
|
else
|
||||||
|
emit_insn (gen_altivec_vmulesh (operands[0], operands[1], operands[2]));
|
||||||
|
DONE;
|
||||||
|
})
|
||||||
|
|
||||||
|
(define_insn "altivec_vmuleub"
|
||||||
[(set (match_operand:V8HI 0 "register_operand" "=v")
|
[(set (match_operand:V8HI 0 "register_operand" "=v")
|
||||||
(unspec:V8HI [(match_operand:V16QI 1 "register_operand" "v")
|
(unspec:V8HI [(match_operand:V16QI 1 "register_operand" "v")
|
||||||
(match_operand:V16QI 2 "register_operand" "v")]
|
(match_operand:V16QI 2 "register_operand" "v")]
|
||||||
@ -981,34 +1085,7 @@
|
|||||||
"vmuleub %0,%1,%2"
|
"vmuleub %0,%1,%2"
|
||||||
[(set_attr "type" "veccomplex")])
|
[(set_attr "type" "veccomplex")])
|
||||||
|
|
||||||
(define_insn "vec_widen_smult_even_v16qi"
|
(define_insn "altivec_vmuloub"
|
||||||
[(set (match_operand:V8HI 0 "register_operand" "=v")
|
|
||||||
(unspec:V8HI [(match_operand:V16QI 1 "register_operand" "v")
|
|
||||||
(match_operand:V16QI 2 "register_operand" "v")]
|
|
||||||
UNSPEC_VMULESB))]
|
|
||||||
"TARGET_ALTIVEC"
|
|
||||||
"vmulesb %0,%1,%2"
|
|
||||||
[(set_attr "type" "veccomplex")])
|
|
||||||
|
|
||||||
(define_insn "vec_widen_umult_even_v8hi"
|
|
||||||
[(set (match_operand:V4SI 0 "register_operand" "=v")
|
|
||||||
(unspec:V4SI [(match_operand:V8HI 1 "register_operand" "v")
|
|
||||||
(match_operand:V8HI 2 "register_operand" "v")]
|
|
||||||
UNSPEC_VMULEUH))]
|
|
||||||
"TARGET_ALTIVEC"
|
|
||||||
"vmuleuh %0,%1,%2"
|
|
||||||
[(set_attr "type" "veccomplex")])
|
|
||||||
|
|
||||||
(define_insn "vec_widen_smult_even_v8hi"
|
|
||||||
[(set (match_operand:V4SI 0 "register_operand" "=v")
|
|
||||||
(unspec:V4SI [(match_operand:V8HI 1 "register_operand" "v")
|
|
||||||
(match_operand:V8HI 2 "register_operand" "v")]
|
|
||||||
UNSPEC_VMULESH))]
|
|
||||||
"TARGET_ALTIVEC"
|
|
||||||
"vmulesh %0,%1,%2"
|
|
||||||
[(set_attr "type" "veccomplex")])
|
|
||||||
|
|
||||||
(define_insn "vec_widen_umult_odd_v16qi"
|
|
||||||
[(set (match_operand:V8HI 0 "register_operand" "=v")
|
[(set (match_operand:V8HI 0 "register_operand" "=v")
|
||||||
(unspec:V8HI [(match_operand:V16QI 1 "register_operand" "v")
|
(unspec:V8HI [(match_operand:V16QI 1 "register_operand" "v")
|
||||||
(match_operand:V16QI 2 "register_operand" "v")]
|
(match_operand:V16QI 2 "register_operand" "v")]
|
||||||
@ -1017,7 +1094,16 @@
|
|||||||
"vmuloub %0,%1,%2"
|
"vmuloub %0,%1,%2"
|
||||||
[(set_attr "type" "veccomplex")])
|
[(set_attr "type" "veccomplex")])
|
||||||
|
|
||||||
(define_insn "vec_widen_smult_odd_v16qi"
|
(define_insn "altivec_vmulesb"
|
||||||
|
[(set (match_operand:V8HI 0 "register_operand" "=v")
|
||||||
|
(unspec:V8HI [(match_operand:V16QI 1 "register_operand" "v")
|
||||||
|
(match_operand:V16QI 2 "register_operand" "v")]
|
||||||
|
UNSPEC_VMULESB))]
|
||||||
|
"TARGET_ALTIVEC"
|
||||||
|
"vmulesb %0,%1,%2"
|
||||||
|
[(set_attr "type" "veccomplex")])
|
||||||
|
|
||||||
|
(define_insn "altivec_vmulosb"
|
||||||
[(set (match_operand:V8HI 0 "register_operand" "=v")
|
[(set (match_operand:V8HI 0 "register_operand" "=v")
|
||||||
(unspec:V8HI [(match_operand:V16QI 1 "register_operand" "v")
|
(unspec:V8HI [(match_operand:V16QI 1 "register_operand" "v")
|
||||||
(match_operand:V16QI 2 "register_operand" "v")]
|
(match_operand:V16QI 2 "register_operand" "v")]
|
||||||
@ -1026,7 +1112,16 @@
|
|||||||
"vmulosb %0,%1,%2"
|
"vmulosb %0,%1,%2"
|
||||||
[(set_attr "type" "veccomplex")])
|
[(set_attr "type" "veccomplex")])
|
||||||
|
|
||||||
(define_insn "vec_widen_umult_odd_v8hi"
|
(define_insn "altivec_vmuleuh"
|
||||||
|
[(set (match_operand:V4SI 0 "register_operand" "=v")
|
||||||
|
(unspec:V4SI [(match_operand:V8HI 1 "register_operand" "v")
|
||||||
|
(match_operand:V8HI 2 "register_operand" "v")]
|
||||||
|
UNSPEC_VMULEUH))]
|
||||||
|
"TARGET_ALTIVEC"
|
||||||
|
"vmuleuh %0,%1,%2"
|
||||||
|
[(set_attr "type" "veccomplex")])
|
||||||
|
|
||||||
|
(define_insn "altivec_vmulouh"
|
||||||
[(set (match_operand:V4SI 0 "register_operand" "=v")
|
[(set (match_operand:V4SI 0 "register_operand" "=v")
|
||||||
(unspec:V4SI [(match_operand:V8HI 1 "register_operand" "v")
|
(unspec:V4SI [(match_operand:V8HI 1 "register_operand" "v")
|
||||||
(match_operand:V8HI 2 "register_operand" "v")]
|
(match_operand:V8HI 2 "register_operand" "v")]
|
||||||
@ -1035,7 +1130,16 @@
|
|||||||
"vmulouh %0,%1,%2"
|
"vmulouh %0,%1,%2"
|
||||||
[(set_attr "type" "veccomplex")])
|
[(set_attr "type" "veccomplex")])
|
||||||
|
|
||||||
(define_insn "vec_widen_smult_odd_v8hi"
|
(define_insn "altivec_vmulesh"
|
||||||
|
[(set (match_operand:V4SI 0 "register_operand" "=v")
|
||||||
|
(unspec:V4SI [(match_operand:V8HI 1 "register_operand" "v")
|
||||||
|
(match_operand:V8HI 2 "register_operand" "v")]
|
||||||
|
UNSPEC_VMULESH))]
|
||||||
|
"TARGET_ALTIVEC"
|
||||||
|
"vmulesh %0,%1,%2"
|
||||||
|
[(set_attr "type" "veccomplex")])
|
||||||
|
|
||||||
|
(define_insn "altivec_vmulosh"
|
||||||
[(set (match_operand:V4SI 0 "register_operand" "=v")
|
[(set (match_operand:V4SI 0 "register_operand" "=v")
|
||||||
(unspec:V4SI [(match_operand:V8HI 1 "register_operand" "v")
|
(unspec:V4SI [(match_operand:V8HI 1 "register_operand" "v")
|
||||||
(match_operand:V8HI 2 "register_operand" "v")]
|
(match_operand:V8HI 2 "register_operand" "v")]
|
||||||
|
Loading…
Reference in New Issue
Block a user