src/hotspot/cpu/aarch64/aarch64.ad
changeset 55379 865775b86780
parent 55114 6515a96809a1
child 55398 e53ec3b362f4
equal deleted inserted replaced
55378:bd613b97c7c8 55379:865775b86780
   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