@@ -1585,12 +1585,12 @@ static void printZeroUpperMove(const MachineInstr *MI, MCStreamer &OutStreamer,
1585
1585
1586
1586
static void printBroadcast (const MachineInstr *MI, MCStreamer &OutStreamer,
1587
1587
int Repeats, int BitWidth) {
1588
- if (auto *C = X86::getConstantFromPool (*MI, 1 )) {
1588
+ unsigned SrcIdx = getSrcIdx (MI, 1 );
1589
+ if (auto *C = X86::getConstantFromPool (*MI, SrcIdx)) {
1589
1590
std::string Comment;
1590
1591
raw_string_ostream CS (Comment);
1591
- const MachineOperand &DstOp = MI->getOperand (0 );
1592
- CS << X86ATTInstPrinter::getRegisterName (DstOp.getReg ()) << " = " ;
1593
- CS << " [" ;
1592
+ printDstRegisterName (CS, MI, SrcIdx);
1593
+ CS << " = [" ;
1594
1594
for (int l = 0 ; l != Repeats; ++l) {
1595
1595
if (l != 0 )
1596
1596
CS << " ," ;
@@ -1856,6 +1856,11 @@ static void addConstantComments(const MachineInstr *MI,
1856
1856
break ;
1857
1857
}
1858
1858
1859
+ #define MASK_AVX512_CASE (Instr ) \
1860
+ case Instr: \
1861
+ case Instr##k: \
1862
+ case Instr##kz:
1863
+
1859
1864
case X86::MOVSDrm:
1860
1865
case X86::VMOVSDrm:
1861
1866
case X86::VMOVSDZrm:
@@ -1888,29 +1893,35 @@ static void addConstantComments(const MachineInstr *MI,
1888
1893
case X86::Prefix##MOVDQA##Suffix##rm: \
1889
1894
case X86::Prefix##MOVDQU##Suffix##rm:
1890
1895
1891
- #define MOV_AVX512_CASE (Suffix ) \
1892
- case X86::VMOVDQA64##Suffix##rm: \
1893
- case X86::VMOVDQA32##Suffix##rm: \
1894
- case X86::VMOVDQU64##Suffix##rm: \
1895
- case X86::VMOVDQU32##Suffix##rm: \
1896
- case X86::VMOVDQU16##Suffix##rm: \
1897
- case X86::VMOVDQU8##Suffix##rm: \
1898
- case X86::VMOVAPS##Suffix##rm: \
1899
- case X86::VMOVAPD##Suffix##rm: \
1900
- case X86::VMOVUPS##Suffix##rm: \
1901
- case X86::VMOVUPD##Suffix##rm:
1896
+ #define MOV_AVX512_CASE (Suffix, Postfix ) \
1897
+ case X86::VMOVDQA64##Suffix##rm##Postfix: \
1898
+ case X86::VMOVDQA32##Suffix##rm##Postfix: \
1899
+ case X86::VMOVDQU64##Suffix##rm##Postfix: \
1900
+ case X86::VMOVDQU32##Suffix##rm##Postfix: \
1901
+ case X86::VMOVDQU16##Suffix##rm##Postfix: \
1902
+ case X86::VMOVDQU8##Suffix##rm##Postfix: \
1903
+ case X86::VMOVAPS##Suffix##rm##Postfix: \
1904
+ case X86::VMOVAPD##Suffix##rm##Postfix: \
1905
+ case X86::VMOVUPS##Suffix##rm##Postfix: \
1906
+ case X86::VMOVUPD##Suffix##rm##Postfix :
1902
1907
1903
1908
#define CASE_128_MOV_RM () \
1904
1909
MOV_CASE (, ) /* SSE */ \
1905
1910
MOV_CASE (V, ) /* AVX-128 */ \
1906
- MOV_AVX512_CASE (Z128)
1911
+ MOV_AVX512_CASE (Z128, ) \
1912
+ MOV_AVX512_CASE (Z128, k) \
1913
+ MOV_AVX512_CASE (Z128, kz)
1907
1914
1908
1915
#define CASE_256_MOV_RM () \
1909
1916
MOV_CASE (V, Y) /* AVX-256 */ \
1910
- MOV_AVX512_CASE (Z256)
1917
+ MOV_AVX512_CASE (Z256, ) \
1918
+ MOV_AVX512_CASE (Z256, k) \
1919
+ MOV_AVX512_CASE (Z256, kz) \
1911
1920
1912
1921
#define CASE_512_MOV_RM () \
1913
- MOV_AVX512_CASE (Z)
1922
+ MOV_AVX512_CASE (Z, ) \
1923
+ MOV_AVX512_CASE (Z, k) \
1924
+ MOV_AVX512_CASE (Z, kz) \
1914
1925
1915
1926
// For loads from a constant pool to a vector register, print the constant
1916
1927
// loaded.
@@ -1925,80 +1936,80 @@ static void addConstantComments(const MachineInstr *MI,
1925
1936
break ;
1926
1937
case X86::VBROADCASTF128rm:
1927
1938
case X86::VBROADCASTI128rm:
1928
- case X86::VBROADCASTF32X4Z256rm:
1929
- case X86::VBROADCASTF64X2Z128rm:
1930
- case X86::VBROADCASTI32X4Z256rm:
1931
- case X86::VBROADCASTI64X2Z128rm:
1939
+ MASK_AVX512_CASE ( X86::VBROADCASTF32X4Z256rm)
1940
+ MASK_AVX512_CASE ( X86::VBROADCASTF64X2Z128rm)
1941
+ MASK_AVX512_CASE ( X86::VBROADCASTI32X4Z256rm)
1942
+ MASK_AVX512_CASE ( X86::VBROADCASTI64X2Z128rm)
1932
1943
printBroadcast (MI, OutStreamer, 2 , 128 );
1933
1944
break ;
1934
- case X86::VBROADCASTF32X4rm:
1935
- case X86::VBROADCASTF64X2rm:
1936
- case X86::VBROADCASTI32X4rm:
1937
- case X86::VBROADCASTI64X2rm:
1945
+ MASK_AVX512_CASE ( X86::VBROADCASTF32X4rm)
1946
+ MASK_AVX512_CASE ( X86::VBROADCASTF64X2rm)
1947
+ MASK_AVX512_CASE ( X86::VBROADCASTI32X4rm)
1948
+ MASK_AVX512_CASE ( X86::VBROADCASTI64X2rm)
1938
1949
printBroadcast (MI, OutStreamer, 4 , 128 );
1939
1950
break ;
1940
- case X86::VBROADCASTF32X8rm:
1941
- case X86::VBROADCASTF64X4rm:
1942
- case X86::VBROADCASTI32X8rm:
1943
- case X86::VBROADCASTI64X4rm:
1951
+ MASK_AVX512_CASE ( X86::VBROADCASTF32X8rm)
1952
+ MASK_AVX512_CASE ( X86::VBROADCASTF64X4rm)
1953
+ MASK_AVX512_CASE ( X86::VBROADCASTI32X8rm)
1954
+ MASK_AVX512_CASE ( X86::VBROADCASTI64X4rm)
1944
1955
printBroadcast (MI, OutStreamer, 2 , 256 );
1945
1956
break ;
1946
1957
1947
1958
// For broadcast loads from a constant pool to a vector register, repeatedly
1948
1959
// print the constant loaded.
1949
1960
case X86::MOVDDUPrm:
1950
1961
case X86::VMOVDDUPrm:
1951
- case X86::VMOVDDUPZ128rm:
1962
+ MASK_AVX512_CASE ( X86::VMOVDDUPZ128rm)
1952
1963
case X86::VPBROADCASTQrm:
1953
- case X86::VPBROADCASTQZ128rm:
1964
+ MASK_AVX512_CASE ( X86::VPBROADCASTQZ128rm)
1954
1965
printBroadcast (MI, OutStreamer, 2 , 64 );
1955
1966
break ;
1956
1967
case X86::VBROADCASTSDYrm:
1957
- case X86::VBROADCASTSDZ256rm:
1968
+ MASK_AVX512_CASE ( X86::VBROADCASTSDZ256rm)
1958
1969
case X86::VPBROADCASTQYrm:
1959
- case X86::VPBROADCASTQZ256rm:
1970
+ MASK_AVX512_CASE ( X86::VPBROADCASTQZ256rm)
1960
1971
printBroadcast (MI, OutStreamer, 4 , 64 );
1961
1972
break ;
1962
- case X86::VBROADCASTSDZrm:
1963
- case X86::VPBROADCASTQZrm:
1973
+ MASK_AVX512_CASE ( X86::VBROADCASTSDZrm)
1974
+ MASK_AVX512_CASE ( X86::VPBROADCASTQZrm)
1964
1975
printBroadcast (MI, OutStreamer, 8 , 64 );
1965
1976
break ;
1966
1977
case X86::VBROADCASTSSrm:
1967
- case X86::VBROADCASTSSZ128rm:
1978
+ MASK_AVX512_CASE ( X86::VBROADCASTSSZ128rm)
1968
1979
case X86::VPBROADCASTDrm:
1969
- case X86::VPBROADCASTDZ128rm:
1980
+ MASK_AVX512_CASE ( X86::VPBROADCASTDZ128rm)
1970
1981
printBroadcast (MI, OutStreamer, 4 , 32 );
1971
1982
break ;
1972
1983
case X86::VBROADCASTSSYrm:
1973
- case X86::VBROADCASTSSZ256rm:
1984
+ MASK_AVX512_CASE ( X86::VBROADCASTSSZ256rm)
1974
1985
case X86::VPBROADCASTDYrm:
1975
- case X86::VPBROADCASTDZ256rm:
1986
+ MASK_AVX512_CASE ( X86::VPBROADCASTDZ256rm)
1976
1987
printBroadcast (MI, OutStreamer, 8 , 32 );
1977
1988
break ;
1978
- case X86::VBROADCASTSSZrm:
1979
- case X86::VPBROADCASTDZrm:
1989
+ MASK_AVX512_CASE ( X86::VBROADCASTSSZrm)
1990
+ MASK_AVX512_CASE ( X86::VPBROADCASTDZrm)
1980
1991
printBroadcast (MI, OutStreamer, 16 , 32 );
1981
1992
break ;
1982
1993
case X86::VPBROADCASTWrm:
1983
- case X86::VPBROADCASTWZ128rm:
1994
+ MASK_AVX512_CASE ( X86::VPBROADCASTWZ128rm)
1984
1995
printBroadcast (MI, OutStreamer, 8 , 16 );
1985
1996
break ;
1986
1997
case X86::VPBROADCASTWYrm:
1987
- case X86::VPBROADCASTWZ256rm:
1998
+ MASK_AVX512_CASE ( X86::VPBROADCASTWZ256rm)
1988
1999
printBroadcast (MI, OutStreamer, 16 , 16 );
1989
2000
break ;
1990
- case X86::VPBROADCASTWZrm:
2001
+ MASK_AVX512_CASE ( X86::VPBROADCASTWZrm)
1991
2002
printBroadcast (MI, OutStreamer, 32 , 16 );
1992
2003
break ;
1993
2004
case X86::VPBROADCASTBrm:
1994
- case X86::VPBROADCASTBZ128rm:
2005
+ MASK_AVX512_CASE ( X86::VPBROADCASTBZ128rm)
1995
2006
printBroadcast (MI, OutStreamer, 16 , 8 );
1996
2007
break ;
1997
2008
case X86::VPBROADCASTBYrm:
1998
- case X86::VPBROADCASTBZ256rm:
2009
+ MASK_AVX512_CASE ( X86::VPBROADCASTBZ256rm)
1999
2010
printBroadcast (MI, OutStreamer, 32 , 8 );
2000
2011
break ;
2001
- case X86::VPBROADCASTBZrm:
2012
+ MASK_AVX512_CASE ( X86::VPBROADCASTBZrm)
2002
2013
printBroadcast (MI, OutStreamer, 64 , 8 );
2003
2014
break ;
2004
2015
0 commit comments