Mercurial > hg > graal-jvmci-8
comparison src/cpu/sparc/vm/sparc.ad @ 12323:c9ccd7b85f20
8024924: Intrinsify java.lang.Math.addExact
Reviewed-by: kvn, twisti
author | rbackman |
---|---|
date | Fri, 27 Sep 2013 08:39:19 +0200 |
parents | 7944aba7ba41 |
children | 59e8ad757e19 209aa13ab8c0 |
comparison
equal
deleted
inserted
replaced
12322:72b7e96c1922 | 12323: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 |