diff options
| author | Daniel Sanders <daniel_l_sanders@apple.com> | 2018-01-17 20:34:29 +0000 |
|---|---|---|
| committer | Daniel Sanders <daniel_l_sanders@apple.com> | 2018-01-17 20:34:29 +0000 |
| commit | 12e6e709e96924733f9e5ff4ccd7cd036c5bd7cc (patch) | |
| tree | 543ec3a8da2591c68087fb60ed90da553583c1b4 /llvm/test/CodeGen | |
| parent | d703ec94a95221c2916f5a89304673d65639527e (diff) | |
| download | bcm5719-llvm-12e6e709e96924733f9e5ff4ccd7cd036c5bd7cc.tar.gz bcm5719-llvm-12e6e709e96924733f9e5ff4ccd7cd036c5bd7cc.zip | |
[globalisel][tablegen] Honour priority order within nested instructions.
It appears that we haven't been prioritizing rules that contain nested
instructions properly. InstructionOperandMatcher didn't override
isHigherPriorityThan so it never compared the instructions/operands/predicates
inside nested instructions.
Fixes PR35926. Thanks to Diana Picus for the bug report.
llvm-svn: 322754
Diffstat (limited to 'llvm/test/CodeGen')
| -rw-r--r-- | llvm/test/CodeGen/ARM/GlobalISel/select-pr35926.mir | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/ARM/GlobalISel/select-pr35926.mir b/llvm/test/CodeGen/ARM/GlobalISel/select-pr35926.mir new file mode 100644 index 00000000000..d2b4ffa893c --- /dev/null +++ b/llvm/test/CodeGen/ARM/GlobalISel/select-pr35926.mir @@ -0,0 +1,40 @@ +# RUN: llc -mtriple arm-gnueabihf -mattr=+vfp4 -run-pass=instruction-select -global-isel -o - %s | FileCheck %s +--- | + declare double @llvm.fma.f64(double, double, double) #0 + + define double @vfnmsd(double %x, double %y, double %z) #1 { + %minus.y = fsub double -0.000000e+00, %y + %fma = tail call double @llvm.fma.f64(double %x, double %minus.y, double %z) + %minus.fma = fsub double -0.000000e+00, %fma + ret double %minus.fma + } + + ; Function Attrs: nounwind + declare void @llvm.stackprotector(i8*, i8**) #2 + + attributes #0 = { nounwind readnone speculatable "target-features"="+vfp4" } + attributes #1 = { "target-features"="+vfp4" } + attributes #2 = { nounwind } + +... +--- +name: vfnmsd +legalized: true +regBankSelected: true +selected: false +body: | + bb.1 (%ir-block.0): + liveins: %d0, %d1, %d2 + + %0:fprb(s64) = COPY %d0 + %1:fprb(s64) = COPY %d1 + %2:fprb(s64) = COPY %d2 + %3:fprb(s64) = G_FNEG %1 + %4:fprb(s64) = G_FMA %0, %3, %2 + %5:fprb(s64) = G_FNEG %4 + %d0 = COPY %5(s64) + MOVPCLR 14, %noreg, implicit %d0 + +# CHECK: %{{[0-9]+}}:dpr = VFNMSD %{{[0-9]+}}, %{{[0-9]+}}, %{{[0-9]+}}, 14, %noreg + +... |

