spu.c (spu_init_libfuncs): Install __clrsbdi2.
* config/spu/spu.c (spu_init_libfuncs): Install __clrsbdi2. * config/spu/spu.md ("clrsb<mode>2"): New expander. From-SVN: r176249
This commit is contained in:
parent
dddc67624e
commit
4dfe3ad52b
|
@ -1,3 +1,8 @@
|
||||||
|
2011-07-13 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
|
||||||
|
|
||||||
|
* config/spu/spu.c (spu_init_libfuncs): Install __clrsbdi2.
|
||||||
|
* config/spu/spu.md ("clrsb<mode>2"): New expander.
|
||||||
|
|
||||||
2011-07-13 Thomas Schwinge <thomas@schwinge.name>
|
2011-07-13 Thomas Schwinge <thomas@schwinge.name>
|
||||||
|
|
||||||
* acinclude.m4 (gcc_GAS_CHECK_FEATURE): Use AS_ECHO instead of echo.
|
* acinclude.m4 (gcc_GAS_CHECK_FEATURE): Use AS_ECHO instead of echo.
|
||||||
|
|
|
@ -5630,6 +5630,7 @@ spu_init_libfuncs (void)
|
||||||
set_optab_libfunc (ffs_optab, DImode, "__ffsdi2");
|
set_optab_libfunc (ffs_optab, DImode, "__ffsdi2");
|
||||||
set_optab_libfunc (clz_optab, DImode, "__clzdi2");
|
set_optab_libfunc (clz_optab, DImode, "__clzdi2");
|
||||||
set_optab_libfunc (ctz_optab, DImode, "__ctzdi2");
|
set_optab_libfunc (ctz_optab, DImode, "__ctzdi2");
|
||||||
|
set_optab_libfunc (clrsb_optab, DImode, "__clrsbdi2");
|
||||||
set_optab_libfunc (popcount_optab, DImode, "__popcountdi2");
|
set_optab_libfunc (popcount_optab, DImode, "__popcountdi2");
|
||||||
set_optab_libfunc (parity_optab, DImode, "__paritydi2");
|
set_optab_libfunc (parity_optab, DImode, "__paritydi2");
|
||||||
|
|
||||||
|
|
|
@ -2232,6 +2232,21 @@
|
||||||
operands[5] = spu_const(<MODE>mode, 31);
|
operands[5] = spu_const(<MODE>mode, 31);
|
||||||
})
|
})
|
||||||
|
|
||||||
|
(define_expand "clrsb<mode>2"
|
||||||
|
[(set (match_dup 2)
|
||||||
|
(gt:VSI (match_operand:VSI 1 "spu_reg_operand" "") (match_dup 5)))
|
||||||
|
(set (match_dup 3) (not:VSI (xor:VSI (match_dup 1) (match_dup 2))))
|
||||||
|
(set (match_dup 4) (clz:VSI (match_dup 3)))
|
||||||
|
(set (match_operand:VSI 0 "spu_reg_operand")
|
||||||
|
(plus:VSI (match_dup 4) (match_dup 5)))]
|
||||||
|
""
|
||||||
|
{
|
||||||
|
operands[2] = gen_reg_rtx (<MODE>mode);
|
||||||
|
operands[3] = gen_reg_rtx (<MODE>mode);
|
||||||
|
operands[4] = gen_reg_rtx (<MODE>mode);
|
||||||
|
operands[5] = spu_const(<MODE>mode, -1);
|
||||||
|
})
|
||||||
|
|
||||||
(define_expand "ffs<mode>2"
|
(define_expand "ffs<mode>2"
|
||||||
[(set (match_dup 2)
|
[(set (match_dup 2)
|
||||||
(neg:VSI (match_operand:VSI 1 "spu_reg_operand" "")))
|
(neg:VSI (match_operand:VSI 1 "spu_reg_operand" "")))
|
||||||
|
|
Loading…
Reference in New Issue