Skip to content

Commit 8265e8f

Browse files
committedJun 26, 2019
[PowerPC] Mark FCOPYSIGN legal for FP vectors
This was just an omission in the back end. We have had the instructions for both single and double precision for a few HW generations, but never got around to legalizing these. Differential revision: https://reviews.llvm.org/D63634 llvm-svn: 364373
1 parent 174b4ff commit 8265e8f

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed
 

‎llvm/lib/Target/PowerPC/PPCISelLowering.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -839,6 +839,8 @@ PPCTargetLowering::PPCTargetLowering(const PPCTargetMachine &TM,
839839
setOperationAction(ISD::FNEG, MVT::v2f64, Legal);
840840
setOperationAction(ISD::FABS, MVT::v4f32, Legal);
841841
setOperationAction(ISD::FABS, MVT::v2f64, Legal);
842+
setOperationAction(ISD::FCOPYSIGN, MVT::v4f32, Legal);
843+
setOperationAction(ISD::FCOPYSIGN, MVT::v2f64, Legal);
842844

843845
if (Subtarget.hasDirectMove())
844846
setOperationAction(ISD::BUILD_VECTOR, MVT::v2i64, Custom);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2+
; RUN: llc -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
3+
; RUN: -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s
4+
; RUN: llc -mcpu=pwr7 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
5+
; RUN: -mtriple=powerpc64-unknown-unknown < %s | FileCheck %s
6+
define dso_local <2 x double> @test(<2 x double> %a, <2 x double> %b) local_unnamed_addr {
7+
; CHECK-LABEL: test:
8+
; CHECK: # %bb.0: # %entry
9+
; CHECK-NEXT: xvcpsgndp v2, v3, v2
10+
; CHECK-NEXT: blr
11+
entry:
12+
%0 = tail call <2 x double> @llvm.copysign.v2f64(<2 x double> %a, <2 x double> %b)
13+
ret <2 x double> %0
14+
}
15+
16+
define dso_local <4 x float> @test2(<4 x float> %a, <4 x float> %b) local_unnamed_addr {
17+
; CHECK-LABEL: test2:
18+
; CHECK: # %bb.0: # %entry
19+
; CHECK-NEXT: xvcpsgnsp v2, v3, v2
20+
; CHECK-NEXT: blr
21+
entry:
22+
%0 = tail call <4 x float> @llvm.copysign.v4f32(<4 x float> %a, <4 x float> %b)
23+
ret <4 x float> %0
24+
}
25+
26+
declare <2 x double> @llvm.copysign.v2f64(<2 x double>, <2 x double>)
27+
declare <4 x float> @llvm.copysign.v4f32(<4 x float>, <4 x float>)

0 commit comments

Comments
 (0)
Please sign in to comment.