@@ -310,58 +310,44 @@ G4_Operand* HWConformity::insertMovBefore(
310
310
{
311
311
G4_INST* inst = *it;
312
312
G4_SubReg_Align subAlign;
313
- const RegionDesc* region = NULL ;
314
- unsigned short vs = 0 , hs = 0 , wd = 1 ;
313
+ const RegionDesc* region = nullptr ;
315
314
unsigned char exec_size = inst->getExecSize ();
316
315
G4_Operand *src = inst->getSrc ( srcNum );
317
- unsigned short scale = IS_BTYPE ( src->getType () ) && src->getType () == type ? 2 : 1 ;
316
+ unsigned short scale = IS_BTYPE (src->getType ()) && src->getType () == type ? 2 : 1 ;
318
317
319
- uint8_t newExecSize = (( src->isImm () && !IS_VTYPE (src->getType ())) ||
320
- (src->isSrcRegRegion () && src->asSrcRegRegion ()->isScalar () ))
321
- ? 1 : exec_size;
318
+ uint8_t newExecSize = (src->isImm () && !IS_VTYPE (src->getType ())) ||
319
+ (src->isSrcRegRegion () && src->asSrcRegRegion ()->isScalar ())
320
+ ? 1 : exec_size;
322
321
323
- if ( newExecSize > 1 )
322
+ if ( newExecSize > 1 )
324
323
{
325
324
if (scale == 1 && !IS_VTYPE (src->getType ()))
326
325
{
327
- scale = (unsigned short ) (G4_Type_Table[ src->getType ()]. byteSize / G4_Type_Table[ type]. byteSize );
326
+ scale = (uint16_t )( getTypeSize ( src->getType ()) / getTypeSize ( type) );
328
327
}
329
- if ( scale == 0 )
328
+ if ( scale == 0 )
330
329
{
331
330
scale = 1 ;
332
331
}
333
- hs = scale;
334
- if ( isCompressedInst (inst) || G4_Type_Table[type].byteSize * exec_size * hs > G4_GRF_REG_NBYTES )
335
- {
336
- wd = exec_size / 2 ;
337
- }
338
- else
339
- {
340
- wd = exec_size;
341
- }
342
- vs = wd * hs;
332
+ region = builder.createRegionDesc (scale, 1 , 0 );
343
333
}
344
334
else
345
335
{
346
- vs = 0 ;
347
- wd = 1 ;
348
- hs = 0 ;
349
- scale = (unsigned short )(G4_Type_Table[src->getType ()].byteSize / G4_Type_Table[type].byteSize );
336
+ scale = (uint16_t )(getTypeSize (src->getType ()) / getTypeSize (type));
350
337
if (scale == 0 )
351
338
{
352
339
scale = 1 ;
353
340
}
341
+ region = builder.getRegionScalar ();
354
342
}
355
343
356
- region = builder.createRegionDesc (vs, wd, hs);
357
-
358
344
int opExecWidthBytes = IS_VINTTYPE (src->getType ()) ?
359
- G4_GRF_REG_NBYTES/ 2 * ( exec_size > 8 ? exec_size/ 8 : 1 ) :
360
- ( src->getType () == Type_VF ?
361
- G4_GRF_REG_NBYTES/ 2 * ( exec_size > 4 ? exec_size/ 4 : 1 ) :
362
- newExecSize * G4_Type_Table[ type]. byteSize * scale );
345
+ G4_GRF_REG_NBYTES / 2 * (exec_size > 8 ? exec_size / 8 : 1 ) :
346
+ ( src->getType () == Type_VF ?
347
+ G4_GRF_REG_NBYTES / 2 * (exec_size > 4 ? exec_size / 4 : 1 ) :
348
+ newExecSize * getTypeSize ( type) * scale);
363
349
364
- subAlign = getDclAlignment ( opExecWidthBytes, inst, newExecSize == 1 );
350
+ subAlign = getDclAlignment (opExecWidthBytes, inst, newExecSize == 1 );
365
351
366
352
if (subAlign < tmpAlign)
367
353
{
0 commit comments