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 |