Skip to content

Commit a514365

Browse files
committed
PTX: Default to 32-bit indexing of pointers.
1 parent 5de5a5c commit a514365

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

src/ptx.jl

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,21 @@ function llvm_machine(target::PTXCompilerTarget)
5555
end
5656

5757
# the default datalayout does not match the one in the NVPTX user guide
58-
llvm_datalayout(target::PTXCompilerTarget) = Int===Int64 ?
59-
"e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64"*
60-
"-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64" :
61-
"e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64"*
62-
"-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64"
58+
llvm_datalayout(target::PTXCompilerTarget) =
59+
# little endian
60+
"e-" *
61+
# on 32-bit systems, use 32-bit pointers.
62+
# on 64-bit systems, use 64-bit pointers, but prefer 32-bit indexing.
63+
# this is not what the NVPTX user guide recommends, but helps for performance.
64+
(Int === Int64 ? "p:64:64:64:32-" : "p:32:32:32-") *
65+
# alignment of integer types
66+
"i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-" *
67+
# alignment of floating point types
68+
"f32:32:32-f64:64:64-" *
69+
# alignment of vector types
70+
"v16:16:16-v32:32:32-v64:64:64-v128:128:128-" *
71+
# native integer widths
72+
"n16:32:64"
6373

6474
have_fma(@nospecialize(target::PTXCompilerTarget), T::Type) = true
6575

0 commit comments

Comments
 (0)