The code for handling UDIVREM8_ZEXT_HREG with a 64-bit result type has been dead since r256924.
Though I'm not entirely sure it should be dead. The output from the test case from that revision shows an extra movzx that we could get rid of if this code was live. So I'm posting this patch to start a conversation
define i64 @pr25754(i8 %a, i8 %c) { ; X32-LABEL: pr25754: ; X32: # BB#0: ; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax ; X32-NEXT: # kill: %EAX<def> %EAX<kill> %AX<def> ; X32-NEXT: divb {{[0-9]+}}(%esp) ; X32-NEXT: movzbl %ah, %ecx ; X32-NEXT: movzbl %al, %eax ; X32-NEXT: addl %ecx, %eax ; X32-NEXT: xorl %edx, %edx ; X32-NEXT: retl ; ; X64-LABEL: pr25754: ; X64: # BB#0: ; X64-NEXT: movzbl %dil, %eax ; X64-NEXT: # kill: %EAX<def> %EAX<kill> %AX<def> ; X64-NEXT: divb %sil ; X64-NEXT: movzbl %ah, %ecx ; X64-NEXT: movzbl %cl, %ecx ; X64-NEXT: movzbl %al, %eax ; X64-NEXT: addq %rcx, %rax ; X64-NEXT: retq %r1 = urem i8 %a, %c %d1 = udiv i8 %a, %c %r2 = zext i8 %r1 to i64 %d2 = zext i8 %d1 to i64 %ret = add i64 %r2, %d2 ret i64 %ret }