@@ -1564,68 +1564,18 @@ static void printZeroUpperMove(const MachineInstr *MI, MCStreamer &OutStreamer,
15641564 OutStreamer.AddComment (CS.str ());
15651565}
15661566
1567- static void printLaneBroadcast (const MachineInstr *MI, MCStreamer &OutStreamer,
1568- int NumLanes, int BitWidth) {
1569- if (auto *C = X86::getConstantFromPool (*MI, 1 )) {
1570- int CstEltSize = C->getType ()->getScalarSizeInBits ();
1571-
1572- std::string Comment;
1573- raw_string_ostream CS (Comment);
1574- const MachineOperand &DstOp = MI->getOperand (0 );
1575- CS << X86ATTInstPrinter::getRegisterName (DstOp.getReg ()) << " = " ;
1576- if (auto *CDS = dyn_cast<ConstantDataSequential>(C)) {
1577- int NumElements = CDS->getNumElements ();
1578- if ((BitWidth % CstEltSize) == 0 )
1579- NumElements = std::min<int >(NumElements, BitWidth / CstEltSize);
1580- CS << " [" ;
1581- for (int l = 0 ; l != NumLanes; ++l) {
1582- for (int i = 0 ; i < NumElements; ++i) {
1583- if (i != 0 || l != 0 )
1584- CS << " ," ;
1585- if (CDS->getElementType ()->isIntegerTy ())
1586- printConstant (CDS->getElementAsAPInt (i), CS);
1587- else if (CDS->getElementType ()->isHalfTy () ||
1588- CDS->getElementType ()->isFloatTy () ||
1589- CDS->getElementType ()->isDoubleTy ())
1590- printConstant (CDS->getElementAsAPFloat (i), CS);
1591- else
1592- CS << " ?" ;
1593- }
1594- }
1595- CS << " ]" ;
1596- OutStreamer.AddComment (CS.str ());
1597- } else if (auto *CV = dyn_cast<ConstantVector>(C)) {
1598- int NumOperands = CV->getNumOperands ();
1599- if ((BitWidth % CstEltSize) == 0 )
1600- NumOperands = std::min<int >(NumOperands, BitWidth / CstEltSize);
1601- CS << " <" ;
1602- for (int l = 0 ; l != NumLanes; ++l) {
1603- for (int i = 0 ; i < NumOperands; ++i) {
1604- if (i != 0 || l != 0 )
1605- CS << " ," ;
1606- printConstant (CV->getOperand (i),
1607- CV->getType ()->getPrimitiveSizeInBits (), CS);
1608- }
1609- }
1610- CS << " >" ;
1611- OutStreamer.AddComment (CS.str ());
1612- }
1613- }
1614- }
1615-
1616- static void printElementBroadcast (const MachineInstr *MI,
1617- MCStreamer &OutStreamer, int NumElts,
1618- int EltBits) {
1567+ static void printBroadcast (const MachineInstr *MI, MCStreamer &OutStreamer,
1568+ int Repeats, int BitWidth) {
16191569 if (auto *C = X86::getConstantFromPool (*MI, 1 )) {
16201570 std::string Comment;
16211571 raw_string_ostream CS (Comment);
16221572 const MachineOperand &DstOp = MI->getOperand (0 );
16231573 CS << X86ATTInstPrinter::getRegisterName (DstOp.getReg ()) << " = " ;
16241574 CS << " [" ;
1625- for (int i = 0 ; i != NumElts ; ++i ) {
1626- if (i != 0 )
1575+ for (int l = 0 ; l != Repeats ; ++l ) {
1576+ if (l != 0 )
16271577 CS << " ," ;
1628- printConstant (C, EltBits , CS);
1578+ printConstant (C, BitWidth , CS);
16291579 }
16301580 CS << " ]" ;
16311581 OutStreamer.AddComment (CS.str ());
@@ -1943,33 +1893,33 @@ static void addConstantComments(const MachineInstr *MI,
19431893 // For loads from a constant pool to a vector register, print the constant
19441894 // loaded.
19451895 CASE_128_MOV_RM ()
1946- printLaneBroadcast (MI, OutStreamer, 1 , 128 );
1896+ printBroadcast (MI, OutStreamer, 1 , 128 );
19471897 break ;
19481898 CASE_256_MOV_RM ()
1949- printLaneBroadcast (MI, OutStreamer, 1 , 256 );
1899+ printBroadcast (MI, OutStreamer, 1 , 256 );
19501900 break ;
19511901 CASE_512_MOV_RM ()
1952- printLaneBroadcast (MI, OutStreamer, 1 , 512 );
1902+ printBroadcast (MI, OutStreamer, 1 , 512 );
19531903 break ;
19541904 case X86::VBROADCASTF128rm:
19551905 case X86::VBROADCASTI128rm:
19561906 case X86::VBROADCASTF32X4Z256rm:
19571907 case X86::VBROADCASTF64X2Z128rm:
19581908 case X86::VBROADCASTI32X4Z256rm:
19591909 case X86::VBROADCASTI64X2Z128rm:
1960- printLaneBroadcast (MI, OutStreamer, 2 , 128 );
1910+ printBroadcast (MI, OutStreamer, 2 , 128 );
19611911 break ;
19621912 case X86::VBROADCASTF32X4rm:
19631913 case X86::VBROADCASTF64X2rm:
19641914 case X86::VBROADCASTI32X4rm:
19651915 case X86::VBROADCASTI64X2rm:
1966- printLaneBroadcast (MI, OutStreamer, 4 , 128 );
1916+ printBroadcast (MI, OutStreamer, 4 , 128 );
19671917 break ;
19681918 case X86::VBROADCASTF32X8rm:
19691919 case X86::VBROADCASTF64X4rm:
19701920 case X86::VBROADCASTI32X8rm:
19711921 case X86::VBROADCASTI64X4rm:
1972- printLaneBroadcast (MI, OutStreamer, 2 , 256 );
1922+ printBroadcast (MI, OutStreamer, 2 , 256 );
19731923 break ;
19741924
19751925 // For broadcast loads from a constant pool to a vector register, repeatedly
@@ -1979,55 +1929,55 @@ static void addConstantComments(const MachineInstr *MI,
19791929 case X86::VMOVDDUPZ128rm:
19801930 case X86::VPBROADCASTQrm:
19811931 case X86::VPBROADCASTQZ128rm:
1982- printElementBroadcast (MI, OutStreamer, 2 , 64 );
1932+ printBroadcast (MI, OutStreamer, 2 , 64 );
19831933 break ;
19841934 case X86::VBROADCASTSDYrm:
19851935 case X86::VBROADCASTSDZ256rm:
19861936 case X86::VPBROADCASTQYrm:
19871937 case X86::VPBROADCASTQZ256rm:
1988- printElementBroadcast (MI, OutStreamer, 4 , 64 );
1938+ printBroadcast (MI, OutStreamer, 4 , 64 );
19891939 break ;
19901940 case X86::VBROADCASTSDZrm:
19911941 case X86::VPBROADCASTQZrm:
1992- printElementBroadcast (MI, OutStreamer, 8 , 64 );
1942+ printBroadcast (MI, OutStreamer, 8 , 64 );
19931943 break ;
19941944 case X86::VBROADCASTSSrm:
19951945 case X86::VBROADCASTSSZ128rm:
19961946 case X86::VPBROADCASTDrm:
19971947 case X86::VPBROADCASTDZ128rm:
1998- printElementBroadcast (MI, OutStreamer, 4 , 32 );
1948+ printBroadcast (MI, OutStreamer, 4 , 32 );
19991949 break ;
20001950 case X86::VBROADCASTSSYrm:
20011951 case X86::VBROADCASTSSZ256rm:
20021952 case X86::VPBROADCASTDYrm:
20031953 case X86::VPBROADCASTDZ256rm:
2004- printElementBroadcast (MI, OutStreamer, 8 , 32 );
1954+ printBroadcast (MI, OutStreamer, 8 , 32 );
20051955 break ;
20061956 case X86::VBROADCASTSSZrm:
20071957 case X86::VPBROADCASTDZrm:
2008- printElementBroadcast (MI, OutStreamer, 16 , 32 );
1958+ printBroadcast (MI, OutStreamer, 16 , 32 );
20091959 break ;
20101960 case X86::VPBROADCASTWrm:
20111961 case X86::VPBROADCASTWZ128rm:
2012- printElementBroadcast (MI, OutStreamer, 8 , 16 );
1962+ printBroadcast (MI, OutStreamer, 8 , 16 );
20131963 break ;
20141964 case X86::VPBROADCASTWYrm:
20151965 case X86::VPBROADCASTWZ256rm:
2016- printElementBroadcast (MI, OutStreamer, 16 , 16 );
1966+ printBroadcast (MI, OutStreamer, 16 , 16 );
20171967 break ;
20181968 case X86::VPBROADCASTWZrm:
2019- printElementBroadcast (MI, OutStreamer, 32 , 16 );
1969+ printBroadcast (MI, OutStreamer, 32 , 16 );
20201970 break ;
20211971 case X86::VPBROADCASTBrm:
20221972 case X86::VPBROADCASTBZ128rm:
2023- printElementBroadcast (MI, OutStreamer, 16 , 8 );
1973+ printBroadcast (MI, OutStreamer, 16 , 8 );
20241974 break ;
20251975 case X86::VPBROADCASTBYrm:
20261976 case X86::VPBROADCASTBZ256rm:
2027- printElementBroadcast (MI, OutStreamer, 32 , 8 );
1977+ printBroadcast (MI, OutStreamer, 32 , 8 );
20281978 break ;
20291979 case X86::VPBROADCASTBZrm:
2030- printElementBroadcast (MI, OutStreamer, 64 , 8 );
1980+ printBroadcast (MI, OutStreamer, 64 , 8 );
20311981 break ;
20321982 }
20331983}
0 commit comments