Home | History | Annotate | Download | only in AMDGPU
      1 ; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=FUNC %s
      2 ; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=FUNC %s
      3 ; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=FUNC %s
      4 ; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s
      5 
      6 ; FUNC-LABEL: {{^}}local_load_i64:
      7 ; GCN: ds_read_b64 [[VAL:v\[[0-9]+:[0-9]+\]]], v{{[0-9]+}}{{$}}
      8 ; GCN: ds_write_b64 v{{[0-9]+}}, [[VAL]]
      9 
     10 ; EG: LDS_READ_RET
     11 ; EG: LDS_READ_RET
     12 define void @local_load_i64(i64 addrspace(3)* %out, i64 addrspace(3)* %in) #0 {
     13   %ld = load i64, i64 addrspace(3)* %in
     14   store i64 %ld, i64 addrspace(3)* %out
     15   ret void
     16 }
     17 
     18 ; FUNC-LABEL: {{^}}local_load_v2i64:
     19 ; GCN: ds_read2_b64
     20 
     21 ; EG: LDS_READ_RET
     22 ; EG: LDS_READ_RET
     23 ; EG: LDS_READ_RET
     24 ; EG: LDS_READ_RET
     25 define void @local_load_v2i64(<2 x i64> addrspace(3)* %out, <2 x i64> addrspace(3)* %in) #0 {
     26 entry:
     27   %ld = load <2 x i64>, <2 x i64> addrspace(3)* %in
     28   store <2 x i64> %ld, <2 x i64> addrspace(3)* %out
     29   ret void
     30 }
     31 
     32 ; FUNC-LABEL: {{^}}local_load_v3i64:
     33 ; GCN-DAG: ds_read2_b64
     34 ; GCN-DAG: ds_read_b64
     35 
     36 ; EG: LDS_READ_RET
     37 ; EG: LDS_READ_RET
     38 ; EG: LDS_READ_RET
     39 ; EG: LDS_READ_RET
     40 ; EG: LDS_READ_RET
     41 ; EG: LDS_READ_RET
     42 define void @local_load_v3i64(<3 x i64> addrspace(3)* %out, <3 x i64> addrspace(3)* %in) #0 {
     43 entry:
     44   %ld = load <3 x i64>, <3 x i64> addrspace(3)* %in
     45   store <3 x i64> %ld, <3 x i64> addrspace(3)* %out
     46   ret void
     47 }
     48 
     49 ; FUNC-LABEL: {{^}}local_load_v4i64:
     50 ; GCN: ds_read2_b64
     51 ; GCN: ds_read2_b64
     52 
     53 ; EG: LDS_READ_RET
     54 ; EG: LDS_READ_RET
     55 ; EG: LDS_READ_RET
     56 ; EG: LDS_READ_RET
     57 
     58 ; EG: LDS_READ_RET
     59 ; EG: LDS_READ_RET
     60 ; EG: LDS_READ_RET
     61 ; EG: LDS_READ_RET
     62 define void @local_load_v4i64(<4 x i64> addrspace(3)* %out, <4 x i64> addrspace(3)* %in) #0 {
     63 entry:
     64   %ld = load <4 x i64>, <4 x i64> addrspace(3)* %in
     65   store <4 x i64> %ld, <4 x i64> addrspace(3)* %out
     66   ret void
     67 }
     68 
     69 ; FUNC-LABEL: {{^}}local_load_v8i64:
     70 ; GCN: ds_read2_b64
     71 ; GCN: ds_read2_b64
     72 ; GCN: ds_read2_b64
     73 ; GCN: ds_read2_b64
     74 
     75 ; EG: LDS_READ_RET
     76 ; EG: LDS_READ_RET
     77 ; EG: LDS_READ_RET
     78 ; EG: LDS_READ_RET
     79 ; EG: LDS_READ_RET
     80 ; EG: LDS_READ_RET
     81 ; EG: LDS_READ_RET
     82 ; EG: LDS_READ_RET
     83 ; EG: LDS_READ_RET
     84 ; EG: LDS_READ_RET
     85 ; EG: LDS_READ_RET
     86 ; EG: LDS_READ_RET
     87 ; EG: LDS_READ_RET
     88 ; EG: LDS_READ_RET
     89 ; EG: LDS_READ_RET
     90 ; EG: LDS_READ_RET
     91 define void @local_load_v8i64(<8 x i64> addrspace(3)* %out, <8 x i64> addrspace(3)* %in) #0 {
     92 entry:
     93   %ld = load <8 x i64>, <8 x i64> addrspace(3)* %in
     94   store <8 x i64> %ld, <8 x i64> addrspace(3)* %out
     95   ret void
     96 }
     97 
     98 ; FUNC-LABEL: {{^}}local_load_v16i64:
     99 ; GCN: ds_read2_b64
    100 ; GCN: ds_read2_b64
    101 ; GCN: ds_read2_b64
    102 ; GCN: ds_read2_b64
    103 ; GCN: ds_read2_b64
    104 ; GCN: ds_read2_b64
    105 ; GCN: ds_read2_b64
    106 ; GCN: ds_read2_b64
    107 
    108 ; EG: LDS_READ_RET
    109 ; EG: LDS_READ_RET
    110 ; EG: LDS_READ_RET
    111 ; EG: LDS_READ_RET
    112 
    113 ; EG: LDS_READ_RET
    114 ; EG: LDS_READ_RET
    115 ; EG: LDS_READ_RET
    116 ; EG: LDS_READ_RET
    117 
    118 ; EG: LDS_READ_RET
    119 ; EG: LDS_READ_RET
    120 ; EG: LDS_READ_RET
    121 ; EG: LDS_READ_RET
    122 
    123 ; EG: LDS_READ_RET
    124 ; EG: LDS_READ_RET
    125 ; EG: LDS_READ_RET
    126 ; EG: LDS_READ_RET
    127 
    128 ; EG: LDS_READ_RET
    129 ; EG: LDS_READ_RET
    130 ; EG: LDS_READ_RET
    131 ; EG: LDS_READ_RET
    132 
    133 ; EG: LDS_READ_RET
    134 ; EG: LDS_READ_RET
    135 ; EG: LDS_READ_RET
    136 ; EG: LDS_READ_RET
    137 
    138 ; EG: LDS_READ_RET
    139 ; EG: LDS_READ_RET
    140 ; EG: LDS_READ_RET
    141 ; EG: LDS_READ_RET
    142 
    143 ; EG: LDS_READ_RET
    144 ; EG: LDS_READ_RET
    145 ; EG: LDS_READ_RET
    146 ; EG: LDS_READ_RET
    147 define void @local_load_v16i64(<16 x i64> addrspace(3)* %out, <16 x i64> addrspace(3)* %in) #0 {
    148 entry:
    149   %ld = load <16 x i64>, <16 x i64> addrspace(3)* %in
    150   store <16 x i64> %ld, <16 x i64> addrspace(3)* %out
    151   ret void
    152 }
    153 
    154 attributes #0 = { nounwind }
    155