4
4
; RUN: llc -global-isel -mtriple=amdgcn-- -mcpu=tonga -mattr=+flat-for-global -verify-machineinstrs < %s | FileCheck --check-prefixes=ALL,MESA %s
5
5
; RUN: llc -global-isel -mtriple=amdgcn-unknown-mesa3d -mattr=+flat-for-global -mcpu=hawaii -verify-machineinstrs < %s | FileCheck -check-prefixes=ALL,CO-V2 %s
6
6
; RUN: llc -global-isel -mtriple=amdgcn-unknown-mesa3d -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefixes=ALL,CO-V2 %s
7
+ ; RUN: llc -global-isel -march=amdgcn -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx90a -verify-machineinstrs < %s | FileCheck -check-prefixes=ALL,PACKED-TID %s
7
8
8
9
declare i32 @llvm.amdgcn.workitem.id.x () #0
9
10
declare i32 @llvm.amdgcn.workitem.id.y () #0
@@ -17,7 +18,9 @@ declare i32 @llvm.amdgcn.workitem.id.z() #0
17
18
; CO-V2: enable_vgpr_workitem_id = 0
18
19
19
20
; ALL-NOT: v0
20
- ; ALL: {{buffer|flat}}_store_dword {{.*}}v0
21
+ ; ALL: {{buffer|flat|global}}_store_dword {{.*}}v0
22
+
23
+ ; PACKED-TID: .amdhsa_system_vgpr_workitem_id 0
21
24
define amdgpu_kernel void @test_workitem_id_x (i32 addrspace (1 )* %out ) #1 {
22
25
%id = call i32 @llvm.amdgcn.workitem.id.x ()
23
26
store i32 %id , i32 addrspace (1 )* %out
@@ -30,9 +33,13 @@ define amdgpu_kernel void @test_workitem_id_x(i32 addrspace(1)* %out) #1 {
30
33
31
34
; ALL-LABEL: {{^}}test_workitem_id_y:
32
35
; CO-V2: enable_vgpr_workitem_id = 1
36
+ ; CO-V2-NOT: v1
37
+ ; CO-V2: {{buffer|flat}}_store_dword {{.*}}v1
33
38
34
- ; ALL-NOT: v1
35
- ; ALL: {{buffer|flat}}_store_dword {{.*}}v1
39
+ ; PACKED-TID: v_lshrrev_b32_e32 [[ID:v[0-9]+]], 10, v0
40
+ ; PACKED-TID: v_and_b32_e32 [[ID]], 0x3ff, [[ID]]
41
+ ; PACKED-TID: {{buffer|flat|global}}_store_dword {{.*}}[[ID]]
42
+ ; PACKED-TID: .amdhsa_system_vgpr_workitem_id 1
36
43
define amdgpu_kernel void @test_workitem_id_y (i32 addrspace (1 )* %out ) #1 {
37
44
%id = call i32 @llvm.amdgcn.workitem.id.y ()
38
45
store i32 %id , i32 addrspace (1 )* %out
@@ -45,9 +52,13 @@ define amdgpu_kernel void @test_workitem_id_y(i32 addrspace(1)* %out) #1 {
45
52
46
53
; ALL-LABEL: {{^}}test_workitem_id_z:
47
54
; CO-V2: enable_vgpr_workitem_id = 2
55
+ ; CO-V2-NOT: v2
56
+ ; CO-V2: {{buffer|flat}}_store_dword {{.*}}v2
48
57
49
- ; ALL-NOT: v2
50
- ; ALL: {{buffer|flat}}_store_dword {{.*}}v2
58
+ ; PACKED-TID: v_lshrrev_b32_e32 [[ID:v[0-9]+]], 20, v0
59
+ ; PACKED-TID: v_and_b32_e32 [[ID]], 0x3ff, [[ID]]
60
+ ; PACKED-TID: {{buffer|flat|global}}_store_dword {{.*}}[[ID]]
61
+ ; PACKED-TID: .amdhsa_system_vgpr_workitem_id 2
51
62
define amdgpu_kernel void @test_workitem_id_z (i32 addrspace (1 )* %out ) #1 {
52
63
%id = call i32 @llvm.amdgcn.workitem.id.z ()
53
64
store i32 %id , i32 addrspace (1 )* %out
@@ -56,9 +67,9 @@ define amdgpu_kernel void @test_workitem_id_z(i32 addrspace(1)* %out) #1 {
56
67
57
68
; ALL-LABEL: {{^}}test_workitem_id_x_usex2:
58
69
; ALL-NOT: v0
59
- ; ALL: flat_store_dword v{{\[[0-9]+:[0-9]+\] }}, v0
70
+ ; ALL: {{flat|global}}_store_dword v{{.* }}, v0
60
71
; ALL-NOT: v0
61
- ; ALL: flat_store_dword v{{\[[0-9]+:[0-9]+\] }}, v0
72
+ ; ALL: {{flat|global}}_store_dword v{{.* }}, v0
62
73
define amdgpu_kernel void @test_workitem_id_x_usex2 (i32 addrspace (1 )* %out ) #1 {
63
74
%id0 = call i32 @llvm.amdgcn.workitem.id.x ()
64
75
store volatile i32 %id0 , i32 addrspace (1 )* %out
@@ -70,9 +81,9 @@ define amdgpu_kernel void @test_workitem_id_x_usex2(i32 addrspace(1)* %out) #1 {
70
81
71
82
; ALL-LABEL: {{^}}test_workitem_id_x_use_outside_entry:
72
83
; ALL-NOT: v0
73
- ; ALL: flat_store_dword
84
+ ; ALL: {{flat|global}}_store_dword
74
85
; ALL-NOT: v0
75
- ; ALL: flat_store_dword v{{\[[0-9]+:[0-9]+\] }}, v0
86
+ ; ALL: {{flat|global}}_store_dword v{{.* }}, v0
76
87
define amdgpu_kernel void @test_workitem_id_x_use_outside_entry (i32 addrspace (1 )* %out , i32 %arg ) #1 {
77
88
bb0:
78
89
store volatile i32 0 , i32 addrspace (1 )* %out
0 commit comments