Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/arm/neon.ml @ 55:77e2b8dfacca gcc-4.4.5
update it from 4.4.3 to 4.5.0
author | ryoma <e075725@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 12 Feb 2010 23:39:51 +0900 |
parents | a06113de4d67 |
children | b7f97abdc517 |
comparison
equal
deleted
inserted
replaced
52:c156f1bd5cd9 | 55:77e2b8dfacca |
---|---|
48 | T_poly8 | T_poly16 | 48 | T_poly8 | T_poly16 |
49 | T_float32 | T_arrayof of int * vectype | 49 | T_float32 | T_arrayof of int * vectype |
50 | T_ptrto of vectype | T_const of vectype | 50 | T_ptrto of vectype | T_const of vectype |
51 | T_void | T_intQI | 51 | T_void | T_intQI |
52 | T_intHI | T_intSI | 52 | T_intHI | T_intSI |
53 | T_intDI | 53 | T_intDI | T_floatSF |
54 | 54 |
55 (* The meanings of the following are: | 55 (* The meanings of the following are: |
56 TImode : "Tetra", two registers (four words). | 56 TImode : "Tetra", two registers (four words). |
57 EImode : "hExa", three registers (six words). | 57 EImode : "hExa", three registers (six words). |
58 OImode : "Octa", four registers (eight words). | 58 OImode : "Octa", four registers (eight words). |
66 | PtrTo of shape_elt | CstPtrTo of shape_elt | 66 | PtrTo of shape_elt | CstPtrTo of shape_elt |
67 (* These next ones are used only in the test generator. *) | 67 (* These next ones are used only in the test generator. *) |
68 | Element_of_dreg (* Used for "lane" variants. *) | 68 | Element_of_dreg (* Used for "lane" variants. *) |
69 | Element_of_qreg (* Likewise. *) | 69 | Element_of_qreg (* Likewise. *) |
70 | All_elements_of_dreg (* Used for "dup" variants. *) | 70 | All_elements_of_dreg (* Used for "dup" variants. *) |
71 | Alternatives of shape_elt list (* Used for multiple valid operands *) | |
71 | 72 |
72 type shape_form = All of int * shape_elt | 73 type shape_form = All of int * shape_elt |
73 | Long | 74 | Long |
74 | Long_noreg of shape_elt | 75 | Long_noreg of shape_elt |
75 | Wide | 76 | Wide |
1006 hard for the test generator at this time. *) | 1007 hard for the test generator at this time. *) |
1007 Use_operands [| Dreg; Corereg |], "vcreate", create_vector, | 1008 Use_operands [| Dreg; Corereg |], "vcreate", create_vector, |
1008 pf_su_8_64; | 1009 pf_su_8_64; |
1009 | 1010 |
1010 (* Set all lanes to the same value. *) | 1011 (* Set all lanes to the same value. *) |
1011 Vdup_n, [], | 1012 Vdup_n, |
1013 [Disassembles_as [Use_operands [| Dreg; | |
1014 Alternatives [ Corereg; | |
1015 Element_of_dreg ] |]]], | |
1012 Use_operands [| Dreg; Corereg |], "vdup_n", bits_1, | 1016 Use_operands [| Dreg; Corereg |], "vdup_n", bits_1, |
1013 pf_su_8_32; | 1017 pf_su_8_32; |
1014 Vdup_n, | 1018 Vdup_n, |
1015 [Instruction_name ["vmov"]; | 1019 [Instruction_name ["vmov"]; |
1016 Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]]], | 1020 Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]]], |
1017 Use_operands [| Dreg; Corereg |], "vdup_n", notype_1, | 1021 Use_operands [| Dreg; Corereg |], "vdup_n", notype_1, |
1018 [S64; U64]; | 1022 [S64; U64]; |
1019 Vdup_n, [], | 1023 Vdup_n, |
1024 [Disassembles_as [Use_operands [| Qreg; | |
1025 Alternatives [ Corereg; | |
1026 Element_of_dreg ] |]]], | |
1020 Use_operands [| Qreg; Corereg |], "vdupQ_n", bits_1, | 1027 Use_operands [| Qreg; Corereg |], "vdupQ_n", bits_1, |
1021 pf_su_8_32; | 1028 pf_su_8_32; |
1022 Vdup_n, | 1029 Vdup_n, |
1023 [Instruction_name ["vmov"]; | 1030 [Instruction_name ["vmov"]; |
1024 Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]; | 1031 Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]; |
1026 Use_operands [| Qreg; Corereg |], "vdupQ_n", notype_1, | 1033 Use_operands [| Qreg; Corereg |], "vdupQ_n", notype_1, |
1027 [S64; U64]; | 1034 [S64; U64]; |
1028 | 1035 |
1029 (* These are just aliases for the above. *) | 1036 (* These are just aliases for the above. *) |
1030 Vmov_n, | 1037 Vmov_n, |
1031 [Builtin_name "vdup_n"], | 1038 [Builtin_name "vdup_n"; |
1039 Disassembles_as [Use_operands [| Dreg; | |
1040 Alternatives [ Corereg; | |
1041 Element_of_dreg ] |]]], | |
1032 Use_operands [| Dreg; Corereg |], | 1042 Use_operands [| Dreg; Corereg |], |
1033 "vmov_n", bits_1, pf_su_8_32; | 1043 "vmov_n", bits_1, pf_su_8_32; |
1034 Vmov_n, | 1044 Vmov_n, |
1035 [Builtin_name "vdup_n"; | 1045 [Builtin_name "vdup_n"; |
1036 Instruction_name ["vmov"]; | 1046 Instruction_name ["vmov"]; |
1037 Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]]], | 1047 Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]]], |
1038 Use_operands [| Dreg; Corereg |], | 1048 Use_operands [| Dreg; Corereg |], |
1039 "vmov_n", notype_1, [S64; U64]; | 1049 "vmov_n", notype_1, [S64; U64]; |
1040 Vmov_n, | 1050 Vmov_n, |
1041 [Builtin_name "vdupQ_n"], | 1051 [Builtin_name "vdupQ_n"; |
1052 Disassembles_as [Use_operands [| Qreg; | |
1053 Alternatives [ Corereg; | |
1054 Element_of_dreg ] |]]], | |
1042 Use_operands [| Qreg; Corereg |], | 1055 Use_operands [| Qreg; Corereg |], |
1043 "vmovQ_n", bits_1, pf_su_8_32; | 1056 "vmovQ_n", bits_1, pf_su_8_32; |
1044 Vmov_n, | 1057 Vmov_n, |
1045 [Builtin_name "vdupQ_n"; | 1058 [Builtin_name "vdupQ_n"; |
1046 Instruction_name ["vmov"]; | 1059 Instruction_name ["vmov"]; |
1691 | T_void -> "void" | 1704 | T_void -> "void" |
1692 | T_intQI -> "__builtin_neon_qi" | 1705 | T_intQI -> "__builtin_neon_qi" |
1693 | T_intHI -> "__builtin_neon_hi" | 1706 | T_intHI -> "__builtin_neon_hi" |
1694 | T_intSI -> "__builtin_neon_si" | 1707 | T_intSI -> "__builtin_neon_si" |
1695 | T_intDI -> "__builtin_neon_di" | 1708 | T_intDI -> "__builtin_neon_di" |
1709 | T_floatSF -> "__builtin_neon_sf" | |
1696 | T_arrayof (num, base) -> | 1710 | T_arrayof (num, base) -> |
1697 let basename = name (fun x -> x) base in | 1711 let basename = name (fun x -> x) base in |
1698 affix (Printf.sprintf "%sx%d" basename num) | 1712 affix (Printf.sprintf "%sx%d" basename num) |
1699 | T_ptrto x -> | 1713 | T_ptrto x -> |
1700 let basename = name affix x in | 1714 let basename = name affix x in |