Changeset 3810 in CLRX


Ignore:
Timestamp:
Feb 16, 2018, 5:03:42 PM (14 months ago)
Author:
matszpk
Message:

CLRadeonExtender: Add untested support for the ROCm in the VectorAdd? sample.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/samples/VectorAdd.cpp

    r3575 r3810  
    419419end:
    420420        s_endpgm
     421
     422.elseiffmt rocm   # ROCm code
     423.newbinfmt
     424.tripple "amdgcn-amd-amdhsa-amdgizcl"
     425.kernel vectorAdd
     426    .config
     427        .dims x
     428        .dx10clamp
     429        .ieeemode
     430        .codeversion 1, 1
     431        .default_hsa_features
     432        .call_convention 0xffffffff
     433        .pgmrsrc2 0xd0      # trap present
     434        # ROCm metadata
     435        .md_language "OpenCL C", 1, 2
     436        .md_kernarg_segment_align 8
     437        .arg n, "uint", 4, 4, value, u32
     438        .arg a, "float*", 8, 8, globalbuf, f32, global, default const
     439        .arg b, "float*", 8, 8, globalbuf, f32, global, default const
     440        .arg c, "float*", 8, 8, globalbuf, f32, global, default
     441        .arg , "", 8, 8, gox, i64
     442        .arg , "", 8, 8, goy, i64
     443        .arg , "", 8, 8, goz, i64
     444.text
     445vectorAdd:
     446.skip 256
     447# code from CLANG OpenCL compiler
     448        s_load_dword    s2, s[4:5], 0x1*SMUL
     449        s_load_dword    s3, s[6:7], 0x0
     450        s_load_dwordx2  s[0:1], s[6:7], 0x8*SMUL
     451        s_waitcnt       lgkmcnt(0)
     452        s_and_b32       s2, s2, 0xffff
     453        s_mul_i32       s8, s8, s2
     454        VADD_U32        v0, vcc, s8, v0
     455        v_mov_b32       v1, s1
     456        VADD_u32        v0, vcc, s0, v0
     457        VADDC_U32       v1, vcc, 0, v1, vcc
     458        v_cmp_gt_u32    vcc, s3, v0
     459        s_and_saveexec_b64 s[0:1], vcc
     460        s_cbranch_execz end
     461        s_load_dwordx2  s[0:1], s[6:7], 0x2*SMUL
     462        s_load_dwordx2  s[2:3], s[6:7], 0x4*SMUL
     463.if GCN1_2_4
     464        v_lshlrev_b64   v[0:1], 2, v[0:1]
     465.else
     466        v_lshl_b64      v[0:1], v[0:1], 2
     467.endif
     468        s_load_dwordx2  s[4:5], s[6:7], 0x6*SMUL
     469        v_and_b32       v5, 3, v1
     470        s_waitcnt       lgkmcnt(0)
     471        v_mov_b32       v2, s1
     472        VADD_U32        v1, vcc, s0, v0
     473        VADDC_U32       v2, vcc, v2, v5, vcc
     474        v_mov_b32       v4, s3
     475        VADD_U32        v3, vcc, s2, v0
     476        VADDC_U32       v4, vcc, v4, v5, vcc
     477        flat_load_dword v3, v[3:4]
     478        flat_load_dword v2, v[1:2]
     479        v_mov_b32       v1, s5
     480        VADD_U32        v0, vcc, s4, v0
     481        VADDC_U32       v1, vcc, v1, v5, vcc
     482        s_waitcnt       vmcnt(0) & lgkmcnt(0)
     483        v_add_f32       v2, v2, v3
     484        flat_store_dword v[0:1], v2
     485end:
     486        s_endpgm
    421487.else
    422488        .error "Unsupported binary format"
Note: See TracChangeset for help on using the changeset viewer.