mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-08 03:26:34 +00:00
[PowerPC] Disable direct moves for extractelement and bitcast in 32-bit mode
This patch corresponds to review: http://reviews.llvm.org/D17711 It disables direct moves on these operations in 32-bit mode since the patterns assume 64-bit registers. The final patch is slightly different from the Phabricator review as the bitcast operations needed to be disabled in 32-bit mode as well. This fixes PR26617. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264282 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
dbe22520b6
commit
c4a24ae263
@ -255,7 +255,7 @@ PPCTargetLowering::PPCTargetLowering(const PPCTargetMachine &TM,
|
||||
setOperationAction(ISD::SINT_TO_FP, MVT::i32, Expand);
|
||||
setOperationAction(ISD::UINT_TO_FP, MVT::i32, Expand);
|
||||
|
||||
if (Subtarget.hasDirectMove()) {
|
||||
if (Subtarget.hasDirectMove() && isPPC64) {
|
||||
setOperationAction(ISD::BITCAST, MVT::f32, Legal);
|
||||
setOperationAction(ISD::BITCAST, MVT::i32, Legal);
|
||||
setOperationAction(ISD::BITCAST, MVT::i64, Legal);
|
||||
@ -557,7 +557,7 @@ PPCTargetLowering::PPCTargetLowering(const PPCTargetMachine &TM,
|
||||
setOperationAction(ISD::SCALAR_TO_VECTOR, MVT::v4f32, Legal);
|
||||
setOperationAction(ISD::EXTRACT_VECTOR_ELT, MVT::v4f32, Legal);
|
||||
}
|
||||
if (Subtarget.hasDirectMove()) {
|
||||
if (Subtarget.hasDirectMove() && isPPC64) {
|
||||
setOperationAction(ISD::SCALAR_TO_VECTOR, MVT::v16i8, Legal);
|
||||
setOperationAction(ISD::SCALAR_TO_VECTOR, MVT::v8i16, Legal);
|
||||
setOperationAction(ISD::SCALAR_TO_VECTOR, MVT::v4i32, Legal);
|
||||
|
15
test/CodeGen/PowerPC/pr26617.ll
Normal file
15
test/CodeGen/PowerPC/pr26617.ll
Normal file
@ -0,0 +1,15 @@
|
||||
; RUN: llc -mcpu=pwr8 -mtriple=powerpc-unknown-unknown < %s | FileCheck %s
|
||||
define i32 @test(<4 x i32> %v, i32 %elem) #0 {
|
||||
entry:
|
||||
%vecext = extractelement <4 x i32> %v, i32 %elem
|
||||
ret i32 %vecext
|
||||
}
|
||||
; CHECK: stxvw4x 34,
|
||||
; CHECK: lwzx 3,
|
||||
|
||||
define float @test2(i32 signext %a) {
|
||||
entry:
|
||||
%conv = bitcast i32 %a to float
|
||||
ret float %conv
|
||||
}
|
||||
; CHECK-NOT: mtvsr
|
Loading…
x
Reference in New Issue
Block a user