@@ -2301,19 +2301,20 @@ struct AMDGPUMakeDmaBaseLowering
23012301 Value castForGlobalAddr =
23022302 LLVM::PtrToIntOp::create (rewriter, loc, i64 , globalPtr);
23032303
2304- Value mask = createI64Constant (rewriter, loc, ( 1ull << 57 ) - 1 );
2305- Value first57BitsOfGlobalAddr =
2306- LLVM::AndOp::create (rewriter, loc, castForGlobalAddr, mask);
2307- Value shift = LLVM::LShrOp::create (rewriter, loc, first57BitsOfGlobalAddr ,
2304+ Value lowHalf =
2305+ LLVM::TruncOp::create (rewriter, loc, i32 , castForGlobalAddr);
2306+
2307+ Value shift = LLVM::LShrOp::create (rewriter, loc, castForGlobalAddr ,
23082308 createI64Constant (rewriter, loc, 32 ));
23092309
2310- Value lowHalf =
2311- LLVM::TruncOp::create (rewriter, loc, i32 , first57BitsOfGlobalAddr);
23122310 Value highHalf = LLVM::TruncOp::create (rewriter, loc, i32 , shift);
23132311
2312+ Value mask = createI32Constant (rewriter, loc, (1ull << 25 ) - 1 );
2313+ Value validHighHalf = LLVM::AndOp::create (rewriter, loc, highHalf, mask);
2314+
23142315 Value typeField = createI32Constant (rewriter, loc, 2 << 30 );
23152316 Value highHalfPlusType =
2316- LLVM::OrOp::create (rewriter, loc, highHalf , typeField);
2317+ LLVM::OrOp::create (rewriter, loc, validHighHalf , typeField);
23172318
23182319 Value c0 = createI32Constant (rewriter, loc, 0 );
23192320 Value c1 = createI32Constant (rewriter, loc, 1 );
0 commit comments