|
8 | 8 | .param .u32 in_n |
9 | 9 | ) |
10 | 10 | { |
11 | | - .reg .pred %p<26>; |
12 | | - .reg .b32 %r<22>; |
13 | | - .reg .b64 %rd<8>; |
| 11 | + .reg .pred %p<22>; |
| 12 | + .reg .b32 %r<20>; |
| 13 | + .reg .b64 %rd<5>; |
14 | 14 |
|
15 | 15 | ld.param.u64 %rd0, [in_ptr]; |
16 | 16 | ld.param.u64 %rd1, [out_ptr]; |
17 | 17 | ld.param.u32 %r0, [in_n]; |
18 | 18 | cvta.to.global.u64 %rd2, %rd0; |
19 | 19 | ld.global.u32 %r2, [%rd2]; |
20 | | - mov.u32 %r17, 0; |
21 | | - mov.u32 %r3, 0; |
22 | | - mov.u32 %r7, 0; |
23 | | - setp.eq.u32 %p24, 0, 1; |
24 | 20 |
|
25 | | - mul.hi.s32 %r14, %r0, 16; |
26 | | - mov.u32 %r11, 60; |
27 | | - mad.lo.u32 %r18, %r11, 49375, %r11; |
28 | | - shr.u32 %r13, 69160512, 25; |
29 | | - mad.lo.u32 %r5, 4, %r14, %r0; |
30 | | - setp.eq.u32 %p1, 0, 0; |
31 | | - @%p1 bra structured_if_0_then; |
32 | | - bra structured_if_0_else; |
33 | | -structured_if_0_then: |
34 | | - setp.eq.u32 %p3, 0, 0; |
35 | | - selp.b32 %r19, 8, %r17, %p3; |
36 | | - sub.u32 %r5, %r19, %r18; |
| 21 | + mov.u32 %r5, 0xffd2cb88; |
37 | 22 | mad.lo.u32 %r6, %r0, %r5, %r5; |
38 | | - shr.u32 %r8, 16, 11; |
39 | | - bra structured_if_0_done; |
40 | | -structured_if_0_else: |
41 | | - bra structured_if_0_done; |
42 | | -structured_if_0_done: |
43 | 23 | setp.ge.u32 %p6, 19682, %r2; |
44 | | - @%p6 bra structured_if_1_then; |
45 | | - bra structured_if_1_else; |
46 | | -structured_if_1_then: |
47 | | - mad.lo.u32 %r19, %r19, 4194304, 27678; |
48 | | - clz.b32 %r8, %r17; |
49 | | - setp.ge.u32 %p9, %r19, 53078; |
50 | | - selp.b32 %r17, 4294967295, %r7, %p9; |
51 | | - dp4a.s32.u32 %r10, %r3, %r7, 62161; |
| 24 | + @!%p6 bra structured_if_1_else; |
| 25 | + clz.b32 %r8, 0; |
52 | 26 | bra structured_if_1_done; |
53 | 27 | structured_if_1_else: |
54 | | - xor.b32 %r3, %r8, %r5; |
55 | | - mad.lo.u32 %r2, %r18, %r19, 49358; |
56 | | - mul.hi.s32 %r1, %r13, 33098; |
57 | | - clz.b32 %r19, %r8; |
58 | | - cvt.u32.u16 %r2, %r2; |
59 | | - and.b32 %r10, %r18, %r13; |
60 | | - mad.lo.u32 %r1, %r3, %r6, 31152; |
61 | | - mad.lo.u32 %r8, %r19, 19382, %r5; |
62 | | - shr.u32 %r15, %r19, 11; |
| 28 | + mad.lo.u32 %r1, %r5, %r6, 31152; |
63 | 29 | shr.u32 %r15, %r1, 26; |
64 | | - mad.lo.u32 %r13, %r6, %r5, 1469367838; |
65 | | - sub.u32 %r6, 12, %r10; |
66 | 30 | setp.ge.u32 %p14, %r15, 8; |
67 | 31 | selp.b32 %r0, %r1, 1073741824, %p14; |
68 | | - shr.u32 %r7, 27123, 21; |
69 | | - brev.b32 %r8, 536870912; |
| 32 | + mov.u32 %r8, 4; |
70 | 33 | xor.b32 %r16, %r0, 33145; |
71 | | - bfe.u32 %r17, %r11, 25, 1; |
72 | | - popc.b32 %r2, 24696; |
73 | | - and.b32 %r1, %r0, %r19; |
74 | | - mul.hi.s32 %r4, %r2, %r16; |
75 | | - mad.lo.u32 %r12, %r5, %r10, %r4; |
76 | | - setp.eq.u32 %p18, %r12, %r7; |
77 | | - @%p18 bra structured_if_2_then; |
78 | | - bra structured_if_2_else; |
79 | | -structured_if_2_then: |
80 | | - bra structured_if_2_done; |
81 | | -structured_if_2_else: |
82 | | - mul.hi.s32 %r13, 489, %r3; |
83 | | - mad.lo.u32 %r14, %r8, 536870912, %r13; |
| 34 | + mul.hi.s32 %r4, 6, %r16; |
| 35 | + setp.eq.u32 %p18, %r4, 0; |
| 36 | + @%p18 bra structured_if_2_done; |
| 37 | + mad.lo.u32 %r14, %r8, 536870912, 0xffffffff; |
84 | 38 | sub.u32 %r19, %r4, %r14; |
85 | | - mad.lo.u32 %r1, %r6, %r6, %r19; |
86 | | - and.b32 %r4, 24045, %r0; |
87 | | - bra structured_if_2_done; |
| 39 | + add.u32 %r1, %r19, 144; |
88 | 40 | structured_if_2_done: |
89 | | - bra structured_if_1_done; |
90 | 41 | structured_if_1_done: |
91 | 42 | setp.le.u32 %p21, %r8, %r19; |
92 | | - @%p21 bra structured_if_3_then; |
93 | | - bra structured_if_3_else; |
94 | | -structured_if_3_then: |
95 | | - bra structured_if_3_done; |
96 | | -structured_if_3_else: |
97 | | - selp.b32 %r1, 5032, %r17, %p24; |
98 | | - bra structured_if_3_done; |
| 43 | + @%p21 bra structured_if_3_done; |
| 44 | + mov.u32 %r1, 0; |
99 | 45 | structured_if_3_done: |
100 | | - bra exit; |
101 | 46 |
|
102 | | -exit: |
103 | | - cvta.to.global.u64 %rd4, %rd1; |
104 | | - st.global.u32 [%rd4 + 4], %r1; |
| 47 | + st.global.u32 [%rd1 + 4], %r1; |
105 | 48 | ret; |
106 | 49 | } |
0 commit comments