summaryrefslogtreecommitdiff
path: root/gcc/config/spu/spu-protos.h
diff options
context:
space:
mode:
authortsmigiel <tsmigiel@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-27 18:48:59 +0000
committertsmigiel <tsmigiel@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-27 18:48:59 +0000
commit56c7bfc2cd30535e7ea68a43e1135985de900a0b (patch)
treec233f04205e601fe5a60f616157b369cca22b5a7 /gcc/config/spu/spu-protos.h
parentd743aba2f4aebf422c08b41db532d0c78603a97f (diff)
downloadgcc-56c7bfc2cd30535e7ea68a43e1135985de900a0b.tar.gz
Allow non-constant arguments to conversion intrinsics.
* spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare. * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New. * spu.c (print_operand): Handle 'v' and 'w'. (exp2_immediate_p, spu_gen_exp2): Define. * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0, spu_convtf_1): Update parameter descriptions. * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update. * constraints.md ('v', 'w'): New. * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU): Remove. (i2f, I2F): New define_mode_attr. (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2, floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2, fixuns_truncv4sfv4si2): Update to use mode attribute. (float<mode><i2f>2_mul, float<mode><i2f>2_div, fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul, floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New patterns for combine. * gcc.target/spu/intrinsics-3.c: Update tests. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146849 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/spu/spu-protos.h')
-rw-r--r--gcc/config/spu/spu-protos.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/config/spu/spu-protos.h b/gcc/config/spu/spu-protos.h
index 07eb654c7f3..d8376d86d0f 100644
--- a/gcc/config/spu/spu-protos.h
+++ b/gcc/config/spu/spu-protos.h
@@ -51,6 +51,8 @@ extern int logical_immediate_p (rtx op, enum machine_mode mode);
extern int iohl_immediate_p (rtx op, enum machine_mode mode);
extern int arith_immediate_p (rtx op, enum machine_mode mode,
HOST_WIDE_INT low, HOST_WIDE_INT high);
+extern bool exp2_immediate_p (rtx op, enum machine_mode mode, int low,
+ int high);
extern int spu_constant_address_p (rtx x);
extern int spu_legitimate_constant_p (rtx x);
extern int spu_legitimate_address (enum machine_mode mode, rtx x,
@@ -75,6 +77,7 @@ extern rtx gen_cpat_const (rtx * ops);
extern void constant_to_array (enum machine_mode mode, rtx x,
unsigned char *arr);
extern rtx array_to_constant (enum machine_mode mode, unsigned char *arr);
+extern rtx spu_gen_exp2 (enum machine_mode mode, rtx x);
extern void spu_allocate_stack (rtx op0, rtx op1);
extern void spu_restore_stack_nonlocal (rtx op0, rtx op1);
extern void spu_restore_stack_block (rtx op0, rtx op1);