[PATCH] D65886: [Mips][Codegen] Fix fast-isel mixing of FGR64 and AFGR64 registers
Simon Atanasyan via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 9 05:02:20 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rL368433: [Mips][Codegen] Fix fast-isel mixing of FGR64 and AFGR64 registers (authored by atanasyan, committed by ).
Herald added a subscriber: jrtc27.
Changed prior to commit:
https://reviews.llvm.org/D65886?vs=213901&id=214359#toc
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D65886/new/
https://reviews.llvm.org/D65886
Files:
llvm/trunk/lib/Target/Mips/MipsFastISel.cpp
llvm/trunk/test/CodeGen/Mips/copy-fp64.ll
Index: llvm/trunk/lib/Target/Mips/MipsFastISel.cpp
===================================================================
--- llvm/trunk/lib/Target/Mips/MipsFastISel.cpp
+++ llvm/trunk/lib/Target/Mips/MipsFastISel.cpp
@@ -1162,14 +1162,20 @@
if (ArgVT == MVT::f32) {
VA.convertToReg(Mips::F12);
} else if (ArgVT == MVT::f64) {
- VA.convertToReg(Mips::D6);
+ if (Subtarget->isFP64bit())
+ VA.convertToReg(Mips::D6_64);
+ else
+ VA.convertToReg(Mips::D6);
}
} else if (i == 1) {
if ((firstMVT == MVT::f32) || (firstMVT == MVT::f64)) {
if (ArgVT == MVT::f32) {
VA.convertToReg(Mips::F14);
} else if (ArgVT == MVT::f64) {
- VA.convertToReg(Mips::D7);
+ if (Subtarget->isFP64bit())
+ VA.convertToReg(Mips::D7_64);
+ else
+ VA.convertToReg(Mips::D7);
}
}
}
Index: llvm/trunk/test/CodeGen/Mips/copy-fp64.ll
===================================================================
--- llvm/trunk/test/CodeGen/Mips/copy-fp64.ll
+++ llvm/trunk/test/CodeGen/Mips/copy-fp64.ll
@@ -0,0 +1,29 @@
+; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
+
+; RUN: llc -march=mips -mcpu=mips32r2 -O0 -relocation-model=pic -mattr=+fp64 \
+; RUN: -stop-before=prologepilog %s -o - | FileCheck %s
+
+declare double @bar(double)
+
+define double @foo(double %self) {
+ ; CHECK-LABEL: name: foo
+ ; CHECK: bb.0.start:
+ ; CHECK: successors: %bb.1(0x80000000)
+ ; CHECK: liveins: $d12_64, $t9, $v0
+ ; CHECK: renamable $at = ADDu killed $v0, killed $t9
+ ; CHECK: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp
+ ; CHECK: $d6_64 = COPY killed renamable $d12_64
+ ; CHECK: renamable $t9 = LW killed renamable $at, target-flags(mips-got) @bar
+ ; CHECK: dead $ra = JALR killed $t9, csr_o32_fp64, target-flags(mips-jalr) <mcsymbol bar>, implicit-def dead $ra, implicit killed $d6_64, implicit-def $d0_64
+ ; CHECK: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp
+ ; CHECK: SDC164 killed $d0_64, %stack.0, 0 :: (store 8 into %stack.0)
+ ; CHECK: bb.1.bb1:
+ ; CHECK: $d0_64 = LDC164 %stack.0, 0 :: (load 8 from %stack.0)
+ ; CHECK: RetRA implicit killed $d0_64
+start:
+ %0 = call double @bar(double %self)
+ br label %bb1
+
+bb1:
+ ret double %0
+}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D65886.214359.patch
Type: text/x-patch
Size: 2374 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190809/5c2ba4d1/attachment.bin>
More information about the llvm-commits
mailing list