Skip to content

Commit f958ad3

Browse files
committed
[X86] printZeroUpperMove - add support for mask predicated instructions
Handle masked predicated movss/movsd in addConstantComments now that we can generically handle the destination + mask register This will more significantly help improve 'fixup constant' comments from #73509
1 parent 47dcf5d commit f958ad3

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

llvm/lib/Target/X86/X86MCInstLower.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1561,12 +1561,14 @@ static void printConstant(const Constant *COp, unsigned BitWidth,
15611561
static void printZeroUpperMove(const MachineInstr *MI, MCStreamer &OutStreamer,
15621562
int SclWidth, int VecWidth,
15631563
const char *ShuffleComment) {
1564+
unsigned SrcIdx = getSrcIdx(MI, 1);
1565+
15641566
std::string Comment;
15651567
raw_string_ostream CS(Comment);
1566-
const MachineOperand &DstOp = MI->getOperand(0);
1567-
CS << X86ATTInstPrinter::getRegisterName(DstOp.getReg()) << " = ";
1568+
printDstRegisterName(CS, MI, SrcIdx);
1569+
CS << " = ";
15681570

1569-
if (auto *C = X86::getConstantFromPool(*MI, 1)) {
1571+
if (auto *C = X86::getConstantFromPool(*MI, SrcIdx)) {
15701572
CS << "[";
15711573
printConstant(C, SclWidth, CS);
15721574
for (int I = 1, E = VecWidth / SclWidth; I < E; ++I) {
@@ -1863,7 +1865,7 @@ static void addConstantComments(const MachineInstr *MI,
18631865

18641866
case X86::MOVSDrm:
18651867
case X86::VMOVSDrm:
1866-
case X86::VMOVSDZrm:
1868+
MASK_AVX512_CASE(X86::VMOVSDZrm)
18671869
case X86::MOVSDrm_alt:
18681870
case X86::VMOVSDrm_alt:
18691871
case X86::VMOVSDZrm_alt:
@@ -1875,7 +1877,7 @@ static void addConstantComments(const MachineInstr *MI,
18751877

18761878
case X86::MOVSSrm:
18771879
case X86::VMOVSSrm:
1878-
case X86::VMOVSSZrm:
1880+
MASK_AVX512_CASE(X86::VMOVSSZrm)
18791881
case X86::MOVSSrm_alt:
18801882
case X86::VMOVSSrm_alt:
18811883
case X86::VMOVSSZrm_alt:

llvm/test/CodeGen/X86/apx/kmov-postrapseudos.ll

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,17 @@ define void @kmovkr_1(i1 %cmp23.not) {
66
; AVX512-LABEL: kmovkr_1:
77
; AVX512: # %bb.0: # %entry
88
; AVX512-NEXT: kmovw %edi, %k1 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x92,0xcf]
9-
; AVX512-NEXT: vmovsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 {%k1} {z} # encoding: [0x62,0xf1,0xff,0x89,0x10,0x05,A,A,A,A]
9+
; AVX512-NEXT: vmovsd {{.*#+}} xmm0 {%k1} {z} = [1.0E+0,0.0E+0]
10+
; AVX512-NEXT: # encoding: [0x62,0xf1,0xff,0x89,0x10,0x05,A,A,A,A]
1011
; AVX512-NEXT: # fixup A - offset: 6, value: {{\.?LCPI[0-9]+_[0-9]+}}-4, kind: reloc_riprel_4byte
1112
; AVX512-NEXT: vmovsd %xmm0, 0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x11,0x04,0x25,0x00,0x00,0x00,0x00]
1213
; AVX512-NEXT: retq # encoding: [0xc3]
1314
;
1415
; AVX512BW-LABEL: kmovkr_1:
1516
; AVX512BW: # %bb.0: # %entry
1617
; AVX512BW-NEXT: kmovd %edi, %k1 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x92,0xcf]
17-
; AVX512BW-NEXT: vmovsd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 {%k1} {z} # encoding: [0x62,0xf1,0xff,0x89,0x10,0x05,A,A,A,A]
18+
; AVX512BW-NEXT: vmovsd {{.*#+}} xmm0 {%k1} {z} = [1.0E+0,0.0E+0]
19+
; AVX512BW-NEXT: # encoding: [0x62,0xf1,0xff,0x89,0x10,0x05,A,A,A,A]
1820
; AVX512BW-NEXT: # fixup A - offset: 6, value: {{\.?LCPI[0-9]+_[0-9]+}}-4, kind: reloc_riprel_4byte
1921
; AVX512BW-NEXT: vmovsd %xmm0, 0 # EVEX TO VEX Compression encoding: [0xc5,0xfb,0x11,0x04,0x25,0x00,0x00,0x00,0x00]
2022
; AVX512BW-NEXT: retq # encoding: [0xc3]

0 commit comments

Comments
 (0)