This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

patch: altivec insn VSLDOI


it seems we missed a builtin.  here is a patch to fix this.

i also fixed a few comments that were missing periods.  and some
indentation that was wrong.

dan, can you tell me what the right scheduling attribute is for VSLDOI?

ok to commit-- once dan tells me what the attribute is?

-- 
Aldy Hernandez			E-mail: aldyh@redhat.com
Professional Gypsy
Red Hat, Inc.

2001-12-22  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.h (rs6000_builtins): Add vsldoi variants.

        * config/rs6000/rs6000.md ("altivec_vsldoi_*"): Same.

	* config/rs6000/rs6000.c: Clean up some spacing and indentation.
	(altivec_init_builtins): Add tree types for builtins with 4 bit
	literals.
        (bdesc_3arg): Add vsldoi variants.

Index: config/rs6000/rs6000.c
===================================================================
RCS file: /cvs/uberbaum/gcc/config/rs6000/rs6000.c,v
retrieving revision 1.268
diff -c -p -r1.268 rs6000.c
*** rs6000.c	2001/12/20 04:42:22	1.268
--- rs6000.c	2001/12/23 04:41:34
*************** struct builtin_description
*** 3181,3211 ****
    const char *const name;
    const enum rs6000_builtins code;
  };
! /* Simple ternary operations: VECd = foo (VECa, VECb, VECc) */
  static const struct builtin_description bdesc_3arg[] =
!   {
!     { MASK_ALTIVEC, CODE_FOR_altivec_vmaddfp, "__builtin_altivec_vmaddfp", ALTIVEC_BUILTIN_VMADDFP },
!     { MASK_ALTIVEC, CODE_FOR_altivec_vmhaddshs, "__builtin_altivec_vmhaddshs", ALTIVEC_BUILTIN_VMHADDSHS },
!     { MASK_ALTIVEC, CODE_FOR_altivec_vmhraddshs, "__builtin_altivec_vmhraddshs", ALTIVEC_BUILTIN_VMHRADDSHS },
!     { MASK_ALTIVEC, CODE_FOR_altivec_vmladduhm, "__builtin_altivec_vmladduhm", ALTIVEC_BUILTIN_VMLADDUHM},
!     { MASK_ALTIVEC, CODE_FOR_altivec_vmsumubm, "__builtin_altivec_vmsumubm", ALTIVEC_BUILTIN_VMSUMUBM },
!     { MASK_ALTIVEC, CODE_FOR_altivec_vmsummbm, "__builtin_altivec_vmsummbm", ALTIVEC_BUILTIN_VMSUMMBM },
!     { MASK_ALTIVEC, CODE_FOR_altivec_vmsumuhm, "__builtin_altivec_vmsumuhm", ALTIVEC_BUILTIN_VMSUMUHM },
!     { MASK_ALTIVEC, CODE_FOR_altivec_vmsumshm, "__builtin_altivec_vmsumshm", ALTIVEC_BUILTIN_VMSUMSHM },
!     { MASK_ALTIVEC, CODE_FOR_altivec_vmsumuhs, "__builtin_altivec_vmsumuhs", ALTIVEC_BUILTIN_VMSUMUHS },
!     { MASK_ALTIVEC, CODE_FOR_altivec_vmsumshs, "__builtin_altivec_vmsumshs", ALTIVEC_BUILTIN_VMSUMSHS },
!     { MASK_ALTIVEC, CODE_FOR_altivec_vnmsubfp, "__builtin_altivec_vnmsubfp", ALTIVEC_BUILTIN_VNMSUBFP }, 
!     { MASK_ALTIVEC, CODE_FOR_altivec_vperm_4sf, "__builtin_altivec_vperm_4sf", ALTIVEC_BUILTIN_VPERM_4SF },
!     { MASK_ALTIVEC, CODE_FOR_altivec_vperm_4si, "__builtin_altivec_vperm_4si", ALTIVEC_BUILTIN_VPERM_4SI },
!     { MASK_ALTIVEC, CODE_FOR_altivec_vperm_8hi, "__builtin_altivec_vperm_8hi", ALTIVEC_BUILTIN_VPERM_8HI },
!     { MASK_ALTIVEC, CODE_FOR_altivec_vperm_16qi, "__builtin_altivec_vperm_16qi", ALTIVEC_BUILTIN_VPERM_16QI },
!     { MASK_ALTIVEC, CODE_FOR_altivec_vsel_4sf, "__builtin_altivec_vsel_4sf", ALTIVEC_BUILTIN_VSEL_4SF },
!     { MASK_ALTIVEC, CODE_FOR_altivec_vsel_4si, "__builtin_altivec_vsel_4si", ALTIVEC_BUILTIN_VSEL_4SI },
!     { MASK_ALTIVEC, CODE_FOR_altivec_vsel_8hi, "__builtin_altivec_vsel_8hi", ALTIVEC_BUILTIN_VSEL_8HI },
!     { MASK_ALTIVEC, CODE_FOR_altivec_vsel_16qi, "__builtin_altivec_vsel_16qi", ALTIVEC_BUILTIN_VSEL_16QI },
!   };
  
  /* Simple binary operations: VECc = foo (VECa, VECb).  */
  static const struct builtin_description bdesc_2arg[] =
  {
    { MASK_ALTIVEC, CODE_FOR_addv16qi3, "__builtin_altivec_vaddubm", ALTIVEC_BUILTIN_VADDUBM },
--- 3181,3218 ----
    const char *const name;
    const enum rs6000_builtins code;
  };
! 
! /* Simple ternary operations: VECd = foo (VECa, VECb, VECc).  */
! 
  static const struct builtin_description bdesc_3arg[] =
! {
!   { MASK_ALTIVEC, CODE_FOR_altivec_vmaddfp, "__builtin_altivec_vmaddfp", ALTIVEC_BUILTIN_VMADDFP },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vmhaddshs, "__builtin_altivec_vmhaddshs", ALTIVEC_BUILTIN_VMHADDSHS },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vmhraddshs, "__builtin_altivec_vmhraddshs", ALTIVEC_BUILTIN_VMHRADDSHS },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vmladduhm, "__builtin_altivec_vmladduhm", ALTIVEC_BUILTIN_VMLADDUHM},
!   { MASK_ALTIVEC, CODE_FOR_altivec_vmsumubm, "__builtin_altivec_vmsumubm", ALTIVEC_BUILTIN_VMSUMUBM },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vmsummbm, "__builtin_altivec_vmsummbm", ALTIVEC_BUILTIN_VMSUMMBM },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vmsumuhm, "__builtin_altivec_vmsumuhm", ALTIVEC_BUILTIN_VMSUMUHM },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vmsumshm, "__builtin_altivec_vmsumshm", ALTIVEC_BUILTIN_VMSUMSHM },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vmsumuhs, "__builtin_altivec_vmsumuhs", ALTIVEC_BUILTIN_VMSUMUHS },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vmsumshs, "__builtin_altivec_vmsumshs", ALTIVEC_BUILTIN_VMSUMSHS },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vnmsubfp, "__builtin_altivec_vnmsubfp", ALTIVEC_BUILTIN_VNMSUBFP }, 
!   { MASK_ALTIVEC, CODE_FOR_altivec_vperm_4sf, "__builtin_altivec_vperm_4sf", ALTIVEC_BUILTIN_VPERM_4SF },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vperm_4si, "__builtin_altivec_vperm_4si", ALTIVEC_BUILTIN_VPERM_4SI },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vperm_8hi, "__builtin_altivec_vperm_8hi", ALTIVEC_BUILTIN_VPERM_8HI },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vperm_16qi, "__builtin_altivec_vperm_16qi", ALTIVEC_BUILTIN_VPERM_16QI },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vsel_4sf, "__builtin_altivec_vsel_4sf", ALTIVEC_BUILTIN_VSEL_4SF },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vsel_4si, "__builtin_altivec_vsel_4si", ALTIVEC_BUILTIN_VSEL_4SI },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vsel_8hi, "__builtin_altivec_vsel_8hi", ALTIVEC_BUILTIN_VSEL_8HI },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vsel_16qi, "__builtin_altivec_vsel_16qi", ALTIVEC_BUILTIN_VSEL_16QI },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vsldoi_16qi, "__builtin_altivec_vsldoi_16qi", ALTIVEC_BUILTIN_VSLDOI_16QI },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vsldoi_8hi, "__builtin_altivec_vsldoi_8hi", ALTIVEC_BUILTIN_VSLDOI_8HI },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vsldoi_4si, "__builtin_altivec_vsldoi_4si", ALTIVEC_BUILTIN_VSLDOI_4SI },
!   { MASK_ALTIVEC, CODE_FOR_altivec_vsldoi_4sf, "__builtin_altivec_vsldoi_4sf", ALTIVEC_BUILTIN_VSLDOI_4SF },
! };
  
  /* Simple binary operations: VECc = foo (VECa, VECb).  */
+ 
  static const struct builtin_description bdesc_2arg[] =
  {
    { MASK_ALTIVEC, CODE_FOR_addv16qi3, "__builtin_altivec_vaddubm", ALTIVEC_BUILTIN_VADDUBM },
*************** static const struct builtin_description 
*** 3322,3329 ****
--- 3329,3338 ----
    { MASK_ALTIVEC, CODE_FOR_altivec_vsumsws, "__builtin_altivec_vsumsws", ALTIVEC_BUILTIN_VSUMSWS },
    { MASK_ALTIVEC, CODE_FOR_xorv4si3, "__builtin_altivec_vxor", ALTIVEC_BUILTIN_VXOR },
  };
+ 
  /* Simple unary operations: VECb = foo (unsigned literal) or VECb =
     foo (VECa).  */
+ 
  static const struct builtin_description bdesc_1arg[] =
  {
    { MASK_ALTIVEC, CODE_FOR_altivec_vexptefp, "__builtin_altivec_vexptefp", ALTIVEC_BUILTIN_VEXPTEFP },
*************** altivec_expand_builtin (exp, target)
*** 3472,3477 ****
--- 3481,3487 ----
  	return 0;
        emit_insn (pat);
        return target;
+ 
      case ALTIVEC_BUILTIN_LD_INTERNAL_8hi:
        icode = CODE_FOR_altivec_lvx_8hi;
        arg0 = TREE_VALUE (arglist);
*************** altivec_expand_builtin (exp, target)
*** 3492,3497 ****
--- 3502,3508 ----
  	return 0;
        emit_insn (pat);
        return target;
+ 
      case ALTIVEC_BUILTIN_LD_INTERNAL_4si:
        icode = CODE_FOR_altivec_lvx_4si;
        arg0 = TREE_VALUE (arglist);
*************** altivec_expand_builtin (exp, target)
*** 3512,3517 ****
--- 3523,3529 ----
  	return 0;
        emit_insn (pat);
        return target;
+ 
      case ALTIVEC_BUILTIN_LD_INTERNAL_4sf:
        icode = CODE_FOR_altivec_lvx_4sf;
        arg0 = TREE_VALUE (arglist);
*************** altivec_expand_builtin (exp, target)
*** 3552,3557 ****
--- 3564,3570 ----
  	return 0;
        emit_insn (pat);
        return NULL_RTX;
+ 
      case ALTIVEC_BUILTIN_ST_INTERNAL_8hi:
        icode = CODE_FOR_altivec_stvx_8hi;
        arg0 = TREE_VALUE (arglist);
*************** altivec_expand_builtin (exp, target)
*** 3571,3576 ****
--- 3584,3590 ----
  	return 0;
        emit_insn (pat);
        return NULL_RTX;
+ 
      case ALTIVEC_BUILTIN_ST_INTERNAL_4si:
        icode = CODE_FOR_altivec_stvx_4si;
        arg0 = TREE_VALUE (arglist);
*************** altivec_expand_builtin (exp, target)
*** 3590,3595 ****
--- 3604,3610 ----
  	return 0;
        emit_insn (pat);
        return NULL_RTX;
+ 
      case ALTIVEC_BUILTIN_ST_INTERNAL_4sf:
        icode = CODE_FOR_altivec_stvx_4sf;
        arg0 = TREE_VALUE (arglist);
*************** altivec_expand_builtin (exp, target)
*** 3610,3615 ****
--- 3625,3631 ----
        emit_insn (pat);
        return NULL_RTX;
      }
+ 
    /* Handle simple unary operations.  */
    d = (struct builtin_description *) bdesc_1arg;
    for (i = 0; i < sizeof (bdesc_1arg) / sizeof *d; i++, d++)
*************** altivec_init_builtins (void)
*** 3700,3720 ****
  							    V16QI_type_node,
  							    endlink))));
  
!   /* V4SI foo (char) */
    tree v4si_ftype_char
      = build_function_type (V4SI_type_node,
  		           tree_cons (NULL_TREE, char_type_node, endlink));
  
!   /* V8HI foo (char) */
    tree v8hi_ftype_char
      = build_function_type (V8HI_type_node,
  		           tree_cons (NULL_TREE, char_type_node, endlink));
  
!   /* V16QI foo (char) */
    tree v16qi_ftype_char
      = build_function_type (V16QI_type_node,
  		           tree_cons (NULL_TREE, char_type_node, endlink));
!   /* V4SF foo (V4SF) */
    tree v4sf_ftype_v4sf
      = build_function_type (V4SF_type_node,
  			   tree_cons (NULL_TREE, V4SF_type_node, endlink));
--- 3716,3736 ----
  							    V16QI_type_node,
  							    endlink))));
  
!   /* V4SI foo (char).  */
    tree v4si_ftype_char
      = build_function_type (V4SI_type_node,
  		           tree_cons (NULL_TREE, char_type_node, endlink));
  
!   /* V8HI foo (char).  */
    tree v8hi_ftype_char
      = build_function_type (V8HI_type_node,
  		           tree_cons (NULL_TREE, char_type_node, endlink));
  
!   /* V16QI foo (char).  */
    tree v16qi_ftype_char
      = build_function_type (V16QI_type_node,
  		           tree_cons (NULL_TREE, char_type_node, endlink));
!   /* V4SF foo (V4SF).  */
    tree v4sf_ftype_v4sf
      = build_function_type (V4SF_type_node,
  			   tree_cons (NULL_TREE, V4SF_type_node, endlink));
*************** altivec_init_builtins (void)
*** 3766,3772 ****
  			   tree_cons (NULL_TREE, V4SI_type_node,
  				      tree_cons (NULL_TREE, V4SI_type_node,
  						 endlink)));
!  /* These are really for the unsigned 5 bit literals */ 
    tree v4sf_ftype_v4si_char
      = build_function_type (V4SF_type_node,
  			   tree_cons (NULL_TREE, V4SI_type_node,
--- 3782,3790 ----
  			   tree_cons (NULL_TREE, V4SI_type_node,
  				      tree_cons (NULL_TREE, V4SI_type_node,
  						 endlink)));
! 
!   /* These are for the unsigned 5 bit literals.  */
! 
    tree v4sf_ftype_v4si_char
      = build_function_type (V4SF_type_node,
  			   tree_cons (NULL_TREE, V4SI_type_node,
*************** altivec_init_builtins (void)
*** 3793,3798 ****
--- 3811,3852 ----
  				      tree_cons (NULL_TREE, char_type_node,
  						 endlink)));
  
+   /* These are for the unsigned 4 bit literals.  */
+ 
+   tree v16qi_ftype_v16qi_v16qi_char
+     = build_function_type (V16QI_type_node,
+ 			   tree_cons (NULL_TREE, V16QI_type_node,
+ 				      tree_cons (NULL_TREE, V16QI_type_node,
+ 						 tree_cons (NULL_TREE,
+ 							    char_type_node,
+ 							    endlink))));
+ 
+   tree v8hi_ftype_v8hi_v8hi_char
+     = build_function_type (V8HI_type_node,
+ 			   tree_cons (NULL_TREE, V8HI_type_node,
+ 				      tree_cons (NULL_TREE, V8HI_type_node,
+ 						 tree_cons (NULL_TREE,
+ 							    char_type_node,
+ 							    endlink))));
+ 
+   tree v4si_ftype_v4si_v4si_char
+     = build_function_type (V4SI_type_node,
+ 			   tree_cons (NULL_TREE, V4SI_type_node,
+ 				      tree_cons (NULL_TREE, V4SI_type_node,
+ 						 tree_cons (NULL_TREE,
+ 							    char_type_node,
+ 							    endlink))));
+ 
+   tree v4sf_ftype_v4sf_v4sf_char
+     = build_function_type (V4SF_type_node,
+ 			   tree_cons (NULL_TREE, V4SF_type_node,
+ 				      tree_cons (NULL_TREE, V4SF_type_node,
+ 						 tree_cons (NULL_TREE,
+ 							    char_type_node,
+ 							    endlink))));
+ 
+   /* End of 4 bit literals.  */
+ 
    tree v4sf_ftype_v4sf_v4sf
      = build_function_type (V4SF_type_node,
  			   tree_cons (NULL_TREE, V4SF_type_node,
*************** altivec_init_builtins (void)
*** 3987,3999 ****
  	}
        else if (mode0 == V4SImode && mode1 == V16QImode && mode2 == V16QImode 
  	       && mode3 == V4SImode)
! 	  type = v4si_ftype_v16qi_v16qi_v4si;
        else if (mode0 == V4SImode && mode1 == V8HImode && mode2 == V8HImode 
  	       && mode3 == V4SImode)
! 	  type = v4si_ftype_v8hi_v8hi_v4si;
        else if (mode0 == V4SFmode && mode1 == V4SFmode && mode2 == V4SFmode 
  	       && mode3 == V4SImode)
! 	  type = v4sf_ftype_v4sf_v4sf_v4si;
        else
  	abort ();
  
--- 4041,4074 ----
  	}
        else if (mode0 == V4SImode && mode1 == V16QImode && mode2 == V16QImode 
  	       && mode3 == V4SImode)
! 	type = v4si_ftype_v16qi_v16qi_v4si;
        else if (mode0 == V4SImode && mode1 == V8HImode && mode2 == V8HImode 
  	       && mode3 == V4SImode)
! 	type = v4si_ftype_v8hi_v8hi_v4si;
        else if (mode0 == V4SFmode && mode1 == V4SFmode && mode2 == V4SFmode 
  	       && mode3 == V4SImode)
! 	type = v4sf_ftype_v4sf_v4sf_v4si;
! 
!       /* vchar, vchar, vchar, 4 bit literal.  */
!       else if (mode0 == V16QImode && mode1 == mode0 && mode2 == mode0
! 	       && mode3 == QImode)
! 	type = v16qi_ftype_v16qi_v16qi_char;
! 
!       /* vshort, vshort, vshort, 4 bit literal.  */
!       else if (mode0 == V8HImode && mode1 == mode0 && mode2 == mode0
! 	       && mode3 == QImode)
! 	type = v8hi_ftype_v8hi_v8hi_char;
! 
!       /* vint, vint, vint, 4 bit literal.  */
!       else if (mode0 == V4SImode && mode1 == mode0 && mode2 == mode0
! 	       && mode3 == QImode)
! 	type = v4si_ftype_v4si_v4si_char;
! 
!       /* vfloat, vfloat, vfloat, 4 bit literal.  */
!       else if (mode0 == V4SFmode && mode1 == mode0 && mode2 == mode0
! 	       && mode3 == QImode)
! 	type = v4sf_ftype_v4sf_v4sf_char;
! 
        else
  	abort ();
  
*************** altivec_init_builtins (void)
*** 4086,4092 ****
        else if (mode0 == V4SImode && mode1 == V4SFmode && mode2 == QImode)
  	type = v4si_ftype_v4sf_char;
  
-       /* fixme: aldyh */
        /* int, x, x.  */
        else if (mode0 == SImode)
  	{
--- 4161,4166 ----
*************** altivec_init_builtins (void)
*** 4114,4119 ****
--- 4188,4194 ----
  
        def_builtin (d->mask, d->name, type, d->code);
      }
+ 
    /* Add the simple unary operators.  */
    d = (struct builtin_description *) bdesc_1arg;
    for (i = 0; i < sizeof (bdesc_1arg) / sizeof *d; i++, d++)
Index: config/rs6000/rs6000.h
===================================================================
RCS file: /cvs/uberbaum/gcc/config/rs6000/rs6000.h,v
retrieving revision 1.164
diff -c -p -r1.164 rs6000.h
*** rs6000.h	2001/12/20 04:42:22	1.164
--- rs6000.h	2001/12/23 04:42:12
*************** enum rs6000_builtins
*** 2967,2971 ****
    ALTIVEC_BUILTIN_VSUM4SHS,
    ALTIVEC_BUILTIN_VSUM2SWS,
    ALTIVEC_BUILTIN_VSUMSWS,
!   ALTIVEC_BUILTIN_VXOR
  };
--- 2967,2975 ----
    ALTIVEC_BUILTIN_VSUM4SHS,
    ALTIVEC_BUILTIN_VSUM2SWS,
    ALTIVEC_BUILTIN_VSUMSWS,
!   ALTIVEC_BUILTIN_VXOR,
!   ALTIVEC_BUILTIN_VSLDOI_16QI,
!   ALTIVEC_BUILTIN_VSLDOI_8HI,
!   ALTIVEC_BUILTIN_VSLDOI_4SI,
!   ALTIVEC_BUILTIN_VSLDOI_4SF
  };
Index: config/rs6000/rs6000.md
===================================================================
RCS file: /cvs/uberbaum/gcc/config/rs6000/rs6000.md,v
retrieving revision 1.149
diff -c -p -r1.149 rs6000.md
*** rs6000.md	2001/12/20 04:42:23	1.149
--- rs6000.md	2001/12/23 04:43:04
***************
*** 15191,15194 ****
--- 15191,15228 ----
    "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" "vecfloat")])
  
+ (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" "vecfloat")])
+ 
+ (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" "vecfloat")])
+ 
+ (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" "vecfloat")])


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]