[llvm] 2143b7c - [PowerPC]perform bitcast lowering only at 64 bit
Chen Zheng via llvm-commits
llvm-commits at lists.llvm.org
Mon May 20 00:17:29 PDT 2024
Author: Chen Zheng
Date: 2024-05-20T03:17:21-04:00
New Revision: 2143b7cd7d184b3f3bc4a997ea925ab7574c93f9
URL: https://github.com/llvm/llvm-project/commit/2143b7cd7d184b3f3bc4a997ea925ab7574c93f9
DIFF: https://github.com/llvm/llvm-project/commit/2143b7cd7d184b3f3bc4a997ea925ab7574c93f9.diff
LOG: [PowerPC]perform bitcast lowering only at 64 bit
Perform bitcast lowering requires 64-bit to be native supported,
However this is not true on 32-bit targets. Explicitly require
64-bit target.
Fixes #92233
Added:
llvm/test/CodeGen/PowerPC/pr92233.ll
Modified:
llvm/lib/Target/PowerPC/PPCISelLowering.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
index ad86c393ba791..8450ce9e0e3b3 100644
--- a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+++ b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
@@ -9338,7 +9338,7 @@ SDValue PPCTargetLowering::LowerBITCAST(SDValue Op, SelectionDAG &DAG) const {
if ((Op.getValueType() != MVT::f128) ||
(Op0.getOpcode() != ISD::BUILD_PAIR) ||
(Op0.getOperand(0).getValueType() != MVT::i64) ||
- (Op0.getOperand(1).getValueType() != MVT::i64))
+ (Op0.getOperand(1).getValueType() != MVT::i64) || !Subtarget.isPPC64())
return SDValue();
return DAG.getNode(PPCISD::BUILD_FP128, dl, MVT::f128, Op0.getOperand(0),
diff --git a/llvm/test/CodeGen/PowerPC/pr92233.ll b/llvm/test/CodeGen/PowerPC/pr92233.ll
new file mode 100644
index 0000000000000..858d665909fe8
--- /dev/null
+++ b/llvm/test/CodeGen/PowerPC/pr92233.ll
@@ -0,0 +1,19 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
+; RUN: llc -mcpu=pwr9 -verify-machineinstrs < %s -mtriple=powerpc-unknown-linux-gnu | FileCheck %s
+
+define internal fp128 @f(i128 %v) nounwind {
+; CHECK-LABEL: f:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: stwu 1, -32(1)
+; CHECK-NEXT: stw 6, 28(1)
+; CHECK-NEXT: stw 5, 24(1)
+; CHECK-NEXT: stw 4, 20(1)
+; CHECK-NEXT: stw 3, 16(1)
+; CHECK-NEXT: lxv 34, 16(1)
+; CHECK-NEXT: addi 1, 1, 32
+; CHECK-NEXT: blr
+entry:
+ %cast = bitcast i128 %v to fp128
+ ret fp128 %cast
+}
+
More information about the llvm-commits
mailing list