@@ -168,7 +168,7 @@ declare void @unknown()
168
168
169
169
define amdgpu_kernel void @kernel_calls_extern () {
170
170
; CHECK-LABEL: define amdgpu_kernel void @kernel_calls_extern(
171
- ; CHECK-SAME: ) #[[ATTR1 ]] {
171
+ ; CHECK-SAME: ) #[[ATTR0 ]] {
172
172
; CHECK-NEXT: call void @unknown()
173
173
; CHECK-NEXT: call void @use_most()
174
174
; CHECK-NEXT: ret void
@@ -180,8 +180,8 @@ define amdgpu_kernel void @kernel_calls_extern() {
180
180
181
181
define amdgpu_kernel void @kernel_calls_extern_marked_callsite () {
182
182
; CHECK-LABEL: define amdgpu_kernel void @kernel_calls_extern_marked_callsite(
183
- ; CHECK-SAME: ) #[[ATTR1 ]] {
184
- ; CHECK-NEXT: call void @unknown() #[[ATTR5 :[0-9]+]]
183
+ ; CHECK-SAME: ) #[[ATTR0 ]] {
184
+ ; CHECK-NEXT: call void @unknown() #[[ATTR10 :[0-9]+]]
185
185
; CHECK-NEXT: call void @use_most()
186
186
; CHECK-NEXT: ret void
187
187
;
@@ -205,7 +205,7 @@ define amdgpu_kernel void @kernel_calls_indirect(ptr %indirect) {
205
205
define amdgpu_kernel void @kernel_calls_indirect_marked_callsite (ptr %indirect ) {
206
206
; CHECK-LABEL: define amdgpu_kernel void @kernel_calls_indirect_marked_callsite(
207
207
; CHECK-SAME: ptr [[INDIRECT:%.*]]) #[[ATTR1]] {
208
- ; CHECK-NEXT: call void [[INDIRECT]]() #[[ATTR5 ]]
208
+ ; CHECK-NEXT: call void [[INDIRECT]]() #[[ATTR10 ]]
209
209
; CHECK-NEXT: call void @use_most()
210
210
; CHECK-NEXT: ret void
211
211
;
@@ -216,7 +216,7 @@ define amdgpu_kernel void @kernel_calls_indirect_marked_callsite(ptr %indirect)
216
216
217
217
define amdgpu_kernel void @kernel_transitively_uses_agpr_asm () {
218
218
; CHECK-LABEL: define amdgpu_kernel void @kernel_transitively_uses_agpr_asm(
219
- ; CHECK-SAME: ) #[[ATTR1 ]] {
219
+ ; CHECK-SAME: ) #[[ATTR0 ]] {
220
220
; CHECK-NEXT: call void @func_uses_asm_physreg_agpr()
221
221
; CHECK-NEXT: call void @use_most()
222
222
; CHECK-NEXT: ret void
@@ -260,7 +260,7 @@ define amdgpu_kernel void @kernel_calls_empty() {
260
260
261
261
define amdgpu_kernel void @kernel_calls_non_agpr_and_agpr () {
262
262
; CHECK-LABEL: define amdgpu_kernel void @kernel_calls_non_agpr_and_agpr(
263
- ; CHECK-SAME: ) #[[ATTR1 ]] {
263
+ ; CHECK-SAME: ) #[[ATTR0 ]] {
264
264
; CHECK-NEXT: call void @empty()
265
265
; CHECK-NEXT: call void @func_uses_asm_physreg_agpr()
266
266
; CHECK-NEXT: call void @use_most()
@@ -616,12 +616,93 @@ define amdgpu_kernel void @physreg_def_a32___def_vreg_a512_use_vreg_a256() {
616
616
ret void
617
617
}
618
618
619
+ define amdgpu_kernel void @kernel_uses_write_register_a55 () {
620
+ ; CHECK-LABEL: define amdgpu_kernel void @kernel_uses_write_register_a55(
621
+ ; CHECK-SAME: ) #[[ATTR3:[0-9]+]] {
622
+ ; CHECK-NEXT: call void @llvm.write_register.i32(metadata !"a55", i32 0)
623
+ ; CHECK-NEXT: ret void
624
+ ;
625
+ call void @llvm.write_register.i64 (metadata !"a55" , i32 0 )
626
+ ret void
627
+ }
628
+
629
+ define amdgpu_kernel void @kernel_uses_write_register_v55 () {
630
+ ; CHECK-LABEL: define amdgpu_kernel void @kernel_uses_write_register_v55(
631
+ ; CHECK-SAME: ) #[[ATTR4:[0-9]+]] {
632
+ ; CHECK-NEXT: call void @llvm.write_register.i32(metadata !"v55", i32 0)
633
+ ; CHECK-NEXT: ret void
634
+ ;
635
+ call void @llvm.write_register.i64 (metadata !"v55" , i32 0 )
636
+ ret void
637
+ }
638
+
639
+ define amdgpu_kernel void @kernel_uses_write_register_a55_57 () {
640
+ ; CHECK-LABEL: define amdgpu_kernel void @kernel_uses_write_register_a55_57(
641
+ ; CHECK-SAME: ) #[[ATTR3]] {
642
+ ; CHECK-NEXT: call void @llvm.write_register.i96(metadata !"a[55:57]", i96 0)
643
+ ; CHECK-NEXT: ret void
644
+ ;
645
+ call void @llvm.write_register.i64 (metadata !"a[55:57]" , i96 0 )
646
+ ret void
647
+ }
648
+
649
+ define amdgpu_kernel void @kernel_uses_read_register_a55 (ptr addrspace (1 ) %ptr ) {
650
+ ; CHECK-LABEL: define amdgpu_kernel void @kernel_uses_read_register_a55(
651
+ ; CHECK-SAME: ptr addrspace(1) [[PTR:%.*]]) #[[ATTR3]] {
652
+ ; CHECK-NEXT: [[REG:%.*]] = call i32 @llvm.read_register.i32(metadata !"a55")
653
+ ; CHECK-NEXT: store i32 [[REG]], ptr addrspace(1) [[PTR]], align 4
654
+ ; CHECK-NEXT: ret void
655
+ ;
656
+ %reg = call i32 @llvm.read_register.i64 (metadata !"a55" )
657
+ store i32 %reg , ptr addrspace (1 ) %ptr
658
+ ret void
659
+ }
660
+
661
+ define amdgpu_kernel void @kernel_uses_read_volatile_register_a55 (ptr addrspace (1 ) %ptr ) {
662
+ ; CHECK-LABEL: define amdgpu_kernel void @kernel_uses_read_volatile_register_a55(
663
+ ; CHECK-SAME: ptr addrspace(1) [[PTR:%.*]]) #[[ATTR3]] {
664
+ ; CHECK-NEXT: [[REG:%.*]] = call i32 @llvm.read_volatile_register.i32(metadata !"a55")
665
+ ; CHECK-NEXT: store i32 [[REG]], ptr addrspace(1) [[PTR]], align 4
666
+ ; CHECK-NEXT: ret void
667
+ ;
668
+ %reg = call i32 @llvm.read_volatile_register.i64 (metadata !"a55" )
669
+ store i32 %reg , ptr addrspace (1 ) %ptr
670
+ ret void
671
+ }
672
+
673
+ define amdgpu_kernel void @kernel_uses_read_register_a56_59 (ptr addrspace (1 ) %ptr ) {
674
+ ; CHECK-LABEL: define amdgpu_kernel void @kernel_uses_read_register_a56_59(
675
+ ; CHECK-SAME: ptr addrspace(1) [[PTR:%.*]]) #[[ATTR3]] {
676
+ ; CHECK-NEXT: [[REG:%.*]] = call i128 @llvm.read_register.i128(metadata !"a[56:59]")
677
+ ; CHECK-NEXT: store i128 [[REG]], ptr addrspace(1) [[PTR]], align 8
678
+ ; CHECK-NEXT: ret void
679
+ ;
680
+ %reg = call i128 @llvm.read_register.i64 (metadata !"a[56:59]" )
681
+ store i128 %reg , ptr addrspace (1 ) %ptr
682
+ ret void
683
+ }
684
+
685
+ define amdgpu_kernel void @kernel_uses_write_register_out_of_bounds_a256 () {
686
+ ; CHECK-LABEL: define amdgpu_kernel void @kernel_uses_write_register_out_of_bounds_a256(
687
+ ; CHECK-SAME: ) #[[ATTR3]] {
688
+ ; CHECK-NEXT: call void @llvm.write_register.i32(metadata !"a256", i32 0)
689
+ ; CHECK-NEXT: ret void
690
+ ;
691
+ call void @llvm.write_register.i64 (metadata !"a256" , i32 0 )
692
+ ret void
693
+ }
694
+
619
695
attributes #0 = { "amdgpu-agpr-alloc" ="0" }
620
696
;.
621
697
; CHECK: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "target-cpu"="gfx90a" "uniform-work-group-size"="false" }
622
698
; CHECK: attributes #[[ATTR1]] = { "target-cpu"="gfx90a" "uniform-work-group-size"="false" }
623
699
; CHECK: attributes #[[ATTR2:[0-9]+]] = { convergent nocallback nofree nosync nounwind willreturn memory(none) "target-cpu"="gfx90a" }
624
- ; CHECK: attributes #[[ATTR3:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) "target-cpu"="gfx90a" }
625
- ; CHECK: attributes #[[ATTR4:[0-9]+]] = { nocallback nofree nounwind willreturn memory(argmem: readwrite) "target-cpu"="gfx90a" }
626
- ; CHECK: attributes #[[ATTR5]] = { "amdgpu-agpr-alloc"="0" }
700
+ ; CHECK: attributes #[[ATTR3]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx90a" "uniform-work-group-size"="false" }
701
+ ; CHECK: attributes #[[ATTR4]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx90a" "uniform-work-group-size"="false" }
702
+ ; CHECK: attributes #[[ATTR5:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) "target-cpu"="gfx90a" }
703
+ ; CHECK: attributes #[[ATTR6:[0-9]+]] = { nocallback nofree nounwind willreturn memory(argmem: readwrite) "target-cpu"="gfx90a" }
704
+ ; CHECK: attributes #[[ATTR7:[0-9]+]] = { nocallback nofree nosync nounwind willreturn memory(read) "target-cpu"="gfx90a" }
705
+ ; CHECK: attributes #[[ATTR8:[0-9]+]] = { nounwind "target-cpu"="gfx90a" }
706
+ ; CHECK: attributes #[[ATTR9:[0-9]+]] = { nocallback nounwind "target-cpu"="gfx90a" }
707
+ ; CHECK: attributes #[[ATTR10]] = { "amdgpu-agpr-alloc"="0" }
627
708
;.
0 commit comments