953 ); |
953 ); |
954 |
954 |
955 // Class for 128 bit register v3 |
955 // Class for 128 bit register v3 |
956 reg_class v3_reg( |
956 reg_class v3_reg( |
957 V3, V3_H |
957 V3, V3_H |
|
958 ); |
|
959 |
|
960 // Class for 128 bit register v4 |
|
961 reg_class v4_reg( |
|
962 V4, V4_H |
|
963 ); |
|
964 |
|
965 // Class for 128 bit register v5 |
|
966 reg_class v5_reg( |
|
967 V5, V5_H |
|
968 ); |
|
969 |
|
970 // Class for 128 bit register v6 |
|
971 reg_class v6_reg( |
|
972 V6, V6_H |
|
973 ); |
|
974 |
|
975 // Class for 128 bit register v7 |
|
976 reg_class v7_reg( |
|
977 V7, V7_H |
|
978 ); |
|
979 |
|
980 // Class for 128 bit register v8 |
|
981 reg_class v8_reg( |
|
982 V8, V8_H |
|
983 ); |
|
984 |
|
985 // Class for 128 bit register v9 |
|
986 reg_class v9_reg( |
|
987 V9, V9_H |
|
988 ); |
|
989 |
|
990 // Class for 128 bit register v10 |
|
991 reg_class v10_reg( |
|
992 V10, V10_H |
|
993 ); |
|
994 |
|
995 // Class for 128 bit register v11 |
|
996 reg_class v11_reg( |
|
997 V11, V11_H |
|
998 ); |
|
999 |
|
1000 // Class for 128 bit register v12 |
|
1001 reg_class v12_reg( |
|
1002 V12, V12_H |
|
1003 ); |
|
1004 |
|
1005 // Class for 128 bit register v13 |
|
1006 reg_class v13_reg( |
|
1007 V13, V13_H |
|
1008 ); |
|
1009 |
|
1010 // Class for 128 bit register v14 |
|
1011 reg_class v14_reg( |
|
1012 V14, V14_H |
|
1013 ); |
|
1014 |
|
1015 // Class for 128 bit register v15 |
|
1016 reg_class v15_reg( |
|
1017 V15, V15_H |
|
1018 ); |
|
1019 |
|
1020 // Class for 128 bit register v16 |
|
1021 reg_class v16_reg( |
|
1022 V16, V16_H |
|
1023 ); |
|
1024 |
|
1025 // Class for 128 bit register v17 |
|
1026 reg_class v17_reg( |
|
1027 V17, V17_H |
|
1028 ); |
|
1029 |
|
1030 // Class for 128 bit register v18 |
|
1031 reg_class v18_reg( |
|
1032 V18, V18_H |
|
1033 ); |
|
1034 |
|
1035 // Class for 128 bit register v19 |
|
1036 reg_class v19_reg( |
|
1037 V19, V19_H |
|
1038 ); |
|
1039 |
|
1040 // Class for 128 bit register v20 |
|
1041 reg_class v20_reg( |
|
1042 V20, V20_H |
|
1043 ); |
|
1044 |
|
1045 // Class for 128 bit register v21 |
|
1046 reg_class v21_reg( |
|
1047 V21, V21_H |
|
1048 ); |
|
1049 |
|
1050 // Class for 128 bit register v22 |
|
1051 reg_class v22_reg( |
|
1052 V22, V22_H |
|
1053 ); |
|
1054 |
|
1055 // Class for 128 bit register v23 |
|
1056 reg_class v23_reg( |
|
1057 V23, V23_H |
|
1058 ); |
|
1059 |
|
1060 // Class for 128 bit register v24 |
|
1061 reg_class v24_reg( |
|
1062 V24, V24_H |
|
1063 ); |
|
1064 |
|
1065 // Class for 128 bit register v25 |
|
1066 reg_class v25_reg( |
|
1067 V25, V25_H |
|
1068 ); |
|
1069 |
|
1070 // Class for 128 bit register v26 |
|
1071 reg_class v26_reg( |
|
1072 V26, V26_H |
|
1073 ); |
|
1074 |
|
1075 // Class for 128 bit register v27 |
|
1076 reg_class v27_reg( |
|
1077 V27, V27_H |
|
1078 ); |
|
1079 |
|
1080 // Class for 128 bit register v28 |
|
1081 reg_class v28_reg( |
|
1082 V28, V28_H |
|
1083 ); |
|
1084 |
|
1085 // Class for 128 bit register v29 |
|
1086 reg_class v29_reg( |
|
1087 V29, V29_H |
|
1088 ); |
|
1089 |
|
1090 // Class for 128 bit register v30 |
|
1091 reg_class v30_reg( |
|
1092 V30, V30_H |
|
1093 ); |
|
1094 |
|
1095 // Class for 128 bit register v31 |
|
1096 reg_class v31_reg( |
|
1097 V31, V31_H |
958 ); |
1098 ); |
959 |
1099 |
960 // Singleton class for condition codes |
1100 // Singleton class for condition codes |
961 reg_class int_flags(RFLAGS); |
1101 reg_class int_flags(RFLAGS); |
962 |
1102 |
4772 op_cost(0); |
4912 op_cost(0); |
4773 format %{ %} |
4913 format %{ %} |
4774 interface(REG_INTER); |
4914 interface(REG_INTER); |
4775 %} |
4915 %} |
4776 |
4916 |
|
4917 operand vRegD_V4() |
|
4918 %{ |
|
4919 constraint(ALLOC_IN_RC(v4_reg)); |
|
4920 match(RegD); |
|
4921 op_cost(0); |
|
4922 format %{ %} |
|
4923 interface(REG_INTER); |
|
4924 %} |
|
4925 |
|
4926 operand vRegD_V5() |
|
4927 %{ |
|
4928 constraint(ALLOC_IN_RC(v5_reg)); |
|
4929 match(RegD); |
|
4930 op_cost(0); |
|
4931 format %{ %} |
|
4932 interface(REG_INTER); |
|
4933 %} |
|
4934 |
|
4935 operand vRegD_V6() |
|
4936 %{ |
|
4937 constraint(ALLOC_IN_RC(v6_reg)); |
|
4938 match(RegD); |
|
4939 op_cost(0); |
|
4940 format %{ %} |
|
4941 interface(REG_INTER); |
|
4942 %} |
|
4943 |
|
4944 operand vRegD_V7() |
|
4945 %{ |
|
4946 constraint(ALLOC_IN_RC(v7_reg)); |
|
4947 match(RegD); |
|
4948 op_cost(0); |
|
4949 format %{ %} |
|
4950 interface(REG_INTER); |
|
4951 %} |
|
4952 |
|
4953 operand vRegD_V8() |
|
4954 %{ |
|
4955 constraint(ALLOC_IN_RC(v8_reg)); |
|
4956 match(RegD); |
|
4957 op_cost(0); |
|
4958 format %{ %} |
|
4959 interface(REG_INTER); |
|
4960 %} |
|
4961 |
|
4962 operand vRegD_V9() |
|
4963 %{ |
|
4964 constraint(ALLOC_IN_RC(v9_reg)); |
|
4965 match(RegD); |
|
4966 op_cost(0); |
|
4967 format %{ %} |
|
4968 interface(REG_INTER); |
|
4969 %} |
|
4970 |
|
4971 operand vRegD_V10() |
|
4972 %{ |
|
4973 constraint(ALLOC_IN_RC(v10_reg)); |
|
4974 match(RegD); |
|
4975 op_cost(0); |
|
4976 format %{ %} |
|
4977 interface(REG_INTER); |
|
4978 %} |
|
4979 |
|
4980 operand vRegD_V11() |
|
4981 %{ |
|
4982 constraint(ALLOC_IN_RC(v11_reg)); |
|
4983 match(RegD); |
|
4984 op_cost(0); |
|
4985 format %{ %} |
|
4986 interface(REG_INTER); |
|
4987 %} |
|
4988 |
|
4989 operand vRegD_V12() |
|
4990 %{ |
|
4991 constraint(ALLOC_IN_RC(v12_reg)); |
|
4992 match(RegD); |
|
4993 op_cost(0); |
|
4994 format %{ %} |
|
4995 interface(REG_INTER); |
|
4996 %} |
|
4997 |
|
4998 operand vRegD_V13() |
|
4999 %{ |
|
5000 constraint(ALLOC_IN_RC(v13_reg)); |
|
5001 match(RegD); |
|
5002 op_cost(0); |
|
5003 format %{ %} |
|
5004 interface(REG_INTER); |
|
5005 %} |
|
5006 |
|
5007 operand vRegD_V14() |
|
5008 %{ |
|
5009 constraint(ALLOC_IN_RC(v14_reg)); |
|
5010 match(RegD); |
|
5011 op_cost(0); |
|
5012 format %{ %} |
|
5013 interface(REG_INTER); |
|
5014 %} |
|
5015 |
|
5016 operand vRegD_V15() |
|
5017 %{ |
|
5018 constraint(ALLOC_IN_RC(v15_reg)); |
|
5019 match(RegD); |
|
5020 op_cost(0); |
|
5021 format %{ %} |
|
5022 interface(REG_INTER); |
|
5023 %} |
|
5024 |
|
5025 operand vRegD_V16() |
|
5026 %{ |
|
5027 constraint(ALLOC_IN_RC(v16_reg)); |
|
5028 match(RegD); |
|
5029 op_cost(0); |
|
5030 format %{ %} |
|
5031 interface(REG_INTER); |
|
5032 %} |
|
5033 |
|
5034 operand vRegD_V17() |
|
5035 %{ |
|
5036 constraint(ALLOC_IN_RC(v17_reg)); |
|
5037 match(RegD); |
|
5038 op_cost(0); |
|
5039 format %{ %} |
|
5040 interface(REG_INTER); |
|
5041 %} |
|
5042 |
|
5043 operand vRegD_V18() |
|
5044 %{ |
|
5045 constraint(ALLOC_IN_RC(v18_reg)); |
|
5046 match(RegD); |
|
5047 op_cost(0); |
|
5048 format %{ %} |
|
5049 interface(REG_INTER); |
|
5050 %} |
|
5051 |
|
5052 operand vRegD_V19() |
|
5053 %{ |
|
5054 constraint(ALLOC_IN_RC(v19_reg)); |
|
5055 match(RegD); |
|
5056 op_cost(0); |
|
5057 format %{ %} |
|
5058 interface(REG_INTER); |
|
5059 %} |
|
5060 |
|
5061 operand vRegD_V20() |
|
5062 %{ |
|
5063 constraint(ALLOC_IN_RC(v20_reg)); |
|
5064 match(RegD); |
|
5065 op_cost(0); |
|
5066 format %{ %} |
|
5067 interface(REG_INTER); |
|
5068 %} |
|
5069 |
|
5070 operand vRegD_V21() |
|
5071 %{ |
|
5072 constraint(ALLOC_IN_RC(v21_reg)); |
|
5073 match(RegD); |
|
5074 op_cost(0); |
|
5075 format %{ %} |
|
5076 interface(REG_INTER); |
|
5077 %} |
|
5078 |
|
5079 operand vRegD_V22() |
|
5080 %{ |
|
5081 constraint(ALLOC_IN_RC(v22_reg)); |
|
5082 match(RegD); |
|
5083 op_cost(0); |
|
5084 format %{ %} |
|
5085 interface(REG_INTER); |
|
5086 %} |
|
5087 |
|
5088 operand vRegD_V23() |
|
5089 %{ |
|
5090 constraint(ALLOC_IN_RC(v23_reg)); |
|
5091 match(RegD); |
|
5092 op_cost(0); |
|
5093 format %{ %} |
|
5094 interface(REG_INTER); |
|
5095 %} |
|
5096 |
|
5097 operand vRegD_V24() |
|
5098 %{ |
|
5099 constraint(ALLOC_IN_RC(v24_reg)); |
|
5100 match(RegD); |
|
5101 op_cost(0); |
|
5102 format %{ %} |
|
5103 interface(REG_INTER); |
|
5104 %} |
|
5105 |
|
5106 operand vRegD_V25() |
|
5107 %{ |
|
5108 constraint(ALLOC_IN_RC(v25_reg)); |
|
5109 match(RegD); |
|
5110 op_cost(0); |
|
5111 format %{ %} |
|
5112 interface(REG_INTER); |
|
5113 %} |
|
5114 |
|
5115 operand vRegD_V26() |
|
5116 %{ |
|
5117 constraint(ALLOC_IN_RC(v26_reg)); |
|
5118 match(RegD); |
|
5119 op_cost(0); |
|
5120 format %{ %} |
|
5121 interface(REG_INTER); |
|
5122 %} |
|
5123 |
|
5124 operand vRegD_V27() |
|
5125 %{ |
|
5126 constraint(ALLOC_IN_RC(v27_reg)); |
|
5127 match(RegD); |
|
5128 op_cost(0); |
|
5129 format %{ %} |
|
5130 interface(REG_INTER); |
|
5131 %} |
|
5132 |
|
5133 operand vRegD_V28() |
|
5134 %{ |
|
5135 constraint(ALLOC_IN_RC(v28_reg)); |
|
5136 match(RegD); |
|
5137 op_cost(0); |
|
5138 format %{ %} |
|
5139 interface(REG_INTER); |
|
5140 %} |
|
5141 |
|
5142 operand vRegD_V29() |
|
5143 %{ |
|
5144 constraint(ALLOC_IN_RC(v29_reg)); |
|
5145 match(RegD); |
|
5146 op_cost(0); |
|
5147 format %{ %} |
|
5148 interface(REG_INTER); |
|
5149 %} |
|
5150 |
|
5151 operand vRegD_V30() |
|
5152 %{ |
|
5153 constraint(ALLOC_IN_RC(v30_reg)); |
|
5154 match(RegD); |
|
5155 op_cost(0); |
|
5156 format %{ %} |
|
5157 interface(REG_INTER); |
|
5158 %} |
|
5159 |
|
5160 operand vRegD_V31() |
|
5161 %{ |
|
5162 constraint(ALLOC_IN_RC(v31_reg)); |
|
5163 match(RegD); |
|
5164 op_cost(0); |
|
5165 format %{ %} |
|
5166 interface(REG_INTER); |
|
5167 %} |
|
5168 |
4777 // Flags register, used as output of signed compare instructions |
5169 // Flags register, used as output of signed compare instructions |
4778 |
5170 |
4779 // note that on AArch64 we also use this register as the output for |
5171 // note that on AArch64 we also use this register as the output for |
4780 // for floating point compare instructions (CmpF CmpD). this ensures |
5172 // for floating point compare instructions (CmpF CmpD). this ensures |
4781 // that ordered inequality tests use GT, GE, LT or LE none of which |
5173 // that ordered inequality tests use GT, GE, LT or LE none of which |