[PATCH] D139550: [DAGCombine] Fix always true condition in combineShiftToMULH
Juan Manuel Martinez CaamaƱo via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 12 07:59:32 PST 2022
jmmartinez added a comment.
In D139550#3988466 <https://reviews.llvm.org/D139550#3988466>, @RKSimon wrote:
> In D139550#3988343 <https://reviews.llvm.org/D139550#3988343>, @jmmartinez wrote:
>
>> Or you mean having a srl and a sra in the same test-case?
>
> Yes this is the test case I think we need to ensure we have a test case that has different behaviour for the if statement - if you precommit that srl+sra test then and rebase this patch the test codegen should change to match.
I thought the same, but I cannot seem to trigger the bug (my guess is that it's getting saved by some other pattern).
For this test case, the generated assembly is the same before and after the fix.
define i32 @mul_one_bit_hi_hi_u32_asr(i32 %arg, i32 %arg1, i32* %arg2) {
; CHECK-LABEL: mul_one_bit_hi_hi_u32_asr:
; CHECK: ; %bb.0: ; %bb
; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; CHECK-NEXT: v_mul_hi_u32 v4, v1, v0
; CHECK-NEXT: v_ashrrev_i64 v[0:1], 33, v[3:4]
; CHECK-NEXT: flat_store_dword v[2:3], v4
; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; CHECK-NEXT: s_setpc_b64 s[30:31]
bb:
%i = zext i32 %arg to i64
%i3 = zext i32 %arg1 to i64
%i4 = mul nsw i64 %i3, %i
%i5 = lshr i64 %i4, 32
%i6 = trunc i64 %i5 to i32
store i32 %i6, i32* %arg2, align 4
%i7 = ashr i64 %i4, 33
%i8 = trunc i64 %i7 to i32
ret i32 %i8
}
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D139550/new/
https://reviews.llvm.org/D139550
More information about the llvm-commits
mailing list