summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Ivchenko <alexander.ivchenko@intel.com>2018-02-08 22:40:31 +0000
committerAlexander Ivchenko <alexander.ivchenko@intel.com>2018-02-08 22:40:31 +0000
commita85c4fc0291613b4ca0f60850a73c46dcaea69ae (patch)
tree2912a4aaf453f10842f09287c22fc5c20ca96a19
parentaf84ce162c0486039c6ef6ef5e0275a3d48e65ae (diff)
downloadbcm5719-llvm-a85c4fc0291613b4ca0f60850a73c46dcaea69ae.tar.gz
bcm5719-llvm-a85c4fc0291613b4ca0f60850a73c46dcaea69ae.zip
[GlobalIsel][X86] Making {G_IMPLICIT_DEF, s128} legal
The patch is a split from D42287 and is related to fixing failures after https://reviews.llvm.org/D37775 Reviewed By: qcolombet Differential Revision: https://reviews.llvm.org/D42287 llvm-svn: 324664
-rw-r--r--llvm/lib/Target/X86/X86LegalizerInfo.cpp3
-rw-r--r--llvm/test/CodeGen/X86/GlobalISel/select-undef.mir22
2 files changed, 25 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86LegalizerInfo.cpp b/llvm/lib/Target/X86/X86LegalizerInfo.cpp
index 53548194ab9..a6a9d08278d 100644
--- a/llvm/lib/Target/X86/X86LegalizerInfo.cpp
+++ b/llvm/lib/Target/X86/X86LegalizerInfo.cpp
@@ -163,6 +163,9 @@ void X86LegalizerInfo::setLegalizerInfo64bit() {
const LLT s128 = LLT::scalar(128);
setAction({G_IMPLICIT_DEF, s64}, Legal);
+ // Need to have that, as tryFoldImplicitDef will create this pattern:
+ // s128 = EXTEND (G_IMPLICIT_DEF s32/s64) -> s128 = G_IMPLICIT_DEF
+ setAction({G_IMPLICIT_DEF, s128}, Legal);
setAction({G_PHI, s64}, Legal);
diff --git a/llvm/test/CodeGen/X86/GlobalISel/select-undef.mir b/llvm/test/CodeGen/X86/GlobalISel/select-undef.mir
index 92fa14efdb5..62aa09011e2 100644
--- a/llvm/test/CodeGen/X86/GlobalISel/select-undef.mir
+++ b/llvm/test/CodeGen/X86/GlobalISel/select-undef.mir
@@ -11,6 +11,9 @@
ret i8 %r
}
+ define float @test3() {
+ ret float undef
+ }
...
---
name: test
@@ -64,3 +67,22 @@ body: |
RET 0, implicit $al
...
+---
+name: test3
+alignment: 4
+legalized: true
+regBankSelected: true
+tracksRegLiveness: true
+registers:
+ - { id: 1, class: vecr }
+body: |
+ bb.1 (%ir-block.0):
+ ; ALL-LABEL: name: test3
+ ; ALL: [[DEF:%[0-9]+]]:vr128 = IMPLICIT_DEF
+ ; ALL: $xmm0 = COPY [[DEF]]
+ ; ALL: RET 0, implicit $xmm0
+ %1:vecr(s128) = G_IMPLICIT_DEF
+ $xmm0 = COPY %1:vecr(s128)
+ RET 0, implicit $xmm0
+
+...
OpenPOWER on IntegriCloud