brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · 3d6571e Raw
188 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass si-insert-waitcnts %s -o - | FileCheck %s2 3--- |4  define amdgpu_kernel void @basic_insert_dcache_wb() {5    ret void6  }7 8  define amdgpu_kernel void @explicit_flush_after() {9    ret void10  }11 12  define amdgpu_kernel void @explicit_flush_before() {13    ret void14  }15 16  define amdgpu_kernel void @no_scalar_store() {17    ret void18  }19 20  define amdgpu_kernel void @multi_block_store() {21  bb0:22    br i1 poison, label %bb1, label %bb223 24   bb1:25     ret void26 27   bb2:28    ret void29  }30 31  define amdgpu_kernel void @one_block_store() {32  bb0:33    br i1 poison, label %bb1, label %bb234 35   bb1:36     ret void37 38   bb2:39    ret void40  }41 42  define amdgpu_ps float @si_return() {43    ret float poison44  }45 46...47---48# CHECK-LABEL: name: basic_insert_dcache_wb49# CHECK: bb.0:50# CHECK-NEXT: S_STORE_DWORD51# CHECK-NEXT: S_DCACHE_WB52# CHECK-NEXT: S_ENDPGM 053 54name: basic_insert_dcache_wb55tracksRegLiveness: false56machineFunctionInfo:57  isEntryFunction: true58 59body: |60  bb.0:61    S_STORE_DWORD_SGPR undef $sgpr2, undef $sgpr0_sgpr1, undef $m0, 062    S_ENDPGM 063...64---65# Already has an explicitly requested flush after the last store.66# CHECK-LABEL: name: explicit_flush_after67# CHECK: bb.0:68# CHECK-NEXT: S_STORE_DWORD69# CHECK-NEXT: S_DCACHE_WB70# CHECK-NEXT: S_ENDPGM 071 72name: explicit_flush_after73tracksRegLiveness: false74machineFunctionInfo:75  isEntryFunction: true76 77body: |78  bb.0:79    S_STORE_DWORD_SGPR undef $sgpr2, undef $sgpr0_sgpr1, undef $m0, 080    S_DCACHE_WB81    S_ENDPGM 082...83---84# Already has an explicitly requested flush before the last store.85# CHECK-LABEL: name: explicit_flush_before86# CHECK: bb.0:87# CHECK-NEXT: S_DCACHE_WB88# CHECK-NEXT: S_STORE_DWORD89# CHECK-NEXT: S_DCACHE_WB90# CHECK-NEXT: S_ENDPGM 091 92name: explicit_flush_before93tracksRegLiveness: false94machineFunctionInfo:95  isEntryFunction: true96 97body: |98  bb.0:99    S_DCACHE_WB100    S_STORE_DWORD_SGPR undef $sgpr2, undef $sgpr0_sgpr1, undef $m0, 0101    S_ENDPGM 0102...103---104# CHECK-LABEL: no_scalar_store105# CHECK: bb.0106# CHECK-NEXT: S_ENDPGM 0107name: no_scalar_store108tracksRegLiveness: false109machineFunctionInfo:110  isEntryFunction: true111 112body: |113  bb.0:114    S_ENDPGM 0115...116 117# CHECK-LABEL: name: multi_block_store118# CHECK: bb.0:119# CHECK-NEXT: S_STORE_DWORD120# CHECK-NEXT: S_DCACHE_WB121# CHECK-NEXT: S_ENDPGM 0122 123# CHECK: bb.1:124# CHECK-NEXT: S_STORE_DWORD125# CHECK-NEXT: S_DCACHE_WB126# CHECK-NEXT: S_ENDPGM 0127 128name: multi_block_store129tracksRegLiveness: false130machineFunctionInfo:131  isEntryFunction: true132 133body: |134  bb.0:135    S_STORE_DWORD_SGPR undef $sgpr2, undef $sgpr0_sgpr1, undef $m0, 0136    S_ENDPGM 0137 138  bb.1:139    S_STORE_DWORD_SGPR undef $sgpr4, undef $sgpr6_sgpr7, undef $m0, 0140    S_ENDPGM 0141...142...143 144# This one should be able to omit the flush in the storeless block but145# this isn't handled now.146 147# CHECK-LABEL: name: one_block_store148# CHECK: bb.0:149# CHECK-NEXT: S_DCACHE_WB150# CHECK-NEXT: S_ENDPGM 0151 152# CHECK: bb.1:153# CHECK-NEXT: S_STORE_DWORD154# CHECK-NEXT: S_DCACHE_WB155# CHECK-NEXT: S_ENDPGM 0156 157name: one_block_store158tracksRegLiveness: false159machineFunctionInfo:160  isEntryFunction: true161 162body: |163  bb.0:164    S_ENDPGM 0165 166  bb.1:167    S_STORE_DWORD_SGPR undef $sgpr4, undef $sgpr6_sgpr7, undef $m0, 0168    S_ENDPGM 0169...170---171# CHECK-LABEL: name: si_return172# CHECK: bb.0:173# CHECK-NEXT: S_STORE_DWORD174# CHECK-NEXT: S_WAITCNT175# CHECK-NEXT: S_DCACHE_WB176# CHECK-NEXT: SI_RETURN177 178name: si_return179tracksRegLiveness: false180machineFunctionInfo:181  isEntryFunction: true182 183body: |184  bb.0:185    S_STORE_DWORD_SGPR undef $sgpr2, undef $sgpr0_sgpr1, undef $m0, 0186    SI_RETURN_TO_EPILOG undef $vgpr0187...188