src/cpu/sparc/vm/sparc.ad

changeset 5791
c9ccd7b85f20
parent 5694
7944aba7ba41
child 5997
59e8ad757e19
child 6029
209aa13ab8c0
equal deleted inserted replaced
5790:72b7e96c1922 5791:c9ccd7b85f20
2015 } 2015 }
2016 2016
2017 const RegMask Matcher::method_handle_invoke_SP_save_mask() { 2017 const RegMask Matcher::method_handle_invoke_SP_save_mask() {
2018 return L7_REGP_mask(); 2018 return L7_REGP_mask();
2019 } 2019 }
2020
2021 const RegMask Matcher::mathExactI_result_proj_mask() {
2022 return G1_REGI_mask();
2023 }
2024
2025 const RegMask Matcher::mathExactI_flags_proj_mask() {
2026 return INT_FLAGS_mask();
2027 }
2028
2020 2029
2021 %} 2030 %}
2022 2031
2023 2032
2024 // The intptr_t operand types, defined by textual substitution. 2033 // The intptr_t operand types, defined by textual substitution.
4243 not_equal(0x9); 4252 not_equal(0x9);
4244 less(0x3); 4253 less(0x3);
4245 greater_equal(0xB); 4254 greater_equal(0xB);
4246 less_equal(0x2); 4255 less_equal(0x2);
4247 greater(0xA); 4256 greater(0xA);
4257 overflow(0x7);
4258 no_overflow(0xF);
4248 %} 4259 %}
4249 %} 4260 %}
4250 4261
4251 // Comparison Op, unsigned 4262 // Comparison Op, unsigned
4252 operand cmpOpU() %{ 4263 operand cmpOpU() %{
4253 match(Bool); 4264 match(Bool);
4265 predicate(n->as_Bool()->_test._test != BoolTest::overflow &&
4266 n->as_Bool()->_test._test != BoolTest::no_overflow);
4254 4267
4255 format %{ "u" %} 4268 format %{ "u" %}
4256 interface(COND_INTER) %{ 4269 interface(COND_INTER) %{
4257 equal(0x1); 4270 equal(0x1);
4258 not_equal(0x9); 4271 not_equal(0x9);
4259 less(0x5); 4272 less(0x5);
4260 greater_equal(0xD); 4273 greater_equal(0xD);
4261 less_equal(0x4); 4274 less_equal(0x4);
4262 greater(0xC); 4275 greater(0xC);
4276 overflow(0x7);
4277 no_overflow(0xF);
4263 %} 4278 %}
4264 %} 4279 %}
4265 4280
4266 // Comparison Op, pointer (same as unsigned) 4281 // Comparison Op, pointer (same as unsigned)
4267 operand cmpOpP() %{ 4282 operand cmpOpP() %{
4268 match(Bool); 4283 match(Bool);
4284 predicate(n->as_Bool()->_test._test != BoolTest::overflow &&
4285 n->as_Bool()->_test._test != BoolTest::no_overflow);
4269 4286
4270 format %{ "p" %} 4287 format %{ "p" %}
4271 interface(COND_INTER) %{ 4288 interface(COND_INTER) %{
4272 equal(0x1); 4289 equal(0x1);
4273 not_equal(0x9); 4290 not_equal(0x9);
4274 less(0x5); 4291 less(0x5);
4275 greater_equal(0xD); 4292 greater_equal(0xD);
4276 less_equal(0x4); 4293 less_equal(0x4);
4277 greater(0xC); 4294 greater(0xC);
4295 overflow(0x7);
4296 no_overflow(0xF);
4278 %} 4297 %}
4279 %} 4298 %}
4280 4299
4281 // Comparison Op, branch-register encoding 4300 // Comparison Op, branch-register encoding
4282 operand cmpOp_reg() %{ 4301 operand cmpOp_reg() %{
4283 match(Bool); 4302 match(Bool);
4303 predicate(n->as_Bool()->_test._test != BoolTest::overflow &&
4304 n->as_Bool()->_test._test != BoolTest::no_overflow);
4284 4305
4285 format %{ "" %} 4306 format %{ "" %}
4286 interface(COND_INTER) %{ 4307 interface(COND_INTER) %{
4287 equal (0x1); 4308 equal (0x1);
4288 not_equal (0x5); 4309 not_equal (0x5);
4289 less (0x3); 4310 less (0x3);
4290 greater_equal(0x7); 4311 greater_equal(0x7);
4291 less_equal (0x2); 4312 less_equal (0x2);
4292 greater (0x6); 4313 greater (0x6);
4314 overflow(0x7); // not supported
4315 no_overflow(0xF); // not supported
4293 %} 4316 %}
4294 %} 4317 %}
4295 4318
4296 // Comparison Code, floating, unordered same as less 4319 // Comparison Code, floating, unordered same as less
4297 operand cmpOpF() %{ 4320 operand cmpOpF() %{
4298 match(Bool); 4321 match(Bool);
4322 predicate(n->as_Bool()->_test._test != BoolTest::overflow &&
4323 n->as_Bool()->_test._test != BoolTest::no_overflow);
4299 4324
4300 format %{ "fl" %} 4325 format %{ "fl" %}
4301 interface(COND_INTER) %{ 4326 interface(COND_INTER) %{
4302 equal(0x9); 4327 equal(0x9);
4303 not_equal(0x1); 4328 not_equal(0x1);
4304 less(0x3); 4329 less(0x3);
4305 greater_equal(0xB); 4330 greater_equal(0xB);
4306 less_equal(0xE); 4331 less_equal(0xE);
4307 greater(0x6); 4332 greater(0x6);
4333
4334 overflow(0x7); // not supported
4335 no_overflow(0xF); // not supported
4308 %} 4336 %}
4309 %} 4337 %}
4310 4338
4311 // Used by long compare 4339 // Used by long compare
4312 operand cmpOp_commute() %{ 4340 operand cmpOp_commute() %{
4313 match(Bool); 4341 match(Bool);
4342 predicate(n->as_Bool()->_test._test != BoolTest::overflow &&
4343 n->as_Bool()->_test._test != BoolTest::no_overflow);
4314 4344
4315 format %{ "" %} 4345 format %{ "" %}
4316 interface(COND_INTER) %{ 4346 interface(COND_INTER) %{
4317 equal(0x1); 4347 equal(0x1);
4318 not_equal(0x9); 4348 not_equal(0x9);
4319 less(0xA); 4349 less(0xA);
4320 greater_equal(0x2); 4350 greater_equal(0x2);
4321 less_equal(0xB); 4351 less_equal(0xB);
4322 greater(0x3); 4352 greater(0x3);
4353 overflow(0x7);
4354 no_overflow(0xF);
4323 %} 4355 %}
4324 %} 4356 %}
4325 4357
4326 //----------OPERAND CLASSES---------------------------------------------------- 4358 //----------OPERAND CLASSES----------------------------------------------------
4327 // Operand Classes are groups of operands that are used to simplify 4359 // Operand Classes are groups of operands that are used to simplify

mercurial