Dmitry N. Mikushin
2012-Jul-18 14:44 UTC
[LLVMdev] [NVPTX] PTXAS - Unimplemented feature: labels as initial values
Dear NVPTX community, PTXAS fails to compile the ptx code generated by NVPTX. Is it an issue of backend or an issue of PTXAS or a known reasonable restriction? Thanks, - Dima.> cat test.ll; ModuleID = '__kernelgen_main_module' target datalayout = "e-p:64:64-i64:64:64-f64:64:64-n1:8:16:32:64" target triple = "ptx64-unknown-unknown" %struct.__st_parameter_dt.0.4 = type { %struct.__st_parameter_common.1.5, i64, i64*, i64*, i8*, i8*, i32, i32, i8*, i8*, i32, i32, i8*, [256 x i8], i32*, i64, i8*, i32, i32, i8*, i8*, i32, i32, i8*, i8*, i32, i32, i8*, i8*, i32, [4 x i8] } %struct.__st_parameter_common.1.5 = type { i32, i32, i8*, i32, i32, i8*, i32* } %"struct.kernelgen::kernel_t.2" = type opaque %struct.kernelgen_callback_data_t.3 = type opaque @.cst = hidden constant [11 x i8] c"reduce.f90\00", align 4096 @z = unnamed_addr global i8* getelementptr inbounds ([3 x i8]* @.cst1, i64 0, i64 0), align 4096 @.cst1 = hidden constant [3 x i8] c"zz\00", align 4096 @a = unnamed_addr global i8* getelementptr inbounds ([3 x i8]* @.cst12, i64 0, i64 0), align 4096 @.cst12 = hidden constant [3 x i8] c"aa\00", align 4096 @.cst2 = hidden constant [26 x i8] c"Usage: %s <nx> <ny> <nz>\0A\00", align 4096> llc -march=nvptx64 test.ll -o test.ptx > cat test.ptx// // Generated by LLVM NVPTX Back-End // .version 3.0 .target sm_10, texmode_independent .address_size 64 .visible .global .align 4096 .b8 _2E_cst[11] = {114, 101, 100, 117, 99, 101, 46, 102, 57, 48, 0}; .visible .global .align 4096 .u64 z = _2E_cst1; .visible .global .align 4096 .b8 _2E_cst1[3] = {122, 122, 0}; .visible .global .align 4096 .u64 a = _2E_cst12; .visible .global .align 4096 .b8 _2E_cst12[3] = {97, 97, 0}; .visible .global .align 4096 .b8 _2E_cst2[26] = {85, 115, 97, 103, 101, 58, 32, 37, 115, 32, 60, 110, 120, 62, 32, 60, 110, 121, 62, 32, 60, 110, 122, 62, 10, 0};> ptxas test.ptx -o test.cubinptxas test.ptx, line 10; error : Unimplemented feature: labels as initial values ptxas test.ptx, line 12; error : Unimplemented feature: labels as initial values ptxas test.ptx, line 10; error : Label expected for forward reference of '_2E_cst1' ptxas test.ptx, line 12; error : Label expected for forward reference of '_2E_cst12' ptxas fatal : Ptx assembly aborted due to errors -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120718/a578a990/attachment.html>
Yuan Lin
2012-Jul-18 17:09 UTC
[LLVMdev] [NVPTX] PTXAS - Unimplemented feature: labels as initial values
In ptx, variables need to be defined before referenced. NVPTX emits the global variables in the order as in the LLVM IR and does not sort them. It is a bug in the NVPTX backend. Thanks. Yuan From: Dmitry N. Mikushin [mailto:maemarcus at gmail.com] Sent: Wednesday, July 18, 2012 7:44 AM To: LLVM-Dev Cc: Justin Holewinski; Yuan Lin Subject: [NVPTX] PTXAS - Unimplemented feature: labels as initial values Dear NVPTX community, PTXAS fails to compile the ptx code generated by NVPTX. Is it an issue of backend or an issue of PTXAS or a known reasonable restriction? Thanks, - Dima.> cat test.ll; ModuleID = '__kernelgen_main_module' target datalayout = "e-p:64:64-i64:64:64-f64:64:64-n1:8:16:32:64" target triple = "ptx64-unknown-unknown" %struct.__st_parameter_dt.0.4 = type { %struct.__st_parameter_common.1.5, i64, i64*, i64*, i8*, i8*, i32, i32, i8*, i8*, i32, i32, i8*, [256 x i8], i32*, i64, i8*, i32, i32, i8*, i8*, i32, i32, i8*, i8*, i32, i32, i8*, i8*, i32, [4 x i8] } %struct.__st_parameter_common.1.5 = type { i32, i32, i8*, i32, i32, i8*, i32* } %"struct.kernelgen::kernel_t.2" = type opaque %struct.kernelgen_callback_data_t.3 = type opaque @.cst = hidden constant [11 x i8] c"reduce.f90\00", align 4096 @z = unnamed_addr global i8* getelementptr inbounds ([3 x i8]* @.cst1, i64 0, i64 0), align 4096 @.cst1 = hidden constant [3 x i8] c"zz\00", align 4096 @a = unnamed_addr global i8* getelementptr inbounds ([3 x i8]* @.cst12, i64 0, i64 0), align 4096 @.cst12 = hidden constant [3 x i8] c"aa\00", align 4096 @.cst2 = hidden constant [26 x i8] c"Usage: %s <nx> <ny> <nz>\0A\00", align 4096> llc -march=nvptx64 test.ll -o test.ptx > cat test.ptx// // Generated by LLVM NVPTX Back-End // .version 3.0 .target sm_10, texmode_independent .address_size 64 .visible .global .align 4096 .b8 _2E_cst[11] = {114, 101, 100, 117, 99, 101, 46, 102, 57, 48, 0}; .visible .global .align 4096 .u64 z = _2E_cst1; .visible .global .align 4096 .b8 _2E_cst1[3] = {122, 122, 0}; .visible .global .align 4096 .u64 a = _2E_cst12; .visible .global .align 4096 .b8 _2E_cst12[3] = {97, 97, 0}; .visible .global .align 4096 .b8 _2E_cst2[26] = {85, 115, 97, 103, 101, 58, 32, 37, 115, 32, 60, 110, 120, 62, 32, 60, 110, 121, 62, 32, 60, 110, 122, 62, 10, 0};> ptxas test.ptx -o test.cubinptxas test.ptx, line 10; error : Unimplemented feature: labels as initial values ptxas test.ptx, line 12; error : Unimplemented feature: labels as initial values ptxas test.ptx, line 10; error : Label expected for forward reference of '_2E_cst1' ptxas test.ptx, line 12; error : Label expected for forward reference of '_2E_cst12' ptxas fatal : Ptx assembly aborted due to errors ----------------------------------------------------------------------------------- This email message is for the sole use of the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. ----------------------------------------------------------------------------------- -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120718/93addb63/attachment.html>
Dmitry N. Mikushin
2012-Nov-10 00:09 UTC
[LLVMdev] [NVPTX] PTXAS - Unimplemented feature: labels as initial values
Hi Justin, With attached patch we managed to fix the issue mentioned in this thread. Maybe it needs additional cleanups, but is it applicable in general, how do you think? Thanks, - D. 2012/7/18 Yuan Lin <yulin at nvidia.com>:> In ptx, variables need to be defined before referenced. NVPTX emits the > global variables in the order as in the LLVM IR and does not sort them. It > is a bug in the NVPTX backend. > > > > Thanks. > > > > Yuan > > > > > > From: Dmitry N. Mikushin [mailto:maemarcus at gmail.com] > Sent: Wednesday, July 18, 2012 7:44 AM > To: LLVM-Dev > Cc: Justin Holewinski; Yuan Lin > Subject: [NVPTX] PTXAS - Unimplemented feature: labels as initial values > > > > Dear NVPTX community, > > PTXAS fails to compile the ptx code generated by NVPTX. Is it an issue of > backend or an issue of PTXAS or a known reasonable restriction? > > Thanks, > - Dima. > >> cat test.ll > ; ModuleID = '__kernelgen_main_module' > target datalayout = "e-p:64:64-i64:64:64-f64:64:64-n1:8:16:32:64" > target triple = "ptx64-unknown-unknown" > > %struct.__st_parameter_dt.0.4 = type { %struct.__st_parameter_common.1.5, > i64, i64*, i64*, i8*, i8*, i32, i32, i8*, i8*, i32, i32, i8*, [256 x i8], > i32*, i64, i8*, i32, i32, i8*, i8*, i32, i32, i8*, i8*, i32, i32, i8*, i8*, > i32, [4 x i8] } > %struct.__st_parameter_common.1.5 = type { i32, i32, i8*, i32, i32, i8*, > i32* } > %"struct.kernelgen::kernel_t.2" = type opaque > %struct.kernelgen_callback_data_t.3 = type opaque > > @.cst = hidden constant [11 x i8] c"reduce.f90\00", align 4096 > @z = unnamed_addr global i8* getelementptr inbounds ([3 x i8]* @.cst1, i64 > 0, i64 0), align 4096 > @.cst1 = hidden constant [3 x i8] c"zz\00", align 4096 > @a = unnamed_addr global i8* getelementptr inbounds ([3 x i8]* @.cst12, i64 > 0, i64 0), align 4096 > @.cst12 = hidden constant [3 x i8] c"aa\00", align 4096 > @.cst2 = hidden constant [26 x i8] c"Usage: %s <nx> <ny> <nz>\0A\00", align > 4096 > >> llc -march=nvptx64 test.ll -o test.ptx >> cat test.ptx > // > // Generated by LLVM NVPTX Back-End > // > > .version 3.0 > .target sm_10, texmode_independent > .address_size 64 > > .visible .global .align 4096 .b8 _2E_cst[11] = {114, 101, 100, 117, 99, 101, > 46, 102, 57, 48, 0}; > .visible .global .align 4096 .u64 z = _2E_cst1; > .visible .global .align 4096 .b8 _2E_cst1[3] = {122, 122, 0}; > .visible .global .align 4096 .u64 a = _2E_cst12; > .visible .global .align 4096 .b8 _2E_cst12[3] = {97, 97, 0}; > .visible .global .align 4096 .b8 _2E_cst2[26] = {85, 115, 97, 103, 101, 58, > 32, 37, 115, 32, 60, 110, 120, 62, 32, 60, 110, 121, 62, 32, 60, 110, 122, > 62, 10, 0}; > >> ptxas test.ptx -o test.cubin > ptxas test.ptx, line 10; error : Unimplemented feature: labels as initial > values > ptxas test.ptx, line 12; error : Unimplemented feature: labels as initial > values > ptxas test.ptx, line 10; error : Label expected for forward reference of > '_2E_cst1' > ptxas test.ptx, line 12; error : Label expected for forward reference of > '_2E_cst12' > ptxas fatal : Ptx assembly aborted due to errors > > ________________________________ > This email message is for the sole use of the intended recipient(s) and may > contain confidential information. Any unauthorized review, use, disclosure > or distribution is prohibited. If you are not the intended recipient, > please contact the sender by reply email and destroy all copies of the > original message. > ________________________________-------------- next part -------------- A non-text attachment was scrubbed... Name: nvptx.reorder.patch Type: application/octet-stream Size: 3780 bytes Desc: not available URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20121110/b5b67d0d/attachment.obj>
Maybe Matching Threads
- [LLVMdev] [NVPTX] PTXAS - Unimplemented feature: labels as initial values
- [LLVMdev] [NVPTX] For linkonce_odr NVPTX generates .weak, but even newest PTXAS can't handle it
- [LLVMdev] [NVPTX] For linkonce_odr NVPTX generates .weak, but even newest PTXAS can't handle it
- NVPTX compilation problems - ptxas error
- [LLVMdev] [NVPTX] CUDA inline PTX asm definitions scoping "{" "}" is broken