Backport target/38697

Backport from trunk.

       2010-01-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
       PR target/38697
       * config/arm/neon-testgen.m (emit_automatics): New parameter
	features. Adjust for Fixed_return_reg feature.
	(test_intrinsic): Call emit_automatics with new feature.
       * config/arm/neon.ml: Update copyright years.
	(features): New Fixed_return_reg feature.
	(ops): Update feature for Vget_low.

	Backport from mainline.
	2010-01-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

	PR target/38697.
	* gcc.target/arm/neon/vget_lowf32.c: Regenerate.
	* gcc.target/arm/neon/vget_lowp16.c: Likewise.
	* gcc.target/arm/neon/vget_lowp8.c:  Likewise.
	* gcc.target/arm/neon/vget_lows16.c: Likewise.
	* gcc.target/arm/neon/vget_lows32.c: Likewise.
	* gcc.target/arm/neon/vget_lows64.c: Likewise.
	* gcc.target/arm/neon/vget_lows8.c: Likewise.
	* gcc.target/arm/neon/vget_lowu16.c: Likewise.
	* gcc.target/arm/neon/vget_lowu32.c: Likewise.
	* gcc.target/arm/neon/vget_lowu64.c: Likewise.
	* gcc.target/arm/neon/vget_lowu8.c: Likewise.

From-SVN: r156206
This commit is contained in:
Ramana Radhakrishnan 2010-01-25 12:29:25 +00:00 committed by Ramana Radhakrishnan
parent b939f3ba7f
commit 9d2e95fef7
15 changed files with 62 additions and 22 deletions

View File

@ -1,3 +1,16 @@
2010-01-25 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
Backport from trunk.
2010-01-19 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
PR target/38697
* config/arm/neon-testgen.m (emit_automatics): New parameter
features. Adjust for Fixed_return_reg feature.
(test_intrinsic): Call emit_automatics with new feature.
* config/arm/neon.ml: Update copyright years.
(features): New Fixed_return_reg feature.
(ops): Update feature for Vget_low.
2010-01-24 David S. Miller <davem@davemloft.net>
* gcc/config/sparc/sysv4.h (TARGET_ASM_NAMED_SECTION): Only

View File

@ -1,5 +1,5 @@
(* Auto-generate ARM Neon intrinsics tests.
Copyright (C) 2006, 2007 Free Software Foundation, Inc.
Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
Contributed by CodeSourcery.
This file is part of GCC.
@ -58,7 +58,7 @@ let emit_prologue chan test_name =
(* Emit declarations of local variables that are going to be passed
to an intrinsic, together with one to take a returned value if needed. *)
let emit_automatics chan c_types =
let emit_automatics chan c_types features =
let emit () =
ignore (
List.fold_left (fun arg_number -> fun (flags, ty) ->
@ -75,11 +75,17 @@ let emit_automatics chan c_types =
in
match c_types with
(_, return_ty) :: tys ->
if return_ty <> "void" then
(* The intrinsic returns a value. *)
(Printf.fprintf chan " %s out_%s;\n" return_ty return_ty;
emit ())
else
if return_ty <> "void" then begin
(* The intrinsic returns a value. We need to do explict register
allocation for vget_low tests or they fail because of copy
elimination. *)
((if List.mem Fixed_return_reg features then
Printf.fprintf chan " register %s out_%s asm (\"d18\");\n"
return_ty return_ty
else
Printf.fprintf chan " %s out_%s;\n" return_ty return_ty);
emit ())
end else
(* The intrinsic does not return a value. *)
emit ()
| _ -> assert false
@ -256,7 +262,7 @@ let test_intrinsic dir opcode features shape name munge elt_ty =
(* Emit file and function prologues. *)
emit_prologue chan test_name;
(* Emit local variable declarations. *)
emit_automatics chan c_types;
emit_automatics chan c_types features;
Printf.fprintf chan "\n";
(* Emit the call to the intrinsic. *)
emit_call chan const_valuator c_types name elt_ty;

View File

@ -1,7 +1,7 @@
(* Common code for ARM NEON header file, documentation and test case
generators.
Copyright (C) 2006, 2007 Free Software Foundation, Inc.
Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
Contributed by CodeSourcery.
This file is part of GCC.
@ -233,6 +233,7 @@ type features =
cases. The function supplied must return the integer to be written
into the testcase for the argument number (0-based) supplied to it. *)
| Const_valuator of (int -> int)
| Fixed_return_reg
exception MixedMode of elts * elts
@ -1076,9 +1077,13 @@ let ops =
Use_operands [| Dreg; Qreg |], "vget_high",
notype_1, pf_su_8_64;
Vget_low, [Instruction_name ["vmov"];
Disassembles_as [Use_operands [| Dreg; Dreg |]]],
Disassembles_as [Use_operands [| Dreg; Dreg |]];
Fixed_return_reg],
Use_operands [| Dreg; Qreg |], "vget_low",
notype_1, pf_su_8_64;
notype_1, pf_su_8_32;
Vget_low, [No_op],
Use_operands [| Dreg; Qreg |], "vget_low",
notype_1, [S64; U64];
(* Conversions. *)
Vcvt, [InfoWord], All (2, Dreg), "vcvt", conv_1,

View File

@ -1,3 +1,21 @@
2010-01-25 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
Backport from mainline.
2010-01-19 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
PR target/38697.
* gcc.target/arm/neon/vget_lowf32.c: Regenerate.
* gcc.target/arm/neon/vget_lowp16.c: Likewise.
* gcc.target/arm/neon/vget_lowp8.c: Likewise.
* gcc.target/arm/neon/vget_lows16.c: Likewise.
* gcc.target/arm/neon/vget_lows32.c: Likewise.
* gcc.target/arm/neon/vget_lows64.c: Likewise.
* gcc.target/arm/neon/vget_lows8.c: Likewise.
* gcc.target/arm/neon/vget_lowu16.c: Likewise.
* gcc.target/arm/neon/vget_lowu32.c: Likewise.
* gcc.target/arm/neon/vget_lowu64.c: Likewise.
* gcc.target/arm/neon/vget_lowu8.c: Likewise.
2010-01-21 Release Manager
* GCC 4.4.3 released.

View File

@ -9,7 +9,7 @@
void test_vget_lowf32 (void)
{
float32x2_t out_float32x2_t;
register float32x2_t out_float32x2_t asm ("d18");
float32x4_t arg0_float32x4_t;
out_float32x2_t = vget_low_f32 (arg0_float32x4_t);

View File

@ -9,7 +9,7 @@
void test_vget_lowp16 (void)
{
poly16x4_t out_poly16x4_t;
register poly16x4_t out_poly16x4_t asm ("d18");
poly16x8_t arg0_poly16x8_t;
out_poly16x4_t = vget_low_p16 (arg0_poly16x8_t);

View File

@ -9,7 +9,7 @@
void test_vget_lowp8 (void)
{
poly8x8_t out_poly8x8_t;
register poly8x8_t out_poly8x8_t asm ("d18");
poly8x16_t arg0_poly8x16_t;
out_poly8x8_t = vget_low_p8 (arg0_poly8x16_t);

View File

@ -9,7 +9,7 @@
void test_vget_lows16 (void)
{
int16x4_t out_int16x4_t;
register int16x4_t out_int16x4_t asm ("d18");
int16x8_t arg0_int16x8_t;
out_int16x4_t = vget_low_s16 (arg0_int16x8_t);

View File

@ -9,7 +9,7 @@
void test_vget_lows32 (void)
{
int32x2_t out_int32x2_t;
register int32x2_t out_int32x2_t asm ("d18");
int32x4_t arg0_int32x4_t;
out_int32x2_t = vget_low_s32 (arg0_int32x4_t);

View File

@ -15,5 +15,4 @@ void test_vget_lows64 (void)
out_int64x1_t = vget_low_s64 (arg0_int64x2_t);
}
/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */

View File

@ -9,7 +9,7 @@
void test_vget_lows8 (void)
{
int8x8_t out_int8x8_t;
register int8x8_t out_int8x8_t asm ("d18");
int8x16_t arg0_int8x16_t;
out_int8x8_t = vget_low_s8 (arg0_int8x16_t);

View File

@ -9,7 +9,7 @@
void test_vget_lowu16 (void)
{
uint16x4_t out_uint16x4_t;
register uint16x4_t out_uint16x4_t asm ("d18");
uint16x8_t arg0_uint16x8_t;
out_uint16x4_t = vget_low_u16 (arg0_uint16x8_t);

View File

@ -9,7 +9,7 @@
void test_vget_lowu32 (void)
{
uint32x2_t out_uint32x2_t;
register uint32x2_t out_uint32x2_t asm ("d18");
uint32x4_t arg0_uint32x4_t;
out_uint32x2_t = vget_low_u32 (arg0_uint32x4_t);

View File

@ -15,5 +15,4 @@ void test_vget_lowu64 (void)
out_uint64x1_t = vget_low_u64 (arg0_uint64x2_t);
}
/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */

View File

@ -9,7 +9,7 @@
void test_vget_lowu8 (void)
{
uint8x8_t out_uint8x8_t;
register uint8x8_t out_uint8x8_t asm ("d18");
uint8x16_t arg0_uint8x16_t;
out_uint8x8_t = vget_low_u8 (arg0_uint8x16_t);