[Bug 2075491] Re: binary16 float-point arithmetic crashes LLVM on s390x

Frank Heimes 2075491 at bugs.launchpad.net
Thu Aug 1 06:58:07 UTC 2024


** Also affects: ubuntu-z-systems
   Importance: Undecided
       Status: New

** Tags added: reverse-proxy-bugzilla s390x

** Changed in: ubuntu-z-systems
     Assignee: (unassigned) => bugproxy (bugproxy)

** Changed in: llvm-toolchain-18 (Ubuntu)
   Importance: Undecided => Medium

** Changed in: ubuntu-z-systems
   Importance: Undecided => Medium

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to llvm-toolchain-18 in Ubuntu.
https://bugs.launchpad.net/bugs/2075491

Title:
  binary16 float-point arithmetic crashes LLVM on s390x

Status in Ubuntu on IBM z Systems:
  New
Status in llvm-toolchain-18 package in Ubuntu:
  New

Bug description:
  binary16 float-point arithmetic crashes LLVM on s390x due to the LLVM
  backend being unable to lower the LLVM IR to the machine code.

  You can find a short reproducer below:

  define noundef zeroext i1 @test_func(half noundef %f) unnamed_addr {
  start:
    %self = fdiv half %f, 0xHC700
    %_4 = bitcast half %self to i16
    %_0 = icmp slt i16 %_4, 0
    ret i1 %_0
  }

  
  You can save this LLVM IR text to a file called `test-ir.ll` and build it using `clang test-ir.ll -c -o test-ir.o` on a s390x device and watch LLVM explodes with:

  warning: overriding the module target triple with s390x-unknown-linux-gnu [-Woverride-module]
  fatal error: error in backend: Cannot select: 0x6005f020ae20: i32 = fp_to_fp16 0x6005f020adb0
    0x6005f020adb0: f32 = fdiv 0x6005f020af70, 0x6005f020b4b0
      0x6005f020af70: f32 = fp16_to_fp 0x6005f020b520
        0x6005f020b520: i32 = fp_to_fp16 0x6005f020a9c0
          0x6005f020a9c0: f32,ch = CopyFromReg 0x6005f01e5220, Register:f32 %0
            0x6005f020a950: f32 = Register %0
      0x6005f020b4b0: f32,ch = load<(load (s32) from constant-pool)> 0x6005f01e5220, 0x6005f020b280, undef:i64
        0x6005f020b280: i64 = SystemZISD::PCREL_WRAPPER TargetConstantPool:i64<float -7.000000e+00> 0
          0x6005f020b1a0: i64 = TargetConstantPool<float -7.000000e+00> 0
        0x6005f020b130: i64 = undef
  In function: test_func

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-z-systems/+bug/2075491/+subscriptions




More information about the foundations-bugs mailing list