Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(143)

Unified Diff: gcc/gcc/config/arm/neon.ml

Issue 3050029: [gcc] GCC 4.5.0=>4.5.1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/nacl-toolchain.git
Patch Set: Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gcc/gcc/config/arm/lib1funcs.asm ('k') | gcc/gcc/config/arm/neon-docgen.ml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gcc/gcc/config/arm/neon.ml
diff --git a/gcc/gcc/config/arm/neon.ml b/gcc/gcc/config/arm/neon.ml
index 10393b33ebcb7116d7f446411e358abbf8e2af7e..f77f05cc825537186024ebf552d214a74ab5a9ba 100644
--- a/gcc/gcc/config/arm/neon.ml
+++ b/gcc/gcc/config/arm/neon.ml
@@ -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.
@@ -50,7 +50,7 @@ type vectype = T_int8x8 | T_int8x16
| T_ptrto of vectype | T_const of vectype
| T_void | T_intQI
| T_intHI | T_intSI
- | T_intDI
+ | T_intDI | T_floatSF
(* The meanings of the following are:
TImode : "Tetra", two registers (four words).
@@ -68,6 +68,7 @@ type shape_elt = Dreg | Qreg | Corereg | Immed | VecArray of int * shape_elt
| Element_of_dreg (* Used for "lane" variants. *)
| Element_of_qreg (* Likewise. *)
| All_elements_of_dreg (* Used for "dup" variants. *)
+ | Alternatives of shape_elt list (* Used for multiple valid operands *)
type shape_form = All of int * shape_elt
| Long
@@ -233,6 +234,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
@@ -1008,7 +1010,10 @@ let ops =
pf_su_8_64;
(* Set all lanes to the same value. *)
- Vdup_n, [],
+ Vdup_n,
+ [Disassembles_as [Use_operands [| Dreg;
+ Alternatives [ Corereg;
+ Element_of_dreg ] |]]],
Use_operands [| Dreg; Corereg |], "vdup_n", bits_1,
pf_su_8_32;
Vdup_n,
@@ -1016,7 +1021,10 @@ let ops =
Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]]],
Use_operands [| Dreg; Corereg |], "vdup_n", notype_1,
[S64; U64];
- Vdup_n, [],
+ Vdup_n,
+ [Disassembles_as [Use_operands [| Qreg;
+ Alternatives [ Corereg;
+ Element_of_dreg ] |]]],
Use_operands [| Qreg; Corereg |], "vdupQ_n", bits_1,
pf_su_8_32;
Vdup_n,
@@ -1028,7 +1036,10 @@ let ops =
(* These are just aliases for the above. *)
Vmov_n,
- [Builtin_name "vdup_n"],
+ [Builtin_name "vdup_n";
+ Disassembles_as [Use_operands [| Dreg;
+ Alternatives [ Corereg;
+ Element_of_dreg ] |]]],
Use_operands [| Dreg; Corereg |],
"vmov_n", bits_1, pf_su_8_32;
Vmov_n,
@@ -1038,7 +1049,10 @@ let ops =
Use_operands [| Dreg; Corereg |],
"vmov_n", notype_1, [S64; U64];
Vmov_n,
- [Builtin_name "vdupQ_n"],
+ [Builtin_name "vdupQ_n";
+ Disassembles_as [Use_operands [| Qreg;
+ Alternatives [ Corereg;
+ Element_of_dreg ] |]]],
Use_operands [| Qreg; Corereg |],
"vmovQ_n", bits_1, pf_su_8_32;
Vmov_n,
@@ -1076,9 +1090,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,
@@ -1693,6 +1711,7 @@ let string_of_vectype vt =
| T_intHI -> "__builtin_neon_hi"
| T_intSI -> "__builtin_neon_si"
| T_intDI -> "__builtin_neon_di"
+ | T_floatSF -> "__builtin_neon_sf"
| T_arrayof (num, base) ->
let basename = name (fun x -> x) base in
affix (Printf.sprintf "%sx%d" basename num)
« no previous file with comments | « gcc/gcc/config/arm/lib1funcs.asm ('k') | gcc/gcc/config/arm/neon-docgen.ml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698