-
Notifications
You must be signed in to change notification settings - Fork 745
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[SYCL][NVPTX] Obey -fcuda-short-ptr when compiling SYCL for NVPTX (#1…
…5642) This flag turns pointers to CUDA's `shared`, `const`, and `local` address spaces into 32-bit pointers. This can potentially save on registers used for addressing calculations. This option was being accepted by the frontend when compiling SYCL code, but was then reporting an error that the backend datalayout doesn't match the expected target description. This was because the option wasn't being caught by all parts of the toolchain, leading to inconsistencies. This PR allows users to pass the option if they wish. They will see a warning that the compiler is linking against a libclc/libspirv that hasn't been compiled with this option, but this is likely harmless since libspirv doesn't manipulate pointers.
- Loading branch information
1 parent
8106796
commit 83fe1c1
Showing
3 changed files
with
43 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
// Check that when we see the expected data layouts for NVPTX when we pass the | ||
// -nvptx-short-ptr option. | ||
|
||
// RUN: %clang_cc1 -fsycl-is-device -disable-llvm-passes \ | ||
// RUN: -triple nvptx-nvidia-cuda -emit-llvm %s -o - \ | ||
// RUN: | FileCheck %s --check-prefix CHECK32 | ||
|
||
// RUN: %clang_cc1 -fsycl-is-device -disable-llvm-passes \ | ||
// RUN: -triple nvptx-nvidia-cuda -emit-llvm -fcuda-short-ptr -mllvm -nvptx-short-ptr %s -o - \ | ||
// RUN: | FileCheck %s --check-prefix CHECK32 | ||
|
||
// RUN: %clang_cc1 -fsycl-is-device -disable-llvm-passes \ | ||
// RUN: -triple nvptx64-nvidia-cuda -emit-llvm %s -o - \ | ||
// RUN: | FileCheck %s --check-prefix CHECK64-DEFAULT | ||
|
||
// RUN: %clang_cc1 -fsycl-is-device -disable-llvm-passes \ | ||
// RUN: -triple nvptx64-nvidia-cuda -emit-llvm -fcuda-short-ptr -mllvm -nvptx-short-ptr %s -o - \ | ||
// RUN: | FileCheck %s --check-prefix CHECK64-SHORT | ||
|
||
// Targeting a 32-bit NVPTX, check that we see universal 32-bit pointers (the | ||
// option changes nothing) | ||
// CHECK32: target datalayout = "e-p:32:32-i64:64-i128:128-v16:16-v32:32-n16:32:64" | ||
|
||
// Targeting a 64-bit NVPTX target, check that we see 32-bit pointers for | ||
// shared (3), const (4), and local (5) address spaces only. | ||
// CHECK64-DEFAULT: target datalayout = "e-i64:64-i128:128-v16:16-v32:32-n16:32:64" | ||
// CHECK64-SHORT: target datalayout = "e-p3:32:32-p4:32:32-p5:32:32-i64:64-i128:128-v16:16-v32:32-n16:32:64" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
// RUN: %clang -### -nocudalib \ | ||
// RUN: -fsycl -fsycl-targets=nvptx64-nvidia-cuda %s 2>&1 \ | ||
// RUN: | FileCheck --check-prefix=CHECK-DEFAULT %s | ||
|
||
// RUN: %clang -### -nocudalib \ | ||
// RUN: -fsycl -fsycl-targets=nvptx64-nvidia-cuda -fcuda-short-ptr %s 2>&1 \ | ||
// RUN: | FileCheck --check-prefix=CHECK-SHORT %s | ||
|
||
|
||
// CHECK-SHORT: "-mllvm" "--nvptx-short-ptr" | ||
// CHECK-SHORT: "-fcuda-short-ptr" | ||
|
||
// CHECK-DEFAULT-NOT: "--nvptx-short-ptr" | ||
// CHECK-DEFAULT-NOT: "-fcuda-short-ptr" |