[llvm] [NVPTX] Use sink registers instead of temp registers where possible. (PR #134957)
Justin Lebar via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 10 00:08:03 PDT 2025
================
@@ -3020,27 +3020,46 @@ let hasSideEffects = false in {
"{{ .reg .b32 tmp; mov.b64 {$low, tmp}, $s; }}",
[]>;
+ // PTX 7.1 lets you avoid a temp register and just use _ as a "sink" for the
+ // unused high/low part.
+ def I32toI16H_ptx71 : NVPTXInst<(outs Int16Regs:$high),
+ (ins Int32Regs:$s),
+ "mov.b32 \t{{_, $high}}, $s;",
+ []>, Requires<[hasPTX<71>]>;
+ def I32toI16L_ptx71 : NVPTXInst<(outs Int16Regs:$low),
+ (ins Int32Regs:$s),
+ "mov.b32 \t{{$low, _}}, $s;",
+ []>, Requires<[hasPTX<71>]>;
+ def I64toI32H_ptx71 : NVPTXInst<(outs Int32Regs:$high),
+ (ins Int64Regs:$s),
+ "mov.b64 \t{{_, $high}}, $s;",
+ []>, Requires<[hasPTX<71>]>;
+ def I64toI32L_ptx71 : NVPTXInst<(outs Int32Regs:$low),
+ (ins Int64Regs:$s),
+ "mov.b64 \t{{$low, _}}, $s;",
+ []>, Requires<[hasPTX<71>]>;
----------------
jlebar wrote:
done, thanks!
https://github.com/llvm/llvm-project/pull/134957
More information about the llvm-commits
mailing list