intel / llvm

Intel staging area for llvm.org contribution. Home for Intel LLVM-based projects.
Other
1.26k stars 743 forks source link

SYCL `long double` expression requires 128 bit size 'long double' type support #15852

Open abagusetty opened 1 month ago

abagusetty commented 1 month ago

Describe the bug

Compilation flag (-mlong-double-64) doesnt seem to apply for the device-side, results inlong double` error

error: expression requires 128 bit size 'long double' type support, but target 'nvptx64-nvidia-cuda' does not support it

Compiled via: clang++ -fsycl -mlong-double-64 -fsycl-targets=nvptx64-nvidia-cuda -Xsycl-target-backend --cuda-gpu-arch=sm_80 sycl_long_double.cpp -o sycl_long_double.out

To reproduce

  1. Include code snippet as short as possible
  2. Specify the command which should be used to compile the program
  3. Specify the command which should be used to launch the program
  4. Indicate what is wrong and what was expected
#include <sycl/sycl.hpp>

int main(int argc, char **argv) {
  sycl::queue myQueue(sycl::gpu_selector_v);

  long double* ptr = sycl::malloc_device<long double>(512, myQueue);
  myQueue.parallel_for( sycl::range<1>(512), [=](sycl::id<1> idx) {
    ptr[idx] = 1.1;
  });

  return 0;
}

Environment

clang version 19.0.0git (https://github.com/intel/llvm.git 99d3ce4093d0a9b697f7ce02fc4543dd059b6dc8)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /soft/compilers/oneapi/upstream/install-12.2.91_06112024/install/bin
Build config: +assertions

Additional context

Works fine on PVC with Compiler (2025.x.0.20240629) Haven't got a chance to test it with HIP backend

JackAKirk commented 1 month ago

long double should be using standard 64 bit double in nvptx backend but long double itself currently gives the same error. This is a valid request.