xref: /llvm-project/llvm/test/CodeGen/AMDGPU/hsa-metadata-dynlds-func-hidden-args-v5.ll (revision 4490003a22658dcd12527029b2c8682b63d8a9d6)
1; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 -filetype=obj -o - < %s | llvm-readelf --notes - | FileCheck --check-prefix=CHECK %s
2; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 -filetype=obj -o - < %s | llvm-readelf --notes - | FileCheck --check-prefix=CHECK %s
3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -filetype=obj -o - < %s | llvm-readelf --notes - | FileCheck --check-prefix=CHECK %s
4
5; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 < %s | FileCheck --check-prefix=CHECK %s
6; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 < %s | FileCheck --check-prefix=CHECK %s
7; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck --check-prefix=CHECK %s
8
9
10; CHECK:	amdhsa.kernels:
11; CHECK-NEXT:       - .args:
12; CHECK-NEXT:       - .address_space:  global
13; CHECK-NEXT:         .name:           r
14; CHECK-NEXT:         .offset:         0
15; CHECK-NEXT:         .size:           8
16; CHECK-NEXT:         .value_kind:     global_buffer
17; CHECK-NEXT:       - .address_space:  global
18; CHECK-NEXT:         .name:           a
19; CHECK-NEXT:         .offset:         8
20; CHECK-NEXT:         .size:           8
21; CHECK-NEXT:         .value_kind:     global_buffer
22; CHECK-NEXT:       - .address_space:  global
23; CHECK-NEXT:         .name:           b
24; CHECK-NEXT:         .offset:         16
25; CHECK-NEXT:         .size:           8
26; CHECK-NEXT:         .value_kind:     global_buffer
27; CHECK-NEXT:       - .offset:         24
28; CHECK-NEXT:         .size:           4
29; CHECK-NEXT:        .value_kind:     hidden_block_count_x
30; CHECK-NEXT:      - .offset:         28
31; CHECK-NEXT:        .size:           4
32; CHECK-NEXT:        .value_kind:     hidden_block_count_y
33; CHECK-NEXT:      - .offset:         32
34; CHECK-NEXT:        .size:           4
35; CHECK-NEXT:        .value_kind:     hidden_block_count_z
36; CHECK-NEXT:      - .offset:         36
37; CHECK-NEXT:        .size:           2
38; CHECK-NEXT:        .value_kind:     hidden_group_size_x
39; CHECK-NEXT:      - .offset:         38
40; CHECK-NEXT:        .size:           2
41; CHECK-NEXT:        .value_kind:     hidden_group_size_y
42; CHECK-NEXT:      - .offset:         40
43; CHECK-NEXT:        .size:           2
44; CHECK-NEXT:        .value_kind:     hidden_group_size_z
45; CHECK-NEXT:      - .offset:         42
46; CHECK-NEXT:        .size:           2
47; CHECK-NEXT:        .value_kind:     hidden_remainder_x
48; CHECK-NEXT:      - .offset:         44
49; CHECK-NEXT:        .size:           2
50; CHECK-NEXT:        .value_kind:     hidden_remainder_y
51; CHECK-NEXT:      - .offset:         46
52; CHECK-NEXT:        .size:           2
53; CHECK-NEXT:        .value_kind:     hidden_remainder_z
54; CHECK-NEXT:      - .offset:         64
55; CHECK-NEXT:        .size:           8
56; CHECK-NEXT:        .value_kind:     hidden_global_offset_x
57; CHECK-NEXT:      - .offset:         72
58; CHECK-NEXT:        .size:           8
59; CHECK-NEXT:        .value_kind:     hidden_global_offset_y
60; CHECK-NEXT:      - .offset:         80
61; CHECK-NEXT:        .size:           8
62; CHECK-NEXT:        .value_kind:     hidden_global_offset_z
63; CHECK-NEXT:      - .offset:         88
64; CHECK-NEXT:        .size:           2
65; CHECK-NEXT:        .value_kind:     hidden_grid_dims
66; CHECK-NEXT:      - .offset:         96
67; CHECK-NEXT:        .size:           8
68; CHECK-NEXT:        .value_kind:     hidden_printf_buffer
69; CHECK-NEXT:      - .offset:         104
70; CHECK-NEXT:        .size:           8
71; CHECK-NEXT:        .value_kind:     hidden_hostcall_buffer
72; CHECK-NEXT:      - .offset:         112
73; CHECK-NEXT:        .size:           8
74; CHECK-NEXT:        .value_kind:     hidden_multigrid_sync_arg
75; CHECK-NEXT:      - .offset:         120
76; CHECK-NEXT:        .size:           8
77; CHECK-NEXT:        .value_kind:     hidden_heap_v1
78; CHECK-NEXT:      - .offset:         128
79; CHECK-NEXT:        .size:           8
80; CHECK-NEXT:        .value_kind:     hidden_default_queue
81; CHECK-NEXT:      - .offset:         136
82; CHECK-NEXT:        .size:           8
83; CHECK-NEXT:        .value_kind:     hidden_completion_action
84; CHECK:          - .offset:          144
85; CHECK-NEXT:        .size:           4
86; CHECK-NEXT:        .value_kind:     hidden_dynamic_lds_size
87; CHECK:          - .offset:          224
88; CHECK-NEXT:        .size:           8
89; CHECK-NEXT:        .value_kind:     hidden_queue_ptr
90
91; CHECK:          .name:           test_v5
92; CHECK:          .symbol:         test_v5.kd
93
94; CHECK:  amdhsa.version:
95; CHECK-NEXT: - 1
96; CHECK-NEXT: - 2
97@lds = external hidden addrspace(3) global [0 x i32], align 4
98
99define void @funcs_dyn_lds() {
100  store i32 1234, ptr addrspacecast (ptr addrspace(3) @lds to ptr), align 4
101  ret void
102}
103
104define amdgpu_kernel void @test_v5(
105    ptr addrspace(1) %r,
106    ptr addrspace(1) %a,
107    ptr addrspace(1) %b) #0 {
108entry:
109  %a.val = load half, ptr addrspace(1) %a
110  %b.val = load half, ptr addrspace(1) %b
111  %r.val = fadd half %a.val, %b.val
112  store half %r.val, ptr addrspace(1) %r
113  call void @funcs_dyn_lds()
114  ret void
115}
116
117!llvm.module.flags = !{!0}
118!0 = !{i32 1, !"amdhsa_code_object_version", i32 500}
119!llvm.printf.fmts = !{!1, !2}
120!1 = !{!"1:1:4:%d\5Cn"}
121!2 = !{!"2:1:8:%g\5Cn"}
122
123attributes #0 = { optnone noinline }
124
125