@@ -1202,7 +1202,8 @@ TR::Register *OMR::ARM::TreeEvaluator::floadEvaluator(TR::Node *node, TR::CodeGe
1202
1202
trgReg = floatTrgReg;
1203
1203
}
1204
1204
1205
- if (node->getSymbolReference ()->getSymbol ()->isSyncVolatile () && cg->comp ()->target ().isSMP () && cg->comp ()->target ().cpu .id () != TR_DefaultARMProcessor)
1205
+ if (node->getSymbolReference ()->getSymbol ()->isAtLeastOrStrongerThanAcquireRelease () &&
1206
+ cg->comp ()->target ().isSMP () && cg->comp ()->target ().cpu .id () != TR_DefaultARMProcessor)
1206
1207
{
1207
1208
generateInstruction (cg, (cg->comp ()->target ().cpu .id () == TR_ARMv6) ? TR::InstOpCode::dmb_v6 : TR::InstOpCode::dmb, node);
1208
1209
}
@@ -1249,7 +1250,8 @@ TR::Register *OMR::ARM::TreeEvaluator::dloadEvaluator(TR::Node *node, TR::CodeGe
1249
1250
trgReg = doubleTrgReg;
1250
1251
}
1251
1252
1252
- if (node->getSymbolReference ()->getSymbol ()->isSyncVolatile () && cg->comp ()->target ().isSMP () && cg->comp ()->target ().cpu .id () != TR_DefaultARMProcessor)
1253
+ if (node->getSymbolReference ()->getSymbol ()->isAtLeastOrStrongerThanAcquireRelease () &&
1254
+ cg->comp ()->target ().isSMP () && cg->comp ()->target ().cpu .id () != TR_DefaultARMProcessor)
1253
1255
{
1254
1256
generateInstruction (cg, (cg->comp ()->target ().cpu .id () == TR_ARMv6) ? TR::InstOpCode::dmb_v6 : TR::InstOpCode::dmb, node);
1255
1257
}
@@ -1264,7 +1266,8 @@ TR::Register *OMR::ARM::TreeEvaluator::fstoreEvaluator(TR::Node *node, TR::CodeG
1264
1266
TR::Register *sourceReg = cg->evaluate (firstChild);
1265
1267
TR::MemoryReference *tempMR = new (cg->trHeapMemory ()) TR::MemoryReference (node, 4 , cg);
1266
1268
1267
- if (node->getSymbolReference ()->getSymbol ()->isSyncVolatile () && cg->comp ()->target ().isSMP () && cg->comp ()->target ().cpu .id () != TR_DefaultARMProcessor)
1269
+ if (node->getSymbolReference ()->getSymbol ()->isAtLeastOrStrongerThanAcquireRelease () &&
1270
+ cg->comp ()->target ().isSMP () && cg->comp ()->target ().cpu .id () != TR_DefaultARMProcessor)
1268
1271
{
1269
1272
generateInstruction (cg, (cg->comp ()->target ().cpu .id () == TR_ARMv6) ? TR::InstOpCode::dmb_v6 : TR::InstOpCode::dmb, node);
1270
1273
}
@@ -1320,7 +1323,8 @@ TR::Register *OMR::ARM::TreeEvaluator::dstoreEvaluator(TR::Node *node, TR::CodeG
1320
1323
TR::Register *sourceReg = cg->evaluate (firstChild);
1321
1324
bool isUnresolved = node->getSymbolReference ()->isUnresolved ();
1322
1325
1323
- if (node->getSymbolReference ()->getSymbol ()->isSyncVolatile () && cg->comp ()->target ().isSMP () && cg->comp ()->target ().cpu .id () != TR_DefaultARMProcessor)
1326
+ if (node->getSymbolReference ()->getSymbol ()->isAtLeastOrStrongerThanAcquireRelease () &&
1327
+ cg->comp ()->target ().isSMP () && cg->comp ()->target ().cpu .id () != TR_DefaultARMProcessor)
1324
1328
{
1325
1329
generateInstruction (cg, (cg->comp ()->target ().cpu .id () == TR_ARMv6) ? TR::InstOpCode::dmb_v6 : TR::InstOpCode::dmb, node);
1326
1330
}
@@ -1391,7 +1395,8 @@ TR::Register *OMR::ARM::TreeEvaluator::fstoreiEvaluator(TR::Node *node, TR::Code
1391
1395
TR::Register *sourceReg = cg->evaluate (secondChild);
1392
1396
TR::MemoryReference *tempMR = new (cg->trHeapMemory ()) TR::MemoryReference (node, 4 , cg);
1393
1397
1394
- if (node->getSymbolReference ()->getSymbol ()->isSyncVolatile () && cg->comp ()->target ().isSMP () && cg->comp ()->target ().cpu .id () != TR_DefaultARMProcessor)
1398
+ if (node->getSymbolReference ()->getSymbol ()->isAtLeastOrStrongerThanAcquireRelease () &&
1399
+ cg->comp ()->target ().isSMP () && cg->comp ()->target ().cpu .id () != TR_DefaultARMProcessor)
1395
1400
{
1396
1401
generateInstruction (cg, (cg->comp ()->target ().cpu .id () == TR_ARMv6) ? TR::InstOpCode::dmb_v6 : TR::InstOpCode::dmb, node);
1397
1402
}
@@ -1445,7 +1450,8 @@ TR::Register *OMR::ARM::TreeEvaluator::dstoreiEvaluator(TR::Node *node, TR::Code
1445
1450
TR::Node *secondChild = node->getSecondChild ();
1446
1451
TR::Register *sourceReg = cg->evaluate (secondChild);
1447
1452
1448
- if (node->getSymbolReference ()->getSymbol ()->isSyncVolatile () && cg->comp ()->target ().isSMP () && cg->comp ()->target ().cpu .id () != TR_DefaultARMProcessor)
1453
+ if (node->getSymbolReference ()->getSymbol ()->isAtLeastOrStrongerThanAcquireRelease () &&
1454
+ cg->comp ()->target ().isSMP () && cg->comp ()->target ().cpu .id () != TR_DefaultARMProcessor)
1449
1455
{
1450
1456
generateInstruction (cg, (cg->comp ()->target ().cpu .id () == TR_ARMv6) ? TR::InstOpCode::dmb_v6 : TR::InstOpCode::dmb, node);
1451
1457
}
@@ -1882,7 +1888,7 @@ TR::Register *OMR::ARM::TreeEvaluator::i2fEvaluator(TR::Node *node, TR::CodeGene
1882
1888
(firstChild->getOpCodeValue () == TR::iload || firstChild->getOpCodeValue () == TR::iloadi) &&
1883
1889
(firstChild->getNumChildren () > 0 ) &&
1884
1890
(firstChild->getFirstChild ()->getNumChildren () == 1 ) &&
1885
- !(firstChild->getSymbolReference ()->getSymbol ()->isSyncVolatile () && cg->comp ()->target ().isSMP ()))
1891
+ !(firstChild->getSymbolReference ()->getSymbol ()->isAtLeastOrStrongerThanAcquireRelease () && cg->comp ()->target ().isSMP ()))
1886
1892
{
1887
1893
// Coming from memory, last use. Use flds to save the move
1888
1894
TR::MemoryReference *tempMR = new (cg->trHeapMemory ()) TR::MemoryReference (firstChild, 4 , cg);
@@ -1935,7 +1941,7 @@ TR::Register *OMR::ARM::TreeEvaluator::i2dEvaluator(TR::Node *node, TR::CodeGene
1935
1941
(firstChild->getOpCodeValue () == TR::iload || firstChild->getOpCodeValue () == TR::iloadi) &&
1936
1942
(firstChild->getNumChildren () > 0 ) &&
1937
1943
(firstChild->getFirstChild ()->getNumChildren () == 1 ) &&
1938
- !(firstChild->getSymbolReference ()->getSymbol ()->isSyncVolatile () && cg->comp ()->target ().isSMP ()))
1944
+ !(firstChild->getSymbolReference ()->getSymbol ()->isAtLeastOrStrongerThanAcquireRelease () && cg->comp ()->target ().isSMP ()))
1939
1945
{
1940
1946
// Coming from memory, last use
1941
1947
TR::MemoryReference *tempMR = new (cg->trHeapMemory ()) TR::MemoryReference (firstChild, 4 , cg);
@@ -2007,7 +2013,7 @@ TR::Register *OMR::ARM::TreeEvaluator::f2dEvaluator(TR::Node *node, TR::CodeGene
2007
2013
(firstChild->getOpCodeValue () == TR::fload || firstChild->getOpCodeValue () == TR::floadi) &&
2008
2014
(firstChild->getNumChildren () > 0 ) &&
2009
2015
(firstChild->getFirstChild ()->getNumChildren () == 1 ) &&
2010
- !(firstChild->getSymbolReference ()->getSymbol ()->isSyncVolatile () && cg->comp ()->target ().isSMP ()))
2016
+ !(firstChild->getSymbolReference ()->getSymbol ()->isAtLeastOrStrongerThanAcquireRelease () && cg->comp ()->target ().isSMP ()))
2011
2017
{
2012
2018
// Coming from memory, last use
2013
2019
TR::MemoryReference *tempMR = new (cg->trHeapMemory ()) TR::MemoryReference (firstChild, 4 , cg);
@@ -2062,7 +2068,7 @@ TR::Register *OMR::ARM::TreeEvaluator::f2iEvaluator(TR::Node *node, TR::CodeGene
2062
2068
(firstChild->getOpCodeValue () == TR::fload || firstChild->getOpCodeValue () == TR::floadi) &&
2063
2069
(firstChild->getNumChildren () > 0 ) &&
2064
2070
(firstChild->getFirstChild ()->getNumChildren () == 1 ) &&
2065
- !(firstChild->getSymbolReference ()->getSymbol ()->isSyncVolatile () && cg->comp ()->target ().isSMP ()))
2071
+ !(firstChild->getSymbolReference ()->getSymbol ()->isAtLeastOrStrongerThanAcquireRelease () && cg->comp ()->target ().isSMP ()))
2066
2072
{
2067
2073
// Coming from memory, last use
2068
2074
TR::MemoryReference *tempMR = new (cg->trHeapMemory ()) TR::MemoryReference (firstChild, 4 , cg);
@@ -2102,7 +2108,7 @@ TR::Register *OMR::ARM::TreeEvaluator::d2iEvaluator(TR::Node *node, TR::CodeGene
2102
2108
(firstChild->getOpCodeValue () == TR::dload || firstChild->getOpCodeValue () == TR::dloadi) &&
2103
2109
(firstChild->getNumChildren () > 0 ) &&
2104
2110
(firstChild->getFirstChild ()->getNumChildren () == 1 ) &&
2105
- !(firstChild->getSymbolReference ()->getSymbol ()->isSyncVolatile () && cg->comp ()->target ().isSMP ()))
2111
+ !(firstChild->getSymbolReference ()->getSymbol ()->isAtLeastOrStrongerThanAcquireRelease () && cg->comp ()->target ().isSMP ()))
2106
2112
{
2107
2113
// Coming from memory, last use
2108
2114
TR::MemoryReference *tempMR = new (cg->trHeapMemory ()) TR::MemoryReference (firstChild, 4 , cg);
@@ -2175,7 +2181,7 @@ TR::Register *OMR::ARM::TreeEvaluator::d2fEvaluator(TR::Node *node, TR::CodeGene
2175
2181
(firstChild->getOpCodeValue () == TR::dload || firstChild->getOpCodeValue () == TR::dloadi) &&
2176
2182
(firstChild->getNumChildren () > 0 ) &&
2177
2183
(firstChild->getFirstChild ()->getNumChildren () == 1 ) &&
2178
- !(firstChild->getSymbolReference ()->getSymbol ()->isSyncVolatile () && cg->comp ()->target ().isSMP ()))
2184
+ !(firstChild->getSymbolReference ()->getSymbol ()->isAtLeastOrStrongerThanAcquireRelease () && cg->comp ()->target ().isSMP ()))
2179
2185
{
2180
2186
// Coming from memory, last use
2181
2187
TR::Register *tempReg = cg->allocateRegister (TR_FPR);
@@ -3140,12 +3146,12 @@ TR::Register *OMR::ARM::TreeEvaluator::fRegStoreEvaluator(TR::Node *node, TR::Co
3140
3146
3141
3147
TR::Register *OMR::ARM::TreeEvaluator::fmaxEvaluator (TR::Node *node, TR::CodeGenerator *cg)
3142
3148
{
3143
- return NULL ;
3149
+ return NULL ;
3144
3150
}
3145
3151
3146
3152
TR::Register *OMR::ARM::TreeEvaluator::fminEvaluator (TR::Node *node, TR::CodeGenerator *cg)
3147
3153
{
3148
- return NULL ;
3154
+ return NULL ;
3149
3155
}
3150
3156
3151
3157
#endif
0 commit comments