diff options
| author | Ulrich Weigand <ulrich.weigand@de.ibm.com> | 2019-06-26 17:19:12 +0000 |
|---|---|---|
| committer | Ulrich Weigand <ulrich.weigand@de.ibm.com> | 2019-06-26 17:19:12 +0000 |
| commit | 4c86dd903265be9fd72a5ebf7c568a15f3cad0a6 (patch) | |
| tree | fac06f3e4eb8ee5d8c60ed634d66888a79da325a /llvm/lib | |
| parent | 03b2e2d9861efdcf6fd033b882d8b7b738428a49 (diff) | |
| download | bcm5719-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.td | 10 |
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)>; } |

