[llvm] [X86][APX] Reset SubReg of NewMI operand1 (PR #191765)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 13 00:07:07 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-x86
Author: Phoebe Wang (phoebewang)
<details>
<summary>Changes</summary>
We have made sure dst operand never has a SubReg.
---
Full diff: https://github.com/llvm/llvm-project/pull/191765.diff
2 Files Affected:
- (modified) llvm/lib/Target/X86/X86InstrInfo.cpp (+1)
- (modified) llvm/test/CodeGen/X86/apx/add.ll (+287)
``````````diff
diff --git a/llvm/lib/Target/X86/X86InstrInfo.cpp b/llvm/lib/Target/X86/X86InstrInfo.cpp
index f4c3da1cd63d8..e477c27e3848c 100644
--- a/llvm/lib/Target/X86/X86InstrInfo.cpp
+++ b/llvm/lib/Target/X86/X86InstrInfo.cpp
@@ -7629,6 +7629,7 @@ MachineInstr *X86InstrInfo::foldMemoryOperandImpl(
.addDef(NewSrc)
.addReg(SrcReg, {}, SrcSub);
NewMI->getOperand(1).setReg(NewSrc);
+ NewMI->getOperand(1).setSubReg(0);
}
return NewMI;
}
diff --git a/llvm/test/CodeGen/X86/apx/add.ll b/llvm/test/CodeGen/X86/apx/add.ll
index b56036c955024..0cbbbdfbb8715 100644
--- a/llvm/test/CodeGen/X86/apx/add.ll
+++ b/llvm/test/CodeGen/X86/apx/add.ll
@@ -1248,3 +1248,290 @@ entry:
store i64 %add, ptr %a
ret void
}
+
+define i32 @two_address_no_subreg(i32 %arg0, ptr %arg1, i1 %arg2) nounwind {
+; NDD-LABEL: two_address_no_subreg:
+; NDD: # %bb.0: # %entry
+; NDD-NEXT: pushq %rbp # encoding: [0x55]
+; NDD-NEXT: pushq %r15 # encoding: [0x41,0x57]
+; NDD-NEXT: pushq %r14 # encoding: [0x41,0x56]
+; NDD-NEXT: pushq %r13 # encoding: [0x41,0x55]
+; NDD-NEXT: pushq %r12 # encoding: [0x41,0x54]
+; NDD-NEXT: pushq %rbx # encoding: [0x53]
+; NDD-NEXT: pushq %rax # encoding: [0x50]
+; NDD-NEXT: movl %edx, %ebp # encoding: [0x89,0xd5]
+; NDD-NEXT: movq %rsi, %r14 # encoding: [0x49,0x89,0xf6]
+; NDD-NEXT: movl %edi, %ebx # encoding: [0x89,0xfb]
+; NDD-NEXT: movslq %edi, %rax # encoding: [0x48,0x63,0xc7]
+; NDD-NEXT: imulq $715827883, %rax, %r13 # encoding: [0x4c,0x69,0xe8,0xab,0xaa,0xaa,0x2a]
+; NDD-NEXT: # imm = 0x2AAAAAAB
+; NDD-NEXT: shrq $63, %r13, %rax # encoding: [0x62,0xd4,0xfc,0x18,0xc1,0xed,0x3f]
+; NDD-NEXT: movq %rax, (%rsp) # 8-byte Spill
+; NDD-NEXT: # encoding: [0x48,0x89,0x04,0x24]
+; NDD-NEXT: shrq $32, %r13 # EVEX TO LEGACY Compression encoding: [0x49,0xc1,0xed,0x20]
+; NDD-NEXT: xorl %r15d, %r15d # encoding: [0x45,0x31,0xff]
+; NDD-NEXT: movq %rsi, %rdi # encoding: [0x48,0x89,0xf7]
+; NDD-NEXT: callq *%r15 # encoding: [0x41,0xff,0xd7]
+; NDD-NEXT: movq %r14, %rdi # encoding: [0x4c,0x89,0xf7]
+; NDD-NEXT: callq *%r15 # encoding: [0x41,0xff,0xd7]
+; NDD-NEXT: movl $1, %r12d # encoding: [0x41,0xbc,0x01,0x00,0x00,0x00]
+; NDD-NEXT: testb $1, %bpl # encoding: [0x40,0xf6,0xc5,0x01]
+; NDD-NEXT: jne .LBB50_2 # encoding: [0x75,A]
+; NDD-NEXT: # fixup A - offset: 1, value: .LBB50_2, kind: FK_PCRel_1
+; NDD-NEXT: # %bb.1: # %bb2
+; NDD-NEXT: xorl %r12d, %r12d # encoding: [0x45,0x31,0xe4]
+; NDD-NEXT: .LBB50_2: # %bb1
+; NDD-NEXT: movl %r13d, %esi # encoding: [0x44,0x89,0xee]
+; NDD-NEXT: addl (%rsp), %esi # 4-byte Folded Reload
+; NDD-NEXT: # encoding: [0x03,0x34,0x24]
+; NDD-NEXT: imull %ebx, %ebx, %r13d # encoding: [0x62,0xf4,0x14,0x18,0xaf,0xdb]
+; NDD-NEXT: testb $1, %bpl # encoding: [0x40,0xf6,0xc5,0x01]
+; NDD-NEXT: jne .LBB50_4 # encoding: [0x75,A]
+; NDD-NEXT: # fixup A - offset: 1, value: .LBB50_4, kind: FK_PCRel_1
+; NDD-NEXT: # %bb.3: # %bb4
+; NDD-NEXT: xorl %ebp, %ebp # encoding: [0x31,0xed]
+; NDD-NEXT: movq %r14, %rdi # encoding: [0x4c,0x89,0xf7]
+; NDD-NEXT: movl %esi, %r14d # encoding: [0x41,0x89,0xf6]
+; NDD-NEXT: callq *%rbp # encoding: [0xff,0xd5]
+; NDD-NEXT: incl %r12d, %r15d # encoding: [0x62,0xd4,0x04,0x18,0xff,0xc4]
+; NDD-NEXT: xorl %edi, %edi # encoding: [0x31,0xff]
+; NDD-NEXT: callq *%rbp # encoding: [0xff,0xd5]
+; NDD-NEXT: movl %r14d, %esi # encoding: [0x44,0x89,0xf6]
+; NDD-NEXT: .LBB50_4: # %bb3
+; NDD-NEXT: orl %r13d, %esi # EVEX TO LEGACY Compression encoding: [0x44,0x09,0xee]
+; NDD-NEXT: orl %r15d, %esi # EVEX TO LEGACY Compression encoding: [0x44,0x09,0xfe]
+; NDD-NEXT: xorl %eax, %eax # encoding: [0x31,0xc0]
+; NDD-NEXT: movl %ebx, %edi # encoding: [0x89,0xdf]
+; NDD-NEXT: xorl %edx, %edx # encoding: [0x31,0xd2]
+; NDD-NEXT: xorl %ecx, %ecx # encoding: [0x31,0xc9]
+; NDD-NEXT: callq *%rax # encoding: [0xff,0xd0]
+; NDD-NEXT: xorl %eax, %eax # encoding: [0x31,0xc0]
+; NDD-NEXT: addq $8, %rsp # encoding: [0x48,0x83,0xc4,0x08]
+; NDD-NEXT: popq %rbx # encoding: [0x5b]
+; NDD-NEXT: popq %r12 # encoding: [0x41,0x5c]
+; NDD-NEXT: popq %r13 # encoding: [0x41,0x5d]
+; NDD-NEXT: popq %r14 # encoding: [0x41,0x5e]
+; NDD-NEXT: popq %r15 # encoding: [0x41,0x5f]
+; NDD-NEXT: popq %rbp # encoding: [0x5d]
+; NDD-NEXT: retq # encoding: [0xc3]
+;
+; IMMONLY-LABEL: two_address_no_subreg:
+; IMMONLY: # %bb.0: # %entry
+; IMMONLY-NEXT: pushq %rbp # encoding: [0x55]
+; IMMONLY-NEXT: pushq %r15 # encoding: [0x41,0x57]
+; IMMONLY-NEXT: pushq %r14 # encoding: [0x41,0x56]
+; IMMONLY-NEXT: pushq %r13 # encoding: [0x41,0x55]
+; IMMONLY-NEXT: pushq %r12 # encoding: [0x41,0x54]
+; IMMONLY-NEXT: pushq %rbx # encoding: [0x53]
+; IMMONLY-NEXT: pushq %rax # encoding: [0x50]
+; IMMONLY-NEXT: movl %edx, %ebp # encoding: [0x89,0xd5]
+; IMMONLY-NEXT: movq %rsi, %r14 # encoding: [0x49,0x89,0xf6]
+; IMMONLY-NEXT: movl %edi, %ebx # encoding: [0x89,0xfb]
+; IMMONLY-NEXT: movslq %edi, %rax # encoding: [0x48,0x63,0xc7]
+; IMMONLY-NEXT: imulq $715827883, %rax, %r13 # encoding: [0x4c,0x69,0xe8,0xab,0xaa,0xaa,0x2a]
+; IMMONLY-NEXT: # imm = 0x2AAAAAAB
+; IMMONLY-NEXT: shrq $63, %r13, %rax # encoding: [0x62,0xd4,0xfc,0x18,0xc1,0xed,0x3f]
+; IMMONLY-NEXT: movq %rax, (%rsp) # 8-byte Spill
+; IMMONLY-NEXT: # encoding: [0x48,0x89,0x04,0x24]
+; IMMONLY-NEXT: shrq $32, %r13 # EVEX TO LEGACY Compression encoding: [0x49,0xc1,0xed,0x20]
+; IMMONLY-NEXT: xorl %r15d, %r15d # encoding: [0x45,0x31,0xff]
+; IMMONLY-NEXT: movq %rsi, %rdi # encoding: [0x48,0x89,0xf7]
+; IMMONLY-NEXT: callq *%r15 # encoding: [0x41,0xff,0xd7]
+; IMMONLY-NEXT: movq %r14, %rdi # encoding: [0x4c,0x89,0xf7]
+; IMMONLY-NEXT: callq *%r15 # encoding: [0x41,0xff,0xd7]
+; IMMONLY-NEXT: movl $1, %r12d # encoding: [0x41,0xbc,0x01,0x00,0x00,0x00]
+; IMMONLY-NEXT: testb $1, %bpl # encoding: [0x40,0xf6,0xc5,0x01]
+; IMMONLY-NEXT: jne .LBB50_2 # encoding: [0x75,A]
+; IMMONLY-NEXT: # fixup A - offset: 1, value: .LBB50_2, kind: FK_PCRel_1
+; IMMONLY-NEXT: # %bb.1: # %bb2
+; IMMONLY-NEXT: xorl %r12d, %r12d # encoding: [0x45,0x31,0xe4]
+; IMMONLY-NEXT: .LBB50_2: # %bb1
+; IMMONLY-NEXT: movl %r13d, %esi # encoding: [0x44,0x89,0xee]
+; IMMONLY-NEXT: addl (%rsp), %esi # 4-byte Folded Reload
+; IMMONLY-NEXT: # encoding: [0x03,0x34,0x24]
+; IMMONLY-NEXT: imull %ebx, %ebx, %r13d # encoding: [0x62,0xf4,0x14,0x18,0xaf,0xdb]
+; IMMONLY-NEXT: testb $1, %bpl # encoding: [0x40,0xf6,0xc5,0x01]
+; IMMONLY-NEXT: jne .LBB50_4 # encoding: [0x75,A]
+; IMMONLY-NEXT: # fixup A - offset: 1, value: .LBB50_4, kind: FK_PCRel_1
+; IMMONLY-NEXT: # %bb.3: # %bb4
+; IMMONLY-NEXT: xorl %ebp, %ebp # encoding: [0x31,0xed]
+; IMMONLY-NEXT: movq %r14, %rdi # encoding: [0x4c,0x89,0xf7]
+; IMMONLY-NEXT: movl %esi, %r14d # encoding: [0x41,0x89,0xf6]
+; IMMONLY-NEXT: callq *%rbp # encoding: [0xff,0xd5]
+; IMMONLY-NEXT: incl %r12d, %r15d # encoding: [0x62,0xd4,0x04,0x18,0xff,0xc4]
+; IMMONLY-NEXT: xorl %edi, %edi # encoding: [0x31,0xff]
+; IMMONLY-NEXT: callq *%rbp # encoding: [0xff,0xd5]
+; IMMONLY-NEXT: movl %r14d, %esi # encoding: [0x44,0x89,0xf6]
+; IMMONLY-NEXT: .LBB50_4: # %bb3
+; IMMONLY-NEXT: orl %r13d, %esi # EVEX TO LEGACY Compression encoding: [0x44,0x09,0xee]
+; IMMONLY-NEXT: orl %r15d, %esi # EVEX TO LEGACY Compression encoding: [0x44,0x09,0xfe]
+; IMMONLY-NEXT: xorl %eax, %eax # encoding: [0x31,0xc0]
+; IMMONLY-NEXT: movl %ebx, %edi # encoding: [0x89,0xdf]
+; IMMONLY-NEXT: xorl %edx, %edx # encoding: [0x31,0xd2]
+; IMMONLY-NEXT: xorl %ecx, %ecx # encoding: [0x31,0xc9]
+; IMMONLY-NEXT: callq *%rax # encoding: [0xff,0xd0]
+; IMMONLY-NEXT: xorl %eax, %eax # encoding: [0x31,0xc0]
+; IMMONLY-NEXT: addq $8, %rsp # encoding: [0x48,0x83,0xc4,0x08]
+; IMMONLY-NEXT: popq %rbx # encoding: [0x5b]
+; IMMONLY-NEXT: popq %r12 # encoding: [0x41,0x5c]
+; IMMONLY-NEXT: popq %r13 # encoding: [0x41,0x5d]
+; IMMONLY-NEXT: popq %r14 # encoding: [0x41,0x5e]
+; IMMONLY-NEXT: popq %r15 # encoding: [0x41,0x5f]
+; IMMONLY-NEXT: popq %rbp # encoding: [0x5d]
+; IMMONLY-NEXT: retq # encoding: [0xc3]
+;
+; MEM-LABEL: two_address_no_subreg:
+; MEM: # %bb.0: # %entry
+; MEM-NEXT: pushq %rbp # encoding: [0x55]
+; MEM-NEXT: pushq %r15 # encoding: [0x41,0x57]
+; MEM-NEXT: pushq %r14 # encoding: [0x41,0x56]
+; MEM-NEXT: pushq %r13 # encoding: [0x41,0x55]
+; MEM-NEXT: pushq %r12 # encoding: [0x41,0x54]
+; MEM-NEXT: pushq %rbx # encoding: [0x53]
+; MEM-NEXT: pushq %rax # encoding: [0x50]
+; MEM-NEXT: movl %edx, %ebp # encoding: [0x89,0xd5]
+; MEM-NEXT: movq %rsi, %r14 # encoding: [0x49,0x89,0xf6]
+; MEM-NEXT: movl %edi, %ebx # encoding: [0x89,0xfb]
+; MEM-NEXT: movslq %edi, %rax # encoding: [0x48,0x63,0xc7]
+; MEM-NEXT: imulq $715827883, %rax, %r13 # encoding: [0x4c,0x69,0xe8,0xab,0xaa,0xaa,0x2a]
+; MEM-NEXT: # imm = 0x2AAAAAAB
+; MEM-NEXT: shrq $63, %r13, %rax # encoding: [0x62,0xd4,0xfc,0x18,0xc1,0xed,0x3f]
+; MEM-NEXT: movq %rax, (%rsp) # 8-byte Spill
+; MEM-NEXT: # encoding: [0x48,0x89,0x04,0x24]
+; MEM-NEXT: shrq $32, %r13 # EVEX TO LEGACY Compression encoding: [0x49,0xc1,0xed,0x20]
+; MEM-NEXT: xorl %r15d, %r15d # encoding: [0x45,0x31,0xff]
+; MEM-NEXT: movq %rsi, %rdi # encoding: [0x48,0x89,0xf7]
+; MEM-NEXT: callq *%r15 # encoding: [0x41,0xff,0xd7]
+; MEM-NEXT: movq %r14, %rdi # encoding: [0x4c,0x89,0xf7]
+; MEM-NEXT: callq *%r15 # encoding: [0x41,0xff,0xd7]
+; MEM-NEXT: movl $1, %r12d # encoding: [0x41,0xbc,0x01,0x00,0x00,0x00]
+; MEM-NEXT: testb $1, %bpl # encoding: [0x40,0xf6,0xc5,0x01]
+; MEM-NEXT: jne .LBB50_2 # encoding: [0x75,A]
+; MEM-NEXT: # fixup A - offset: 1, value: .LBB50_2, kind: FK_PCRel_1
+; MEM-NEXT: # %bb.1: # %bb2
+; MEM-NEXT: xorl %r12d, %r12d # encoding: [0x45,0x31,0xe4]
+; MEM-NEXT: .LBB50_2: # %bb1
+; MEM-NEXT: addl (%rsp), %r13d, %esi # 4-byte Folded Reload
+; MEM-NEXT: # encoding: [0x62,0x74,0x4c,0x18,0x03,0x2c,0x24]
+; MEM-NEXT: imull %ebx, %ebx, %r13d # encoding: [0x62,0xf4,0x14,0x18,0xaf,0xdb]
+; MEM-NEXT: testb $1, %bpl # encoding: [0x40,0xf6,0xc5,0x01]
+; MEM-NEXT: jne .LBB50_4 # encoding: [0x75,A]
+; MEM-NEXT: # fixup A - offset: 1, value: .LBB50_4, kind: FK_PCRel_1
+; MEM-NEXT: # %bb.3: # %bb4
+; MEM-NEXT: xorl %ebp, %ebp # encoding: [0x31,0xed]
+; MEM-NEXT: movq %r14, %rdi # encoding: [0x4c,0x89,0xf7]
+; MEM-NEXT: movl %esi, %r14d # encoding: [0x41,0x89,0xf6]
+; MEM-NEXT: callq *%rbp # encoding: [0xff,0xd5]
+; MEM-NEXT: incl %r12d, %r15d # encoding: [0x62,0xd4,0x04,0x18,0xff,0xc4]
+; MEM-NEXT: xorl %edi, %edi # encoding: [0x31,0xff]
+; MEM-NEXT: callq *%rbp # encoding: [0xff,0xd5]
+; MEM-NEXT: movl %r14d, %esi # encoding: [0x44,0x89,0xf6]
+; MEM-NEXT: .LBB50_4: # %bb3
+; MEM-NEXT: orl %r13d, %esi # EVEX TO LEGACY Compression encoding: [0x44,0x09,0xee]
+; MEM-NEXT: orl %r15d, %esi # EVEX TO LEGACY Compression encoding: [0x44,0x09,0xfe]
+; MEM-NEXT: xorl %eax, %eax # encoding: [0x31,0xc0]
+; MEM-NEXT: movl %ebx, %edi # encoding: [0x89,0xdf]
+; MEM-NEXT: xorl %edx, %edx # encoding: [0x31,0xd2]
+; MEM-NEXT: xorl %ecx, %ecx # encoding: [0x31,0xc9]
+; MEM-NEXT: callq *%rax # encoding: [0xff,0xd0]
+; MEM-NEXT: xorl %eax, %eax # encoding: [0x31,0xc0]
+; MEM-NEXT: addq $8, %rsp # encoding: [0x48,0x83,0xc4,0x08]
+; MEM-NEXT: popq %rbx # encoding: [0x5b]
+; MEM-NEXT: popq %r12 # encoding: [0x41,0x5c]
+; MEM-NEXT: popq %r13 # encoding: [0x41,0x5d]
+; MEM-NEXT: popq %r14 # encoding: [0x41,0x5e]
+; MEM-NEXT: popq %r15 # encoding: [0x41,0x5f]
+; MEM-NEXT: popq %rbp # encoding: [0x5d]
+; MEM-NEXT: retq # encoding: [0xc3]
+;
+; NF-LABEL: two_address_no_subreg:
+; NF: # %bb.0: # %entry
+; NF-NEXT: pushq %rbp # encoding: [0x55]
+; NF-NEXT: pushq %r15 # encoding: [0x41,0x57]
+; NF-NEXT: pushq %r14 # encoding: [0x41,0x56]
+; NF-NEXT: pushq %r13 # encoding: [0x41,0x55]
+; NF-NEXT: pushq %r12 # encoding: [0x41,0x54]
+; NF-NEXT: pushq %rbx # encoding: [0x53]
+; NF-NEXT: pushq %rax # encoding: [0x50]
+; NF-NEXT: movl %edx, %ebp # encoding: [0x89,0xd5]
+; NF-NEXT: movq %rsi, %r14 # encoding: [0x49,0x89,0xf6]
+; NF-NEXT: movl %edi, %ebx # encoding: [0x89,0xfb]
+; NF-NEXT: movslq %edi, %rax # encoding: [0x48,0x63,0xc7]
+; NF-NEXT: imulq $715827883, %rax, %r13 # encoding: [0x4c,0x69,0xe8,0xab,0xaa,0xaa,0x2a]
+; NF-NEXT: # imm = 0x2AAAAAAB
+; NF-NEXT: {nf} shrq $63, %r13, %rax # EVEX TO EVEX Compression encoding: [0x62,0xd4,0xfc,0x1c,0xc1,0xed,0x3f]
+; NF-NEXT: movq %rax, (%rsp) # 8-byte Spill
+; NF-NEXT: # encoding: [0x48,0x89,0x04,0x24]
+; NF-NEXT: shrq $32, %r13 # EVEX TO LEGACY Compression encoding: [0x49,0xc1,0xed,0x20]
+; NF-NEXT: xorl %r15d, %r15d # encoding: [0x45,0x31,0xff]
+; NF-NEXT: movq %rsi, %rdi # encoding: [0x48,0x89,0xf7]
+; NF-NEXT: callq *%r15 # encoding: [0x41,0xff,0xd7]
+; NF-NEXT: movq %r14, %rdi # encoding: [0x4c,0x89,0xf7]
+; NF-NEXT: callq *%r15 # encoding: [0x41,0xff,0xd7]
+; NF-NEXT: movl $1, %r12d # encoding: [0x41,0xbc,0x01,0x00,0x00,0x00]
+; NF-NEXT: testb $1, %bpl # encoding: [0x40,0xf6,0xc5,0x01]
+; NF-NEXT: jne .LBB50_2 # encoding: [0x75,A]
+; NF-NEXT: # fixup A - offset: 1, value: .LBB50_2, kind: FK_PCRel_1
+; NF-NEXT: # %bb.1: # %bb2
+; NF-NEXT: xorl %r12d, %r12d # encoding: [0x45,0x31,0xe4]
+; NF-NEXT: .LBB50_2: # %bb1
+; NF-NEXT: movl %r13d, %esi # encoding: [0x44,0x89,0xee]
+; NF-NEXT: addl (%rsp), %esi # 4-byte Folded Reload
+; NF-NEXT: # encoding: [0x03,0x34,0x24]
+; NF-NEXT: {nf} imull %ebx, %ebx, %r13d # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x14,0x1c,0xaf,0xdb]
+; NF-NEXT: testb $1, %bpl # encoding: [0x40,0xf6,0xc5,0x01]
+; NF-NEXT: jne .LBB50_4 # encoding: [0x75,A]
+; NF-NEXT: # fixup A - offset: 1, value: .LBB50_4, kind: FK_PCRel_1
+; NF-NEXT: # %bb.3: # %bb4
+; NF-NEXT: xorl %ebp, %ebp # encoding: [0x31,0xed]
+; NF-NEXT: movq %r14, %rdi # encoding: [0x4c,0x89,0xf7]
+; NF-NEXT: movl %esi, %r14d # encoding: [0x41,0x89,0xf6]
+; NF-NEXT: callq *%rbp # encoding: [0xff,0xd5]
+; NF-NEXT: {nf} incl %r12d, %r15d # EVEX TO EVEX Compression encoding: [0x62,0xd4,0x04,0x1c,0xff,0xc4]
+; NF-NEXT: xorl %edi, %edi # encoding: [0x31,0xff]
+; NF-NEXT: callq *%rbp # encoding: [0xff,0xd5]
+; NF-NEXT: movl %r14d, %esi # encoding: [0x44,0x89,0xf6]
+; NF-NEXT: .LBB50_4: # %bb3
+; NF-NEXT: orl %r13d, %esi # EVEX TO LEGACY Compression encoding: [0x44,0x09,0xee]
+; NF-NEXT: orl %r15d, %esi # EVEX TO LEGACY Compression encoding: [0x44,0x09,0xfe]
+; NF-NEXT: xorl %eax, %eax # encoding: [0x31,0xc0]
+; NF-NEXT: movl %ebx, %edi # encoding: [0x89,0xdf]
+; NF-NEXT: xorl %edx, %edx # encoding: [0x31,0xd2]
+; NF-NEXT: xorl %ecx, %ecx # encoding: [0x31,0xc9]
+; NF-NEXT: callq *%rax # encoding: [0xff,0xd0]
+; NF-NEXT: xorl %eax, %eax # encoding: [0x31,0xc0]
+; NF-NEXT: addq $8, %rsp # encoding: [0x48,0x83,0xc4,0x08]
+; NF-NEXT: popq %rbx # encoding: [0x5b]
+; NF-NEXT: popq %r12 # encoding: [0x41,0x5c]
+; NF-NEXT: popq %r13 # encoding: [0x41,0x5d]
+; NF-NEXT: popq %r14 # encoding: [0x41,0x5e]
+; NF-NEXT: popq %r15 # encoding: [0x41,0x5f]
+; NF-NEXT: popq %rbp # encoding: [0x5d]
+; NF-NEXT: retq # encoding: [0xc3]
+entry:
+ %v0 = sdiv i32 %arg0, 6
+ %v1 = tail call i32 null(ptr %arg1)
+ %v2 = tail call i32 null(ptr %arg1)
+ br i1 %arg2, label %bb1, label %bb2
+
+bb2: ; preds = %entry
+ br label %bb1
+
+bb1: ; preds = %bb2, %entry
+ %v3 = phi i32 [ 0, %bb2 ], [ 1, %entry ]
+ %v4 = mul i32 %arg0, %arg0
+ br i1 %arg2, label %bb3, label %bb4
+
+bb4: ; preds = %bb1
+ %v5 = tail call i32 null(ptr %arg1)
+ %v6 = add i32 %v3, 1
+ %v7 = tail call i32 null(ptr null)
+ br label %bb3
+
+bb3: ; preds = %bb4, %bb1
+ %v8 = phi i32 [ %v6, %bb4 ], [ 0, %bb1 ]
+ %v9 = or i32 %v0, %v4
+ %v10 = or i32 %v9, %v8
+ tail call void null(i32 %arg0, i32 %v10, i32 0, i32 0)
+ ret i32 0
+}
``````````
</details>
https://github.com/llvm/llvm-project/pull/191765
More information about the llvm-commits
mailing list