1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=hawaii -verify-machineinstrs < %s | FileCheck -enable-var-scope -check-prefixes=CIVI,HAWAII %s 3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=fiji -verify-machineinstrs < %s | FileCheck -enable-var-scope -check-prefixes=CIVI,FIJI %s 4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck -enable-var-scope --check-prefix=GFX9 %s 5; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -verify-machineinstrs < %s | FileCheck -enable-var-scope --check-prefix=GFX10 %s 6; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -verify-machineinstrs < %s | FileCheck -enable-var-scope --check-prefix=GFX11 %s 7 8define void @local_store_i56(i56 addrspace(3)* %ptr, i56 %arg) #0 { 9; CIVI-LABEL: local_store_i56: 10; CIVI: ; %bb.0: 11; CIVI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12; CIVI-NEXT: s_mov_b32 m0, -1 13; CIVI-NEXT: ds_write_b16 v0, v2 offset:4 14; CIVI-NEXT: ds_write_b32 v0, v1 15; CIVI-NEXT: v_lshrrev_b32_e32 v1, 16, v2 16; CIVI-NEXT: ds_write_b8 v0, v1 offset:6 17; CIVI-NEXT: s_waitcnt lgkmcnt(0) 18; CIVI-NEXT: s_setpc_b64 s[30:31] 19; 20; GFX9-LABEL: local_store_i56: 21; GFX9: ; %bb.0: 22; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23; GFX9-NEXT: ds_write_b8_d16_hi v0, v2 offset:6 24; GFX9-NEXT: ds_write_b16 v0, v2 offset:4 25; GFX9-NEXT: ds_write_b32 v0, v1 26; GFX9-NEXT: s_waitcnt lgkmcnt(0) 27; GFX9-NEXT: s_setpc_b64 s[30:31] 28; 29; GFX10-LABEL: local_store_i56: 30; GFX10: ; %bb.0: 31; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 32; GFX10-NEXT: s_waitcnt_vscnt null, 0x0 33; GFX10-NEXT: ds_write_b8_d16_hi v0, v2 offset:6 34; GFX10-NEXT: ds_write_b16 v0, v2 offset:4 35; GFX10-NEXT: ds_write_b32 v0, v1 36; GFX10-NEXT: s_waitcnt lgkmcnt(0) 37; GFX10-NEXT: s_setpc_b64 s[30:31] 38; 39; GFX11-LABEL: local_store_i56: 40; GFX11: ; %bb.0: 41; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 42; GFX11-NEXT: s_waitcnt_vscnt null, 0x0 43; GFX11-NEXT: ds_store_b8_d16_hi v0, v2 offset:6 44; GFX11-NEXT: ds_store_b16 v0, v2 offset:4 45; GFX11-NEXT: ds_store_b32 v0, v1 46; GFX11-NEXT: s_waitcnt lgkmcnt(0) 47; GFX11-NEXT: s_setpc_b64 s[30:31] 48 store i56 %arg, i56 addrspace(3)* %ptr, align 8 49 ret void 50} 51 52define amdgpu_kernel void @local_store_i55(i55 addrspace(3)* %ptr, i55 %arg) #0 { 53; HAWAII-LABEL: local_store_i55: 54; HAWAII: ; %bb.0: 55; HAWAII-NEXT: s_or_b32 s0, s4, 14 56; HAWAII-NEXT: v_mov_b32_e32 v0, s0 57; HAWAII-NEXT: v_mov_b32_e32 v1, s5 58; HAWAII-NEXT: flat_load_ubyte v0, v[0:1] 59; HAWAII-NEXT: s_load_dword s0, s[4:5], 0x0 60; HAWAII-NEXT: s_load_dword s1, s[4:5], 0x2 61; HAWAII-NEXT: s_load_dword s2, s[4:5], 0x3 62; HAWAII-NEXT: s_mov_b32 m0, -1 63; HAWAII-NEXT: s_waitcnt lgkmcnt(0) 64; HAWAII-NEXT: v_mov_b32_e32 v1, s0 65; HAWAII-NEXT: v_mov_b32_e32 v2, s1 66; HAWAII-NEXT: v_mov_b32_e32 v3, s2 67; HAWAII-NEXT: ds_write_b16 v1, v3 offset:4 68; HAWAII-NEXT: s_waitcnt vmcnt(0) 69; HAWAII-NEXT: v_and_b32_e32 v0, 0x7f, v0 70; HAWAII-NEXT: ds_write_b8 v1, v0 offset:6 71; HAWAII-NEXT: ds_write_b32 v1, v2 72; HAWAII-NEXT: s_endpgm 73; 74; FIJI-LABEL: local_store_i55: 75; FIJI: ; %bb.0: 76; FIJI-NEXT: s_or_b32 s0, s4, 14 77; FIJI-NEXT: v_mov_b32_e32 v0, s0 78; FIJI-NEXT: v_mov_b32_e32 v1, s5 79; FIJI-NEXT: flat_load_ubyte v0, v[0:1] 80; FIJI-NEXT: s_load_dword s0, s[4:5], 0xc 81; FIJI-NEXT: s_load_dword s1, s[4:5], 0x0 82; FIJI-NEXT: s_load_dword s2, s[4:5], 0x8 83; FIJI-NEXT: s_mov_b32 m0, -1 84; FIJI-NEXT: s_waitcnt lgkmcnt(0) 85; FIJI-NEXT: s_and_b32 s3, s0, 0xffff 86; FIJI-NEXT: v_mov_b32_e32 v1, s1 87; FIJI-NEXT: v_mov_b32_e32 v2, s0 88; FIJI-NEXT: v_mov_b32_e32 v3, s2 89; FIJI-NEXT: ds_write_b16 v1, v2 offset:4 90; FIJI-NEXT: s_waitcnt vmcnt(0) 91; FIJI-NEXT: v_lshlrev_b32_e32 v0, 16, v0 92; FIJI-NEXT: v_or_b32_e32 v0, s3, v0 93; FIJI-NEXT: v_bfe_u32 v0, v0, 16, 7 94; FIJI-NEXT: ds_write_b8 v1, v0 offset:6 95; FIJI-NEXT: ds_write_b32 v1, v3 96; FIJI-NEXT: s_endpgm 97; 98; GFX9-LABEL: local_store_i55: 99; GFX9: ; %bb.0: 100; GFX9-NEXT: v_mov_b32_e32 v0, 0 101; GFX9-NEXT: global_load_ubyte_d16_hi v0, v0, s[4:5] offset:14 102; GFX9-NEXT: s_load_dword s0, s[4:5], 0xc 103; GFX9-NEXT: s_load_dword s1, s[4:5], 0x0 104; GFX9-NEXT: s_load_dword s2, s[4:5], 0x8 105; GFX9-NEXT: s_waitcnt lgkmcnt(0) 106; GFX9-NEXT: s_and_b32 s3, s0, 0xffff 107; GFX9-NEXT: v_mov_b32_e32 v1, s1 108; GFX9-NEXT: v_mov_b32_e32 v2, s0 109; GFX9-NEXT: v_mov_b32_e32 v3, s2 110; GFX9-NEXT: ds_write_b16 v1, v2 offset:4 111; GFX9-NEXT: s_waitcnt vmcnt(0) 112; GFX9-NEXT: v_or_b32_e32 v0, s3, v0 113; GFX9-NEXT: v_and_b32_e32 v0, 0x7fffff, v0 114; GFX9-NEXT: ds_write_b8_d16_hi v1, v0 offset:6 115; GFX9-NEXT: ds_write_b32 v1, v3 116; GFX9-NEXT: s_endpgm 117; 118; GFX10-LABEL: local_store_i55: 119; GFX10: ; %bb.0: 120; GFX10-NEXT: v_mov_b32_e32 v0, 0 121; GFX10-NEXT: s_clause 0x2 122; GFX10-NEXT: s_load_dword s0, s[4:5], 0xc 123; GFX10-NEXT: s_load_dword s1, s[4:5], 0x0 124; GFX10-NEXT: s_load_dword s2, s[4:5], 0x8 125; GFX10-NEXT: global_load_ubyte_d16_hi v0, v0, s[4:5] offset:14 126; GFX10-NEXT: s_waitcnt lgkmcnt(0) 127; GFX10-NEXT: s_and_b32 s3, s0, 0xffff 128; GFX10-NEXT: v_mov_b32_e32 v1, s1 129; GFX10-NEXT: v_mov_b32_e32 v2, s0 130; GFX10-NEXT: v_mov_b32_e32 v3, s2 131; GFX10-NEXT: s_waitcnt vmcnt(0) 132; GFX10-NEXT: v_or_b32_e32 v0, s3, v0 133; GFX10-NEXT: v_and_b32_e32 v0, 0x7fffff, v0 134; GFX10-NEXT: ds_write_b16 v1, v2 offset:4 135; GFX10-NEXT: ds_write_b8_d16_hi v1, v0 offset:6 136; GFX10-NEXT: ds_write_b32 v1, v3 137; GFX10-NEXT: s_endpgm 138; 139; GFX11-LABEL: local_store_i55: 140; GFX11: ; %bb.0: 141; GFX11-NEXT: v_mov_b32_e32 v0, 0 142; GFX11-NEXT: global_load_d16_hi_u8 v0, v0, s[0:1] offset:14 143; GFX11-NEXT: s_clause 0x2 144; GFX11-NEXT: s_load_b32 s2, s[0:1], 0xc 145; GFX11-NEXT: s_load_b32 s3, s[0:1], 0x0 146; GFX11-NEXT: s_load_b32 s0, s[0:1], 0x8 147; GFX11-NEXT: s_waitcnt lgkmcnt(0) 148; GFX11-NEXT: s_and_b32 s1, s2, 0xffff 149; GFX11-NEXT: v_dual_mov_b32 v1, s3 :: v_dual_mov_b32 v2, s2 150; GFX11-NEXT: v_mov_b32_e32 v3, s0 151; GFX11-NEXT: s_waitcnt vmcnt(0) 152; GFX11-NEXT: v_or_b32_e32 v0, s1, v0 153; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 154; GFX11-NEXT: v_and_b32_e32 v0, 0x7fffff, v0 155; GFX11-NEXT: ds_store_b8_d16_hi v1, v0 offset:6 156; GFX11-NEXT: ds_store_b16 v1, v2 offset:4 157; GFX11-NEXT: ds_store_b32 v1, v3 158; GFX11-NEXT: s_endpgm 159 store i55 %arg, i55 addrspace(3)* %ptr, align 8 160 ret void 161} 162 163define amdgpu_kernel void @local_store_i48(i48 addrspace(3)* %ptr, i48 %arg) #0 { 164; HAWAII-LABEL: local_store_i48: 165; HAWAII: ; %bb.0: 166; HAWAII-NEXT: s_load_dword s0, s[4:5], 0x0 167; HAWAII-NEXT: s_load_dword s1, s[4:5], 0x3 168; HAWAII-NEXT: s_load_dword s2, s[4:5], 0x2 169; HAWAII-NEXT: s_mov_b32 m0, -1 170; HAWAII-NEXT: s_waitcnt lgkmcnt(0) 171; HAWAII-NEXT: v_mov_b32_e32 v0, s0 172; HAWAII-NEXT: v_mov_b32_e32 v1, s1 173; HAWAII-NEXT: ds_write_b16 v0, v1 offset:4 174; HAWAII-NEXT: v_mov_b32_e32 v1, s2 175; HAWAII-NEXT: ds_write_b32 v0, v1 176; HAWAII-NEXT: s_endpgm 177; 178; FIJI-LABEL: local_store_i48: 179; FIJI: ; %bb.0: 180; FIJI-NEXT: s_load_dword s0, s[4:5], 0x0 181; FIJI-NEXT: s_load_dword s1, s[4:5], 0xc 182; FIJI-NEXT: s_load_dword s2, s[4:5], 0x8 183; FIJI-NEXT: s_mov_b32 m0, -1 184; FIJI-NEXT: s_waitcnt lgkmcnt(0) 185; FIJI-NEXT: v_mov_b32_e32 v0, s0 186; FIJI-NEXT: v_mov_b32_e32 v1, s1 187; FIJI-NEXT: ds_write_b16 v0, v1 offset:4 188; FIJI-NEXT: v_mov_b32_e32 v1, s2 189; FIJI-NEXT: ds_write_b32 v0, v1 190; FIJI-NEXT: s_endpgm 191; 192; GFX9-LABEL: local_store_i48: 193; GFX9: ; %bb.0: 194; GFX9-NEXT: s_load_dword s0, s[4:5], 0x0 195; GFX9-NEXT: s_load_dword s1, s[4:5], 0xc 196; GFX9-NEXT: s_load_dword s2, s[4:5], 0x8 197; GFX9-NEXT: s_waitcnt lgkmcnt(0) 198; GFX9-NEXT: v_mov_b32_e32 v0, s0 199; GFX9-NEXT: v_mov_b32_e32 v1, s1 200; GFX9-NEXT: v_mov_b32_e32 v2, s2 201; GFX9-NEXT: ds_write_b16 v0, v1 offset:4 202; GFX9-NEXT: ds_write_b32 v0, v2 203; GFX9-NEXT: s_endpgm 204; 205; GFX10-LABEL: local_store_i48: 206; GFX10: ; %bb.0: 207; GFX10-NEXT: s_clause 0x2 208; GFX10-NEXT: s_load_dword s0, s[4:5], 0x0 209; GFX10-NEXT: s_load_dword s1, s[4:5], 0xc 210; GFX10-NEXT: s_load_dword s2, s[4:5], 0x8 211; GFX10-NEXT: s_waitcnt lgkmcnt(0) 212; GFX10-NEXT: v_mov_b32_e32 v0, s0 213; GFX10-NEXT: v_mov_b32_e32 v1, s1 214; GFX10-NEXT: v_mov_b32_e32 v2, s2 215; GFX10-NEXT: ds_write_b16 v0, v1 offset:4 216; GFX10-NEXT: ds_write_b32 v0, v2 217; GFX10-NEXT: s_endpgm 218; 219; GFX11-LABEL: local_store_i48: 220; GFX11: ; %bb.0: 221; GFX11-NEXT: s_clause 0x2 222; GFX11-NEXT: s_load_b32 s2, s[0:1], 0x0 223; GFX11-NEXT: s_load_b32 s3, s[0:1], 0xc 224; GFX11-NEXT: s_load_b32 s0, s[0:1], 0x8 225; GFX11-NEXT: s_waitcnt lgkmcnt(0) 226; GFX11-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3 227; GFX11-NEXT: v_mov_b32_e32 v2, s0 228; GFX11-NEXT: ds_store_b16 v0, v1 offset:4 229; GFX11-NEXT: ds_store_b32 v0, v2 230; GFX11-NEXT: s_endpgm 231 store i48 %arg, i48 addrspace(3)* %ptr, align 8 232 ret void 233} 234 235define amdgpu_kernel void @local_store_i65(i65 addrspace(3)* %ptr, i65 %arg) #0 { 236; HAWAII-LABEL: local_store_i65: 237; HAWAII: ; %bb.0: 238; HAWAII-NEXT: s_load_dword s2, s[4:5], 0x4 239; HAWAII-NEXT: s_load_dword s3, s[4:5], 0x0 240; HAWAII-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2 241; HAWAII-NEXT: s_mov_b32 m0, -1 242; HAWAII-NEXT: s_waitcnt lgkmcnt(0) 243; HAWAII-NEXT: s_and_b32 s2, s2, 1 244; HAWAII-NEXT: v_mov_b32_e32 v2, s3 245; HAWAII-NEXT: v_mov_b32_e32 v0, s2 246; HAWAII-NEXT: ds_write_b8 v2, v0 offset:8 247; HAWAII-NEXT: v_mov_b32_e32 v0, s0 248; HAWAII-NEXT: v_mov_b32_e32 v1, s1 249; HAWAII-NEXT: ds_write_b64 v2, v[0:1] 250; HAWAII-NEXT: s_endpgm 251; 252; FIJI-LABEL: local_store_i65: 253; FIJI: ; %bb.0: 254; FIJI-NEXT: s_load_dword s2, s[4:5], 0x10 255; FIJI-NEXT: s_load_dword s3, s[4:5], 0x0 256; FIJI-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8 257; FIJI-NEXT: s_mov_b32 m0, -1 258; FIJI-NEXT: s_waitcnt lgkmcnt(0) 259; FIJI-NEXT: s_and_b32 s2, s2, 1 260; FIJI-NEXT: v_mov_b32_e32 v2, s3 261; FIJI-NEXT: v_mov_b32_e32 v0, s2 262; FIJI-NEXT: ds_write_b8 v2, v0 offset:8 263; FIJI-NEXT: v_mov_b32_e32 v0, s0 264; FIJI-NEXT: v_mov_b32_e32 v1, s1 265; FIJI-NEXT: ds_write_b64 v2, v[0:1] 266; FIJI-NEXT: s_endpgm 267; 268; GFX9-LABEL: local_store_i65: 269; GFX9: ; %bb.0: 270; GFX9-NEXT: s_load_dword s2, s[4:5], 0x10 271; GFX9-NEXT: s_load_dword s3, s[4:5], 0x0 272; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8 273; GFX9-NEXT: s_waitcnt lgkmcnt(0) 274; GFX9-NEXT: s_and_b32 s2, s2, 1 275; GFX9-NEXT: v_mov_b32_e32 v2, s3 276; GFX9-NEXT: v_mov_b32_e32 v0, s0 277; GFX9-NEXT: v_mov_b32_e32 v3, s2 278; GFX9-NEXT: v_mov_b32_e32 v1, s1 279; GFX9-NEXT: ds_write_b8 v2, v3 offset:8 280; GFX9-NEXT: ds_write_b64 v2, v[0:1] 281; GFX9-NEXT: s_endpgm 282; 283; GFX10-LABEL: local_store_i65: 284; GFX10: ; %bb.0: 285; GFX10-NEXT: s_clause 0x2 286; GFX10-NEXT: s_load_dword s2, s[4:5], 0x10 287; GFX10-NEXT: s_load_dword s3, s[4:5], 0x0 288; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8 289; GFX10-NEXT: s_waitcnt lgkmcnt(0) 290; GFX10-NEXT: s_and_b32 s2, s2, 1 291; GFX10-NEXT: v_mov_b32_e32 v2, s3 292; GFX10-NEXT: v_mov_b32_e32 v3, s2 293; GFX10-NEXT: v_mov_b32_e32 v0, s0 294; GFX10-NEXT: v_mov_b32_e32 v1, s1 295; GFX10-NEXT: ds_write_b8 v2, v3 offset:8 296; GFX10-NEXT: ds_write_b64 v2, v[0:1] 297; GFX10-NEXT: s_endpgm 298; 299; GFX11-LABEL: local_store_i65: 300; GFX11: ; %bb.0: 301; GFX11-NEXT: s_clause 0x2 302; GFX11-NEXT: s_load_b32 s2, s[0:1], 0x10 303; GFX11-NEXT: s_load_b32 s3, s[0:1], 0x0 304; GFX11-NEXT: s_load_b64 s[0:1], s[0:1], 0x8 305; GFX11-NEXT: s_waitcnt lgkmcnt(0) 306; GFX11-NEXT: s_and_b32 s2, s2, 1 307; GFX11-NEXT: s_delay_alu instid0(SALU_CYCLE_1) 308; GFX11-NEXT: v_dual_mov_b32 v2, s3 :: v_dual_mov_b32 v3, s2 309; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1 310; GFX11-NEXT: ds_store_b8 v2, v3 offset:8 311; GFX11-NEXT: ds_store_b64 v2, v[0:1] 312; GFX11-NEXT: s_endpgm 313 store i65 %arg, i65 addrspace(3)* %ptr, align 8 314 ret void 315} 316 317define void @local_store_i13(i13 addrspace(3)* %ptr, i13 %arg) #0 { 318; CIVI-LABEL: local_store_i13: 319; CIVI: ; %bb.0: 320; CIVI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 321; CIVI-NEXT: v_and_b32_e32 v1, 0x1fff, v1 322; CIVI-NEXT: s_mov_b32 m0, -1 323; CIVI-NEXT: ds_write_b16 v0, v1 324; CIVI-NEXT: s_waitcnt lgkmcnt(0) 325; CIVI-NEXT: s_setpc_b64 s[30:31] 326; 327; GFX9-LABEL: local_store_i13: 328; GFX9: ; %bb.0: 329; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 330; GFX9-NEXT: v_and_b32_e32 v1, 0x1fff, v1 331; GFX9-NEXT: ds_write_b16 v0, v1 332; GFX9-NEXT: s_waitcnt lgkmcnt(0) 333; GFX9-NEXT: s_setpc_b64 s[30:31] 334; 335; GFX10-LABEL: local_store_i13: 336; GFX10: ; %bb.0: 337; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 338; GFX10-NEXT: s_waitcnt_vscnt null, 0x0 339; GFX10-NEXT: v_and_b32_e32 v1, 0x1fff, v1 340; GFX10-NEXT: ds_write_b16 v0, v1 341; GFX10-NEXT: s_waitcnt lgkmcnt(0) 342; GFX10-NEXT: s_setpc_b64 s[30:31] 343; 344; GFX11-LABEL: local_store_i13: 345; GFX11: ; %bb.0: 346; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 347; GFX11-NEXT: s_waitcnt_vscnt null, 0x0 348; GFX11-NEXT: v_and_b32_e32 v1, 0x1fff, v1 349; GFX11-NEXT: ds_store_b16 v0, v1 350; GFX11-NEXT: s_waitcnt lgkmcnt(0) 351; GFX11-NEXT: s_setpc_b64 s[30:31] 352 store i13 %arg, i13 addrspace(3)* %ptr, align 8 353 ret void 354} 355 356define void @local_store_i17(i17 addrspace(3)* %ptr, i17 %arg) #0 { 357; CIVI-LABEL: local_store_i17: 358; CIVI: ; %bb.0: 359; CIVI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 360; CIVI-NEXT: s_mov_b32 m0, -1 361; CIVI-NEXT: ds_write_b16 v0, v1 362; CIVI-NEXT: v_bfe_u32 v1, v1, 16, 1 363; CIVI-NEXT: ds_write_b8 v0, v1 offset:2 364; CIVI-NEXT: s_waitcnt lgkmcnt(0) 365; CIVI-NEXT: s_setpc_b64 s[30:31] 366; 367; GFX9-LABEL: local_store_i17: 368; GFX9: ; %bb.0: 369; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 370; GFX9-NEXT: ds_write_b16 v0, v1 371; GFX9-NEXT: v_and_b32_e32 v1, 0x1ffff, v1 372; GFX9-NEXT: ds_write_b8_d16_hi v0, v1 offset:2 373; GFX9-NEXT: s_waitcnt lgkmcnt(0) 374; GFX9-NEXT: s_setpc_b64 s[30:31] 375; 376; GFX10-LABEL: local_store_i17: 377; GFX10: ; %bb.0: 378; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 379; GFX10-NEXT: s_waitcnt_vscnt null, 0x0 380; GFX10-NEXT: v_and_b32_e32 v2, 0x1ffff, v1 381; GFX10-NEXT: ds_write_b16 v0, v1 382; GFX10-NEXT: ds_write_b8_d16_hi v0, v2 offset:2 383; GFX10-NEXT: s_waitcnt lgkmcnt(0) 384; GFX10-NEXT: s_setpc_b64 s[30:31] 385; 386; GFX11-LABEL: local_store_i17: 387; GFX11: ; %bb.0: 388; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 389; GFX11-NEXT: s_waitcnt_vscnt null, 0x0 390; GFX11-NEXT: v_and_b32_e32 v2, 0x1ffff, v1 391; GFX11-NEXT: ds_store_b16 v0, v1 392; GFX11-NEXT: ds_store_b8_d16_hi v0, v2 offset:2 393; GFX11-NEXT: s_waitcnt lgkmcnt(0) 394; GFX11-NEXT: s_setpc_b64 s[30:31] 395 store i17 %arg, i17 addrspace(3)* %ptr, align 8 396 ret void 397} 398 399attributes #0 = { nounwind } 400