summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorUlrich Weigand <ulrich.weigand@de.ibm.com>2019-06-26 17:19:12 +0000
committerUlrich Weigand <ulrich.weigand@de.ibm.com>2019-06-26 17:19:12 +0000
commit4c86dd903265be9fd72a5ebf7c568a15f3cad0a6 (patch)
treefac06f3e4eb8ee5d8c60ed634d66888a79da325a /llvm/lib
parent03b2e2d9861efdcf6fd033b882d8b7b738428a49 (diff)
downloadbcm5719-llvm-4c86dd903265be9fd72a5ebf7c568a15f3cad0a6.tar.gz
bcm5719-llvm-4c86dd903265be9fd72a5ebf7c568a15f3cad0a6.zip
Allow matching extend-from-memory with strict FP nodes
This implements a small enhancement to https://reviews.llvm.org/D55506 Specifically, while we were able to match strict FP nodes for floating-point extend operations with a register as source, this did not work for operations with memory as source. That is because from regular operations, this is represented as a combined "extload" node (which is a variant of a load SD node); but there is no equivalent using a strict FP operation. However, it turns out that even in the absence of an extload node, we can still just match the operations explicitly, e.g. (strict_fpextend (f32 (load node:$ptr)) This patch implements that method to match the LDEB/LXEB/LXDB SystemZ instructions even when the extend uses a strict-FP node. llvm-svn: 364450
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/SystemZ/SystemZInstrFP.td10
1 files changed, 5 insertions, 5 deletions
diff --git a/llvm/lib/Target/SystemZ/SystemZInstrFP.td b/llvm/lib/Target/SystemZ/SystemZInstrFP.td
index 55b178945b8..19c7ec58ed3 100644
--- a/llvm/lib/Target/SystemZ/SystemZInstrFP.td
+++ b/llvm/lib/Target/SystemZ/SystemZInstrFP.td
@@ -208,14 +208,14 @@ let Predicates = [FeatureNoVectorEnhancements1] in {
// Extend memory floating-point values to wider representations.
let Uses = [FPC], mayRaiseFPException = 1 in {
- def LDEB : UnaryRXE<"ldeb", 0xED04, extloadf32, FP64, 4>;
- def LXEB : UnaryRXE<"lxeb", 0xED06, null_frag, FP128, 4>;
- def LXDB : UnaryRXE<"lxdb", 0xED05, null_frag, FP128, 8>;
+ def LDEB : UnaryRXE<"ldeb", 0xED04, any_extloadf32, FP64, 4>;
+ def LXEB : UnaryRXE<"lxeb", 0xED06, null_frag, FP128, 4>;
+ def LXDB : UnaryRXE<"lxdb", 0xED05, null_frag, FP128, 8>;
}
let Predicates = [FeatureNoVectorEnhancements1] in {
- def : Pat<(f128 (extloadf32 bdxaddr12only:$src)),
+ def : Pat<(f128 (any_extloadf32 bdxaddr12only:$src)),
(LXEB bdxaddr12only:$src)>;
- def : Pat<(f128 (extloadf64 bdxaddr12only:$src)),
+ def : Pat<(f128 (any_extloadf64 bdxaddr12only:$src)),
(LXDB bdxaddr12only:$src)>;
}
OpenPOWER on IntegriCloud