| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6 | |
| # RUN: llc -mtriple=amdgpu11.00 -mattr=+precise-memory -run-pass si-insert-waitcnts -o - %s | FileCheck %s | |
| --- | | |
| define amdgpu_ps void @gds_wait_merge() !dbg !3 { | |
| ret void | |
| } | |
| define amdgpu_ps void @gds_wait_merge_control() { | |
| ret void | |
| } | |
| !llvm.dbg.cu = !{!0} | |
| !llvm.module.flags = !{!2} | |
| !0 = distinct !DICompileUnit(language: DW_LANG_C, file: !1, producer: "clang", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug) | |
| !1 = !DIFile(filename: "gds-wait-merge.c", directory: "/") | |
| !2 = !{i32 2, !"Debug Info Version", i32 3} | |
| !3 = distinct !DISubprogram(name: "gds_wait_merge", scope: !1, file: !1, line: 1, type: !4, scopeLine: 1, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0) | |
| !4 = !DISubroutineType(types: !{}) | |
| !5 = !DILabel(scope: !3, name: "before_interp", file: !1, line: 2) | |
| !6 = !DILocation(line: 2, column: 1, scope: !3) | |
| ... | |
| --- | |
| name: gds_wait_merge | |
| tracksRegLiveness: true | |
| machineFunctionInfo: | |
| isEntryFunction: true | |
| body: | | |
| bb.0: | |
| liveins: $vgpr0 | |
| ; CHECK-LABEL: name: gds_wait_merge | |
| ; CHECK: liveins: $vgpr0 | |
| ; CHECK-NEXT: {{ $}} | |
| ; CHECK-NEXT: $vgpr1 = DS_ORDERED_COUNT $vgpr0, 772, implicit $m0, implicit $exec :: (load store (s32), addrspace 2) | |
| ; CHECK-NEXT: DBG_LABEL !6, debug-location !DILocation(line: 2, column: 1, scope: !3) | |
| ; CHECK-NEXT: S_WAITCNT .Lgkmcnt_0 | |
| ; CHECK-NEXT: $vgpr1 = V_INTERP_P10_F32_inreg 0, $vgpr0, 0, killed $vgpr1, 0, $vgpr0, 0, 0, implicit $m0, implicit $exec, implicit $mode | |
| ; CHECK-NEXT: S_ENDPGM 0 | |
| $vgpr1 = DS_ORDERED_COUNT $vgpr0, 772, implicit $m0, implicit $exec :: (load store (s32), addrspace 2) | |
| DBG_LABEL !5, debug-location !6 | |
| $vgpr1 = V_INTERP_P10_F32_inreg 0, $vgpr0, 0, killed $vgpr1, 0, $vgpr0, 0, 7, implicit $m0, implicit $exec, implicit $mode | |
| S_ENDPGM 0 | |
| ... | |
| --- | |
| name: gds_wait_merge_control | |
| tracksRegLiveness: true | |
| machineFunctionInfo: | |
| isEntryFunction: true | |
| body: | | |
| bb.0: | |
| liveins: $vgpr0 | |
| ; CHECK-LABEL: name: gds_wait_merge_control | |
| ; CHECK: liveins: $vgpr0 | |
| ; CHECK-NEXT: {{ $}} | |
| ; CHECK-NEXT: $vgpr1 = DS_ORDERED_COUNT $vgpr0, 772, implicit $m0, implicit $exec :: (load store (s32), addrspace 2) | |
| ; CHECK-NEXT: S_WAITCNT .Lgkmcnt_0 | |
| ; CHECK-NEXT: $vgpr1 = V_INTERP_P10_F32_inreg 0, $vgpr0, 0, killed $vgpr1, 0, $vgpr0, 0, 0, implicit $m0, implicit $exec, implicit $mode | |
| ; CHECK-NEXT: S_ENDPGM 0 | |
| $vgpr1 = DS_ORDERED_COUNT $vgpr0, 772, implicit $m0, implicit $exec :: (load store (s32), addrspace 2) | |
| $vgpr1 = V_INTERP_P10_F32_inreg 0, $vgpr0, 0, killed $vgpr1, 0, $vgpr0, 0, 7, implicit $m0, implicit $exec, implicit $mode | |
| S_ENDPGM 0 | |
| ... |