Skip to content

Commit 02c943a

Browse files
authored
Revert "[NVPTX] Support copysign PTX instruction (#107800)" (#108066)
This reverts commit b0d2411. Reverting because the original commit misses case of copysign from a constant.
1 parent 22067a8 commit 02c943a

File tree

4 files changed

+15
-61
lines changed

4 files changed

+15
-61
lines changed

llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -838,8 +838,8 @@ NVPTXTargetLowering::NVPTXTargetLowering(const NVPTXTargetMachine &TM,
838838
setOperationAction(ISD::FCOPYSIGN, MVT::v2f16, Expand);
839839
setOperationAction(ISD::FCOPYSIGN, MVT::bf16, Expand);
840840
setOperationAction(ISD::FCOPYSIGN, MVT::v2bf16, Expand);
841-
setOperationAction(ISD::FCOPYSIGN, MVT::f32, Legal);
842-
setOperationAction(ISD::FCOPYSIGN, MVT::f64, Legal);
841+
setOperationAction(ISD::FCOPYSIGN, MVT::f32, Expand);
842+
setOperationAction(ISD::FCOPYSIGN, MVT::f64, Expand);
843843

844844
// These map to corresponding instructions for f32/f64. f16 must be
845845
// promoted to f32. v2f16 is expanded to f16, which is then promoted

llvm/lib/Target/NVPTX/NVPTXIntrinsics.td

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -977,20 +977,6 @@ def INT_NVVM_FABS_F : F_MATH_1<"abs.f32 \t$dst, $src0;", Float32Regs,
977977
def INT_NVVM_FABS_D : F_MATH_1<"abs.f64 \t$dst, $src0;", Float64Regs,
978978
Float64Regs, int_nvvm_fabs_d>;
979979

980-
//
981-
// copysign
982-
//
983-
984-
def COPYSIGN_F :
985-
NVPTXInst<(outs Float32Regs:$dst), (ins Float32Regs:$src0, Float32Regs:$src1),
986-
"copysign.f32 \t$dst, $src0, $src1;",
987-
[(set Float32Regs:$dst, (fcopysign Float32Regs:$src1, Float32Regs:$src0))]>;
988-
989-
def COPYSIGN_D :
990-
NVPTXInst<(outs Float64Regs:$dst), (ins Float64Regs:$src0, Float64Regs:$src1),
991-
"copysign.f64 \t$dst, $src0, $src1;",
992-
[(set Float64Regs:$dst, (fcopysign Float64Regs:$src1, Float64Regs:$src0))]>;
993-
994980
//
995981
// Abs, Neg bf16, bf16x2
996982
//

llvm/test/CodeGen/NVPTX/copysign.ll

Lines changed: 0 additions & 39 deletions
This file was deleted.

llvm/test/CodeGen/NVPTX/math-intrins.ll

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,9 @@ define double @round_double(double %a) {
195195
; check the use of 0.5 to implement round
196196
; CHECK-LABEL: round_double(
197197
; CHECK: {
198-
; CHECK-NEXT: .reg .pred %p<3>;
199-
; CHECK-NEXT: .reg .f64 %fd<8>;
198+
; CHECK-NEXT: .reg .pred %p<4>;
199+
; CHECK-NEXT: .reg .b64 %rd<4>;
200+
; CHECK-NEXT: .reg .f64 %fd<10>;
200201
; CHECK-EMPTY:
201202
; CHECK-NEXT: // %bb.0:
202203
; CHECK-NEXT: ld.param.f64 %fd1, [round_double_param_0];
@@ -205,10 +206,16 @@ define double @round_double(double %a) {
205206
; CHECK-NEXT: add.rn.f64 %fd3, %fd2, 0d3FE0000000000000;
206207
; CHECK-NEXT: cvt.rzi.f64.f64 %fd4, %fd3;
207208
; CHECK-NEXT: selp.f64 %fd5, 0d0000000000000000, %fd4, %p1;
208-
; CHECK-NEXT: copysign.f64 %fd6, %fd1, %fd5;
209-
; CHECK-NEXT: setp.gt.f64 %p2, %fd2, 0d4330000000000000;
210-
; CHECK-NEXT: selp.f64 %fd7, %fd1, %fd6, %p2;
211-
; CHECK-NEXT: st.param.f64 [func_retval0+0], %fd7;
209+
; CHECK-NEXT: abs.f64 %fd6, %fd5;
210+
; CHECK-NEXT: neg.f64 %fd7, %fd6;
211+
; CHECK-NEXT: mov.b64 %rd1, %fd1;
212+
; CHECK-NEXT: shr.u64 %rd2, %rd1, 63;
213+
; CHECK-NEXT: and.b64 %rd3, %rd2, 1;
214+
; CHECK-NEXT: setp.eq.b64 %p2, %rd3, 1;
215+
; CHECK-NEXT: selp.f64 %fd8, %fd7, %fd6, %p2;
216+
; CHECK-NEXT: setp.gt.f64 %p3, %fd2, 0d4330000000000000;
217+
; CHECK-NEXT: selp.f64 %fd9, %fd1, %fd8, %p3;
218+
; CHECK-NEXT: st.param.f64 [func_retval0+0], %fd9;
212219
; CHECK-NEXT: ret;
213220
%b = call double @llvm.round.f64(double %a)
214221
ret double %b

0 commit comments

Comments
 (0)