brintos

brintos / llvm-project-archived public Read only

0
0
Text · 17.7 KiB · 1971334 Raw
493 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel -new-reg-bank-select -mtriple=amdgcn-amd-amdpal -mcpu=gfx1200 -mattr=+unaligned-access-mode,-real-true16 < %s | FileCheck --check-prefixes=GFX12,GFX12-True16 %s3; RUN: llc -global-isel -new-reg-bank-select -mtriple=amdgcn-amd-amdpal -mcpu=gfx1200 -mattr=+unaligned-access-mode,+real-true16 < %s | FileCheck --check-prefixes=GFX12,GFX12-NoTrue16 %s4 5define amdgpu_ps void @load_divergent_P0_i8_any_extending(ptr addrspace(0) %ptra, ptr addrspace(0) %out) {6; GFX12-LABEL: load_divergent_P0_i8_any_extending:7; GFX12:       ; %bb.0:8; GFX12-NEXT:    flat_load_u8 v0, v[0:1]9; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x010; GFX12-NEXT:    flat_store_b8 v[2:3], v011; GFX12-NEXT:    s_endpgm12  %a = load i8, ptr addrspace(0) %ptra13  store i8 %a, ptr addrspace(0) %out14  ret void15}16 17; with true16, S16 16-bit load18; without true16, S32 16-bit any-extending load19define amdgpu_ps void @load_divergent_P0_i16(ptr addrspace(0) %ptra, ptr addrspace(0) %out) {20; GFX12-True16-LABEL: load_divergent_P0_i16:21; GFX12-True16:       ; %bb.0:22; GFX12-True16-NEXT:    flat_load_u16 v0, v[0:1]23; GFX12-True16-NEXT:    s_wait_loadcnt_dscnt 0x024; GFX12-True16-NEXT:    flat_store_b16 v[2:3], v025; GFX12-True16-NEXT:    s_endpgm26;27; GFX12-NoTrue16-LABEL: load_divergent_P0_i16:28; GFX12-NoTrue16:       ; %bb.0:29; GFX12-NoTrue16-NEXT:    flat_load_d16_b16 v0, v[0:1]30; GFX12-NoTrue16-NEXT:    s_wait_loadcnt_dscnt 0x031; GFX12-NoTrue16-NEXT:    flat_store_b16 v[2:3], v032; GFX12-NoTrue16-NEXT:    s_endpgm33  %a = load i16, ptr addrspace(0) %ptra34  store i16 %a, ptr addrspace(0) %out35  ret void36}37 38define amdgpu_ps void @load_divergent_P0_i32(ptr addrspace(0) %ptra, ptr addrspace(0) %out) {39; GFX12-LABEL: load_divergent_P0_i32:40; GFX12:       ; %bb.0:41; GFX12-NEXT:    flat_load_b32 v0, v[0:1]42; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x043; GFX12-NEXT:    flat_store_b32 v[2:3], v044; GFX12-NEXT:    s_endpgm45  %a = load i32, ptr addrspace(0) %ptra46  store i32 %a, ptr addrspace(0) %out47  ret void48}49 50define amdgpu_ps void @load_divergent_P0_v2i32(ptr addrspace(0) %ptra, ptr addrspace(0) %out) {51; GFX12-LABEL: load_divergent_P0_v2i32:52; GFX12:       ; %bb.0:53; GFX12-NEXT:    flat_load_b64 v[0:1], v[0:1]54; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x055; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]56; GFX12-NEXT:    s_endpgm57  %a = load <2 x i32>, ptr addrspace(0) %ptra58  store <2 x i32> %a, ptr addrspace(0) %out59  ret void60}61 62define amdgpu_ps void @load_divergent_P0_v3i32(ptr addrspace(0) %ptra, ptr addrspace(0) %out) {63; GFX12-LABEL: load_divergent_P0_v3i32:64; GFX12:       ; %bb.0:65; GFX12-NEXT:    flat_load_b96 v[4:6], v[0:1]66; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x067; GFX12-NEXT:    flat_store_b96 v[2:3], v[4:6]68; GFX12-NEXT:    s_endpgm69  %a = load <3 x i32>, ptr addrspace(0) %ptra70  store <3 x i32> %a, ptr addrspace(0) %out71  ret void72}73 74define amdgpu_ps void @load_divergent_P0_v4i32(ptr addrspace(0) %ptra, ptr addrspace(0) %out) {75; GFX12-LABEL: load_divergent_P0_v4i32:76; GFX12:       ; %bb.0:77; GFX12-NEXT:    flat_load_b128 v[4:7], v[0:1]78; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x079; GFX12-NEXT:    flat_store_b128 v[2:3], v[4:7]80; GFX12-NEXT:    s_endpgm81  %a = load <4 x i32>, ptr addrspace(0) %ptra82  store <4 x i32> %a, ptr addrspace(0) %out83  ret void84}85 86 87 88define amdgpu_ps void @load_divergent_P1_i8_any_extending(ptr addrspace(1) %ptra, ptr addrspace(1) %out) {89; GFX12-LABEL: load_divergent_P1_i8_any_extending:90; GFX12:       ; %bb.0:91; GFX12-NEXT:    global_load_u8 v0, v[0:1], off92; GFX12-NEXT:    s_wait_loadcnt 0x093; GFX12-NEXT:    global_store_b8 v[2:3], v0, off94; GFX12-NEXT:    s_endpgm95  %a = load i8, ptr addrspace(1) %ptra96  store i8 %a, ptr addrspace(1) %out97  ret void98}99 100; with true16, S16 16-bit load101; without true16, S32 16-bit any-extending load102define amdgpu_ps void @load_divergent_P1_i16(ptr addrspace(1) %ptra, ptr addrspace(1) %out) {103; GFX12-True16-LABEL: load_divergent_P1_i16:104; GFX12-True16:       ; %bb.0:105; GFX12-True16-NEXT:    global_load_u16 v0, v[0:1], off106; GFX12-True16-NEXT:    s_wait_loadcnt 0x0107; GFX12-True16-NEXT:    global_store_b16 v[2:3], v0, off108; GFX12-True16-NEXT:    s_endpgm109;110; GFX12-NoTrue16-LABEL: load_divergent_P1_i16:111; GFX12-NoTrue16:       ; %bb.0:112; GFX12-NoTrue16-NEXT:    global_load_d16_b16 v0, v[0:1], off113; GFX12-NoTrue16-NEXT:    s_wait_loadcnt 0x0114; GFX12-NoTrue16-NEXT:    global_store_b16 v[2:3], v0, off115; GFX12-NoTrue16-NEXT:    s_endpgm116  %a = load i16, ptr addrspace(1) %ptra117  store i16 %a, ptr addrspace(1) %out118  ret void119}120 121define amdgpu_ps void @load_divergent_P1_i32(ptr addrspace(1) %ptra, ptr addrspace(1) %out) {122; GFX12-LABEL: load_divergent_P1_i32:123; GFX12:       ; %bb.0:124; GFX12-NEXT:    global_load_b32 v0, v[0:1], off125; GFX12-NEXT:    s_wait_loadcnt 0x0126; GFX12-NEXT:    global_store_b32 v[2:3], v0, off127; GFX12-NEXT:    s_endpgm128  %a = load i32, ptr addrspace(1) %ptra129  store i32 %a, ptr addrspace(1) %out130  ret void131}132 133define amdgpu_ps void @load_divergent_P1_v2i32(ptr addrspace(1) %ptra, ptr addrspace(1) %out) {134; GFX12-LABEL: load_divergent_P1_v2i32:135; GFX12:       ; %bb.0:136; GFX12-NEXT:    global_load_b64 v[0:1], v[0:1], off137; GFX12-NEXT:    s_wait_loadcnt 0x0138; GFX12-NEXT:    global_store_b64 v[2:3], v[0:1], off139; GFX12-NEXT:    s_endpgm140  %a = load <2 x i32>, ptr addrspace(1) %ptra141  store <2 x i32> %a, ptr addrspace(1) %out142  ret void143}144 145define amdgpu_ps void @load_divergent_P1_v3i32(ptr addrspace(1) %ptra, ptr addrspace(1) %out) {146; GFX12-LABEL: load_divergent_P1_v3i32:147; GFX12:       ; %bb.0:148; GFX12-NEXT:    global_load_b96 v[4:6], v[0:1], off149; GFX12-NEXT:    s_wait_loadcnt 0x0150; GFX12-NEXT:    global_store_b96 v[2:3], v[4:6], off151; GFX12-NEXT:    s_endpgm152  %a = load <3 x i32>, ptr addrspace(1) %ptra153  store <3 x i32> %a, ptr addrspace(1) %out154  ret void155}156 157define amdgpu_ps void @load_divergent_P1_v4i32(ptr addrspace(1) %ptra, ptr addrspace(1) %out) {158; GFX12-LABEL: load_divergent_P1_v4i32:159; GFX12:       ; %bb.0:160; GFX12-NEXT:    global_load_b128 v[4:7], v[0:1], off161; GFX12-NEXT:    s_wait_loadcnt 0x0162; GFX12-NEXT:    global_store_b128 v[2:3], v[4:7], off163; GFX12-NEXT:    s_endpgm164  %a = load <4 x i32>, ptr addrspace(1) %ptra165  store <4 x i32> %a, ptr addrspace(1) %out166  ret void167}168 169define amdgpu_ps void @load_divergent_P1_v8i32(ptr addrspace(1) %ptra, ptr addrspace(1) %out) {170; GFX12-LABEL: load_divergent_P1_v8i32:171; GFX12:       ; %bb.0:172; GFX12-NEXT:    s_clause 0x1173; GFX12-NEXT:    global_load_b128 v[4:7], v[0:1], off174; GFX12-NEXT:    global_load_b128 v[8:11], v[0:1], off offset:16175; GFX12-NEXT:    s_wait_loadcnt 0x1176; GFX12-NEXT:    global_store_b128 v[2:3], v[4:7], off177; GFX12-NEXT:    s_wait_loadcnt 0x0178; GFX12-NEXT:    global_store_b128 v[2:3], v[8:11], off offset:16179; GFX12-NEXT:    s_endpgm180  %a = load <8 x i32>, ptr addrspace(1) %ptra181  store <8 x i32> %a, ptr addrspace(1) %out182  ret void183}184 185define amdgpu_ps void @load_divergent_P1_v16i32(ptr addrspace(1) %ptra, ptr addrspace(1) %out) {186; GFX12-LABEL: load_divergent_P1_v16i32:187; GFX12:       ; %bb.0:188; GFX12-NEXT:    s_clause 0x3189; GFX12-NEXT:    global_load_b128 v[4:7], v[0:1], off190; GFX12-NEXT:    global_load_b128 v[8:11], v[0:1], off offset:16191; GFX12-NEXT:    global_load_b128 v[12:15], v[0:1], off offset:32192; GFX12-NEXT:    global_load_b128 v[16:19], v[0:1], off offset:48193; GFX12-NEXT:    s_wait_loadcnt 0x3194; GFX12-NEXT:    global_store_b128 v[2:3], v[4:7], off195; GFX12-NEXT:    s_wait_loadcnt 0x2196; GFX12-NEXT:    global_store_b128 v[2:3], v[8:11], off offset:16197; GFX12-NEXT:    s_wait_loadcnt 0x1198; GFX12-NEXT:    global_store_b128 v[2:3], v[12:15], off offset:32199; GFX12-NEXT:    s_wait_loadcnt 0x0200; GFX12-NEXT:    global_store_b128 v[2:3], v[16:19], off offset:48201; GFX12-NEXT:    s_endpgm202  %a = load <16 x i32>, ptr addrspace(1) %ptra203  store <16 x i32> %a, ptr addrspace(1) %out204  ret void205}206 207 208 209define amdgpu_ps void @load_divergent_P3_i8_any_extending(ptr addrspace(3) %ptra, ptr addrspace(3) %out) {210; GFX12-LABEL: load_divergent_P3_i8_any_extending:211; GFX12:       ; %bb.0:212; GFX12-NEXT:    ds_load_u8 v0, v0213; GFX12-NEXT:    s_wait_dscnt 0x0214; GFX12-NEXT:    ds_store_b8 v1, v0215; GFX12-NEXT:    s_endpgm216  %a = load i8, ptr addrspace(3) %ptra217  store i8 %a, ptr addrspace(3) %out218  ret void219}220 221; with true16, S16 16-bit load222; without true16, S32 16-bit any-extending load223define amdgpu_ps void @load_divergent_P3_i16(ptr addrspace(3) %ptra, ptr addrspace(3) %out) {224; GFX12-True16-LABEL: load_divergent_P3_i16:225; GFX12-True16:       ; %bb.0:226; GFX12-True16-NEXT:    ds_load_u16 v0, v0227; GFX12-True16-NEXT:    s_wait_dscnt 0x0228; GFX12-True16-NEXT:    ds_store_b16 v1, v0229; GFX12-True16-NEXT:    s_endpgm230;231; GFX12-NoTrue16-LABEL: load_divergent_P3_i16:232; GFX12-NoTrue16:       ; %bb.0:233; GFX12-NoTrue16-NEXT:    ds_load_u16_d16 v0, v0234; GFX12-NoTrue16-NEXT:    s_wait_dscnt 0x0235; GFX12-NoTrue16-NEXT:    ds_store_b16 v1, v0236; GFX12-NoTrue16-NEXT:    s_endpgm237  %a = load i16, ptr addrspace(3) %ptra238  store i16 %a, ptr addrspace(3) %out239  ret void240}241 242define amdgpu_ps void @load_divergent_P3_i32(ptr addrspace(3) %ptra, ptr addrspace(3) %out) {243; GFX12-LABEL: load_divergent_P3_i32:244; GFX12:       ; %bb.0:245; GFX12-NEXT:    ds_load_b32 v0, v0246; GFX12-NEXT:    s_wait_dscnt 0x0247; GFX12-NEXT:    ds_store_b32 v1, v0248; GFX12-NEXT:    s_endpgm249  %a = load i32, ptr addrspace(3) %ptra250  store i32 %a, ptr addrspace(3) %out251  ret void252}253 254define amdgpu_ps void @load_divergent_P3_v2i32(ptr addrspace(3) %ptra, ptr addrspace(3) %out) {255; GFX12-LABEL: load_divergent_P3_v2i32:256; GFX12:       ; %bb.0:257; GFX12-NEXT:    ds_load_b64 v[2:3], v0258; GFX12-NEXT:    s_wait_dscnt 0x0259; GFX12-NEXT:    ds_store_b64 v1, v[2:3]260; GFX12-NEXT:    s_endpgm261  %a = load <2 x i32>, ptr addrspace(3) %ptra262  store <2 x i32> %a, ptr addrspace(3) %out263  ret void264}265 266define amdgpu_ps void @load_divergent_P3_v3i32(ptr addrspace(3) %ptra, ptr addrspace(3) %out) {267; GFX12-LABEL: load_divergent_P3_v3i32:268; GFX12:       ; %bb.0:269; GFX12-NEXT:    ds_load_b96 v[2:4], v0270; GFX12-NEXT:    s_wait_dscnt 0x0271; GFX12-NEXT:    ds_store_b96 v1, v[2:4]272; GFX12-NEXT:    s_endpgm273  %a = load <3 x i32>, ptr addrspace(3) %ptra274  store <3 x i32> %a, ptr addrspace(3) %out275  ret void276}277 278define amdgpu_ps void @load_divergent_P3_v4i32(ptr addrspace(3) %ptra, ptr addrspace(3) %out) {279; GFX12-LABEL: load_divergent_P3_v4i32:280; GFX12:       ; %bb.0:281; GFX12-NEXT:    ds_load_b128 v[2:5], v0282; GFX12-NEXT:    s_wait_dscnt 0x0283; GFX12-NEXT:    ds_store_b128 v1, v[2:5]284; GFX12-NEXT:    s_endpgm285  %a = load <4 x i32>, ptr addrspace(3) %ptra286  store <4 x i32> %a, ptr addrspace(3) %out287  ret void288}289 290 291 292define amdgpu_ps void @load_divergent_P4_i8_any_extending(ptr addrspace(4) %ptra, ptr addrspace(1) %out) {293; GFX12-LABEL: load_divergent_P4_i8_any_extending:294; GFX12:       ; %bb.0:295; GFX12-NEXT:    global_load_u8 v0, v[0:1], off296; GFX12-NEXT:    s_wait_loadcnt 0x0297; GFX12-NEXT:    global_store_b8 v[2:3], v0, off298; GFX12-NEXT:    s_endpgm299  %a = load i8, ptr addrspace(4) %ptra300  store i8 %a, ptr addrspace(1) %out301  ret void302}303 304; with true16, S16 16-bit load305; without true16, S32 16-bit any-extending load306define amdgpu_ps void @load_divergent_P4_i16(ptr addrspace(4) %ptra, ptr addrspace(1) %out) {307; GFX12-True16-LABEL: load_divergent_P4_i16:308; GFX12-True16:       ; %bb.0:309; GFX12-True16-NEXT:    global_load_u16 v0, v[0:1], off310; GFX12-True16-NEXT:    s_wait_loadcnt 0x0311; GFX12-True16-NEXT:    global_store_b16 v[2:3], v0, off312; GFX12-True16-NEXT:    s_endpgm313;314; GFX12-NoTrue16-LABEL: load_divergent_P4_i16:315; GFX12-NoTrue16:       ; %bb.0:316; GFX12-NoTrue16-NEXT:    global_load_d16_b16 v0, v[0:1], off317; GFX12-NoTrue16-NEXT:    s_wait_loadcnt 0x0318; GFX12-NoTrue16-NEXT:    global_store_b16 v[2:3], v0, off319; GFX12-NoTrue16-NEXT:    s_endpgm320  %a = load i16, ptr addrspace(4) %ptra321  store i16 %a, ptr addrspace(1) %out322  ret void323}324 325define amdgpu_ps void @load_divergent_P4_i32(ptr addrspace(4) %ptra, ptr addrspace(1) %out) {326; GFX12-LABEL: load_divergent_P4_i32:327; GFX12:       ; %bb.0:328; GFX12-NEXT:    global_load_b32 v0, v[0:1], off329; GFX12-NEXT:    s_wait_loadcnt 0x0330; GFX12-NEXT:    global_store_b32 v[2:3], v0, off331; GFX12-NEXT:    s_endpgm332  %a = load i32, ptr addrspace(4) %ptra333  store i32 %a, ptr addrspace(1) %out334  ret void335}336 337define amdgpu_ps void @load_divergent_P4_v2i32(ptr addrspace(4) %ptra, ptr addrspace(1) %out) {338; GFX12-LABEL: load_divergent_P4_v2i32:339; GFX12:       ; %bb.0:340; GFX12-NEXT:    global_load_b64 v[0:1], v[0:1], off341; GFX12-NEXT:    s_wait_loadcnt 0x0342; GFX12-NEXT:    global_store_b64 v[2:3], v[0:1], off343; GFX12-NEXT:    s_endpgm344  %a = load <2 x i32>, ptr addrspace(4) %ptra345  store <2 x i32> %a, ptr addrspace(1) %out346  ret void347}348 349define amdgpu_ps void @load_divergent_P4_v3i32(ptr addrspace(4) %ptra, ptr addrspace(1) %out) {350; GFX12-LABEL: load_divergent_P4_v3i32:351; GFX12:       ; %bb.0:352; GFX12-NEXT:    global_load_b96 v[4:6], v[0:1], off353; GFX12-NEXT:    s_wait_loadcnt 0x0354; GFX12-NEXT:    global_store_b96 v[2:3], v[4:6], off355; GFX12-NEXT:    s_endpgm356  %a = load <3 x i32>, ptr addrspace(4) %ptra357  store <3 x i32> %a, ptr addrspace(1) %out358  ret void359}360 361define amdgpu_ps void @load_divergent_P4_v4i32(ptr addrspace(4) %ptra, ptr addrspace(1) %out) {362; GFX12-LABEL: load_divergent_P4_v4i32:363; GFX12:       ; %bb.0:364; GFX12-NEXT:    global_load_b128 v[4:7], v[0:1], off365; GFX12-NEXT:    s_wait_loadcnt 0x0366; GFX12-NEXT:    global_store_b128 v[2:3], v[4:7], off367; GFX12-NEXT:    s_endpgm368  %a = load <4 x i32>, ptr addrspace(4) %ptra369  store <4 x i32> %a, ptr addrspace(1) %out370  ret void371}372 373define amdgpu_ps void @load_divergent_P4_v8i32(ptr addrspace(4) %ptra, ptr addrspace(1) %out) {374; GFX12-LABEL: load_divergent_P4_v8i32:375; GFX12:       ; %bb.0:376; GFX12-NEXT:    s_clause 0x1377; GFX12-NEXT:    global_load_b128 v[4:7], v[0:1], off378; GFX12-NEXT:    global_load_b128 v[8:11], v[0:1], off offset:16379; GFX12-NEXT:    s_wait_loadcnt 0x1380; GFX12-NEXT:    global_store_b128 v[2:3], v[4:7], off381; GFX12-NEXT:    s_wait_loadcnt 0x0382; GFX12-NEXT:    global_store_b128 v[2:3], v[8:11], off offset:16383; GFX12-NEXT:    s_endpgm384  %a = load <8 x i32>, ptr addrspace(4) %ptra385  store <8 x i32> %a, ptr addrspace(1) %out386  ret void387}388 389define amdgpu_ps void @load_divergent_P4_v16i32(ptr addrspace(4) %ptra, ptr addrspace(1) %out) {390; GFX12-LABEL: load_divergent_P4_v16i32:391; GFX12:       ; %bb.0:392; GFX12-NEXT:    s_clause 0x3393; GFX12-NEXT:    global_load_b128 v[4:7], v[0:1], off394; GFX12-NEXT:    global_load_b128 v[8:11], v[0:1], off offset:16395; GFX12-NEXT:    global_load_b128 v[12:15], v[0:1], off offset:32396; GFX12-NEXT:    global_load_b128 v[16:19], v[0:1], off offset:48397; GFX12-NEXT:    s_wait_loadcnt 0x3398; GFX12-NEXT:    global_store_b128 v[2:3], v[4:7], off399; GFX12-NEXT:    s_wait_loadcnt 0x2400; GFX12-NEXT:    global_store_b128 v[2:3], v[8:11], off offset:16401; GFX12-NEXT:    s_wait_loadcnt 0x1402; GFX12-NEXT:    global_store_b128 v[2:3], v[12:15], off offset:32403; GFX12-NEXT:    s_wait_loadcnt 0x0404; GFX12-NEXT:    global_store_b128 v[2:3], v[16:19], off offset:48405; GFX12-NEXT:    s_endpgm406  %a = load <16 x i32>, ptr addrspace(4) %ptra407  store <16 x i32> %a, ptr addrspace(1) %out408  ret void409}410 411 412 413define amdgpu_ps void @load_divergent_P5_i8_any_extending(ptr addrspace(5) %ptra, ptr addrspace(5) %out) {414; GFX12-LABEL: load_divergent_P5_i8_any_extending:415; GFX12:       ; %bb.0:416; GFX12-NEXT:    scratch_load_u8 v0, v0, off417; GFX12-NEXT:    s_wait_loadcnt 0x0418; GFX12-NEXT:    scratch_store_b8 v1, v0, off419; GFX12-NEXT:    s_endpgm420  %a = load i8, ptr addrspace(5) %ptra421  store i8 %a, ptr addrspace(5) %out422  ret void423}424 425; with true16, S16 16-bit load426; without true16, S32 16-bit any-extending load427define amdgpu_ps void @load_divergent_P5_i16(ptr addrspace(5) %ptra, ptr addrspace(5) %out) {428; GFX12-True16-LABEL: load_divergent_P5_i16:429; GFX12-True16:       ; %bb.0:430; GFX12-True16-NEXT:    scratch_load_u16 v0, v0, off431; GFX12-True16-NEXT:    s_wait_loadcnt 0x0432; GFX12-True16-NEXT:    scratch_store_b16 v1, v0, off433; GFX12-True16-NEXT:    s_endpgm434;435; GFX12-NoTrue16-LABEL: load_divergent_P5_i16:436; GFX12-NoTrue16:       ; %bb.0:437; GFX12-NoTrue16-NEXT:    scratch_load_d16_b16 v0, v0, off438; GFX12-NoTrue16-NEXT:    s_wait_loadcnt 0x0439; GFX12-NoTrue16-NEXT:    scratch_store_b16 v1, v0, off440; GFX12-NoTrue16-NEXT:    s_endpgm441  %a = load i16, ptr addrspace(5) %ptra442  store i16 %a, ptr addrspace(5) %out443  ret void444}445 446define amdgpu_ps void @load_divergent_P5_i32(ptr addrspace(5) %ptra, ptr addrspace(5) %out) {447; GFX12-LABEL: load_divergent_P5_i32:448; GFX12:       ; %bb.0:449; GFX12-NEXT:    scratch_load_b32 v0, v0, off450; GFX12-NEXT:    s_wait_loadcnt 0x0451; GFX12-NEXT:    scratch_store_b32 v1, v0, off452; GFX12-NEXT:    s_endpgm453  %a = load i32, ptr addrspace(5) %ptra454  store i32 %a, ptr addrspace(5) %out455  ret void456}457 458define amdgpu_ps void @load_divergent_P5_v2i32(ptr addrspace(5) %ptra, ptr addrspace(5) %out) {459; GFX12-LABEL: load_divergent_P5_v2i32:460; GFX12:       ; %bb.0:461; GFX12-NEXT:    scratch_load_b64 v[2:3], v0, off462; GFX12-NEXT:    s_wait_loadcnt 0x0463; GFX12-NEXT:    scratch_store_b64 v1, v[2:3], off464; GFX12-NEXT:    s_endpgm465  %a = load <2 x i32>, ptr addrspace(5) %ptra466  store <2 x i32> %a, ptr addrspace(5) %out467  ret void468}469 470define amdgpu_ps void @load_divergent_P5_v3i32(ptr addrspace(5) %ptra, ptr addrspace(5) %out) {471; GFX12-LABEL: load_divergent_P5_v3i32:472; GFX12:       ; %bb.0:473; GFX12-NEXT:    scratch_load_b96 v[2:4], v0, off474; GFX12-NEXT:    s_wait_loadcnt 0x0475; GFX12-NEXT:    scratch_store_b96 v1, v[2:4], off476; GFX12-NEXT:    s_endpgm477  %a = load <3 x i32>, ptr addrspace(5) %ptra478  store <3 x i32> %a, ptr addrspace(5) %out479  ret void480}481 482define amdgpu_ps void @load_divergent_P5_v4i32(ptr addrspace(5) %ptra, ptr addrspace(5) %out) {483; GFX12-LABEL: load_divergent_P5_v4i32:484; GFX12:       ; %bb.0:485; GFX12-NEXT:    scratch_load_b128 v[2:5], v0, off486; GFX12-NEXT:    s_wait_loadcnt 0x0487; GFX12-NEXT:    scratch_store_b128 v1, v[2:5], off488; GFX12-NEXT:    s_endpgm489  %a = load <4 x i32>, ptr addrspace(5) %ptra490  store <4 x i32> %a, ptr addrspace(5) %out491  ret void492}493