Changeset 3158 in CLRX


Ignore:
Timestamp:
Jun 15, 2017, 9:20:11 AM (2 years ago)
Author:
matszpk
Message:

CLRadeonExtender: samples: Add disassembled code to VectorAdd? (LLVM 4.0). AsmGallium?: Fixed userdatanum for LLVM4.0.

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/amdasm/AsmGalliumFormat.cpp

    r3156 r3158  
    12361236            continue;
    12371237        GalliumKernelConfig& config = output.kernels[i].config;
    1238         cxuint userSGPRsNum = 4;
     1238        cxuint userSGPRsNum = (assembler.llvmVersion >= 40000U) ? 8 : 4;
    12391239        /* include userData sgprs */
    12401240        cxuint dimMask = (config.dimMask!=BINGEN_DEFAULT) ? config.dimMask :
  • CLRadeonExtender/trunk/samples/VectorAdd.cpp

    r3157 r3158  
    250250        .arg gridoffset,4
    251251    .config
     252    .if LLVM_VERSION>=40000
     253        .dims x
     254        .dx10clamp
     255        .ieeemode
     256    .else
    252257        .dims xyz   # gallium set always three dimensions by Gallium
    253258        .tgsize     # TG_SIZE_EN is always enabled by Gallium
    254259        # arg offset in dwords:
    255260        # 9 - n, 11 - abuf, 13 - bbuf, 15 - cbuf, 17 - griddim, 18 - gridoffset
     261    .endif
    256262.text
    257263vectorAdd:
    258     .if LLVM_VERSION>=40000
     264.if LLVM_VERSION>=40000
     265        # disassembled code from GalliumCompute
    259266        .skip 256
    260     .endif
     267         s_load_dword    s0, s[4:5], 0x1
     268         v_mov_b32       v1, s8
     269         s_load_dword    s1, s[6:7], 0x9
     270         s_mov_b32       s2, 0
     271         s_waitcnt       lgkmcnt(0)
     272         s_and_b32       s0, s0, 0xffff
     273         v_mul_hi_u32    v1, v1, s0
     274         s_mul_i32       s0, s0, s8
     275         v_mov_b32       v2, s0
     276         s_load_dword    s0, s[6:7], 0x0
     277         v_add_i32       v0, vcc, v0, v2
     278         v_addc_u32      v1, vcc, 0, v1, vcc
     279         v_add_i32       v0, vcc, s1, v0
     280         v_addc_u32      v1, vcc, 0, v1, vcc
     281         s_waitcnt       lgkmcnt(0)
     282         v_cmp_gt_u32    vcc, s0, v0
     283         s_and_saveexec_b64 s[0:1], vcc
     284         s_xor_b64       s[4:5], exec, s[0:1]
     285         s_cbranch_execz .L424_0
     286         s_load_dwordx2  s[8:9], s[6:7], 0x2
     287         s_load_dwordx2  s[12:13], s[6:7], 0x4
     288         v_lshl_b64      v[0:1], v[0:1], 2
     289         s_mov_b32       s3, 0xf000
     290         v_and_b32       v1, 3, v1
     291         s_mov_b64       s[14:15], s[2:3]
     292         s_mov_b64       s[10:11], s[2:3]
     293         s_waitcnt       lgkmcnt(0)
     294         buffer_load_dword v2, v[0:1], s[8:11], 0 addr64
     295         buffer_load_dword v3, v[0:1], s[12:15], 0 addr64
     296         s_load_dwordx2  s[0:1], s[6:7], 0x6
     297         s_waitcnt       vmcnt(0)
     298         v_add_f32       v2, v3, v2
     299         s_waitcnt       lgkmcnt(0)
     300         buffer_store_dword v2, v[0:1], s[0:3], 0 addr64
     301         s_waitcnt       vmcnt(0) & expcnt(0)
     302.L424_0:
     303         s_or_b64        exec, exec, s[4:5]
     304.else
    261305        s_load_dword s2, s[0:1], 6*SMUL         # s2 - local_size(0)
    262306        s_load_dword s3, s[0:1], 9*SMUL         # s3 - n
     
    307351        flat_store_dword v[2:3], v6
    308352    .endif
     353.endif
    309354end:
    310355        s_endpgm
Note: See TracChangeset for help on using the changeset viewer.