From: Richard Henderson Date: Wed, 18 Mar 1998 16:21:14 +0000 (-0800) Subject: alpha.md (extzv): Don't reject register operands. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=10a25232267840b3347f75de6bac8f41c7052037;p=gcc.git alpha.md (extzv): Don't reject register operands. * alpha.md (extzv): Don't reject register operands. Fix mode of operand 1. From-SVN: r18676 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2cfa62f6e77..d42a14cfa19 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Wed Mar 18 16:20:30 1998 Richard Henderson + + * alpha.md (extzv): Don't reject register operands. Fix + mode of operand 1. + Wed Mar 18 16:14:23 1998 Richard Henderson * dbxout.c (dbxout_function_end): Fix last change. The correct diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md index 7c3ec5237e5..ced647b7ce8 100644 --- a/gcc/config/alpha/alpha.md +++ b/gcc/config/alpha/alpha.md @@ -4873,28 +4873,27 @@ (define_expand "extzv" [(set (match_operand:DI 0 "register_operand" "") - (zero_extract:DI (match_operand:QI 1 "memory_operand" "") + (zero_extract:DI (match_operand:DI 1 "memory_operand" "") (match_operand:DI 2 "immediate_operand" "") (match_operand:DI 3 "immediate_operand" "")))] "" " { - /* We can do 16, 32 and 64 bit fields, if aligned on byte boundaries. */ - if (INTVAL (operands[3]) % 8 != 0 - || (INTVAL (operands[2]) != 16 - && INTVAL (operands[2]) != 32 - && INTVAL (operands[2]) != 64)) + /* We can do 8, 16, 32 and 64 bit fields, if aligned on byte boundaries. */ + if (INTVAL (operands[2]) % 8 != 0 || INTVAL (operands[3]) % 8 != 0) FAIL; - /* From mips.md: extract_bit_field doesn't verify that our source - matches the predicate, so we force it to be a MEM here. */ - if (GET_CODE (operands[1]) != MEM) - FAIL; + if (GET_CODE (operands[1]) == MEM) + { + /* Fail 8 bit fields, falling back on a simple byte load. */ + if (INTVAL (operands[2]) == 8) + FAIL; - alpha_expand_unaligned_load (operands[0], operands[1], - INTVAL (operands[2]) / 8, - INTVAL (operands[3]) / 8, 0); - DONE; + alpha_expand_unaligned_load (operands[0], operands[1], + INTVAL (operands[2]) / 8, + INTVAL (operands[3]) / 8, 0); + DONE; + } }") (define_expand "insv"