mirror of
https://github.com/NVIDIA/cuda-samples.git
synced 2026-10-13 00:08:26 +08:00
CUDA 13.2 samples update (#432)
- Added Python samples for CUDA Python 1.0 release - Renamed top-level `Samples` directory to `cpp` to accommodate Python samples.
This commit is contained in:
12
cpp/0_Introduction/matrixMulDynlinkJIT/extras/README.TXT
Normal file
12
cpp/0_Introduction/matrixMulDynlinkJIT/extras/README.TXT
Normal file
@@ -0,0 +1,12 @@
|
||||
The auto-generated pair of files named matrixMul_ptxdump.c and
|
||||
matrixMul_ptxdump.h can be acquired by treating matrixMul_kernel.ptx
|
||||
as binary file and representing its contents as an array of chars.
|
||||
|
||||
An example of the script written in Python language that performs
|
||||
such translation can be found in "extras" directory of the sample.
|
||||
|
||||
The matrixMul_kernel.ptx contains the same PTX code as the file in
|
||||
"data" directory of matrixMulDrv sample after compilation by nvcc.
|
||||
|
||||
The command line for generation using Python script is as follows:
|
||||
> python ptx2c.py matrixMul_kernel.ptx matrixMul
|
||||
@@ -0,0 +1,727 @@
|
||||
.version 1.4
|
||||
.target sm_20, map_f64_to_f32
|
||||
// compiled with C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\\bin/../open64/lib//be.exe
|
||||
// nvopencc 4.0 built on 2011-02-21
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Compiling C:/Users/EYOUNG~1.COM/AppData/Local/Temp/tmpxft_000014c0_00000000-11_matrixMul_kernel.cpp3.i (C:/Users/EYOUNG~1.COM/AppData/Local/Temp/ccBI#.a04000)
|
||||
//-----------------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Options:
|
||||
//-----------------------------------------------------------
|
||||
// Target:ptx, ISA:sm_20, Endian:little, Pointer Size:32
|
||||
// -O3 (Optimization level)
|
||||
// -g0 (Debug level)
|
||||
// -m2 (Report advisories)
|
||||
//-----------------------------------------------------------
|
||||
|
||||
.shared .align 4 .b8 __cuda_local_var_87382_38_non_const_As__6[1024];
|
||||
.shared .align 4 .b8 __cuda_local_var_87386_38_non_const_Bs__7[1024];
|
||||
|
||||
.entry matrixMul_bs16_32bit (
|
||||
.param .u32 __cudaparm_matrixMul_bs16_32bit_C,
|
||||
.param .u32 __cudaparm_matrixMul_bs16_32bit_A,
|
||||
.param .u32 __cudaparm_matrixMul_bs16_32bit_B,
|
||||
.param .s32 __cudaparm_matrixMul_bs16_32bit_wA,
|
||||
.param .s32 __cudaparm_matrixMul_bs16_32bit_wB)
|
||||
{
|
||||
.reg .u32 %r<57>;
|
||||
.reg .f32 %f<52>;
|
||||
.reg .pred %p<4>;
|
||||
.loc 16 107 0
|
||||
$LDWbegin_matrixMul_bs16_32bit:
|
||||
.loc 16 66 0
|
||||
cvt.s32.u16 %r1, %ctaid.x;
|
||||
mul24.lo.s32 %r2, %r1, 16;
|
||||
cvt.s32.u16 %r3, %ctaid.y;
|
||||
ld.param.s32 %r4, [__cudaparm_matrixMul_bs16_32bit_wA];
|
||||
mul.lo.s32 %r5, %r3, %r4;
|
||||
mul.lo.s32 %r6, %r5, 16;
|
||||
add.s32 %r7, %r6, %r4;
|
||||
sub.s32 %r8, %r7, 1;
|
||||
cvt.s32.u16 %r9, %tid.x;
|
||||
cvt.s32.u16 %r10, %tid.y;
|
||||
ld.param.s32 %r11, [__cudaparm_matrixMul_bs16_32bit_wB];
|
||||
setp.lt.s32 %p1, %r8, %r6;
|
||||
@%p1 bra $Lt_0_3330;
|
||||
mov.u32 %r12, __cuda_local_var_87382_38_non_const_As__6;
|
||||
mov.u32 %r13, __cuda_local_var_87386_38_non_const_Bs__7;
|
||||
ld.param.s32 %r4, [__cudaparm_matrixMul_bs16_32bit_wA];
|
||||
add.s32 %r14, %r4, 15;
|
||||
shr.s32 %r15, %r14, 31;
|
||||
mov.s32 %r16, 15;
|
||||
and.b32 %r17, %r15, %r16;
|
||||
add.s32 %r18, %r17, %r14;
|
||||
shr.s32 %r19, %r18, 4;
|
||||
ld.param.s32 %r11, [__cudaparm_matrixMul_bs16_32bit_wB];
|
||||
mul.lo.s32 %r20, %r10, %r11;
|
||||
mul.lo.s32 %r21, %r10, %r4;
|
||||
mul24.lo.u32 %r22, %r10, 16;
|
||||
mul24.lo.u32 %r23, %r10, 64;
|
||||
mul24.lo.u32 %r24, %r9, 4;
|
||||
mul.lo.s32 %r25, %r11, 16;
|
||||
add.s32 %r26, %r20, %r2;
|
||||
add.s32 %r27, %r21, %r6;
|
||||
add.u32 %r28, %r9, %r22;
|
||||
add.u32 %r29, %r23, %r12;
|
||||
add.u32 %r30, %r24, %r13;
|
||||
add.s32 %r31, %r26, %r9;
|
||||
add.s32 %r32, %r27, %r9;
|
||||
mul.lo.u32 %r33, %r28, 4;
|
||||
mul.lo.u32 %r34, %r31, 4;
|
||||
mul.lo.u32 %r35, %r25, 4;
|
||||
mul.lo.u32 %r36, %r32, 4;
|
||||
add.u32 %r37, %r33, %r12;
|
||||
add.u32 %r38, %r33, %r13;
|
||||
add.s32 %r39, %r21, %r8;
|
||||
ld.param.u32 %r40, [__cudaparm_matrixMul_bs16_32bit_B];
|
||||
add.u32 %r41, %r40, %r34;
|
||||
ld.param.u32 %r42, [__cudaparm_matrixMul_bs16_32bit_A];
|
||||
add.u32 %r43, %r36, %r42;
|
||||
add.s32 %r44, %r39, %r9;
|
||||
mul.lo.u32 %r45, %r44, 4;
|
||||
add.u32 %r46, %r45, %r42;
|
||||
mov.f32 %f1, 0f00000000; // 0
|
||||
mov.s32 %r47, %r19;
|
||||
$Lt_0_2818:
|
||||
//<loop> Loop body line 66, nesting depth: 1, estimated iterations: unknown
|
||||
.loc 16 81 0
|
||||
ld.global.f32 %f2, [%r43+0];
|
||||
st.shared.f32 [%r37+0], %f2;
|
||||
.loc 16 82 0
|
||||
ld.global.f32 %f3, [%r41+0];
|
||||
st.shared.f32 [%r38+0], %f3;
|
||||
.loc 16 85 0
|
||||
bar.sync 0;
|
||||
.loc 16 92 0
|
||||
ld.shared.f32 %f4, [%r29+0];
|
||||
ld.shared.f32 %f5, [%r30+0];
|
||||
mad.f32 %f6, %f4, %f5, %f1;
|
||||
ld.shared.f32 %f7, [%r29+4];
|
||||
ld.shared.f32 %f8, [%r30+64];
|
||||
mad.f32 %f9, %f7, %f8, %f6;
|
||||
ld.shared.f32 %f10, [%r29+8];
|
||||
ld.shared.f32 %f11, [%r30+128];
|
||||
mad.f32 %f12, %f10, %f11, %f9;
|
||||
ld.shared.f32 %f13, [%r29+12];
|
||||
ld.shared.f32 %f14, [%r30+192];
|
||||
mad.f32 %f15, %f13, %f14, %f12;
|
||||
ld.shared.f32 %f16, [%r29+16];
|
||||
ld.shared.f32 %f17, [%r30+256];
|
||||
mad.f32 %f18, %f16, %f17, %f15;
|
||||
ld.shared.f32 %f19, [%r29+20];
|
||||
ld.shared.f32 %f20, [%r30+320];
|
||||
mad.f32 %f21, %f19, %f20, %f18;
|
||||
ld.shared.f32 %f22, [%r29+24];
|
||||
ld.shared.f32 %f23, [%r30+384];
|
||||
mad.f32 %f24, %f22, %f23, %f21;
|
||||
ld.shared.f32 %f25, [%r29+28];
|
||||
ld.shared.f32 %f26, [%r30+448];
|
||||
mad.f32 %f27, %f25, %f26, %f24;
|
||||
ld.shared.f32 %f28, [%r29+32];
|
||||
ld.shared.f32 %f29, [%r30+512];
|
||||
mad.f32 %f30, %f28, %f29, %f27;
|
||||
ld.shared.f32 %f31, [%r29+36];
|
||||
ld.shared.f32 %f32, [%r30+576];
|
||||
mad.f32 %f33, %f31, %f32, %f30;
|
||||
ld.shared.f32 %f34, [%r29+40];
|
||||
ld.shared.f32 %f35, [%r30+640];
|
||||
mad.f32 %f36, %f34, %f35, %f33;
|
||||
ld.shared.f32 %f37, [%r29+44];
|
||||
ld.shared.f32 %f38, [%r30+704];
|
||||
mad.f32 %f39, %f37, %f38, %f36;
|
||||
ld.shared.f32 %f40, [%r29+48];
|
||||
ld.shared.f32 %f41, [%r30+768];
|
||||
mad.f32 %f42, %f40, %f41, %f39;
|
||||
ld.shared.f32 %f43, [%r29+52];
|
||||
ld.shared.f32 %f44, [%r30+832];
|
||||
mad.f32 %f45, %f43, %f44, %f42;
|
||||
ld.shared.f32 %f46, [%r29+56];
|
||||
ld.shared.f32 %f47, [%r30+896];
|
||||
mad.f32 %f48, %f46, %f47, %f45;
|
||||
ld.shared.f32 %f49, [%r29+60];
|
||||
ld.shared.f32 %f50, [%r30+960];
|
||||
mad.f32 %f1, %f49, %f50, %f48;
|
||||
.loc 16 97 0
|
||||
bar.sync 0;
|
||||
.loc 16 66 0
|
||||
add.u32 %r41, %r35, %r41;
|
||||
add.u32 %r43, %r43, 64;
|
||||
setp.le.u32 %p2, %r43, %r46;
|
||||
@%p2 bra $Lt_0_2818;
|
||||
bra.uni $Lt_0_2306;
|
||||
$Lt_0_3330:
|
||||
ld.param.s32 %r11, [__cudaparm_matrixMul_bs16_32bit_wB];
|
||||
mul.lo.s32 %r20, %r10, %r11;
|
||||
mov.f32 %f1, 0f00000000; // 0
|
||||
$Lt_0_2306:
|
||||
.loc 16 103 0
|
||||
ld.param.u32 %r48, [__cudaparm_matrixMul_bs16_32bit_C];
|
||||
mul.lo.s32 %r49, %r11, %r3;
|
||||
add.s32 %r50, %r1, %r49;
|
||||
mul.lo.s32 %r51, %r50, 16;
|
||||
add.s32 %r52, %r20, %r51;
|
||||
add.s32 %r53, %r9, %r52;
|
||||
mul.lo.u32 %r54, %r53, 4;
|
||||
add.u32 %r55, %r48, %r54;
|
||||
st.global.f32 [%r55+0], %f1;
|
||||
.loc 16 110 0
|
||||
exit;
|
||||
$LDWend_matrixMul_bs16_32bit:
|
||||
} // matrixMul_bs16_32bit
|
||||
.shared .align 4 .b8 __cuda_local_var_87382_38_non_const_As__4[1024];
|
||||
.shared .align 4 .b8 __cuda_local_var_87386_38_non_const_Bs__5[1024];
|
||||
|
||||
.entry matrixMul_bs16_64bit (
|
||||
.param .u32 __cudaparm_matrixMul_bs16_64bit_C,
|
||||
.param .u32 __cudaparm_matrixMul_bs16_64bit_A,
|
||||
.param .u32 __cudaparm_matrixMul_bs16_64bit_B,
|
||||
.param .u32 __cudaparm_matrixMul_bs16_64bit_wA,
|
||||
.param .u32 __cudaparm_matrixMul_bs16_64bit_wB)
|
||||
{
|
||||
.reg .u32 %r<54>;
|
||||
.reg .f32 %f<52>;
|
||||
.reg .pred %p<4>;
|
||||
.loc 16 111 0
|
||||
$LDWbegin_matrixMul_bs16_64bit:
|
||||
.loc 16 66 0
|
||||
cvt.u32.u16 %r1, %ctaid.x;
|
||||
mul24.lo.u32 %r2, %r1, 16;
|
||||
cvt.u32.u16 %r3, %ctaid.y;
|
||||
ld.param.u32 %r4, [__cudaparm_matrixMul_bs16_64bit_wA];
|
||||
mul.lo.u32 %r5, %r3, %r4;
|
||||
mul.lo.u32 %r6, %r5, 16;
|
||||
mov.s32 %r7, %r6;
|
||||
add.u32 %r8, %r6, %r4;
|
||||
sub.u32 %r9, %r8, 1;
|
||||
cvt.u32.u16 %r10, %tid.x;
|
||||
cvt.u32.u16 %r11, %tid.y;
|
||||
ld.param.u32 %r12, [__cudaparm_matrixMul_bs16_64bit_wB];
|
||||
setp.lt.u32 %p1, %r9, %r6;
|
||||
@%p1 bra $Lt_1_3330;
|
||||
mov.u32 %r13, __cuda_local_var_87382_38_non_const_As__4;
|
||||
mov.u32 %r14, __cuda_local_var_87386_38_non_const_Bs__5;
|
||||
ld.param.u32 %r4, [__cudaparm_matrixMul_bs16_64bit_wA];
|
||||
add.u32 %r15, %r4, 15;
|
||||
shr.s32 %r16, %r15, 31;
|
||||
mov.s32 %r17, 15;
|
||||
and.b32 %r18, %r16, %r17;
|
||||
add.s32 %r19, %r18, %r15;
|
||||
shr.s32 %r20, %r19, 4;
|
||||
ld.param.u32 %r12, [__cudaparm_matrixMul_bs16_64bit_wB];
|
||||
mul.lo.u32 %r21, %r11, %r12;
|
||||
mul.lo.u32 %r22, %r11, %r4;
|
||||
mul24.lo.u32 %r23, %r11, 16;
|
||||
mul24.lo.u32 %r24, %r11, 64;
|
||||
mul24.lo.u32 %r25, %r10, 4;
|
||||
mul.lo.u32 %r26, %r12, 16;
|
||||
add.u32 %r27, %r21, %r2;
|
||||
add.u32 %r28, %r22, %r6;
|
||||
add.u32 %r29, %r23, %r10;
|
||||
add.u32 %r30, %r24, %r13;
|
||||
add.u32 %r31, %r25, %r14;
|
||||
add.u32 %r32, %r27, %r10;
|
||||
add.u32 %r33, %r28, %r10;
|
||||
mul.lo.u32 %r34, %r29, 4;
|
||||
mul.lo.u32 %r35, %r32, 4;
|
||||
mul.lo.u32 %r36, %r26, 4;
|
||||
mul.lo.u32 %r37, %r33, 4;
|
||||
add.u32 %r38, %r34, %r13;
|
||||
add.u32 %r39, %r34, %r14;
|
||||
ld.param.u32 %r40, [__cudaparm_matrixMul_bs16_64bit_B];
|
||||
add.u32 %r41, %r40, %r35;
|
||||
ld.param.u32 %r42, [__cudaparm_matrixMul_bs16_64bit_A];
|
||||
add.u32 %r43, %r42, %r37;
|
||||
mov.f32 %f1, 0f00000000; // 0
|
||||
mov.s32 %r44, %r20;
|
||||
$Lt_1_2818:
|
||||
//<loop> Loop body line 66, nesting depth: 1, estimated iterations: unknown
|
||||
.loc 16 81 0
|
||||
ld.global.f32 %f2, [%r43+0];
|
||||
st.shared.f32 [%r38+0], %f2;
|
||||
.loc 16 82 0
|
||||
ld.global.f32 %f3, [%r41+0];
|
||||
st.shared.f32 [%r39+0], %f3;
|
||||
.loc 16 85 0
|
||||
bar.sync 0;
|
||||
.loc 16 92 0
|
||||
ld.shared.f32 %f4, [%r30+0];
|
||||
ld.shared.f32 %f5, [%r31+0];
|
||||
mad.f32 %f6, %f4, %f5, %f1;
|
||||
ld.shared.f32 %f7, [%r30+4];
|
||||
ld.shared.f32 %f8, [%r31+64];
|
||||
mad.f32 %f9, %f7, %f8, %f6;
|
||||
ld.shared.f32 %f10, [%r30+8];
|
||||
ld.shared.f32 %f11, [%r31+128];
|
||||
mad.f32 %f12, %f10, %f11, %f9;
|
||||
ld.shared.f32 %f13, [%r30+12];
|
||||
ld.shared.f32 %f14, [%r31+192];
|
||||
mad.f32 %f15, %f13, %f14, %f12;
|
||||
ld.shared.f32 %f16, [%r30+16];
|
||||
ld.shared.f32 %f17, [%r31+256];
|
||||
mad.f32 %f18, %f16, %f17, %f15;
|
||||
ld.shared.f32 %f19, [%r30+20];
|
||||
ld.shared.f32 %f20, [%r31+320];
|
||||
mad.f32 %f21, %f19, %f20, %f18;
|
||||
ld.shared.f32 %f22, [%r30+24];
|
||||
ld.shared.f32 %f23, [%r31+384];
|
||||
mad.f32 %f24, %f22, %f23, %f21;
|
||||
ld.shared.f32 %f25, [%r30+28];
|
||||
ld.shared.f32 %f26, [%r31+448];
|
||||
mad.f32 %f27, %f25, %f26, %f24;
|
||||
ld.shared.f32 %f28, [%r30+32];
|
||||
ld.shared.f32 %f29, [%r31+512];
|
||||
mad.f32 %f30, %f28, %f29, %f27;
|
||||
ld.shared.f32 %f31, [%r30+36];
|
||||
ld.shared.f32 %f32, [%r31+576];
|
||||
mad.f32 %f33, %f31, %f32, %f30;
|
||||
ld.shared.f32 %f34, [%r30+40];
|
||||
ld.shared.f32 %f35, [%r31+640];
|
||||
mad.f32 %f36, %f34, %f35, %f33;
|
||||
ld.shared.f32 %f37, [%r30+44];
|
||||
ld.shared.f32 %f38, [%r31+704];
|
||||
mad.f32 %f39, %f37, %f38, %f36;
|
||||
ld.shared.f32 %f40, [%r30+48];
|
||||
ld.shared.f32 %f41, [%r31+768];
|
||||
mad.f32 %f42, %f40, %f41, %f39;
|
||||
ld.shared.f32 %f43, [%r30+52];
|
||||
ld.shared.f32 %f44, [%r31+832];
|
||||
mad.f32 %f45, %f43, %f44, %f42;
|
||||
ld.shared.f32 %f46, [%r30+56];
|
||||
ld.shared.f32 %f47, [%r31+896];
|
||||
mad.f32 %f48, %f46, %f47, %f45;
|
||||
ld.shared.f32 %f49, [%r30+60];
|
||||
ld.shared.f32 %f50, [%r31+960];
|
||||
mad.f32 %f1, %f49, %f50, %f48;
|
||||
.loc 16 97 0
|
||||
bar.sync 0;
|
||||
.loc 16 66 0
|
||||
add.u32 %r41, %r36, %r41;
|
||||
add.u32 %r7, %r7, 16;
|
||||
add.u32 %r43, %r43, 64;
|
||||
setp.ge.u32 %p2, %r9, %r7;
|
||||
@%p2 bra $Lt_1_2818;
|
||||
bra.uni $Lt_1_2306;
|
||||
$Lt_1_3330:
|
||||
ld.param.u32 %r12, [__cudaparm_matrixMul_bs16_64bit_wB];
|
||||
mul.lo.u32 %r21, %r11, %r12;
|
||||
mov.f32 %f1, 0f00000000; // 0
|
||||
$Lt_1_2306:
|
||||
.loc 16 103 0
|
||||
ld.param.u32 %r45, [__cudaparm_matrixMul_bs16_64bit_C];
|
||||
mul.lo.u32 %r46, %r12, %r3;
|
||||
add.u32 %r47, %r1, %r46;
|
||||
mul.lo.u32 %r48, %r47, 16;
|
||||
add.u32 %r49, %r21, %r48;
|
||||
add.u32 %r50, %r10, %r49;
|
||||
mul.lo.u32 %r51, %r50, 4;
|
||||
add.u32 %r52, %r45, %r51;
|
||||
st.global.f32 [%r52+0], %f1;
|
||||
.loc 16 114 0
|
||||
exit;
|
||||
$LDWend_matrixMul_bs16_64bit:
|
||||
} // matrixMul_bs16_64bit
|
||||
.shared .align 4 .b8 __cuda_local_var_87382_38_non_const_As__2[4096];
|
||||
.shared .align 4 .b8 __cuda_local_var_87386_38_non_const_Bs__3[4096];
|
||||
|
||||
.entry matrixMul_bs32_32bit (
|
||||
.param .u32 __cudaparm_matrixMul_bs32_32bit_C,
|
||||
.param .u32 __cudaparm_matrixMul_bs32_32bit_A,
|
||||
.param .u32 __cudaparm_matrixMul_bs32_32bit_B,
|
||||
.param .s32 __cudaparm_matrixMul_bs32_32bit_wA,
|
||||
.param .s32 __cudaparm_matrixMul_bs32_32bit_wB)
|
||||
{
|
||||
.reg .u32 %r<57>;
|
||||
.reg .f32 %f<100>;
|
||||
.reg .pred %p<4>;
|
||||
.loc 16 115 0
|
||||
$LDWbegin_matrixMul_bs32_32bit:
|
||||
.loc 16 66 0
|
||||
cvt.s32.u16 %r1, %ctaid.x;
|
||||
mul24.lo.s32 %r2, %r1, 32;
|
||||
cvt.s32.u16 %r3, %ctaid.y;
|
||||
ld.param.s32 %r4, [__cudaparm_matrixMul_bs32_32bit_wA];
|
||||
mul.lo.s32 %r5, %r3, %r4;
|
||||
mul.lo.s32 %r6, %r5, 32;
|
||||
add.s32 %r7, %r6, %r4;
|
||||
sub.s32 %r8, %r7, 1;
|
||||
cvt.s32.u16 %r9, %tid.x;
|
||||
cvt.s32.u16 %r10, %tid.y;
|
||||
ld.param.s32 %r11, [__cudaparm_matrixMul_bs32_32bit_wB];
|
||||
setp.lt.s32 %p1, %r8, %r6;
|
||||
@%p1 bra $Lt_2_3330;
|
||||
mov.u32 %r12, __cuda_local_var_87382_38_non_const_As__2;
|
||||
mov.u32 %r13, __cuda_local_var_87386_38_non_const_Bs__3;
|
||||
ld.param.s32 %r4, [__cudaparm_matrixMul_bs32_32bit_wA];
|
||||
add.s32 %r14, %r4, 31;
|
||||
shr.s32 %r15, %r14, 31;
|
||||
mov.s32 %r16, 31;
|
||||
and.b32 %r17, %r15, %r16;
|
||||
add.s32 %r18, %r17, %r14;
|
||||
shr.s32 %r19, %r18, 5;
|
||||
ld.param.s32 %r11, [__cudaparm_matrixMul_bs32_32bit_wB];
|
||||
mul.lo.s32 %r20, %r10, %r11;
|
||||
mul.lo.s32 %r21, %r10, %r4;
|
||||
mul24.lo.u32 %r22, %r10, 32;
|
||||
mul24.lo.u32 %r23, %r10, 128;
|
||||
mul24.lo.u32 %r24, %r9, 4;
|
||||
mul.lo.s32 %r25, %r11, 32;
|
||||
add.s32 %r26, %r20, %r2;
|
||||
add.s32 %r27, %r21, %r6;
|
||||
add.u32 %r28, %r9, %r22;
|
||||
add.u32 %r29, %r23, %r12;
|
||||
add.u32 %r30, %r24, %r13;
|
||||
add.s32 %r31, %r26, %r9;
|
||||
add.s32 %r32, %r27, %r9;
|
||||
mul.lo.u32 %r33, %r28, 4;
|
||||
mul.lo.u32 %r34, %r31, 4;
|
||||
mul.lo.u32 %r35, %r25, 4;
|
||||
mul.lo.u32 %r36, %r32, 4;
|
||||
add.u32 %r37, %r33, %r12;
|
||||
add.u32 %r38, %r33, %r13;
|
||||
add.s32 %r39, %r21, %r8;
|
||||
ld.param.u32 %r40, [__cudaparm_matrixMul_bs32_32bit_B];
|
||||
add.u32 %r41, %r40, %r34;
|
||||
ld.param.u32 %r42, [__cudaparm_matrixMul_bs32_32bit_A];
|
||||
add.u32 %r43, %r36, %r42;
|
||||
add.s32 %r44, %r39, %r9;
|
||||
mul.lo.u32 %r45, %r44, 4;
|
||||
add.u32 %r46, %r45, %r42;
|
||||
mov.f32 %f1, 0f00000000; // 0
|
||||
mov.s32 %r47, %r19;
|
||||
$Lt_2_2818:
|
||||
//<loop> Loop body line 66, nesting depth: 1, estimated iterations: unknown
|
||||
.loc 16 81 0
|
||||
ld.global.f32 %f2, [%r43+0];
|
||||
st.shared.f32 [%r37+0], %f2;
|
||||
.loc 16 82 0
|
||||
ld.global.f32 %f3, [%r41+0];
|
||||
st.shared.f32 [%r38+0], %f3;
|
||||
.loc 16 85 0
|
||||
bar.sync 0;
|
||||
.loc 16 92 0
|
||||
ld.shared.f32 %f4, [%r29+0];
|
||||
ld.shared.f32 %f5, [%r30+0];
|
||||
mad.f32 %f6, %f4, %f5, %f1;
|
||||
ld.shared.f32 %f7, [%r29+4];
|
||||
ld.shared.f32 %f8, [%r30+128];
|
||||
mad.f32 %f9, %f7, %f8, %f6;
|
||||
ld.shared.f32 %f10, [%r29+8];
|
||||
ld.shared.f32 %f11, [%r30+256];
|
||||
mad.f32 %f12, %f10, %f11, %f9;
|
||||
ld.shared.f32 %f13, [%r29+12];
|
||||
ld.shared.f32 %f14, [%r30+384];
|
||||
mad.f32 %f15, %f13, %f14, %f12;
|
||||
ld.shared.f32 %f16, [%r29+16];
|
||||
ld.shared.f32 %f17, [%r30+512];
|
||||
mad.f32 %f18, %f16, %f17, %f15;
|
||||
ld.shared.f32 %f19, [%r29+20];
|
||||
ld.shared.f32 %f20, [%r30+640];
|
||||
mad.f32 %f21, %f19, %f20, %f18;
|
||||
ld.shared.f32 %f22, [%r29+24];
|
||||
ld.shared.f32 %f23, [%r30+768];
|
||||
mad.f32 %f24, %f22, %f23, %f21;
|
||||
ld.shared.f32 %f25, [%r29+28];
|
||||
ld.shared.f32 %f26, [%r30+896];
|
||||
mad.f32 %f27, %f25, %f26, %f24;
|
||||
ld.shared.f32 %f28, [%r29+32];
|
||||
ld.shared.f32 %f29, [%r30+1024];
|
||||
mad.f32 %f30, %f28, %f29, %f27;
|
||||
ld.shared.f32 %f31, [%r29+36];
|
||||
ld.shared.f32 %f32, [%r30+1152];
|
||||
mad.f32 %f33, %f31, %f32, %f30;
|
||||
ld.shared.f32 %f34, [%r29+40];
|
||||
ld.shared.f32 %f35, [%r30+1280];
|
||||
mad.f32 %f36, %f34, %f35, %f33;
|
||||
ld.shared.f32 %f37, [%r29+44];
|
||||
ld.shared.f32 %f38, [%r30+1408];
|
||||
mad.f32 %f39, %f37, %f38, %f36;
|
||||
ld.shared.f32 %f40, [%r29+48];
|
||||
ld.shared.f32 %f41, [%r30+1536];
|
||||
mad.f32 %f42, %f40, %f41, %f39;
|
||||
ld.shared.f32 %f43, [%r29+52];
|
||||
ld.shared.f32 %f44, [%r30+1664];
|
||||
mad.f32 %f45, %f43, %f44, %f42;
|
||||
ld.shared.f32 %f46, [%r29+56];
|
||||
ld.shared.f32 %f47, [%r30+1792];
|
||||
mad.f32 %f48, %f46, %f47, %f45;
|
||||
ld.shared.f32 %f49, [%r29+60];
|
||||
ld.shared.f32 %f50, [%r30+1920];
|
||||
mad.f32 %f51, %f49, %f50, %f48;
|
||||
ld.shared.f32 %f52, [%r29+64];
|
||||
ld.shared.f32 %f53, [%r30+2048];
|
||||
mad.f32 %f54, %f52, %f53, %f51;
|
||||
ld.shared.f32 %f55, [%r29+68];
|
||||
ld.shared.f32 %f56, [%r30+2176];
|
||||
mad.f32 %f57, %f55, %f56, %f54;
|
||||
ld.shared.f32 %f58, [%r29+72];
|
||||
ld.shared.f32 %f59, [%r30+2304];
|
||||
mad.f32 %f60, %f58, %f59, %f57;
|
||||
ld.shared.f32 %f61, [%r29+76];
|
||||
ld.shared.f32 %f62, [%r30+2432];
|
||||
mad.f32 %f63, %f61, %f62, %f60;
|
||||
ld.shared.f32 %f64, [%r29+80];
|
||||
ld.shared.f32 %f65, [%r30+2560];
|
||||
mad.f32 %f66, %f64, %f65, %f63;
|
||||
ld.shared.f32 %f67, [%r29+84];
|
||||
ld.shared.f32 %f68, [%r30+2688];
|
||||
mad.f32 %f69, %f67, %f68, %f66;
|
||||
ld.shared.f32 %f70, [%r29+88];
|
||||
ld.shared.f32 %f71, [%r30+2816];
|
||||
mad.f32 %f72, %f70, %f71, %f69;
|
||||
ld.shared.f32 %f73, [%r29+92];
|
||||
ld.shared.f32 %f74, [%r30+2944];
|
||||
mad.f32 %f75, %f73, %f74, %f72;
|
||||
ld.shared.f32 %f76, [%r29+96];
|
||||
ld.shared.f32 %f77, [%r30+3072];
|
||||
mad.f32 %f78, %f76, %f77, %f75;
|
||||
ld.shared.f32 %f79, [%r29+100];
|
||||
ld.shared.f32 %f80, [%r30+3200];
|
||||
mad.f32 %f81, %f79, %f80, %f78;
|
||||
ld.shared.f32 %f82, [%r29+104];
|
||||
ld.shared.f32 %f83, [%r30+3328];
|
||||
mad.f32 %f84, %f82, %f83, %f81;
|
||||
ld.shared.f32 %f85, [%r29+108];
|
||||
ld.shared.f32 %f86, [%r30+3456];
|
||||
mad.f32 %f87, %f85, %f86, %f84;
|
||||
ld.shared.f32 %f88, [%r29+112];
|
||||
ld.shared.f32 %f89, [%r30+3584];
|
||||
mad.f32 %f90, %f88, %f89, %f87;
|
||||
ld.shared.f32 %f91, [%r29+116];
|
||||
ld.shared.f32 %f92, [%r30+3712];
|
||||
mad.f32 %f93, %f91, %f92, %f90;
|
||||
ld.shared.f32 %f94, [%r29+120];
|
||||
ld.shared.f32 %f95, [%r30+3840];
|
||||
mad.f32 %f96, %f94, %f95, %f93;
|
||||
ld.shared.f32 %f97, [%r29+124];
|
||||
ld.shared.f32 %f98, [%r30+3968];
|
||||
mad.f32 %f1, %f97, %f98, %f96;
|
||||
.loc 16 97 0
|
||||
bar.sync 0;
|
||||
.loc 16 66 0
|
||||
add.u32 %r41, %r35, %r41;
|
||||
add.u32 %r43, %r43, 128;
|
||||
setp.le.u32 %p2, %r43, %r46;
|
||||
@%p2 bra $Lt_2_2818;
|
||||
bra.uni $Lt_2_2306;
|
||||
$Lt_2_3330:
|
||||
ld.param.s32 %r11, [__cudaparm_matrixMul_bs32_32bit_wB];
|
||||
mul.lo.s32 %r20, %r10, %r11;
|
||||
mov.f32 %f1, 0f00000000; // 0
|
||||
$Lt_2_2306:
|
||||
.loc 16 103 0
|
||||
ld.param.u32 %r48, [__cudaparm_matrixMul_bs32_32bit_C];
|
||||
mul.lo.s32 %r49, %r11, %r3;
|
||||
add.s32 %r50, %r1, %r49;
|
||||
mul.lo.s32 %r51, %r50, 32;
|
||||
add.s32 %r52, %r20, %r51;
|
||||
add.s32 %r53, %r9, %r52;
|
||||
mul.lo.u32 %r54, %r53, 4;
|
||||
add.u32 %r55, %r48, %r54;
|
||||
st.global.f32 [%r55+0], %f1;
|
||||
.loc 16 118 0
|
||||
exit;
|
||||
$LDWend_matrixMul_bs32_32bit:
|
||||
} // matrixMul_bs32_32bit
|
||||
.shared .align 4 .b8 __cuda_local_var_87382_38_non_const_As__0[4096];
|
||||
.shared .align 4 .b8 __cuda_local_var_87386_38_non_const_Bs__1[4096];
|
||||
|
||||
.entry matrixMul_bs32_64bit (
|
||||
.param .u32 __cudaparm_matrixMul_bs32_64bit_C,
|
||||
.param .u32 __cudaparm_matrixMul_bs32_64bit_A,
|
||||
.param .u32 __cudaparm_matrixMul_bs32_64bit_B,
|
||||
.param .u32 __cudaparm_matrixMul_bs32_64bit_wA,
|
||||
.param .u32 __cudaparm_matrixMul_bs32_64bit_wB)
|
||||
{
|
||||
.reg .u32 %r<54>;
|
||||
.reg .f32 %f<100>;
|
||||
.reg .pred %p<4>;
|
||||
.loc 16 119 0
|
||||
$LDWbegin_matrixMul_bs32_64bit:
|
||||
.loc 16 66 0
|
||||
cvt.u32.u16 %r1, %ctaid.x;
|
||||
mul24.lo.u32 %r2, %r1, 32;
|
||||
cvt.u32.u16 %r3, %ctaid.y;
|
||||
ld.param.u32 %r4, [__cudaparm_matrixMul_bs32_64bit_wA];
|
||||
mul.lo.u32 %r5, %r3, %r4;
|
||||
mul.lo.u32 %r6, %r5, 32;
|
||||
mov.s32 %r7, %r6;
|
||||
add.u32 %r8, %r6, %r4;
|
||||
sub.u32 %r9, %r8, 1;
|
||||
cvt.u32.u16 %r10, %tid.x;
|
||||
cvt.u32.u16 %r11, %tid.y;
|
||||
ld.param.u32 %r12, [__cudaparm_matrixMul_bs32_64bit_wB];
|
||||
setp.lt.u32 %p1, %r9, %r6;
|
||||
@%p1 bra $Lt_3_3330;
|
||||
mov.u32 %r13, __cuda_local_var_87382_38_non_const_As__0;
|
||||
mov.u32 %r14, __cuda_local_var_87386_38_non_const_Bs__1;
|
||||
ld.param.u32 %r4, [__cudaparm_matrixMul_bs32_64bit_wA];
|
||||
add.u32 %r15, %r4, 31;
|
||||
shr.s32 %r16, %r15, 31;
|
||||
mov.s32 %r17, 31;
|
||||
and.b32 %r18, %r16, %r17;
|
||||
add.s32 %r19, %r18, %r15;
|
||||
shr.s32 %r20, %r19, 5;
|
||||
ld.param.u32 %r12, [__cudaparm_matrixMul_bs32_64bit_wB];
|
||||
mul.lo.u32 %r21, %r11, %r12;
|
||||
mul.lo.u32 %r22, %r11, %r4;
|
||||
mul24.lo.u32 %r23, %r11, 32;
|
||||
mul24.lo.u32 %r24, %r11, 128;
|
||||
mul24.lo.u32 %r25, %r10, 4;
|
||||
mul.lo.u32 %r26, %r12, 32;
|
||||
add.u32 %r27, %r21, %r2;
|
||||
add.u32 %r28, %r22, %r6;
|
||||
add.u32 %r29, %r23, %r10;
|
||||
add.u32 %r30, %r24, %r13;
|
||||
add.u32 %r31, %r25, %r14;
|
||||
add.u32 %r32, %r27, %r10;
|
||||
add.u32 %r33, %r28, %r10;
|
||||
mul.lo.u32 %r34, %r29, 4;
|
||||
mul.lo.u32 %r35, %r32, 4;
|
||||
mul.lo.u32 %r36, %r26, 4;
|
||||
mul.lo.u32 %r37, %r33, 4;
|
||||
add.u32 %r38, %r34, %r13;
|
||||
add.u32 %r39, %r34, %r14;
|
||||
ld.param.u32 %r40, [__cudaparm_matrixMul_bs32_64bit_B];
|
||||
add.u32 %r41, %r40, %r35;
|
||||
ld.param.u32 %r42, [__cudaparm_matrixMul_bs32_64bit_A];
|
||||
add.u32 %r43, %r42, %r37;
|
||||
mov.f32 %f1, 0f00000000; // 0
|
||||
mov.s32 %r44, %r20;
|
||||
$Lt_3_2818:
|
||||
//<loop> Loop body line 66, nesting depth: 1, estimated iterations: unknown
|
||||
.loc 16 81 0
|
||||
ld.global.f32 %f2, [%r43+0];
|
||||
st.shared.f32 [%r38+0], %f2;
|
||||
.loc 16 82 0
|
||||
ld.global.f32 %f3, [%r41+0];
|
||||
st.shared.f32 [%r39+0], %f3;
|
||||
.loc 16 85 0
|
||||
bar.sync 0;
|
||||
.loc 16 92 0
|
||||
ld.shared.f32 %f4, [%r30+0];
|
||||
ld.shared.f32 %f5, [%r31+0];
|
||||
mad.f32 %f6, %f4, %f5, %f1;
|
||||
ld.shared.f32 %f7, [%r30+4];
|
||||
ld.shared.f32 %f8, [%r31+128];
|
||||
mad.f32 %f9, %f7, %f8, %f6;
|
||||
ld.shared.f32 %f10, [%r30+8];
|
||||
ld.shared.f32 %f11, [%r31+256];
|
||||
mad.f32 %f12, %f10, %f11, %f9;
|
||||
ld.shared.f32 %f13, [%r30+12];
|
||||
ld.shared.f32 %f14, [%r31+384];
|
||||
mad.f32 %f15, %f13, %f14, %f12;
|
||||
ld.shared.f32 %f16, [%r30+16];
|
||||
ld.shared.f32 %f17, [%r31+512];
|
||||
mad.f32 %f18, %f16, %f17, %f15;
|
||||
ld.shared.f32 %f19, [%r30+20];
|
||||
ld.shared.f32 %f20, [%r31+640];
|
||||
mad.f32 %f21, %f19, %f20, %f18;
|
||||
ld.shared.f32 %f22, [%r30+24];
|
||||
ld.shared.f32 %f23, [%r31+768];
|
||||
mad.f32 %f24, %f22, %f23, %f21;
|
||||
ld.shared.f32 %f25, [%r30+28];
|
||||
ld.shared.f32 %f26, [%r31+896];
|
||||
mad.f32 %f27, %f25, %f26, %f24;
|
||||
ld.shared.f32 %f28, [%r30+32];
|
||||
ld.shared.f32 %f29, [%r31+1024];
|
||||
mad.f32 %f30, %f28, %f29, %f27;
|
||||
ld.shared.f32 %f31, [%r30+36];
|
||||
ld.shared.f32 %f32, [%r31+1152];
|
||||
mad.f32 %f33, %f31, %f32, %f30;
|
||||
ld.shared.f32 %f34, [%r30+40];
|
||||
ld.shared.f32 %f35, [%r31+1280];
|
||||
mad.f32 %f36, %f34, %f35, %f33;
|
||||
ld.shared.f32 %f37, [%r30+44];
|
||||
ld.shared.f32 %f38, [%r31+1408];
|
||||
mad.f32 %f39, %f37, %f38, %f36;
|
||||
ld.shared.f32 %f40, [%r30+48];
|
||||
ld.shared.f32 %f41, [%r31+1536];
|
||||
mad.f32 %f42, %f40, %f41, %f39;
|
||||
ld.shared.f32 %f43, [%r30+52];
|
||||
ld.shared.f32 %f44, [%r31+1664];
|
||||
mad.f32 %f45, %f43, %f44, %f42;
|
||||
ld.shared.f32 %f46, [%r30+56];
|
||||
ld.shared.f32 %f47, [%r31+1792];
|
||||
mad.f32 %f48, %f46, %f47, %f45;
|
||||
ld.shared.f32 %f49, [%r30+60];
|
||||
ld.shared.f32 %f50, [%r31+1920];
|
||||
mad.f32 %f51, %f49, %f50, %f48;
|
||||
ld.shared.f32 %f52, [%r30+64];
|
||||
ld.shared.f32 %f53, [%r31+2048];
|
||||
mad.f32 %f54, %f52, %f53, %f51;
|
||||
ld.shared.f32 %f55, [%r30+68];
|
||||
ld.shared.f32 %f56, [%r31+2176];
|
||||
mad.f32 %f57, %f55, %f56, %f54;
|
||||
ld.shared.f32 %f58, [%r30+72];
|
||||
ld.shared.f32 %f59, [%r31+2304];
|
||||
mad.f32 %f60, %f58, %f59, %f57;
|
||||
ld.shared.f32 %f61, [%r30+76];
|
||||
ld.shared.f32 %f62, [%r31+2432];
|
||||
mad.f32 %f63, %f61, %f62, %f60;
|
||||
ld.shared.f32 %f64, [%r30+80];
|
||||
ld.shared.f32 %f65, [%r31+2560];
|
||||
mad.f32 %f66, %f64, %f65, %f63;
|
||||
ld.shared.f32 %f67, [%r30+84];
|
||||
ld.shared.f32 %f68, [%r31+2688];
|
||||
mad.f32 %f69, %f67, %f68, %f66;
|
||||
ld.shared.f32 %f70, [%r30+88];
|
||||
ld.shared.f32 %f71, [%r31+2816];
|
||||
mad.f32 %f72, %f70, %f71, %f69;
|
||||
ld.shared.f32 %f73, [%r30+92];
|
||||
ld.shared.f32 %f74, [%r31+2944];
|
||||
mad.f32 %f75, %f73, %f74, %f72;
|
||||
ld.shared.f32 %f76, [%r30+96];
|
||||
ld.shared.f32 %f77, [%r31+3072];
|
||||
mad.f32 %f78, %f76, %f77, %f75;
|
||||
ld.shared.f32 %f79, [%r30+100];
|
||||
ld.shared.f32 %f80, [%r31+3200];
|
||||
mad.f32 %f81, %f79, %f80, %f78;
|
||||
ld.shared.f32 %f82, [%r30+104];
|
||||
ld.shared.f32 %f83, [%r31+3328];
|
||||
mad.f32 %f84, %f82, %f83, %f81;
|
||||
ld.shared.f32 %f85, [%r30+108];
|
||||
ld.shared.f32 %f86, [%r31+3456];
|
||||
mad.f32 %f87, %f85, %f86, %f84;
|
||||
ld.shared.f32 %f88, [%r30+112];
|
||||
ld.shared.f32 %f89, [%r31+3584];
|
||||
mad.f32 %f90, %f88, %f89, %f87;
|
||||
ld.shared.f32 %f91, [%r30+116];
|
||||
ld.shared.f32 %f92, [%r31+3712];
|
||||
mad.f32 %f93, %f91, %f92, %f90;
|
||||
ld.shared.f32 %f94, [%r30+120];
|
||||
ld.shared.f32 %f95, [%r31+3840];
|
||||
mad.f32 %f96, %f94, %f95, %f93;
|
||||
ld.shared.f32 %f97, [%r30+124];
|
||||
ld.shared.f32 %f98, [%r31+3968];
|
||||
mad.f32 %f1, %f97, %f98, %f96;
|
||||
.loc 16 97 0
|
||||
bar.sync 0;
|
||||
.loc 16 66 0
|
||||
add.u32 %r41, %r36, %r41;
|
||||
add.u32 %r7, %r7, 32;
|
||||
add.u32 %r43, %r43, 128;
|
||||
setp.ge.u32 %p2, %r9, %r7;
|
||||
@%p2 bra $Lt_3_2818;
|
||||
bra.uni $Lt_3_2306;
|
||||
$Lt_3_3330:
|
||||
ld.param.u32 %r12, [__cudaparm_matrixMul_bs32_64bit_wB];
|
||||
mul.lo.u32 %r21, %r11, %r12;
|
||||
mov.f32 %f1, 0f00000000; // 0
|
||||
$Lt_3_2306:
|
||||
.loc 16 103 0
|
||||
ld.param.u32 %r45, [__cudaparm_matrixMul_bs32_64bit_C];
|
||||
mul.lo.u32 %r46, %r12, %r3;
|
||||
add.u32 %r47, %r1, %r46;
|
||||
mul.lo.u32 %r48, %r47, 32;
|
||||
add.u32 %r49, %r21, %r48;
|
||||
add.u32 %r50, %r10, %r49;
|
||||
mul.lo.u32 %r51, %r50, 4;
|
||||
add.u32 %r52, %r45, %r51;
|
||||
st.global.f32 [%r52+0], %f1;
|
||||
.loc 16 122 0
|
||||
exit;
|
||||
$LDWend_matrixMul_bs32_64bit:
|
||||
} // matrixMul_bs32_64bit
|
||||
|
||||
@@ -0,0 +1,737 @@
|
||||
.version 1.4
|
||||
.target sm_20, map_f64_to_f32
|
||||
// compiled with C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\\bin/../open64/lib//be.exe
|
||||
// nvopencc 4.0 built on 2011-02-21
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Compiling C:/Users/EYOUNG~1.COM/AppData/Local/Temp/tmpxft_00000c2c_00000000-11_matrixMul_kernel.cpp3.i (C:/Users/EYOUNG~1.COM/AppData/Local/Temp/ccBI#.a04524)
|
||||
//-----------------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Options:
|
||||
//-----------------------------------------------------------
|
||||
// Target:ptx, ISA:sm_20, Endian:little, Pointer Size:64
|
||||
// -O3 (Optimization level)
|
||||
// -g0 (Debug level)
|
||||
// -m2 (Report advisories)
|
||||
//-----------------------------------------------------------
|
||||
|
||||
.shared .align 4 .b8 __cuda_local_var_87382_38_non_const_As__6[1024];
|
||||
.shared .align 4 .b8 __cuda_local_var_87386_38_non_const_Bs__7[1024];
|
||||
|
||||
.entry matrixMul_bs16_32bit (
|
||||
.param .u64 __cudaparm_matrixMul_bs16_32bit_C,
|
||||
.param .u64 __cudaparm_matrixMul_bs16_32bit_A,
|
||||
.param .u64 __cudaparm_matrixMul_bs16_32bit_B,
|
||||
.param .s32 __cudaparm_matrixMul_bs16_32bit_wA,
|
||||
.param .s32 __cudaparm_matrixMul_bs16_32bit_wB)
|
||||
{
|
||||
.reg .u32 %r<34>;
|
||||
.reg .u64 %rd<29>;
|
||||
.reg .f32 %f<52>;
|
||||
.reg .pred %p<4>;
|
||||
.loc 16 107 0
|
||||
$LDWbegin_matrixMul_bs16_32bit:
|
||||
.loc 16 66 0
|
||||
cvt.s32.u16 %r1, %ctaid.x;
|
||||
mul24.lo.s32 %r2, %r1, 16;
|
||||
cvt.s32.u16 %r3, %ctaid.y;
|
||||
ld.param.s32 %r4, [__cudaparm_matrixMul_bs16_32bit_wA];
|
||||
mul.lo.s32 %r5, %r3, %r4;
|
||||
mul.lo.s32 %r6, %r5, 16;
|
||||
add.s32 %r7, %r6, %r4;
|
||||
sub.s32 %r8, %r7, 1;
|
||||
cvt.s32.u16 %r9, %tid.x;
|
||||
cvt.s32.u16 %r10, %tid.y;
|
||||
ld.param.s32 %r11, [__cudaparm_matrixMul_bs16_32bit_wB];
|
||||
setp.lt.s32 %p1, %r8, %r6;
|
||||
@%p1 bra $Lt_0_3330;
|
||||
mov.u64 %rd1, __cuda_local_var_87386_38_non_const_Bs__7;
|
||||
mov.u64 %rd2, __cuda_local_var_87382_38_non_const_As__6;
|
||||
ld.param.s32 %r4, [__cudaparm_matrixMul_bs16_32bit_wA];
|
||||
add.s32 %r12, %r4, 15;
|
||||
shr.s32 %r13, %r12, 31;
|
||||
mov.s32 %r14, 15;
|
||||
and.b32 %r15, %r13, %r14;
|
||||
add.s32 %r16, %r15, %r12;
|
||||
shr.s32 %r17, %r16, 4;
|
||||
ld.param.s32 %r11, [__cudaparm_matrixMul_bs16_32bit_wB];
|
||||
mul.lo.s32 %r18, %r10, %r11;
|
||||
mul.lo.s32 %r19, %r10, %r4;
|
||||
cvt.s64.s32 %rd3, %r9;
|
||||
cvt.s64.s32 %rd4, %r10;
|
||||
add.s32 %r20, %r19, %r6;
|
||||
add.s32 %r21, %r9, %r20;
|
||||
mul.wide.s32 %rd5, %r9, 4;
|
||||
add.u64 %rd6, %rd1, %rd5;
|
||||
mul.wide.s32 %rd7, %r10, 64;
|
||||
add.u64 %rd8, %rd2, %rd7;
|
||||
mul.wide.s32 %rd9, %r10, 16;
|
||||
add.u64 %rd10, %rd3, %rd9;
|
||||
mul.lo.u64 %rd11, %rd10, 4;
|
||||
add.s32 %r22, %r19, %r8;
|
||||
mul.lo.s32 %r23, %r11, 16;
|
||||
cvt.s64.s32 %rd12, %r23;
|
||||
mul.wide.s32 %rd13, %r23, 4;
|
||||
add.u64 %rd14, %rd11, %rd2;
|
||||
add.u64 %rd15, %rd11, %rd1;
|
||||
add.s32 %r24, %r22, %r9;
|
||||
ld.param.u64 %rd16, [__cudaparm_matrixMul_bs16_32bit_B];
|
||||
add.s32 %r25, %r18, %r2;
|
||||
add.s32 %r26, %r9, %r25;
|
||||
cvt.s64.s32 %rd17, %r26;
|
||||
mul.wide.s32 %rd18, %r26, 4;
|
||||
add.u64 %rd19, %rd16, %rd18;
|
||||
ld.param.u64 %rd20, [__cudaparm_matrixMul_bs16_32bit_A];
|
||||
cvt.s64.s32 %rd21, %r21;
|
||||
mul.wide.s32 %rd22, %r21, 4;
|
||||
add.u64 %rd23, %rd20, %rd22;
|
||||
mov.f32 %f1, 0f00000000; // 0
|
||||
mov.s32 %r27, %r17;
|
||||
$Lt_0_2818:
|
||||
//<loop> Loop body line 66, nesting depth: 1, estimated iterations: unknown
|
||||
.loc 16 81 0
|
||||
ld.global.f32 %f2, [%rd23+0];
|
||||
st.shared.f32 [%rd14+0], %f2;
|
||||
.loc 16 82 0
|
||||
ld.global.f32 %f3, [%rd19+0];
|
||||
st.shared.f32 [%rd15+0], %f3;
|
||||
.loc 16 85 0
|
||||
bar.sync 0;
|
||||
.loc 16 92 0
|
||||
ld.shared.f32 %f4, [%rd8+0];
|
||||
ld.shared.f32 %f5, [%rd6+0];
|
||||
mad.f32 %f6, %f4, %f5, %f1;
|
||||
ld.shared.f32 %f7, [%rd8+4];
|
||||
ld.shared.f32 %f8, [%rd6+64];
|
||||
mad.f32 %f9, %f7, %f8, %f6;
|
||||
ld.shared.f32 %f10, [%rd8+8];
|
||||
ld.shared.f32 %f11, [%rd6+128];
|
||||
mad.f32 %f12, %f10, %f11, %f9;
|
||||
ld.shared.f32 %f13, [%rd8+12];
|
||||
ld.shared.f32 %f14, [%rd6+192];
|
||||
mad.f32 %f15, %f13, %f14, %f12;
|
||||
ld.shared.f32 %f16, [%rd8+16];
|
||||
ld.shared.f32 %f17, [%rd6+256];
|
||||
mad.f32 %f18, %f16, %f17, %f15;
|
||||
ld.shared.f32 %f19, [%rd8+20];
|
||||
ld.shared.f32 %f20, [%rd6+320];
|
||||
mad.f32 %f21, %f19, %f20, %f18;
|
||||
ld.shared.f32 %f22, [%rd8+24];
|
||||
ld.shared.f32 %f23, [%rd6+384];
|
||||
mad.f32 %f24, %f22, %f23, %f21;
|
||||
ld.shared.f32 %f25, [%rd8+28];
|
||||
ld.shared.f32 %f26, [%rd6+448];
|
||||
mad.f32 %f27, %f25, %f26, %f24;
|
||||
ld.shared.f32 %f28, [%rd8+32];
|
||||
ld.shared.f32 %f29, [%rd6+512];
|
||||
mad.f32 %f30, %f28, %f29, %f27;
|
||||
ld.shared.f32 %f31, [%rd8+36];
|
||||
ld.shared.f32 %f32, [%rd6+576];
|
||||
mad.f32 %f33, %f31, %f32, %f30;
|
||||
ld.shared.f32 %f34, [%rd8+40];
|
||||
ld.shared.f32 %f35, [%rd6+640];
|
||||
mad.f32 %f36, %f34, %f35, %f33;
|
||||
ld.shared.f32 %f37, [%rd8+44];
|
||||
ld.shared.f32 %f38, [%rd6+704];
|
||||
mad.f32 %f39, %f37, %f38, %f36;
|
||||
ld.shared.f32 %f40, [%rd8+48];
|
||||
ld.shared.f32 %f41, [%rd6+768];
|
||||
mad.f32 %f42, %f40, %f41, %f39;
|
||||
ld.shared.f32 %f43, [%rd8+52];
|
||||
ld.shared.f32 %f44, [%rd6+832];
|
||||
mad.f32 %f45, %f43, %f44, %f42;
|
||||
ld.shared.f32 %f46, [%rd8+56];
|
||||
ld.shared.f32 %f47, [%rd6+896];
|
||||
mad.f32 %f48, %f46, %f47, %f45;
|
||||
ld.shared.f32 %f49, [%rd8+60];
|
||||
ld.shared.f32 %f50, [%rd6+960];
|
||||
mad.f32 %f1, %f49, %f50, %f48;
|
||||
.loc 16 97 0
|
||||
bar.sync 0;
|
||||
.loc 16 66 0
|
||||
add.u64 %rd19, %rd13, %rd19;
|
||||
add.s32 %r21, %r21, 16;
|
||||
add.u64 %rd23, %rd23, 64;
|
||||
setp.le.s32 %p2, %r21, %r24;
|
||||
@%p2 bra $Lt_0_2818;
|
||||
bra.uni $Lt_0_2306;
|
||||
$Lt_0_3330:
|
||||
ld.param.s32 %r11, [__cudaparm_matrixMul_bs16_32bit_wB];
|
||||
mul.lo.s32 %r18, %r10, %r11;
|
||||
mov.f32 %f1, 0f00000000; // 0
|
||||
$Lt_0_2306:
|
||||
.loc 16 103 0
|
||||
ld.param.u64 %rd24, [__cudaparm_matrixMul_bs16_32bit_C];
|
||||
mul.lo.s32 %r28, %r11, %r3;
|
||||
add.s32 %r29, %r1, %r28;
|
||||
mul.lo.s32 %r30, %r29, 16;
|
||||
add.s32 %r31, %r18, %r30;
|
||||
add.s32 %r32, %r9, %r31;
|
||||
cvt.s64.s32 %rd25, %r32;
|
||||
mul.wide.s32 %rd26, %r32, 4;
|
||||
add.u64 %rd27, %rd24, %rd26;
|
||||
st.global.f32 [%rd27+0], %f1;
|
||||
.loc 16 110 0
|
||||
exit;
|
||||
$LDWend_matrixMul_bs16_32bit:
|
||||
} // matrixMul_bs16_32bit
|
||||
.shared .align 4 .b8 __cuda_local_var_87382_38_non_const_As__4[1024];
|
||||
.shared .align 4 .b8 __cuda_local_var_87386_38_non_const_Bs__5[1024];
|
||||
|
||||
.entry matrixMul_bs16_64bit (
|
||||
.param .u64 __cudaparm_matrixMul_bs16_64bit_C,
|
||||
.param .u64 __cudaparm_matrixMul_bs16_64bit_A,
|
||||
.param .u64 __cudaparm_matrixMul_bs16_64bit_B,
|
||||
.param .u64 __cudaparm_matrixMul_bs16_64bit_wA,
|
||||
.param .u64 __cudaparm_matrixMul_bs16_64bit_wB)
|
||||
{
|
||||
.reg .u64 %rd<53>;
|
||||
.reg .f32 %f<52>;
|
||||
.reg .pred %p<4>;
|
||||
.loc 16 111 0
|
||||
$LDWbegin_matrixMul_bs16_64bit:
|
||||
.loc 16 66 0
|
||||
cvt.u64.u16 %rd1, %ctaid.x;
|
||||
mul.lo.u64 %rd2, %rd1, 16;
|
||||
cvt.u64.u16 %rd3, %ctaid.y;
|
||||
ld.param.u64 %rd4, [__cudaparm_matrixMul_bs16_64bit_wA];
|
||||
mul.lo.u64 %rd5, %rd3, %rd4;
|
||||
mul.lo.u64 %rd6, %rd5, 16;
|
||||
mov.s64 %rd7, %rd6;
|
||||
add.u64 %rd8, %rd6, %rd4;
|
||||
sub.u64 %rd9, %rd8, 1;
|
||||
cvt.u64.u16 %rd10, %tid.x;
|
||||
cvt.u64.u16 %rd11, %tid.y;
|
||||
ld.param.u64 %rd12, [__cudaparm_matrixMul_bs16_64bit_wB];
|
||||
setp.lt.u64 %p1, %rd9, %rd6;
|
||||
@%p1 bra $Lt_1_3330;
|
||||
mov.u64 %rd13, __cuda_local_var_87386_38_non_const_Bs__5;
|
||||
mov.u64 %rd14, __cuda_local_var_87382_38_non_const_As__4;
|
||||
ld.param.u64 %rd4, [__cudaparm_matrixMul_bs16_64bit_wA];
|
||||
add.u64 %rd15, %rd4, 15;
|
||||
shr.s64 %rd16, %rd15, 63;
|
||||
mov.s64 %rd17, 15;
|
||||
and.b64 %rd18, %rd16, %rd17;
|
||||
add.s64 %rd19, %rd18, %rd15;
|
||||
shr.s64 %rd20, %rd19, 4;
|
||||
ld.param.u64 %rd12, [__cudaparm_matrixMul_bs16_64bit_wB];
|
||||
mul.lo.u64 %rd21, %rd11, %rd12;
|
||||
mul.lo.u64 %rd22, %rd11, 64;
|
||||
add.u64 %rd23, %rd14, %rd22;
|
||||
mul.lo.u64 %rd24, %rd10, 4;
|
||||
add.u64 %rd25, %rd13, %rd24;
|
||||
mul.lo.u64 %rd26, %rd11, 16;
|
||||
add.u64 %rd27, %rd10, %rd26;
|
||||
mul.lo.u64 %rd28, %rd27, 4;
|
||||
mul.lo.u64 %rd29, %rd12, 64;
|
||||
add.u64 %rd30, %rd28, %rd14;
|
||||
add.u64 %rd31, %rd28, %rd13;
|
||||
ld.param.u64 %rd32, [__cudaparm_matrixMul_bs16_64bit_B];
|
||||
add.u64 %rd33, %rd21, %rd2;
|
||||
add.u64 %rd34, %rd10, %rd33;
|
||||
mul.lo.u64 %rd35, %rd34, 4;
|
||||
add.u64 %rd36, %rd32, %rd35;
|
||||
ld.param.u64 %rd37, [__cudaparm_matrixMul_bs16_64bit_A];
|
||||
mul.lo.u64 %rd38, %rd11, %rd4;
|
||||
add.u64 %rd39, %rd6, %rd38;
|
||||
add.u64 %rd40, %rd10, %rd39;
|
||||
mul.lo.u64 %rd41, %rd40, 4;
|
||||
add.u64 %rd42, %rd37, %rd41;
|
||||
mov.f32 %f1, 0f00000000; // 0
|
||||
mov.s64 %rd43, %rd20;
|
||||
$Lt_1_2818:
|
||||
//<loop> Loop body line 66, nesting depth: 1, estimated iterations: unknown
|
||||
.loc 16 81 0
|
||||
ld.global.f32 %f2, [%rd42+0];
|
||||
st.shared.f32 [%rd30+0], %f2;
|
||||
.loc 16 82 0
|
||||
ld.global.f32 %f3, [%rd36+0];
|
||||
st.shared.f32 [%rd31+0], %f3;
|
||||
.loc 16 85 0
|
||||
bar.sync 0;
|
||||
.loc 16 92 0
|
||||
ld.shared.f32 %f4, [%rd23+0];
|
||||
ld.shared.f32 %f5, [%rd25+0];
|
||||
mad.f32 %f6, %f4, %f5, %f1;
|
||||
ld.shared.f32 %f7, [%rd23+4];
|
||||
ld.shared.f32 %f8, [%rd25+64];
|
||||
mad.f32 %f9, %f7, %f8, %f6;
|
||||
ld.shared.f32 %f10, [%rd23+8];
|
||||
ld.shared.f32 %f11, [%rd25+128];
|
||||
mad.f32 %f12, %f10, %f11, %f9;
|
||||
ld.shared.f32 %f13, [%rd23+12];
|
||||
ld.shared.f32 %f14, [%rd25+192];
|
||||
mad.f32 %f15, %f13, %f14, %f12;
|
||||
ld.shared.f32 %f16, [%rd23+16];
|
||||
ld.shared.f32 %f17, [%rd25+256];
|
||||
mad.f32 %f18, %f16, %f17, %f15;
|
||||
ld.shared.f32 %f19, [%rd23+20];
|
||||
ld.shared.f32 %f20, [%rd25+320];
|
||||
mad.f32 %f21, %f19, %f20, %f18;
|
||||
ld.shared.f32 %f22, [%rd23+24];
|
||||
ld.shared.f32 %f23, [%rd25+384];
|
||||
mad.f32 %f24, %f22, %f23, %f21;
|
||||
ld.shared.f32 %f25, [%rd23+28];
|
||||
ld.shared.f32 %f26, [%rd25+448];
|
||||
mad.f32 %f27, %f25, %f26, %f24;
|
||||
ld.shared.f32 %f28, [%rd23+32];
|
||||
ld.shared.f32 %f29, [%rd25+512];
|
||||
mad.f32 %f30, %f28, %f29, %f27;
|
||||
ld.shared.f32 %f31, [%rd23+36];
|
||||
ld.shared.f32 %f32, [%rd25+576];
|
||||
mad.f32 %f33, %f31, %f32, %f30;
|
||||
ld.shared.f32 %f34, [%rd23+40];
|
||||
ld.shared.f32 %f35, [%rd25+640];
|
||||
mad.f32 %f36, %f34, %f35, %f33;
|
||||
ld.shared.f32 %f37, [%rd23+44];
|
||||
ld.shared.f32 %f38, [%rd25+704];
|
||||
mad.f32 %f39, %f37, %f38, %f36;
|
||||
ld.shared.f32 %f40, [%rd23+48];
|
||||
ld.shared.f32 %f41, [%rd25+768];
|
||||
mad.f32 %f42, %f40, %f41, %f39;
|
||||
ld.shared.f32 %f43, [%rd23+52];
|
||||
ld.shared.f32 %f44, [%rd25+832];
|
||||
mad.f32 %f45, %f43, %f44, %f42;
|
||||
ld.shared.f32 %f46, [%rd23+56];
|
||||
ld.shared.f32 %f47, [%rd25+896];
|
||||
mad.f32 %f48, %f46, %f47, %f45;
|
||||
ld.shared.f32 %f49, [%rd23+60];
|
||||
ld.shared.f32 %f50, [%rd25+960];
|
||||
mad.f32 %f1, %f49, %f50, %f48;
|
||||
.loc 16 97 0
|
||||
bar.sync 0;
|
||||
.loc 16 66 0
|
||||
add.u64 %rd36, %rd29, %rd36;
|
||||
add.u64 %rd7, %rd7, 16;
|
||||
add.u64 %rd42, %rd42, 64;
|
||||
setp.ge.u64 %p2, %rd9, %rd7;
|
||||
@%p2 bra $Lt_1_2818;
|
||||
bra.uni $Lt_1_2306;
|
||||
$Lt_1_3330:
|
||||
ld.param.u64 %rd12, [__cudaparm_matrixMul_bs16_64bit_wB];
|
||||
mul.lo.u64 %rd21, %rd11, %rd12;
|
||||
mov.f32 %f1, 0f00000000; // 0
|
||||
$Lt_1_2306:
|
||||
.loc 16 103 0
|
||||
ld.param.u64 %rd44, [__cudaparm_matrixMul_bs16_64bit_C];
|
||||
mul.lo.u64 %rd45, %rd12, %rd3;
|
||||
add.u64 %rd46, %rd1, %rd45;
|
||||
mul.lo.u64 %rd47, %rd46, 16;
|
||||
add.u64 %rd48, %rd21, %rd47;
|
||||
add.u64 %rd49, %rd10, %rd48;
|
||||
mul.lo.u64 %rd50, %rd49, 4;
|
||||
add.u64 %rd51, %rd44, %rd50;
|
||||
st.global.f32 [%rd51+0], %f1;
|
||||
.loc 16 114 0
|
||||
exit;
|
||||
$LDWend_matrixMul_bs16_64bit:
|
||||
} // matrixMul_bs16_64bit
|
||||
.shared .align 4 .b8 __cuda_local_var_87382_38_non_const_As__2[4096];
|
||||
.shared .align 4 .b8 __cuda_local_var_87386_38_non_const_Bs__3[4096];
|
||||
|
||||
.entry matrixMul_bs32_32bit (
|
||||
.param .u64 __cudaparm_matrixMul_bs32_32bit_C,
|
||||
.param .u64 __cudaparm_matrixMul_bs32_32bit_A,
|
||||
.param .u64 __cudaparm_matrixMul_bs32_32bit_B,
|
||||
.param .s32 __cudaparm_matrixMul_bs32_32bit_wA,
|
||||
.param .s32 __cudaparm_matrixMul_bs32_32bit_wB)
|
||||
{
|
||||
.reg .u32 %r<34>;
|
||||
.reg .u64 %rd<29>;
|
||||
.reg .f32 %f<100>;
|
||||
.reg .pred %p<4>;
|
||||
.loc 16 115 0
|
||||
$LDWbegin_matrixMul_bs32_32bit:
|
||||
.loc 16 66 0
|
||||
cvt.s32.u16 %r1, %ctaid.x;
|
||||
mul24.lo.s32 %r2, %r1, 32;
|
||||
cvt.s32.u16 %r3, %ctaid.y;
|
||||
ld.param.s32 %r4, [__cudaparm_matrixMul_bs32_32bit_wA];
|
||||
mul.lo.s32 %r5, %r3, %r4;
|
||||
mul.lo.s32 %r6, %r5, 32;
|
||||
add.s32 %r7, %r6, %r4;
|
||||
sub.s32 %r8, %r7, 1;
|
||||
cvt.s32.u16 %r9, %tid.x;
|
||||
cvt.s32.u16 %r10, %tid.y;
|
||||
ld.param.s32 %r11, [__cudaparm_matrixMul_bs32_32bit_wB];
|
||||
setp.lt.s32 %p1, %r8, %r6;
|
||||
@%p1 bra $Lt_2_3330;
|
||||
mov.u64 %rd1, __cuda_local_var_87386_38_non_const_Bs__3;
|
||||
mov.u64 %rd2, __cuda_local_var_87382_38_non_const_As__2;
|
||||
ld.param.s32 %r4, [__cudaparm_matrixMul_bs32_32bit_wA];
|
||||
add.s32 %r12, %r4, 31;
|
||||
shr.s32 %r13, %r12, 31;
|
||||
mov.s32 %r14, 31;
|
||||
and.b32 %r15, %r13, %r14;
|
||||
add.s32 %r16, %r15, %r12;
|
||||
shr.s32 %r17, %r16, 5;
|
||||
ld.param.s32 %r11, [__cudaparm_matrixMul_bs32_32bit_wB];
|
||||
mul.lo.s32 %r18, %r10, %r11;
|
||||
mul.lo.s32 %r19, %r10, %r4;
|
||||
cvt.s64.s32 %rd3, %r9;
|
||||
cvt.s64.s32 %rd4, %r10;
|
||||
add.s32 %r20, %r19, %r6;
|
||||
add.s32 %r21, %r9, %r20;
|
||||
mul.wide.s32 %rd5, %r9, 4;
|
||||
add.u64 %rd6, %rd1, %rd5;
|
||||
mul.wide.s32 %rd7, %r10, 128;
|
||||
add.u64 %rd8, %rd2, %rd7;
|
||||
mul.wide.s32 %rd9, %r10, 32;
|
||||
add.u64 %rd10, %rd3, %rd9;
|
||||
mul.lo.u64 %rd11, %rd10, 4;
|
||||
add.s32 %r22, %r19, %r8;
|
||||
mul.lo.s32 %r23, %r11, 32;
|
||||
cvt.s64.s32 %rd12, %r23;
|
||||
mul.wide.s32 %rd13, %r23, 4;
|
||||
add.u64 %rd14, %rd11, %rd2;
|
||||
add.u64 %rd15, %rd11, %rd1;
|
||||
add.s32 %r24, %r22, %r9;
|
||||
ld.param.u64 %rd16, [__cudaparm_matrixMul_bs32_32bit_B];
|
||||
add.s32 %r25, %r18, %r2;
|
||||
add.s32 %r26, %r9, %r25;
|
||||
cvt.s64.s32 %rd17, %r26;
|
||||
mul.wide.s32 %rd18, %r26, 4;
|
||||
add.u64 %rd19, %rd16, %rd18;
|
||||
ld.param.u64 %rd20, [__cudaparm_matrixMul_bs32_32bit_A];
|
||||
cvt.s64.s32 %rd21, %r21;
|
||||
mul.wide.s32 %rd22, %r21, 4;
|
||||
add.u64 %rd23, %rd20, %rd22;
|
||||
mov.f32 %f1, 0f00000000; // 0
|
||||
mov.s32 %r27, %r17;
|
||||
$Lt_2_2818:
|
||||
//<loop> Loop body line 66, nesting depth: 1, estimated iterations: unknown
|
||||
.loc 16 81 0
|
||||
ld.global.f32 %f2, [%rd23+0];
|
||||
st.shared.f32 [%rd14+0], %f2;
|
||||
.loc 16 82 0
|
||||
ld.global.f32 %f3, [%rd19+0];
|
||||
st.shared.f32 [%rd15+0], %f3;
|
||||
.loc 16 85 0
|
||||
bar.sync 0;
|
||||
.loc 16 92 0
|
||||
ld.shared.f32 %f4, [%rd8+0];
|
||||
ld.shared.f32 %f5, [%rd6+0];
|
||||
mad.f32 %f6, %f4, %f5, %f1;
|
||||
ld.shared.f32 %f7, [%rd8+4];
|
||||
ld.shared.f32 %f8, [%rd6+128];
|
||||
mad.f32 %f9, %f7, %f8, %f6;
|
||||
ld.shared.f32 %f10, [%rd8+8];
|
||||
ld.shared.f32 %f11, [%rd6+256];
|
||||
mad.f32 %f12, %f10, %f11, %f9;
|
||||
ld.shared.f32 %f13, [%rd8+12];
|
||||
ld.shared.f32 %f14, [%rd6+384];
|
||||
mad.f32 %f15, %f13, %f14, %f12;
|
||||
ld.shared.f32 %f16, [%rd8+16];
|
||||
ld.shared.f32 %f17, [%rd6+512];
|
||||
mad.f32 %f18, %f16, %f17, %f15;
|
||||
ld.shared.f32 %f19, [%rd8+20];
|
||||
ld.shared.f32 %f20, [%rd6+640];
|
||||
mad.f32 %f21, %f19, %f20, %f18;
|
||||
ld.shared.f32 %f22, [%rd8+24];
|
||||
ld.shared.f32 %f23, [%rd6+768];
|
||||
mad.f32 %f24, %f22, %f23, %f21;
|
||||
ld.shared.f32 %f25, [%rd8+28];
|
||||
ld.shared.f32 %f26, [%rd6+896];
|
||||
mad.f32 %f27, %f25, %f26, %f24;
|
||||
ld.shared.f32 %f28, [%rd8+32];
|
||||
ld.shared.f32 %f29, [%rd6+1024];
|
||||
mad.f32 %f30, %f28, %f29, %f27;
|
||||
ld.shared.f32 %f31, [%rd8+36];
|
||||
ld.shared.f32 %f32, [%rd6+1152];
|
||||
mad.f32 %f33, %f31, %f32, %f30;
|
||||
ld.shared.f32 %f34, [%rd8+40];
|
||||
ld.shared.f32 %f35, [%rd6+1280];
|
||||
mad.f32 %f36, %f34, %f35, %f33;
|
||||
ld.shared.f32 %f37, [%rd8+44];
|
||||
ld.shared.f32 %f38, [%rd6+1408];
|
||||
mad.f32 %f39, %f37, %f38, %f36;
|
||||
ld.shared.f32 %f40, [%rd8+48];
|
||||
ld.shared.f32 %f41, [%rd6+1536];
|
||||
mad.f32 %f42, %f40, %f41, %f39;
|
||||
ld.shared.f32 %f43, [%rd8+52];
|
||||
ld.shared.f32 %f44, [%rd6+1664];
|
||||
mad.f32 %f45, %f43, %f44, %f42;
|
||||
ld.shared.f32 %f46, [%rd8+56];
|
||||
ld.shared.f32 %f47, [%rd6+1792];
|
||||
mad.f32 %f48, %f46, %f47, %f45;
|
||||
ld.shared.f32 %f49, [%rd8+60];
|
||||
ld.shared.f32 %f50, [%rd6+1920];
|
||||
mad.f32 %f51, %f49, %f50, %f48;
|
||||
ld.shared.f32 %f52, [%rd8+64];
|
||||
ld.shared.f32 %f53, [%rd6+2048];
|
||||
mad.f32 %f54, %f52, %f53, %f51;
|
||||
ld.shared.f32 %f55, [%rd8+68];
|
||||
ld.shared.f32 %f56, [%rd6+2176];
|
||||
mad.f32 %f57, %f55, %f56, %f54;
|
||||
ld.shared.f32 %f58, [%rd8+72];
|
||||
ld.shared.f32 %f59, [%rd6+2304];
|
||||
mad.f32 %f60, %f58, %f59, %f57;
|
||||
ld.shared.f32 %f61, [%rd8+76];
|
||||
ld.shared.f32 %f62, [%rd6+2432];
|
||||
mad.f32 %f63, %f61, %f62, %f60;
|
||||
ld.shared.f32 %f64, [%rd8+80];
|
||||
ld.shared.f32 %f65, [%rd6+2560];
|
||||
mad.f32 %f66, %f64, %f65, %f63;
|
||||
ld.shared.f32 %f67, [%rd8+84];
|
||||
ld.shared.f32 %f68, [%rd6+2688];
|
||||
mad.f32 %f69, %f67, %f68, %f66;
|
||||
ld.shared.f32 %f70, [%rd8+88];
|
||||
ld.shared.f32 %f71, [%rd6+2816];
|
||||
mad.f32 %f72, %f70, %f71, %f69;
|
||||
ld.shared.f32 %f73, [%rd8+92];
|
||||
ld.shared.f32 %f74, [%rd6+2944];
|
||||
mad.f32 %f75, %f73, %f74, %f72;
|
||||
ld.shared.f32 %f76, [%rd8+96];
|
||||
ld.shared.f32 %f77, [%rd6+3072];
|
||||
mad.f32 %f78, %f76, %f77, %f75;
|
||||
ld.shared.f32 %f79, [%rd8+100];
|
||||
ld.shared.f32 %f80, [%rd6+3200];
|
||||
mad.f32 %f81, %f79, %f80, %f78;
|
||||
ld.shared.f32 %f82, [%rd8+104];
|
||||
ld.shared.f32 %f83, [%rd6+3328];
|
||||
mad.f32 %f84, %f82, %f83, %f81;
|
||||
ld.shared.f32 %f85, [%rd8+108];
|
||||
ld.shared.f32 %f86, [%rd6+3456];
|
||||
mad.f32 %f87, %f85, %f86, %f84;
|
||||
ld.shared.f32 %f88, [%rd8+112];
|
||||
ld.shared.f32 %f89, [%rd6+3584];
|
||||
mad.f32 %f90, %f88, %f89, %f87;
|
||||
ld.shared.f32 %f91, [%rd8+116];
|
||||
ld.shared.f32 %f92, [%rd6+3712];
|
||||
mad.f32 %f93, %f91, %f92, %f90;
|
||||
ld.shared.f32 %f94, [%rd8+120];
|
||||
ld.shared.f32 %f95, [%rd6+3840];
|
||||
mad.f32 %f96, %f94, %f95, %f93;
|
||||
ld.shared.f32 %f97, [%rd8+124];
|
||||
ld.shared.f32 %f98, [%rd6+3968];
|
||||
mad.f32 %f1, %f97, %f98, %f96;
|
||||
.loc 16 97 0
|
||||
bar.sync 0;
|
||||
.loc 16 66 0
|
||||
add.u64 %rd19, %rd13, %rd19;
|
||||
add.s32 %r21, %r21, 32;
|
||||
add.u64 %rd23, %rd23, 128;
|
||||
setp.le.s32 %p2, %r21, %r24;
|
||||
@%p2 bra $Lt_2_2818;
|
||||
bra.uni $Lt_2_2306;
|
||||
$Lt_2_3330:
|
||||
ld.param.s32 %r11, [__cudaparm_matrixMul_bs32_32bit_wB];
|
||||
mul.lo.s32 %r18, %r10, %r11;
|
||||
mov.f32 %f1, 0f00000000; // 0
|
||||
$Lt_2_2306:
|
||||
.loc 16 103 0
|
||||
ld.param.u64 %rd24, [__cudaparm_matrixMul_bs32_32bit_C];
|
||||
mul.lo.s32 %r28, %r11, %r3;
|
||||
add.s32 %r29, %r1, %r28;
|
||||
mul.lo.s32 %r30, %r29, 32;
|
||||
add.s32 %r31, %r18, %r30;
|
||||
add.s32 %r32, %r9, %r31;
|
||||
cvt.s64.s32 %rd25, %r32;
|
||||
mul.wide.s32 %rd26, %r32, 4;
|
||||
add.u64 %rd27, %rd24, %rd26;
|
||||
st.global.f32 [%rd27+0], %f1;
|
||||
.loc 16 118 0
|
||||
exit;
|
||||
$LDWend_matrixMul_bs32_32bit:
|
||||
} // matrixMul_bs32_32bit
|
||||
.shared .align 4 .b8 __cuda_local_var_87382_38_non_const_As__0[4096];
|
||||
.shared .align 4 .b8 __cuda_local_var_87386_38_non_const_Bs__1[4096];
|
||||
|
||||
.entry matrixMul_bs32_64bit (
|
||||
.param .u64 __cudaparm_matrixMul_bs32_64bit_C,
|
||||
.param .u64 __cudaparm_matrixMul_bs32_64bit_A,
|
||||
.param .u64 __cudaparm_matrixMul_bs32_64bit_B,
|
||||
.param .u64 __cudaparm_matrixMul_bs32_64bit_wA,
|
||||
.param .u64 __cudaparm_matrixMul_bs32_64bit_wB)
|
||||
{
|
||||
.reg .u64 %rd<53>;
|
||||
.reg .f32 %f<100>;
|
||||
.reg .pred %p<4>;
|
||||
.loc 16 119 0
|
||||
$LDWbegin_matrixMul_bs32_64bit:
|
||||
.loc 16 66 0
|
||||
cvt.u64.u16 %rd1, %ctaid.x;
|
||||
mul.lo.u64 %rd2, %rd1, 32;
|
||||
cvt.u64.u16 %rd3, %ctaid.y;
|
||||
ld.param.u64 %rd4, [__cudaparm_matrixMul_bs32_64bit_wA];
|
||||
mul.lo.u64 %rd5, %rd3, %rd4;
|
||||
mul.lo.u64 %rd6, %rd5, 32;
|
||||
mov.s64 %rd7, %rd6;
|
||||
add.u64 %rd8, %rd6, %rd4;
|
||||
sub.u64 %rd9, %rd8, 1;
|
||||
cvt.u64.u16 %rd10, %tid.x;
|
||||
cvt.u64.u16 %rd11, %tid.y;
|
||||
ld.param.u64 %rd12, [__cudaparm_matrixMul_bs32_64bit_wB];
|
||||
setp.lt.u64 %p1, %rd9, %rd6;
|
||||
@%p1 bra $Lt_3_3330;
|
||||
mov.u64 %rd13, __cuda_local_var_87386_38_non_const_Bs__1;
|
||||
mov.u64 %rd14, __cuda_local_var_87382_38_non_const_As__0;
|
||||
ld.param.u64 %rd4, [__cudaparm_matrixMul_bs32_64bit_wA];
|
||||
add.u64 %rd15, %rd4, 31;
|
||||
shr.s64 %rd16, %rd15, 63;
|
||||
mov.s64 %rd17, 31;
|
||||
and.b64 %rd18, %rd16, %rd17;
|
||||
add.s64 %rd19, %rd18, %rd15;
|
||||
shr.s64 %rd20, %rd19, 5;
|
||||
ld.param.u64 %rd12, [__cudaparm_matrixMul_bs32_64bit_wB];
|
||||
mul.lo.u64 %rd21, %rd11, %rd12;
|
||||
mul.lo.u64 %rd22, %rd11, 128;
|
||||
add.u64 %rd23, %rd14, %rd22;
|
||||
mul.lo.u64 %rd24, %rd10, 4;
|
||||
add.u64 %rd25, %rd13, %rd24;
|
||||
mul.lo.u64 %rd26, %rd11, 32;
|
||||
add.u64 %rd27, %rd10, %rd26;
|
||||
mul.lo.u64 %rd28, %rd27, 4;
|
||||
mul.lo.u64 %rd29, %rd12, 128;
|
||||
add.u64 %rd30, %rd28, %rd14;
|
||||
add.u64 %rd31, %rd28, %rd13;
|
||||
ld.param.u64 %rd32, [__cudaparm_matrixMul_bs32_64bit_B];
|
||||
add.u64 %rd33, %rd21, %rd2;
|
||||
add.u64 %rd34, %rd10, %rd33;
|
||||
mul.lo.u64 %rd35, %rd34, 4;
|
||||
add.u64 %rd36, %rd32, %rd35;
|
||||
ld.param.u64 %rd37, [__cudaparm_matrixMul_bs32_64bit_A];
|
||||
mul.lo.u64 %rd38, %rd11, %rd4;
|
||||
add.u64 %rd39, %rd6, %rd38;
|
||||
add.u64 %rd40, %rd10, %rd39;
|
||||
mul.lo.u64 %rd41, %rd40, 4;
|
||||
add.u64 %rd42, %rd37, %rd41;
|
||||
mov.f32 %f1, 0f00000000; // 0
|
||||
mov.s64 %rd43, %rd20;
|
||||
$Lt_3_2818:
|
||||
//<loop> Loop body line 66, nesting depth: 1, estimated iterations: unknown
|
||||
.loc 16 81 0
|
||||
ld.global.f32 %f2, [%rd42+0];
|
||||
st.shared.f32 [%rd30+0], %f2;
|
||||
.loc 16 82 0
|
||||
ld.global.f32 %f3, [%rd36+0];
|
||||
st.shared.f32 [%rd31+0], %f3;
|
||||
.loc 16 85 0
|
||||
bar.sync 0;
|
||||
.loc 16 92 0
|
||||
ld.shared.f32 %f4, [%rd23+0];
|
||||
ld.shared.f32 %f5, [%rd25+0];
|
||||
mad.f32 %f6, %f4, %f5, %f1;
|
||||
ld.shared.f32 %f7, [%rd23+4];
|
||||
ld.shared.f32 %f8, [%rd25+128];
|
||||
mad.f32 %f9, %f7, %f8, %f6;
|
||||
ld.shared.f32 %f10, [%rd23+8];
|
||||
ld.shared.f32 %f11, [%rd25+256];
|
||||
mad.f32 %f12, %f10, %f11, %f9;
|
||||
ld.shared.f32 %f13, [%rd23+12];
|
||||
ld.shared.f32 %f14, [%rd25+384];
|
||||
mad.f32 %f15, %f13, %f14, %f12;
|
||||
ld.shared.f32 %f16, [%rd23+16];
|
||||
ld.shared.f32 %f17, [%rd25+512];
|
||||
mad.f32 %f18, %f16, %f17, %f15;
|
||||
ld.shared.f32 %f19, [%rd23+20];
|
||||
ld.shared.f32 %f20, [%rd25+640];
|
||||
mad.f32 %f21, %f19, %f20, %f18;
|
||||
ld.shared.f32 %f22, [%rd23+24];
|
||||
ld.shared.f32 %f23, [%rd25+768];
|
||||
mad.f32 %f24, %f22, %f23, %f21;
|
||||
ld.shared.f32 %f25, [%rd23+28];
|
||||
ld.shared.f32 %f26, [%rd25+896];
|
||||
mad.f32 %f27, %f25, %f26, %f24;
|
||||
ld.shared.f32 %f28, [%rd23+32];
|
||||
ld.shared.f32 %f29, [%rd25+1024];
|
||||
mad.f32 %f30, %f28, %f29, %f27;
|
||||
ld.shared.f32 %f31, [%rd23+36];
|
||||
ld.shared.f32 %f32, [%rd25+1152];
|
||||
mad.f32 %f33, %f31, %f32, %f30;
|
||||
ld.shared.f32 %f34, [%rd23+40];
|
||||
ld.shared.f32 %f35, [%rd25+1280];
|
||||
mad.f32 %f36, %f34, %f35, %f33;
|
||||
ld.shared.f32 %f37, [%rd23+44];
|
||||
ld.shared.f32 %f38, [%rd25+1408];
|
||||
mad.f32 %f39, %f37, %f38, %f36;
|
||||
ld.shared.f32 %f40, [%rd23+48];
|
||||
ld.shared.f32 %f41, [%rd25+1536];
|
||||
mad.f32 %f42, %f40, %f41, %f39;
|
||||
ld.shared.f32 %f43, [%rd23+52];
|
||||
ld.shared.f32 %f44, [%rd25+1664];
|
||||
mad.f32 %f45, %f43, %f44, %f42;
|
||||
ld.shared.f32 %f46, [%rd23+56];
|
||||
ld.shared.f32 %f47, [%rd25+1792];
|
||||
mad.f32 %f48, %f46, %f47, %f45;
|
||||
ld.shared.f32 %f49, [%rd23+60];
|
||||
ld.shared.f32 %f50, [%rd25+1920];
|
||||
mad.f32 %f51, %f49, %f50, %f48;
|
||||
ld.shared.f32 %f52, [%rd23+64];
|
||||
ld.shared.f32 %f53, [%rd25+2048];
|
||||
mad.f32 %f54, %f52, %f53, %f51;
|
||||
ld.shared.f32 %f55, [%rd23+68];
|
||||
ld.shared.f32 %f56, [%rd25+2176];
|
||||
mad.f32 %f57, %f55, %f56, %f54;
|
||||
ld.shared.f32 %f58, [%rd23+72];
|
||||
ld.shared.f32 %f59, [%rd25+2304];
|
||||
mad.f32 %f60, %f58, %f59, %f57;
|
||||
ld.shared.f32 %f61, [%rd23+76];
|
||||
ld.shared.f32 %f62, [%rd25+2432];
|
||||
mad.f32 %f63, %f61, %f62, %f60;
|
||||
ld.shared.f32 %f64, [%rd23+80];
|
||||
ld.shared.f32 %f65, [%rd25+2560];
|
||||
mad.f32 %f66, %f64, %f65, %f63;
|
||||
ld.shared.f32 %f67, [%rd23+84];
|
||||
ld.shared.f32 %f68, [%rd25+2688];
|
||||
mad.f32 %f69, %f67, %f68, %f66;
|
||||
ld.shared.f32 %f70, [%rd23+88];
|
||||
ld.shared.f32 %f71, [%rd25+2816];
|
||||
mad.f32 %f72, %f70, %f71, %f69;
|
||||
ld.shared.f32 %f73, [%rd23+92];
|
||||
ld.shared.f32 %f74, [%rd25+2944];
|
||||
mad.f32 %f75, %f73, %f74, %f72;
|
||||
ld.shared.f32 %f76, [%rd23+96];
|
||||
ld.shared.f32 %f77, [%rd25+3072];
|
||||
mad.f32 %f78, %f76, %f77, %f75;
|
||||
ld.shared.f32 %f79, [%rd23+100];
|
||||
ld.shared.f32 %f80, [%rd25+3200];
|
||||
mad.f32 %f81, %f79, %f80, %f78;
|
||||
ld.shared.f32 %f82, [%rd23+104];
|
||||
ld.shared.f32 %f83, [%rd25+3328];
|
||||
mad.f32 %f84, %f82, %f83, %f81;
|
||||
ld.shared.f32 %f85, [%rd23+108];
|
||||
ld.shared.f32 %f86, [%rd25+3456];
|
||||
mad.f32 %f87, %f85, %f86, %f84;
|
||||
ld.shared.f32 %f88, [%rd23+112];
|
||||
ld.shared.f32 %f89, [%rd25+3584];
|
||||
mad.f32 %f90, %f88, %f89, %f87;
|
||||
ld.shared.f32 %f91, [%rd23+116];
|
||||
ld.shared.f32 %f92, [%rd25+3712];
|
||||
mad.f32 %f93, %f91, %f92, %f90;
|
||||
ld.shared.f32 %f94, [%rd23+120];
|
||||
ld.shared.f32 %f95, [%rd25+3840];
|
||||
mad.f32 %f96, %f94, %f95, %f93;
|
||||
ld.shared.f32 %f97, [%rd23+124];
|
||||
ld.shared.f32 %f98, [%rd25+3968];
|
||||
mad.f32 %f1, %f97, %f98, %f96;
|
||||
.loc 16 97 0
|
||||
bar.sync 0;
|
||||
.loc 16 66 0
|
||||
add.u64 %rd36, %rd29, %rd36;
|
||||
add.u64 %rd7, %rd7, 32;
|
||||
add.u64 %rd42, %rd42, 128;
|
||||
setp.ge.u64 %p2, %rd9, %rd7;
|
||||
@%p2 bra $Lt_3_2818;
|
||||
bra.uni $Lt_3_2306;
|
||||
$Lt_3_3330:
|
||||
ld.param.u64 %rd12, [__cudaparm_matrixMul_bs32_64bit_wB];
|
||||
mul.lo.u64 %rd21, %rd11, %rd12;
|
||||
mov.f32 %f1, 0f00000000; // 0
|
||||
$Lt_3_2306:
|
||||
.loc 16 103 0
|
||||
ld.param.u64 %rd44, [__cudaparm_matrixMul_bs32_64bit_C];
|
||||
mul.lo.u64 %rd45, %rd12, %rd3;
|
||||
add.u64 %rd46, %rd1, %rd45;
|
||||
mul.lo.u64 %rd47, %rd46, 32;
|
||||
add.u64 %rd48, %rd21, %rd47;
|
||||
add.u64 %rd49, %rd10, %rd48;
|
||||
mul.lo.u64 %rd50, %rd49, 4;
|
||||
add.u64 %rd51, %rd44, %rd50;
|
||||
st.global.f32 [%rd51+0], %f1;
|
||||
.loc 16 122 0
|
||||
exit;
|
||||
$LDWend_matrixMul_bs32_64bit:
|
||||
} // matrixMul_bs32_64bit
|
||||
|
||||
91
cpp/0_Introduction/matrixMulDynlinkJIT/extras/ptx2c.py
Normal file
91
cpp/0_Introduction/matrixMulDynlinkJIT/extras/ptx2c.py
Normal file
@@ -0,0 +1,91 @@
|
||||
#!/usr/bin/env python
|
||||
from string import *
|
||||
import os, getopt, sys, platform
|
||||
|
||||
g_Header = '''/* Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of NVIDIA CORPORATION nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// This file is auto-generated, do not edit
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
'''
|
||||
|
||||
|
||||
def Usage():
|
||||
print("Usage: ptx2c.py in out")
|
||||
print("Description: performs embedding in.cubin or in.ptx file into out.c and out.h files as character array")
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
def FormatCharHex(d):
|
||||
s = hex(ord(d))
|
||||
if len(s) == 3:
|
||||
s = "0x0" + s[2]
|
||||
return s
|
||||
|
||||
|
||||
args = sys.argv[1:]
|
||||
if not(len(sys.argv[1:]) == 2):
|
||||
Usage()
|
||||
|
||||
out_h = args[1] + "_ptxdump.h"
|
||||
out_c = args[1] + "_ptxdump.c"
|
||||
|
||||
|
||||
h_in = open(args[0], 'r')
|
||||
source_bytes = h_in.read()
|
||||
source_bytes_len = len(source_bytes)
|
||||
|
||||
h_out_c = open(out_c, 'w')
|
||||
h_out_c.writelines(g_Header)
|
||||
h_out_c.writelines("#include \"" + out_h + "\"\n\n")
|
||||
h_out_c.writelines("unsigned char " + args[1] + "_ptxdump[" + str(source_bytes_len+1) + "] = {\n")
|
||||
|
||||
h_out_h = open(out_h, 'w')
|
||||
macro_h = "__" + args[1] + "_ptxdump_h__"
|
||||
h_out_h.writelines(g_Header)
|
||||
h_out_h.writelines("#ifndef " + macro_h + "\n")
|
||||
h_out_h.writelines("#define " + macro_h + "\n\n")
|
||||
h_out_h.writelines('#if defined __cplusplus\nextern "C" {\n#endif\n\n')
|
||||
h_out_h.writelines("extern unsigned char " + args[1] + "_ptxdump[" + str(source_bytes_len+1) + "];\n\n")
|
||||
h_out_h.writelines("#if defined __cplusplus\n}\n#endif\n\n")
|
||||
h_out_h.writelines("#endif //" + macro_h + "\n")
|
||||
|
||||
newlinecnt = 0
|
||||
for i in range(0, source_bytes_len):
|
||||
h_out_c.write(FormatCharHex(source_bytes[i]) + ", ")
|
||||
newlinecnt += 1
|
||||
if newlinecnt == 16:
|
||||
newlinecnt = 0
|
||||
h_out_c.write("\n")
|
||||
h_out_c.write("0x00\n};\n")
|
||||
|
||||
h_in.close()
|
||||
h_out_c.close()
|
||||
h_out_h.close()
|
||||
|
||||
print("ptx2c: CUmodule " + args[0] + " packed successfully")
|
||||
Reference in New Issue
Block a user