| // BEGIN PREAMBLE |
| .version 3.1 |
| .target sm_30 |
| .address_size 64 |
| // END PREAMBLE |
| |
| // BEGIN FUNCTION DEF: clock |
| .func (.param.u32 %out_retval)clock |
| { |
| .reg.u32 %retval; |
| .reg.u64 %hr10; |
| .reg.u32 %r22; |
| .reg.u32 %r23; |
| .reg.u32 %r24; |
| .local.align 8 .b8 %frame[8]; |
| // #APP |
| // 7 "subr.c" 1 |
| mov.u32 %r24, %clock; |
| // 0 "" 2 |
| // #NO_APP |
| st.local.u32 [%frame], %r24; |
| ld.local.u32 %r22, [%frame]; |
| mov.u32 %r23, %r22; |
| mov.u32 %retval, %r23; |
| st.param.u32 [%out_retval], %retval; |
| ret; |
| } |
| // END FUNCTION DEF |
| // BEGIN GLOBAL FUNCTION DEF: delay |
| .visible .entry delay(.param.u64 %in_ar1, .param.u64 %in_ar2) |
| { |
| .reg.u64 %ar1; |
| .reg.u64 %ar2; |
| .reg.u64 %hr10; |
| .reg.u64 %r22; |
| .reg.u32 %r23; |
| .reg.u64 %r24; |
| .reg.u64 %r25; |
| .reg.u32 %r26; |
| .reg.u32 %r27; |
| .reg.u32 %r28; |
| .reg.u32 %r29; |
| .reg.u32 %r30; |
| .reg.u64 %r31; |
| .reg.pred %r32; |
| .local.align 8 .b8 %frame[24]; |
| ld.param.u64 %ar1, [%in_ar1]; |
| ld.param.u64 %ar2, [%in_ar2]; |
| mov.u64 %r24, %ar1; |
| st.u64 [%frame+8], %r24; |
| mov.u64 %r25, %ar2; |
| st.local.u64 [%frame+16], %r25; |
| { |
| .param.u32 %retval_in; |
| { |
| call (%retval_in), clock; |
| } |
| ld.param.u32 %r26, [%retval_in]; |
| } |
| st.local.u32 [%frame+4], %r26; |
| mov.u32 %r27, 0; |
| st.local.u32 [%frame], %r27; |
| bra $L4; |
| $L5: |
| { |
| .param.u32 %retval_in; |
| { |
| call (%retval_in), clock; |
| } |
| ld.param.u32 %r28, [%retval_in]; |
| } |
| mov.u32 %r23, %r28; |
| ld.local.u32 %r30, [%frame+4]; |
| sub.u32 %r29, %r23, %r30; |
| st.local.u32 [%frame], %r29; |
| $L4: |
| ld.local.s32 %r22, [%frame]; |
| ld.local.u64 %r31, [%frame+16]; |
| setp.lo.u64 %r32,%r22,%r31; |
| @%r32 bra $L5; |
| ret; |
| } |
| // END FUNCTION DEF |
| // BEGIN GLOBAL FUNCTION DEF: delay2 |
| .visible .entry delay2(.param.u64 %in_ar1, .param.u64 %in_ar2, .param.u64 %in_ar3) |
| { |
| .reg.u64 %ar1; |
| .reg.u64 %ar2; |
| .reg.u64 %ar3; |
| .reg.u64 %hr10; |
| .reg.u64 %r22; |
| .reg.u32 %r23; |
| .reg.u64 %r24; |
| .reg.u64 %r25; |
| .reg.u64 %r26; |
| .reg.u32 %r27; |
| .reg.u32 %r28; |
| .reg.u32 %r29; |
| .reg.u32 %r30; |
| .reg.u32 %r31; |
| .reg.u64 %r32; |
| .reg.pred %r33; |
| .reg.u64 %r34; |
| .reg.u64 %r35; |
| .local.align 8 .b8 %frame[32]; |
| ld.param.u64 %ar1, [%in_ar1]; |
| ld.param.u64 %ar2, [%in_ar2]; |
| ld.param.u64 %ar3, [%in_ar3]; |
| mov.u64 %r24, %ar1; |
| st.local.u64 [%frame+8], %r24; |
| mov.u64 %r25, %ar2; |
| st.local.u64 [%frame+16], %r25; |
| mov.u64 %r26, %ar3; |
| st.local.u64 [%frame+24], %r26; |
| { |
| .param.u32 %retval_in; |
| { |
| call (%retval_in), clock; |
| } |
| ld.param.u32 %r27, [%retval_in]; |
| } |
| st.local.u32 [%frame+4], %r27; |
| mov.u32 %r28, 0; |
| st.local.u32 [%frame], %r28; |
| bra $L8; |
| $L9: |
| { |
| .param.u32 %retval_in; |
| { |
| call (%retval_in), clock; |
| } |
| ld.param.u32 %r29, [%retval_in]; |
| } |
| mov.u32 %r23, %r29; |
| ld.local.u32 %r31, [%frame+4]; |
| sub.u32 %r30, %r23, %r31; |
| st.local.u32 [%frame], %r30; |
| $L8: |
| ld.local.s32 %r22, [%frame]; |
| ld.local.u64 %r32, [%frame+16]; |
| setp.lo.u64 %r33,%r22,%r32; |
| @%r33 bra $L9; |
| ld.local.u64 %r34, [%frame+8]; |
| ld.local.u64 %r35, [%frame+24]; |
| st.u64 [%r34], %r35; |
| ret; |
| } |
| // END FUNCTION DEF |