diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -6197,9 +6197,9 @@ std::swap(N1, N2); } else { switch (Opcode) { - case ISD::SIGN_EXTEND_INREG: case ISD::SUB: return getUNDEF(VT); // fold op(undef, arg2) -> undef + case ISD::SIGN_EXTEND_INREG: case ISD::UDIV: case ISD::SDIV: case ISD::UREM: diff --git a/llvm/test/CodeGen/AArch64/pr55178.ll b/llvm/test/CodeGen/AArch64/pr55178.ll --- a/llvm/test/CodeGen/AArch64/pr55178.ll +++ b/llvm/test/CodeGen/AArch64/pr55178.ll @@ -10,8 +10,9 @@ ; CHECK-NEXT: mov w8, #-113 ; CHECK-NEXT: // kill: def $w0 killed $w0 def $x0 ; CHECK-NEXT: lsl w8, w8, w0 -; CHECK-NEXT: cmp w8, w8, sxtb -; CHECK-NEXT: cset w0, lt +; CHECK-NEXT: sxtb w8, w8 +; CHECK-NEXT: cmp w8, #0 +; CHECK-NEXT: cset w0, gt ; CHECK-NEXT: ret %1 = shl i8 -113, %X %cmp = icmp slt i8 undef, %1 diff --git a/llvm/test/CodeGen/SystemZ/regcoal_remat_empty_subrange.ll b/llvm/test/CodeGen/SystemZ/regcoal_remat_empty_subrange.ll --- a/llvm/test/CodeGen/SystemZ/regcoal_remat_empty_subrange.ll +++ b/llvm/test/CodeGen/SystemZ/regcoal_remat_empty_subrange.ll @@ -14,17 +14,15 @@ define void @main() { ; CHECK-LABEL: main: ; CHECK: # %bb.0: +; CHECK-NEXT: larl %r2, g_151 ; CHECK-NEXT: lhi %r0, 1 -; CHECK-NEXT: larl %r1, g_151 -; CHECK-NEXT: lghi %r3, 0 -; CHECK-NEXT: chi %r0, 0 -; CHECK-NEXT: locghile %r3, 1 -; CHECK-NEXT: o %r0, 0(%r1) -; CHECK-NEXT: dsgfr %r2, %r0 -; CHECK-NEXT: larl %r1, g_222 -; CHECK-NEXT: lghi %r5, 0 -; CHECK-NEXT: stgrl %r2, g_39 -; CHECK-NEXT: stc %r5, 19(%r1) +; CHECK-NEXT: o %r0, 0(%r2) +; CHECK-NEXT: lghi %r1, 1 +; CHECK-NEXT: larl %r2, g_222 +; CHECK-NEXT: dsgfr %r0, %r0 +; CHECK-NEXT: lghi %r1, 0 +; CHECK-NEXT: stgrl %r0, g_39 +; CHECK-NEXT: stc %r1, 19(%r2) ; CHECK-NEXT: br %r14 %tmp = load i32, i32* @g_151, align 4 %tmp3 = or i32 %tmp, 1