[PATCH] D149260: [AArch64] Emit FNMADD instead of FNEG(FMADD)

Jay Foad via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri May 5 03:13:25 PDT 2023


foad added a comment.

I'm seeing a failure in my LLVM_ENABLE_EXPENSIVE_CHECKS build:

  FAIL: LLVM :: CodeGen/AArch64/aarch64_fnmadd.ll (1 of 47620)
  ******************** TEST 'LLVM :: CodeGen/AArch64/aarch64_fnmadd.ll' FAILED ********************
  Script:
  --
  : 'RUN: at line 2';   /home/jayfoad2/llvm-expensive/bin/llc < /home/jayfoad2/git/llvm-project/llvm/test/CodeGen/AArch64/aarch64_fnmadd.ll -mtriple=aarch64-linux-gnu -O3 | /home/jayfoad2/llvm-expensive/bin/FileCheck /home/jayfoad2/git/llvm-project/llvm/test/CodeGen/AArch64/aarch64_fnmadd.ll
  --
  Exit Code: 2
  
  Command Output (stderr):
  --
  
  # After Machine InstCombiner
  # Machine code for function fnmaddd: IsSSA, TracksLiveness
  Function Live Ins: $x0 in %0, $x1 in %1, $x2 in %2
  
  bb.0.entry:
    liveins: $x0, $x1, $x2
    %2:gpr64common = COPY $x2
    %1:gpr64common = COPY $x1
    %0:gpr64common = COPY $x0
    %3:fpr64 = LDRDui %0:gpr64common, 0 :: (load (s64) from %ir.a)
    %4:fpr64 = LDRDui %1:gpr64common, 0 :: (load (s64) from %ir.b)
    %6:fpr64 = LDRDui %2:gpr64common, 0 :: (load (s64) from %ir.c)
    %7:fpr64 = nnan ninf nsz arcp contract afn reassoc nofpexcept FMADDDrrr killed %4:fpr64, killed %3:fpr64, killed %6:fpr64, implicit $fpcr
    %8:fpr64 = nnan ninf nsz arcp contract afn reassoc nofpexcept FNMADDDrrr killed %4:fpr64, killed %3:fpr64, killed %6:fpr64, implicit $fpcr
    STRDui killed %8:fpr64, %0:gpr64common, 0 :: (store (s64) into %ir.a)
    RET_ReallyLR
  
  # End machine code for function fnmaddd.
  
  *** Bad machine code: Using a killed virtual register ***
  - function:    fnmaddd
  - basic block: %bb.0 entry (0x8785268)
  - instruction: %8:fpr64 = nnan ninf nsz arcp contract afn reassoc nofpexcept FNMADDDrrr killed %4:fpr64, killed %3:fpr64, killed %6:fpr64, implicit $fpcr
  - operand 1:   killed %4:fpr64
  
  *** Bad machine code: Using a killed virtual register ***
  - function:    fnmaddd
  - basic block: %bb.0 entry (0x8785268)
  - instruction: %8:fpr64 = nnan ninf nsz arcp contract afn reassoc nofpexcept FNMADDDrrr killed %4:fpr64, killed %3:fpr64, killed %6:fpr64, implicit $fpcr
  - operand 2:   killed %3:fpr64
  
  *** Bad machine code: Using a killed virtual register ***
  - function:    fnmaddd
  - basic block: %bb.0 entry (0x8785268)
  - instruction: %8:fpr64 = nnan ninf nsz arcp contract afn reassoc nofpexcept FNMADDDrrr killed %4:fpr64, killed %3:fpr64, killed %6:fpr64, implicit $fpcr
  - operand 3:   killed %6:fpr64
  LLVM ERROR: Found 3 machine code errors.
  PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
  Stack dump:
  0.	Program arguments: /home/jayfoad2/llvm-expensive/bin/llc -mtriple=aarch64-linux-gnu -O3
  1.	Running pass 'Function Pass Manager' on module '<stdin>'.
  2.	Running pass 'Verify generated machine code' on function '@fnmaddd'
   #0 0x0000000006072777 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/jayfoad2/llvm-expensive/bin/llc+0x6072777)
   #1 0x000000000607062e llvm::sys::RunSignalHandlers() (/home/jayfoad2/llvm-expensive/bin/llc+0x607062e)
   #2 0x0000000006072e1a SignalHandler(int) Signals.cpp:0:0
   #3 0x00007f138d442520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
   #4 0x00007f138d496a7c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
   #5 0x00007f138d496a7c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
   #6 0x00007f138d496a7c pthread_kill ./nptl/pthread_kill.c:89:10
   #7 0x00007f138d442476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
   #8 0x00007f138d4287f3 abort ./stdlib/abort.c:81:7
   #9 0x0000000005fe8e4c llvm::report_fatal_error(llvm::Twine const&, bool) (/home/jayfoad2/llvm-expensive/bin/llc+0x5fe8e4c)
  #10 0x00000000055889eb (/home/jayfoad2/llvm-expensive/bin/llc+0x55889eb)
  #11 0x00000000054a0eec llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/home/jayfoad2/llvm-expensive/bin/llc+0x54a0eec)
  #12 0x0000000005964754 llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/jayfoad2/llvm-expensive/bin/llc+0x5964754)
  #13 0x000000000596c961 llvm::FPPassManager::runOnModule(llvm::Module&) (/home/jayfoad2/llvm-expensive/bin/llc+0x596c961)
  #14 0x00000000059651f9 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/jayfoad2/llvm-expensive/bin/llc+0x59651f9)
  #15 0x0000000003ac8759 main (/home/jayfoad2/llvm-expensive/bin/llc+0x3ac8759)
  #16 0x00007f138d429d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
  #17 0x00007f138d429e40 call_init ./csu/../csu/libc-start.c:128:20
  #18 0x00007f138d429e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
  #19 0x0000000003ac3165 _start (/home/jayfoad2/llvm-expensive/bin/llc+0x3ac3165)
  FileCheck error: '<stdin>' is empty.
  FileCheck command line:  /home/jayfoad2/llvm-expensive/bin/FileCheck /home/jayfoad2/git/llvm-project/llvm/test/CodeGen/AArch64/aarch64_fnmadd.ll


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D149260/new/

https://reviews.llvm.org/D149260



More information about the llvm-commits mailing list