2695 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=amdgcn-- -mcpu=hawaii < %s | FileCheck -enable-var-scope -check-prefixes=GFX789,CI %s3; RUN: llc -mtriple=amdgcn-- -mcpu=fiji -mattr=-flat-for-global < %s | FileCheck -enable-var-scope -check-prefixes=GFX789,GFX89,GFX8 %s4; RUN: llc -mtriple=amdgcn-- -mcpu=gfx900 -mattr=-flat-for-global < %s | FileCheck -enable-var-scope -check-prefixes=GFX789,GFX89,GFX9 %s5; RUN: llc -mtriple=amdgcn-- -mcpu=gfx1100 -mattr=+real-true16 -mattr=-flat-for-global < %s | FileCheck -enable-var-scope -check-prefixes=GFX11,GFX11-TRUE16 %s6; RUN: llc -mtriple=amdgcn-- -mcpu=gfx1100 -mattr=-real-true16 -mattr=-flat-for-global < %s | FileCheck -enable-var-scope -check-prefixes=GFX11,GFX11-FAKE16 %s7 8define i1 @i1_func_void() #0 {9; GFX789-LABEL: i1_func_void:10; GFX789: ; %bb.0:11; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12; GFX789-NEXT: s_mov_b32 s7, 0xf00013; GFX789-NEXT: s_mov_b32 s6, -114; GFX789-NEXT: buffer_load_ubyte v0, off, s[4:7], 015; GFX789-NEXT: s_waitcnt vmcnt(0)16; GFX789-NEXT: s_setpc_b64 s[30:31]17;18; GFX11-LABEL: i1_func_void:19; GFX11: ; %bb.0:20; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21; GFX11-NEXT: s_mov_b32 s3, 0x3101600022; GFX11-NEXT: s_mov_b32 s2, -123; GFX11-NEXT: buffer_load_u8 v0, off, s[0:3], 024; GFX11-NEXT: s_waitcnt vmcnt(0)25; GFX11-NEXT: s_setpc_b64 s[30:31]26 %val = load i1, ptr addrspace(1) poison27 ret i1 %val28}29 30; FIXME: Missing and?31define zeroext i1 @i1_zeroext_func_void() #0 {32; GFX789-LABEL: i1_zeroext_func_void:33; GFX789: ; %bb.0:34; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)35; GFX789-NEXT: s_mov_b32 s7, 0xf00036; GFX789-NEXT: s_mov_b32 s6, -137; GFX789-NEXT: buffer_load_ubyte v0, off, s[4:7], 038; GFX789-NEXT: s_waitcnt vmcnt(0)39; GFX789-NEXT: s_setpc_b64 s[30:31]40;41; GFX11-LABEL: i1_zeroext_func_void:42; GFX11: ; %bb.0:43; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)44; GFX11-NEXT: s_mov_b32 s3, 0x3101600045; GFX11-NEXT: s_mov_b32 s2, -146; GFX11-NEXT: buffer_load_u8 v0, off, s[0:3], 047; GFX11-NEXT: s_waitcnt vmcnt(0)48; GFX11-NEXT: s_setpc_b64 s[30:31]49 %val = load i1, ptr addrspace(1) poison50 ret i1 %val51}52 53define signext i1 @i1_signext_func_void() #0 {54; GFX789-LABEL: i1_signext_func_void:55; GFX789: ; %bb.0:56; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)57; GFX789-NEXT: s_mov_b32 s7, 0xf00058; GFX789-NEXT: s_mov_b32 s6, -159; GFX789-NEXT: buffer_load_ubyte v0, off, s[4:7], 060; GFX789-NEXT: s_waitcnt vmcnt(0)61; GFX789-NEXT: v_bfe_i32 v0, v0, 0, 162; GFX789-NEXT: s_setpc_b64 s[30:31]63;64; GFX11-LABEL: i1_signext_func_void:65; GFX11: ; %bb.0:66; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)67; GFX11-NEXT: s_mov_b32 s3, 0x3101600068; GFX11-NEXT: s_mov_b32 s2, -169; GFX11-NEXT: buffer_load_u8 v0, off, s[0:3], 070; GFX11-NEXT: s_waitcnt vmcnt(0)71; GFX11-NEXT: v_bfe_i32 v0, v0, 0, 172; GFX11-NEXT: s_setpc_b64 s[30:31]73 %val = load i1, ptr addrspace(1) poison74 ret i1 %val75}76 77define i8 @i8_func_void() #0 {78; GFX789-LABEL: i8_func_void:79; GFX789: ; %bb.0:80; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)81; GFX789-NEXT: s_mov_b32 s7, 0xf00082; GFX789-NEXT: s_mov_b32 s6, -183; GFX789-NEXT: buffer_load_ubyte v0, off, s[4:7], 084; GFX789-NEXT: s_waitcnt vmcnt(0)85; GFX789-NEXT: s_setpc_b64 s[30:31]86;87; GFX11-LABEL: i8_func_void:88; GFX11: ; %bb.0:89; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)90; GFX11-NEXT: s_mov_b32 s3, 0x3101600091; GFX11-NEXT: s_mov_b32 s2, -192; GFX11-NEXT: buffer_load_u8 v0, off, s[0:3], 093; GFX11-NEXT: s_waitcnt vmcnt(0)94; GFX11-NEXT: s_setpc_b64 s[30:31]95 %val = load i8, ptr addrspace(1) poison96 ret i8 %val97}98 99define zeroext i8 @i8_zeroext_func_void() #0 {100; GFX789-LABEL: i8_zeroext_func_void:101; GFX789: ; %bb.0:102; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)103; GFX789-NEXT: s_mov_b32 s7, 0xf000104; GFX789-NEXT: s_mov_b32 s6, -1105; GFX789-NEXT: buffer_load_ubyte v0, off, s[4:7], 0106; GFX789-NEXT: s_waitcnt vmcnt(0)107; GFX789-NEXT: s_setpc_b64 s[30:31]108;109; GFX11-LABEL: i8_zeroext_func_void:110; GFX11: ; %bb.0:111; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)112; GFX11-NEXT: s_mov_b32 s3, 0x31016000113; GFX11-NEXT: s_mov_b32 s2, -1114; GFX11-NEXT: buffer_load_u8 v0, off, s[0:3], 0115; GFX11-NEXT: s_waitcnt vmcnt(0)116; GFX11-NEXT: s_setpc_b64 s[30:31]117 %val = load i8, ptr addrspace(1) poison118 ret i8 %val119}120 121define signext i8 @i8_signext_func_void() #0 {122; GFX789-LABEL: i8_signext_func_void:123; GFX789: ; %bb.0:124; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)125; GFX789-NEXT: s_mov_b32 s7, 0xf000126; GFX789-NEXT: s_mov_b32 s6, -1127; GFX789-NEXT: buffer_load_sbyte v0, off, s[4:7], 0128; GFX789-NEXT: s_waitcnt vmcnt(0)129; GFX789-NEXT: s_setpc_b64 s[30:31]130;131; GFX11-LABEL: i8_signext_func_void:132; GFX11: ; %bb.0:133; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)134; GFX11-NEXT: s_mov_b32 s3, 0x31016000135; GFX11-NEXT: s_mov_b32 s2, -1136; GFX11-NEXT: buffer_load_i8 v0, off, s[0:3], 0137; GFX11-NEXT: s_waitcnt vmcnt(0)138; GFX11-NEXT: s_setpc_b64 s[30:31]139 %val = load i8, ptr addrspace(1) poison140 ret i8 %val141}142 143define i16 @i16_func_void() #0 {144; GFX789-LABEL: i16_func_void:145; GFX789: ; %bb.0:146; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)147; GFX789-NEXT: s_mov_b32 s7, 0xf000148; GFX789-NEXT: s_mov_b32 s6, -1149; GFX789-NEXT: buffer_load_ushort v0, off, s[4:7], 0150; GFX789-NEXT: s_waitcnt vmcnt(0)151; GFX789-NEXT: s_setpc_b64 s[30:31]152;153; GFX11-LABEL: i16_func_void:154; GFX11: ; %bb.0:155; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)156; GFX11-NEXT: s_mov_b32 s3, 0x31016000157; GFX11-NEXT: s_mov_b32 s2, -1158; GFX11-NEXT: buffer_load_u16 v0, off, s[0:3], 0159; GFX11-NEXT: s_waitcnt vmcnt(0)160; GFX11-NEXT: s_setpc_b64 s[30:31]161 %val = load i16, ptr addrspace(1) poison162 ret i16 %val163}164 165define zeroext i16 @i16_zeroext_func_void() #0 {166; GFX789-LABEL: i16_zeroext_func_void:167; GFX789: ; %bb.0:168; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)169; GFX789-NEXT: s_mov_b32 s7, 0xf000170; GFX789-NEXT: s_mov_b32 s6, -1171; GFX789-NEXT: buffer_load_ushort v0, off, s[4:7], 0172; GFX789-NEXT: s_waitcnt vmcnt(0)173; GFX789-NEXT: s_setpc_b64 s[30:31]174;175; GFX11-LABEL: i16_zeroext_func_void:176; GFX11: ; %bb.0:177; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)178; GFX11-NEXT: s_mov_b32 s3, 0x31016000179; GFX11-NEXT: s_mov_b32 s2, -1180; GFX11-NEXT: buffer_load_u16 v0, off, s[0:3], 0181; GFX11-NEXT: s_waitcnt vmcnt(0)182; GFX11-NEXT: s_setpc_b64 s[30:31]183 %val = load i16, ptr addrspace(1) poison184 ret i16 %val185}186 187define signext i16 @i16_signext_func_void() #0 {188; GFX789-LABEL: i16_signext_func_void:189; GFX789: ; %bb.0:190; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)191; GFX789-NEXT: s_mov_b32 s7, 0xf000192; GFX789-NEXT: s_mov_b32 s6, -1193; GFX789-NEXT: buffer_load_sshort v0, off, s[4:7], 0194; GFX789-NEXT: s_waitcnt vmcnt(0)195; GFX789-NEXT: s_setpc_b64 s[30:31]196;197; GFX11-LABEL: i16_signext_func_void:198; GFX11: ; %bb.0:199; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)200; GFX11-NEXT: s_mov_b32 s3, 0x31016000201; GFX11-NEXT: s_mov_b32 s2, -1202; GFX11-NEXT: buffer_load_i16 v0, off, s[0:3], 0203; GFX11-NEXT: s_waitcnt vmcnt(0)204; GFX11-NEXT: s_setpc_b64 s[30:31]205 %val = load i16, ptr addrspace(1) poison206 ret i16 %val207}208 209define i32 @i32_func_void() #0 {210; GFX789-LABEL: i32_func_void:211; GFX789: ; %bb.0:212; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)213; GFX789-NEXT: s_mov_b32 s7, 0xf000214; GFX789-NEXT: s_mov_b32 s6, -1215; GFX789-NEXT: buffer_load_dword v0, off, s[4:7], 0216; GFX789-NEXT: s_waitcnt vmcnt(0)217; GFX789-NEXT: s_setpc_b64 s[30:31]218;219; GFX11-LABEL: i32_func_void:220; GFX11: ; %bb.0:221; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)222; GFX11-NEXT: s_mov_b32 s3, 0x31016000223; GFX11-NEXT: s_mov_b32 s2, -1224; GFX11-NEXT: buffer_load_b32 v0, off, s[0:3], 0225; GFX11-NEXT: s_waitcnt vmcnt(0)226; GFX11-NEXT: s_setpc_b64 s[30:31]227 %val = load i32, ptr addrspace(1) poison228 ret i32 %val229}230 231define i48 @i48_func_void() #0 {232; GFX789-LABEL: i48_func_void:233; GFX789: ; %bb.0:234; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)235; GFX789-NEXT: s_mov_b32 s7, 0xf000236; GFX789-NEXT: s_mov_b32 s6, -1237; GFX789-NEXT: buffer_load_dword v0, off, s[4:7], 0238; GFX789-NEXT: buffer_load_ushort v1, off, s[4:7], 0239; GFX789-NEXT: s_waitcnt vmcnt(0)240; GFX789-NEXT: s_setpc_b64 s[30:31]241;242; GFX11-LABEL: i48_func_void:243; GFX11: ; %bb.0:244; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)245; GFX11-NEXT: s_mov_b32 s3, 0x31016000246; GFX11-NEXT: s_mov_b32 s2, -1247; GFX11-NEXT: s_clause 0x1248; GFX11-NEXT: buffer_load_b32 v0, off, s[0:3], 0249; GFX11-NEXT: buffer_load_u16 v1, off, s[0:3], 0250; GFX11-NEXT: s_waitcnt vmcnt(0)251; GFX11-NEXT: s_setpc_b64 s[30:31]252 %val = load i48, ptr addrspace(1) poison, align 8253 ret i48 %val254}255 256define zeroext i48 @i48_zeroext_func_void() #0 {257; GFX789-LABEL: i48_zeroext_func_void:258; GFX789: ; %bb.0:259; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)260; GFX789-NEXT: s_mov_b32 s7, 0xf000261; GFX789-NEXT: s_mov_b32 s6, -1262; GFX789-NEXT: buffer_load_dword v0, off, s[4:7], 0263; GFX789-NEXT: buffer_load_ushort v1, off, s[4:7], 0264; GFX789-NEXT: s_waitcnt vmcnt(0)265; GFX789-NEXT: s_setpc_b64 s[30:31]266;267; GFX11-LABEL: i48_zeroext_func_void:268; GFX11: ; %bb.0:269; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)270; GFX11-NEXT: s_mov_b32 s3, 0x31016000271; GFX11-NEXT: s_mov_b32 s2, -1272; GFX11-NEXT: s_clause 0x1273; GFX11-NEXT: buffer_load_b32 v0, off, s[0:3], 0274; GFX11-NEXT: buffer_load_u16 v1, off, s[0:3], 0275; GFX11-NEXT: s_waitcnt vmcnt(0)276; GFX11-NEXT: s_setpc_b64 s[30:31]277 %val = load i48, ptr addrspace(1) poison, align 8278 ret i48 %val279}280 281define signext i48 @i48_signext_func_void() #0 {282; GFX789-LABEL: i48_signext_func_void:283; GFX789: ; %bb.0:284; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)285; GFX789-NEXT: s_mov_b32 s7, 0xf000286; GFX789-NEXT: s_mov_b32 s6, -1287; GFX789-NEXT: buffer_load_dword v0, off, s[4:7], 0288; GFX789-NEXT: buffer_load_sshort v1, off, s[4:7], 0289; GFX789-NEXT: s_waitcnt vmcnt(0)290; GFX789-NEXT: s_setpc_b64 s[30:31]291;292; GFX11-LABEL: i48_signext_func_void:293; GFX11: ; %bb.0:294; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)295; GFX11-NEXT: s_mov_b32 s3, 0x31016000296; GFX11-NEXT: s_mov_b32 s2, -1297; GFX11-NEXT: s_clause 0x1298; GFX11-NEXT: buffer_load_b32 v0, off, s[0:3], 0299; GFX11-NEXT: buffer_load_i16 v1, off, s[0:3], 0300; GFX11-NEXT: s_waitcnt vmcnt(0)301; GFX11-NEXT: s_setpc_b64 s[30:31]302 %val = load i48, ptr addrspace(1) poison, align 8303 ret i48 %val304}305 306define i63 @i63_func_void(i63 %val) #0 {307; GFX789-LABEL: i63_func_void:308; GFX789: ; %bb.0:309; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)310; GFX789-NEXT: s_setpc_b64 s[30:31]311;312; GFX11-LABEL: i63_func_void:313; GFX11: ; %bb.0:314; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)315; GFX11-NEXT: s_setpc_b64 s[30:31]316 ret i63 %val317}318 319define zeroext i63 @i63_zeroext_func_void(i63 %val) #0 {320; GFX789-LABEL: i63_zeroext_func_void:321; GFX789: ; %bb.0:322; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)323; GFX789-NEXT: v_and_b32_e32 v1, 0x7fffffff, v1324; GFX789-NEXT: s_setpc_b64 s[30:31]325;326; GFX11-LABEL: i63_zeroext_func_void:327; GFX11: ; %bb.0:328; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)329; GFX11-NEXT: v_and_b32_e32 v1, 0x7fffffff, v1330; GFX11-NEXT: s_setpc_b64 s[30:31]331 ret i63 %val332}333 334define signext i63 @i63_signext_func_void(i63 %val) #0 {335; CI-LABEL: i63_signext_func_void:336; CI: ; %bb.0:337; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)338; CI-NEXT: v_lshl_b64 v[0:1], v[0:1], 1339; CI-NEXT: v_ashr_i64 v[0:1], v[0:1], 1340; CI-NEXT: s_setpc_b64 s[30:31]341;342; GFX89-LABEL: i63_signext_func_void:343; GFX89: ; %bb.0:344; GFX89-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)345; GFX89-NEXT: v_lshlrev_b64 v[0:1], 1, v[0:1]346; GFX89-NEXT: v_ashrrev_i64 v[0:1], 1, v[0:1]347; GFX89-NEXT: s_setpc_b64 s[30:31]348;349; GFX11-LABEL: i63_signext_func_void:350; GFX11: ; %bb.0:351; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)352; GFX11-NEXT: v_lshlrev_b64 v[0:1], 1, v[0:1]353; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)354; GFX11-NEXT: v_ashrrev_i64 v[0:1], 1, v[0:1]355; GFX11-NEXT: s_setpc_b64 s[30:31]356 ret i63 %val357}358 359define i64 @i64_func_void() #0 {360; GFX789-LABEL: i64_func_void:361; GFX789: ; %bb.0:362; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)363; GFX789-NEXT: s_mov_b32 s7, 0xf000364; GFX789-NEXT: s_mov_b32 s6, -1365; GFX789-NEXT: buffer_load_dwordx2 v[0:1], off, s[4:7], 0366; GFX789-NEXT: s_waitcnt vmcnt(0)367; GFX789-NEXT: s_setpc_b64 s[30:31]368;369; GFX11-LABEL: i64_func_void:370; GFX11: ; %bb.0:371; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)372; GFX11-NEXT: s_mov_b32 s3, 0x31016000373; GFX11-NEXT: s_mov_b32 s2, -1374; GFX11-NEXT: buffer_load_b64 v[0:1], off, s[0:3], 0375; GFX11-NEXT: s_waitcnt vmcnt(0)376; GFX11-NEXT: s_setpc_b64 s[30:31]377 %val = load i64, ptr addrspace(1) poison378 ret i64 %val379}380 381define i65 @i65_func_void() #0 {382; GFX789-LABEL: i65_func_void:383; GFX789: ; %bb.0:384; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)385; GFX789-NEXT: s_mov_b32 s7, 0xf000386; GFX789-NEXT: s_mov_b32 s6, -1387; GFX789-NEXT: buffer_load_dwordx2 v[0:1], off, s[4:7], 0388; GFX789-NEXT: buffer_load_ubyte v2, off, s[4:7], 0389; GFX789-NEXT: s_waitcnt vmcnt(0)390; GFX789-NEXT: s_setpc_b64 s[30:31]391;392; GFX11-LABEL: i65_func_void:393; GFX11: ; %bb.0:394; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)395; GFX11-NEXT: s_mov_b32 s3, 0x31016000396; GFX11-NEXT: s_mov_b32 s2, -1397; GFX11-NEXT: s_clause 0x1398; GFX11-NEXT: buffer_load_b64 v[0:1], off, s[0:3], 0399; GFX11-NEXT: buffer_load_u8 v2, off, s[0:3], 0400; GFX11-NEXT: s_waitcnt vmcnt(0)401; GFX11-NEXT: s_setpc_b64 s[30:31]402 %val = load i65, ptr addrspace(1) poison403 ret i65 %val404}405 406define float @f32_func_void() #0 {407; GFX789-LABEL: f32_func_void:408; GFX789: ; %bb.0:409; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)410; GFX789-NEXT: s_mov_b32 s7, 0xf000411; GFX789-NEXT: s_mov_b32 s6, -1412; GFX789-NEXT: buffer_load_dword v0, off, s[4:7], 0413; GFX789-NEXT: s_waitcnt vmcnt(0)414; GFX789-NEXT: s_setpc_b64 s[30:31]415;416; GFX11-LABEL: f32_func_void:417; GFX11: ; %bb.0:418; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)419; GFX11-NEXT: s_mov_b32 s3, 0x31016000420; GFX11-NEXT: s_mov_b32 s2, -1421; GFX11-NEXT: buffer_load_b32 v0, off, s[0:3], 0422; GFX11-NEXT: s_waitcnt vmcnt(0)423; GFX11-NEXT: s_setpc_b64 s[30:31]424 %val = load float, ptr addrspace(1) poison425 ret float %val426}427 428define double @f64_func_void() #0 {429; GFX789-LABEL: f64_func_void:430; GFX789: ; %bb.0:431; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)432; GFX789-NEXT: s_mov_b32 s7, 0xf000433; GFX789-NEXT: s_mov_b32 s6, -1434; GFX789-NEXT: buffer_load_dwordx2 v[0:1], off, s[4:7], 0435; GFX789-NEXT: s_waitcnt vmcnt(0)436; GFX789-NEXT: s_setpc_b64 s[30:31]437;438; GFX11-LABEL: f64_func_void:439; GFX11: ; %bb.0:440; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)441; GFX11-NEXT: s_mov_b32 s3, 0x31016000442; GFX11-NEXT: s_mov_b32 s2, -1443; GFX11-NEXT: buffer_load_b64 v[0:1], off, s[0:3], 0444; GFX11-NEXT: s_waitcnt vmcnt(0)445; GFX11-NEXT: s_setpc_b64 s[30:31]446 %val = load double, ptr addrspace(1) poison447 ret double %val448}449 450define <2 x double> @v2f64_func_void() #0 {451; GFX789-LABEL: v2f64_func_void:452; GFX789: ; %bb.0:453; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)454; GFX789-NEXT: s_mov_b32 s7, 0xf000455; GFX789-NEXT: s_mov_b32 s6, -1456; GFX789-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 0457; GFX789-NEXT: s_waitcnt vmcnt(0)458; GFX789-NEXT: s_setpc_b64 s[30:31]459;460; GFX11-LABEL: v2f64_func_void:461; GFX11: ; %bb.0:462; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)463; GFX11-NEXT: s_mov_b32 s3, 0x31016000464; GFX11-NEXT: s_mov_b32 s2, -1465; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 0466; GFX11-NEXT: s_waitcnt vmcnt(0)467; GFX11-NEXT: s_setpc_b64 s[30:31]468 %val = load <2 x double>, ptr addrspace(1) poison469 ret <2 x double> %val470}471 472define <2 x i32> @v2i32_func_void() #0 {473; GFX789-LABEL: v2i32_func_void:474; GFX789: ; %bb.0:475; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)476; GFX789-NEXT: s_mov_b32 s7, 0xf000477; GFX789-NEXT: s_mov_b32 s6, -1478; GFX789-NEXT: buffer_load_dwordx2 v[0:1], off, s[4:7], 0479; GFX789-NEXT: s_waitcnt vmcnt(0)480; GFX789-NEXT: s_setpc_b64 s[30:31]481;482; GFX11-LABEL: v2i32_func_void:483; GFX11: ; %bb.0:484; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)485; GFX11-NEXT: s_mov_b32 s3, 0x31016000486; GFX11-NEXT: s_mov_b32 s2, -1487; GFX11-NEXT: buffer_load_b64 v[0:1], off, s[0:3], 0488; GFX11-NEXT: s_waitcnt vmcnt(0)489; GFX11-NEXT: s_setpc_b64 s[30:31]490 %val = load <2 x i32>, ptr addrspace(1) poison491 ret <2 x i32> %val492}493 494define <3 x i32> @v3i32_func_void() #0 {495; GFX789-LABEL: v3i32_func_void:496; GFX789: ; %bb.0:497; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)498; GFX789-NEXT: s_mov_b32 s7, 0xf000499; GFX789-NEXT: s_mov_b32 s6, -1500; GFX789-NEXT: buffer_load_dwordx3 v[0:2], off, s[4:7], 0501; GFX789-NEXT: s_waitcnt vmcnt(0)502; GFX789-NEXT: s_setpc_b64 s[30:31]503;504; GFX11-LABEL: v3i32_func_void:505; GFX11: ; %bb.0:506; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)507; GFX11-NEXT: s_mov_b32 s3, 0x31016000508; GFX11-NEXT: s_mov_b32 s2, -1509; GFX11-NEXT: buffer_load_b96 v[0:2], off, s[0:3], 0510; GFX11-NEXT: s_waitcnt vmcnt(0)511; GFX11-NEXT: s_setpc_b64 s[30:31]512 %val = load <3 x i32>, ptr addrspace(1) poison513 ret <3 x i32> %val514}515 516define <4 x i32> @v4i32_func_void() #0 {517; GFX789-LABEL: v4i32_func_void:518; GFX789: ; %bb.0:519; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)520; GFX789-NEXT: s_mov_b32 s7, 0xf000521; GFX789-NEXT: s_mov_b32 s6, -1522; GFX789-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 0523; GFX789-NEXT: s_waitcnt vmcnt(0)524; GFX789-NEXT: s_setpc_b64 s[30:31]525;526; GFX11-LABEL: v4i32_func_void:527; GFX11: ; %bb.0:528; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)529; GFX11-NEXT: s_mov_b32 s3, 0x31016000530; GFX11-NEXT: s_mov_b32 s2, -1531; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 0532; GFX11-NEXT: s_waitcnt vmcnt(0)533; GFX11-NEXT: s_setpc_b64 s[30:31]534 %val = load <4 x i32>, ptr addrspace(1) poison535 ret <4 x i32> %val536}537 538define <5 x i32> @v5i32_func_void() #0 {539; GFX789-LABEL: v5i32_func_void:540; GFX789: ; %bb.0:541; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)542; GFX789-NEXT: s_mov_b32 s7, 0xf000543; GFX789-NEXT: s_mov_b32 s6, -1544; GFX789-NEXT: buffer_load_dword v4, off, s[4:7], 0 glc545; GFX789-NEXT: s_waitcnt vmcnt(0)546; GFX789-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 0 glc547; GFX789-NEXT: s_waitcnt vmcnt(0)548; GFX789-NEXT: s_setpc_b64 s[30:31]549;550; GFX11-LABEL: v5i32_func_void:551; GFX11: ; %bb.0:552; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)553; GFX11-NEXT: s_mov_b32 s3, 0x31016000554; GFX11-NEXT: s_mov_b32 s2, -1555; GFX11-NEXT: buffer_load_b32 v4, off, s[0:3], 0 glc dlc556; GFX11-NEXT: s_waitcnt vmcnt(0)557; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 0 glc dlc558; GFX11-NEXT: s_waitcnt vmcnt(0)559; GFX11-NEXT: s_setpc_b64 s[30:31]560 %val = load volatile <5 x i32>, ptr addrspace(1) poison561 ret <5 x i32> %val562}563 564define <8 x i32> @v8i32_func_void() #0 {565; GFX789-LABEL: v8i32_func_void:566; GFX789: ; %bb.0:567; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)568; GFX789-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x0569; GFX789-NEXT: s_mov_b32 s7, 0xf000570; GFX789-NEXT: s_mov_b32 s6, -1571; GFX789-NEXT: s_waitcnt lgkmcnt(0)572; GFX789-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 0573; GFX789-NEXT: buffer_load_dwordx4 v[4:7], off, s[4:7], 0 offset:16574; GFX789-NEXT: s_waitcnt vmcnt(0)575; GFX789-NEXT: s_setpc_b64 s[30:31]576;577; GFX11-LABEL: v8i32_func_void:578; GFX11: ; %bb.0:579; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)580; GFX11-NEXT: s_load_b64 s[0:1], s[0:1], 0x0581; GFX11-NEXT: s_mov_b32 s3, 0x31016000582; GFX11-NEXT: s_mov_b32 s2, -1583; GFX11-NEXT: s_waitcnt lgkmcnt(0)584; GFX11-NEXT: s_clause 0x1585; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 0586; GFX11-NEXT: buffer_load_b128 v[4:7], off, s[0:3], 0 offset:16587; GFX11-NEXT: s_waitcnt vmcnt(0)588; GFX11-NEXT: s_setpc_b64 s[30:31]589 %ptr = load volatile ptr addrspace(1), ptr addrspace(4) poison590 %val = load <8 x i32>, ptr addrspace(1) %ptr591 ret <8 x i32> %val592}593 594define <16 x i32> @v16i32_func_void() #0 {595; GFX789-LABEL: v16i32_func_void:596; GFX789: ; %bb.0:597; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)598; GFX789-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x0599; GFX789-NEXT: s_mov_b32 s7, 0xf000600; GFX789-NEXT: s_mov_b32 s6, -1601; GFX789-NEXT: s_waitcnt lgkmcnt(0)602; GFX789-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 0603; GFX789-NEXT: buffer_load_dwordx4 v[4:7], off, s[4:7], 0 offset:16604; GFX789-NEXT: buffer_load_dwordx4 v[8:11], off, s[4:7], 0 offset:32605; GFX789-NEXT: buffer_load_dwordx4 v[12:15], off, s[4:7], 0 offset:48606; GFX789-NEXT: s_waitcnt vmcnt(0)607; GFX789-NEXT: s_setpc_b64 s[30:31]608;609; GFX11-LABEL: v16i32_func_void:610; GFX11: ; %bb.0:611; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)612; GFX11-NEXT: s_load_b64 s[0:1], s[0:1], 0x0613; GFX11-NEXT: s_mov_b32 s3, 0x31016000614; GFX11-NEXT: s_mov_b32 s2, -1615; GFX11-NEXT: s_waitcnt lgkmcnt(0)616; GFX11-NEXT: s_clause 0x3617; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 0618; GFX11-NEXT: buffer_load_b128 v[4:7], off, s[0:3], 0 offset:16619; GFX11-NEXT: buffer_load_b128 v[8:11], off, s[0:3], 0 offset:32620; GFX11-NEXT: buffer_load_b128 v[12:15], off, s[0:3], 0 offset:48621; GFX11-NEXT: s_waitcnt vmcnt(0)622; GFX11-NEXT: s_setpc_b64 s[30:31]623 %ptr = load volatile ptr addrspace(1), ptr addrspace(4) poison624 %val = load <16 x i32>, ptr addrspace(1) %ptr625 ret <16 x i32> %val626}627 628define <32 x i32> @v32i32_func_void() #0 {629; GFX789-LABEL: v32i32_func_void:630; GFX789: ; %bb.0:631; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)632; GFX789-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x0633; GFX789-NEXT: s_mov_b32 s7, 0xf000634; GFX789-NEXT: s_mov_b32 s6, -1635; GFX789-NEXT: s_waitcnt lgkmcnt(0)636; GFX789-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 0637; GFX789-NEXT: buffer_load_dwordx4 v[4:7], off, s[4:7], 0 offset:16638; GFX789-NEXT: buffer_load_dwordx4 v[8:11], off, s[4:7], 0 offset:32639; GFX789-NEXT: buffer_load_dwordx4 v[12:15], off, s[4:7], 0 offset:48640; GFX789-NEXT: buffer_load_dwordx4 v[16:19], off, s[4:7], 0 offset:64641; GFX789-NEXT: buffer_load_dwordx4 v[20:23], off, s[4:7], 0 offset:80642; GFX789-NEXT: buffer_load_dwordx4 v[24:27], off, s[4:7], 0 offset:96643; GFX789-NEXT: buffer_load_dwordx4 v[28:31], off, s[4:7], 0 offset:112644; GFX789-NEXT: s_waitcnt vmcnt(0)645; GFX789-NEXT: s_setpc_b64 s[30:31]646;647; GFX11-LABEL: v32i32_func_void:648; GFX11: ; %bb.0:649; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)650; GFX11-NEXT: s_load_b64 s[0:1], s[0:1], 0x0651; GFX11-NEXT: s_mov_b32 s3, 0x31016000652; GFX11-NEXT: s_mov_b32 s2, -1653; GFX11-NEXT: s_waitcnt lgkmcnt(0)654; GFX11-NEXT: s_clause 0x7655; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 0656; GFX11-NEXT: buffer_load_b128 v[4:7], off, s[0:3], 0 offset:16657; GFX11-NEXT: buffer_load_b128 v[8:11], off, s[0:3], 0 offset:32658; GFX11-NEXT: buffer_load_b128 v[12:15], off, s[0:3], 0 offset:48659; GFX11-NEXT: buffer_load_b128 v[16:19], off, s[0:3], 0 offset:64660; GFX11-NEXT: buffer_load_b128 v[20:23], off, s[0:3], 0 offset:80661; GFX11-NEXT: buffer_load_b128 v[24:27], off, s[0:3], 0 offset:96662; GFX11-NEXT: buffer_load_b128 v[28:31], off, s[0:3], 0 offset:112663; GFX11-NEXT: s_waitcnt vmcnt(0)664; GFX11-NEXT: s_setpc_b64 s[30:31]665 %ptr = load volatile ptr addrspace(1), ptr addrspace(4) poison666 %val = load <32 x i32>, ptr addrspace(1) %ptr667 ret <32 x i32> %val668}669 670define <2 x i64> @v2i64_func_void() #0 {671; GFX789-LABEL: v2i64_func_void:672; GFX789: ; %bb.0:673; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)674; GFX789-NEXT: s_mov_b32 s7, 0xf000675; GFX789-NEXT: s_mov_b32 s6, -1676; GFX789-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 0677; GFX789-NEXT: s_waitcnt vmcnt(0)678; GFX789-NEXT: s_setpc_b64 s[30:31]679;680; GFX11-LABEL: v2i64_func_void:681; GFX11: ; %bb.0:682; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)683; GFX11-NEXT: s_mov_b32 s3, 0x31016000684; GFX11-NEXT: s_mov_b32 s2, -1685; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 0686; GFX11-NEXT: s_waitcnt vmcnt(0)687; GFX11-NEXT: s_setpc_b64 s[30:31]688 %val = load <2 x i64>, ptr addrspace(1) poison689 ret <2 x i64> %val690}691 692define <3 x i64> @v3i64_func_void() #0 {693; GFX789-LABEL: v3i64_func_void:694; GFX789: ; %bb.0:695; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)696; GFX789-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x0697; GFX789-NEXT: s_mov_b32 s7, 0xf000698; GFX789-NEXT: s_mov_b32 s6, -1699; GFX789-NEXT: s_waitcnt lgkmcnt(0)700; GFX789-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 0701; GFX789-NEXT: buffer_load_dwordx2 v[4:5], off, s[4:7], 0 offset:16702; GFX789-NEXT: s_waitcnt vmcnt(0)703; GFX789-NEXT: s_setpc_b64 s[30:31]704;705; GFX11-LABEL: v3i64_func_void:706; GFX11: ; %bb.0:707; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)708; GFX11-NEXT: s_load_b64 s[0:1], s[0:1], 0x0709; GFX11-NEXT: s_mov_b32 s3, 0x31016000710; GFX11-NEXT: s_mov_b32 s2, -1711; GFX11-NEXT: s_waitcnt lgkmcnt(0)712; GFX11-NEXT: s_clause 0x1713; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 0714; GFX11-NEXT: buffer_load_b64 v[4:5], off, s[0:3], 0 offset:16715; GFX11-NEXT: s_waitcnt vmcnt(0)716; GFX11-NEXT: s_setpc_b64 s[30:31]717 %ptr = load volatile ptr addrspace(1), ptr addrspace(4) poison718 %val = load <3 x i64>, ptr addrspace(1) %ptr719 ret <3 x i64> %val720}721 722define <4 x i64> @v4i64_func_void() #0 {723; GFX789-LABEL: v4i64_func_void:724; GFX789: ; %bb.0:725; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)726; GFX789-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x0727; GFX789-NEXT: s_mov_b32 s7, 0xf000728; GFX789-NEXT: s_mov_b32 s6, -1729; GFX789-NEXT: s_waitcnt lgkmcnt(0)730; GFX789-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 0731; GFX789-NEXT: buffer_load_dwordx4 v[4:7], off, s[4:7], 0 offset:16732; GFX789-NEXT: s_waitcnt vmcnt(0)733; GFX789-NEXT: s_setpc_b64 s[30:31]734;735; GFX11-LABEL: v4i64_func_void:736; GFX11: ; %bb.0:737; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)738; GFX11-NEXT: s_load_b64 s[0:1], s[0:1], 0x0739; GFX11-NEXT: s_mov_b32 s3, 0x31016000740; GFX11-NEXT: s_mov_b32 s2, -1741; GFX11-NEXT: s_waitcnt lgkmcnt(0)742; GFX11-NEXT: s_clause 0x1743; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 0744; GFX11-NEXT: buffer_load_b128 v[4:7], off, s[0:3], 0 offset:16745; GFX11-NEXT: s_waitcnt vmcnt(0)746; GFX11-NEXT: s_setpc_b64 s[30:31]747 %ptr = load volatile ptr addrspace(1), ptr addrspace(4) poison748 %val = load <4 x i64>, ptr addrspace(1) %ptr749 ret <4 x i64> %val750}751 752define <5 x i64> @v5i64_func_void() #0 {753; GFX789-LABEL: v5i64_func_void:754; GFX789: ; %bb.0:755; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)756; GFX789-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x0757; GFX789-NEXT: s_mov_b32 s7, 0xf000758; GFX789-NEXT: s_mov_b32 s6, -1759; GFX789-NEXT: s_waitcnt lgkmcnt(0)760; GFX789-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 0761; GFX789-NEXT: buffer_load_dwordx4 v[4:7], off, s[4:7], 0 offset:16762; GFX789-NEXT: buffer_load_dwordx2 v[8:9], off, s[4:7], 0 offset:32763; GFX789-NEXT: s_waitcnt vmcnt(0)764; GFX789-NEXT: s_setpc_b64 s[30:31]765;766; GFX11-LABEL: v5i64_func_void:767; GFX11: ; %bb.0:768; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)769; GFX11-NEXT: s_load_b64 s[0:1], s[0:1], 0x0770; GFX11-NEXT: s_mov_b32 s3, 0x31016000771; GFX11-NEXT: s_mov_b32 s2, -1772; GFX11-NEXT: s_waitcnt lgkmcnt(0)773; GFX11-NEXT: s_clause 0x2774; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 0775; GFX11-NEXT: buffer_load_b128 v[4:7], off, s[0:3], 0 offset:16776; GFX11-NEXT: buffer_load_b64 v[8:9], off, s[0:3], 0 offset:32777; GFX11-NEXT: s_waitcnt vmcnt(0)778; GFX11-NEXT: s_setpc_b64 s[30:31]779 %ptr = load volatile ptr addrspace(1), ptr addrspace(4) poison780 %val = load <5 x i64>, ptr addrspace(1) %ptr781 ret <5 x i64> %val782}783 784define <8 x i64> @v8i64_func_void() #0 {785; GFX789-LABEL: v8i64_func_void:786; GFX789: ; %bb.0:787; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)788; GFX789-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x0789; GFX789-NEXT: s_mov_b32 s7, 0xf000790; GFX789-NEXT: s_mov_b32 s6, -1791; GFX789-NEXT: s_waitcnt lgkmcnt(0)792; GFX789-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 0793; GFX789-NEXT: buffer_load_dwordx4 v[4:7], off, s[4:7], 0 offset:16794; GFX789-NEXT: buffer_load_dwordx4 v[8:11], off, s[4:7], 0 offset:32795; GFX789-NEXT: buffer_load_dwordx4 v[12:15], off, s[4:7], 0 offset:48796; GFX789-NEXT: s_waitcnt vmcnt(0)797; GFX789-NEXT: s_setpc_b64 s[30:31]798;799; GFX11-LABEL: v8i64_func_void:800; GFX11: ; %bb.0:801; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)802; GFX11-NEXT: s_load_b64 s[0:1], s[0:1], 0x0803; GFX11-NEXT: s_mov_b32 s3, 0x31016000804; GFX11-NEXT: s_mov_b32 s2, -1805; GFX11-NEXT: s_waitcnt lgkmcnt(0)806; GFX11-NEXT: s_clause 0x3807; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 0808; GFX11-NEXT: buffer_load_b128 v[4:7], off, s[0:3], 0 offset:16809; GFX11-NEXT: buffer_load_b128 v[8:11], off, s[0:3], 0 offset:32810; GFX11-NEXT: buffer_load_b128 v[12:15], off, s[0:3], 0 offset:48811; GFX11-NEXT: s_waitcnt vmcnt(0)812; GFX11-NEXT: s_setpc_b64 s[30:31]813 %ptr = load volatile ptr addrspace(1), ptr addrspace(4) poison814 %val = load <8 x i64>, ptr addrspace(1) %ptr815 ret <8 x i64> %val816}817 818define <16 x i64> @v16i64_func_void() #0 {819; GFX789-LABEL: v16i64_func_void:820; GFX789: ; %bb.0:821; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)822; GFX789-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x0823; GFX789-NEXT: s_mov_b32 s7, 0xf000824; GFX789-NEXT: s_mov_b32 s6, -1825; GFX789-NEXT: s_waitcnt lgkmcnt(0)826; GFX789-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 0827; GFX789-NEXT: buffer_load_dwordx4 v[4:7], off, s[4:7], 0 offset:16828; GFX789-NEXT: buffer_load_dwordx4 v[8:11], off, s[4:7], 0 offset:32829; GFX789-NEXT: buffer_load_dwordx4 v[12:15], off, s[4:7], 0 offset:48830; GFX789-NEXT: buffer_load_dwordx4 v[16:19], off, s[4:7], 0 offset:64831; GFX789-NEXT: buffer_load_dwordx4 v[20:23], off, s[4:7], 0 offset:80832; GFX789-NEXT: buffer_load_dwordx4 v[24:27], off, s[4:7], 0 offset:96833; GFX789-NEXT: buffer_load_dwordx4 v[28:31], off, s[4:7], 0 offset:112834; GFX789-NEXT: s_waitcnt vmcnt(0)835; GFX789-NEXT: s_setpc_b64 s[30:31]836;837; GFX11-LABEL: v16i64_func_void:838; GFX11: ; %bb.0:839; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)840; GFX11-NEXT: s_load_b64 s[0:1], s[0:1], 0x0841; GFX11-NEXT: s_mov_b32 s3, 0x31016000842; GFX11-NEXT: s_mov_b32 s2, -1843; GFX11-NEXT: s_waitcnt lgkmcnt(0)844; GFX11-NEXT: s_clause 0x7845; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 0846; GFX11-NEXT: buffer_load_b128 v[4:7], off, s[0:3], 0 offset:16847; GFX11-NEXT: buffer_load_b128 v[8:11], off, s[0:3], 0 offset:32848; GFX11-NEXT: buffer_load_b128 v[12:15], off, s[0:3], 0 offset:48849; GFX11-NEXT: buffer_load_b128 v[16:19], off, s[0:3], 0 offset:64850; GFX11-NEXT: buffer_load_b128 v[20:23], off, s[0:3], 0 offset:80851; GFX11-NEXT: buffer_load_b128 v[24:27], off, s[0:3], 0 offset:96852; GFX11-NEXT: buffer_load_b128 v[28:31], off, s[0:3], 0 offset:112853; GFX11-NEXT: s_waitcnt vmcnt(0)854; GFX11-NEXT: s_setpc_b64 s[30:31]855 %ptr = load volatile ptr addrspace(1), ptr addrspace(4) poison856 %val = load <16 x i64>, ptr addrspace(1) %ptr857 ret <16 x i64> %val858}859 860define <2 x i16> @v2i16_func_void() #0 {861; CI-LABEL: v2i16_func_void:862; CI: ; %bb.0:863; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)864; CI-NEXT: s_mov_b32 s7, 0xf000865; CI-NEXT: s_mov_b32 s6, -1866; CI-NEXT: buffer_load_dword v0, off, s[4:7], 0867; CI-NEXT: s_waitcnt vmcnt(0)868; CI-NEXT: v_lshrrev_b32_e32 v1, 16, v0869; CI-NEXT: s_setpc_b64 s[30:31]870;871; GFX89-LABEL: v2i16_func_void:872; GFX89: ; %bb.0:873; GFX89-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)874; GFX89-NEXT: s_mov_b32 s7, 0xf000875; GFX89-NEXT: s_mov_b32 s6, -1876; GFX89-NEXT: buffer_load_dword v0, off, s[4:7], 0877; GFX89-NEXT: s_waitcnt vmcnt(0)878; GFX89-NEXT: s_setpc_b64 s[30:31]879;880; GFX11-LABEL: v2i16_func_void:881; GFX11: ; %bb.0:882; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)883; GFX11-NEXT: s_mov_b32 s3, 0x31016000884; GFX11-NEXT: s_mov_b32 s2, -1885; GFX11-NEXT: buffer_load_b32 v0, off, s[0:3], 0886; GFX11-NEXT: s_waitcnt vmcnt(0)887; GFX11-NEXT: s_setpc_b64 s[30:31]888 %val = load <2 x i16>, ptr addrspace(1) poison889 ret <2 x i16> %val890}891 892define <3 x i16> @v3i16_func_void() #0 {893; CI-LABEL: v3i16_func_void:894; CI: ; %bb.0:895; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)896; CI-NEXT: s_mov_b32 s7, 0xf000897; CI-NEXT: s_mov_b32 s6, -1898; CI-NEXT: buffer_load_dwordx2 v[3:4], off, s[4:7], 0899; CI-NEXT: s_waitcnt vmcnt(0)900; CI-NEXT: v_lshr_b64 v[1:2], v[3:4], 16901; CI-NEXT: v_mov_b32_e32 v0, v3902; CI-NEXT: v_mov_b32_e32 v2, v4903; CI-NEXT: s_setpc_b64 s[30:31]904;905; GFX89-LABEL: v3i16_func_void:906; GFX89: ; %bb.0:907; GFX89-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)908; GFX89-NEXT: s_mov_b32 s7, 0xf000909; GFX89-NEXT: s_mov_b32 s6, -1910; GFX89-NEXT: buffer_load_dwordx2 v[0:1], off, s[4:7], 0911; GFX89-NEXT: s_waitcnt vmcnt(0)912; GFX89-NEXT: s_setpc_b64 s[30:31]913;914; GFX11-LABEL: v3i16_func_void:915; GFX11: ; %bb.0:916; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)917; GFX11-NEXT: s_mov_b32 s3, 0x31016000918; GFX11-NEXT: s_mov_b32 s2, -1919; GFX11-NEXT: buffer_load_b64 v[0:1], off, s[0:3], 0920; GFX11-NEXT: s_waitcnt vmcnt(0)921; GFX11-NEXT: s_setpc_b64 s[30:31]922 %val = load <3 x i16>, ptr addrspace(1) poison923 ret <3 x i16> %val924}925 926define <4 x i16> @v4i16_func_void() #0 {927; CI-LABEL: v4i16_func_void:928; CI: ; %bb.0:929; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)930; CI-NEXT: s_mov_b32 s7, 0xf000931; CI-NEXT: s_mov_b32 s6, -1932; CI-NEXT: buffer_load_dwordx2 v[0:1], off, s[4:7], 0933; CI-NEXT: s_waitcnt vmcnt(0)934; CI-NEXT: v_lshrrev_b32_e32 v4, 16, v0935; CI-NEXT: v_lshrrev_b32_e32 v3, 16, v1936; CI-NEXT: v_mov_b32_e32 v2, v1937; CI-NEXT: v_mov_b32_e32 v1, v4938; CI-NEXT: s_setpc_b64 s[30:31]939;940; GFX89-LABEL: v4i16_func_void:941; GFX89: ; %bb.0:942; GFX89-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)943; GFX89-NEXT: s_mov_b32 s7, 0xf000944; GFX89-NEXT: s_mov_b32 s6, -1945; GFX89-NEXT: buffer_load_dwordx2 v[0:1], off, s[4:7], 0946; GFX89-NEXT: s_waitcnt vmcnt(0)947; GFX89-NEXT: s_setpc_b64 s[30:31]948;949; GFX11-LABEL: v4i16_func_void:950; GFX11: ; %bb.0:951; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)952; GFX11-NEXT: s_mov_b32 s3, 0x31016000953; GFX11-NEXT: s_mov_b32 s2, -1954; GFX11-NEXT: buffer_load_b64 v[0:1], off, s[0:3], 0955; GFX11-NEXT: s_waitcnt vmcnt(0)956; GFX11-NEXT: s_setpc_b64 s[30:31]957 %val = load <4 x i16>, ptr addrspace(1) poison958 ret <4 x i16> %val959}960 961define <4 x half> @v4f16_func_void() #0 {962; CI-LABEL: v4f16_func_void:963; CI: ; %bb.0:964; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)965; CI-NEXT: s_mov_b32 s7, 0xf000966; CI-NEXT: s_mov_b32 s6, -1967; CI-NEXT: buffer_load_dwordx2 v[3:4], off, s[4:7], 0968; CI-NEXT: s_waitcnt vmcnt(0)969; CI-NEXT: v_cvt_f32_f16_e32 v0, v3970; CI-NEXT: v_lshrrev_b32_e32 v1, 16, v3971; CI-NEXT: v_lshrrev_b32_e32 v3, 16, v4972; CI-NEXT: v_cvt_f32_f16_e32 v2, v4973; CI-NEXT: v_cvt_f32_f16_e32 v1, v1974; CI-NEXT: v_cvt_f32_f16_e32 v3, v3975; CI-NEXT: s_setpc_b64 s[30:31]976;977; GFX89-LABEL: v4f16_func_void:978; GFX89: ; %bb.0:979; GFX89-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)980; GFX89-NEXT: s_mov_b32 s7, 0xf000981; GFX89-NEXT: s_mov_b32 s6, -1982; GFX89-NEXT: buffer_load_dwordx2 v[0:1], off, s[4:7], 0983; GFX89-NEXT: s_waitcnt vmcnt(0)984; GFX89-NEXT: s_setpc_b64 s[30:31]985;986; GFX11-LABEL: v4f16_func_void:987; GFX11: ; %bb.0:988; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)989; GFX11-NEXT: s_mov_b32 s3, 0x31016000990; GFX11-NEXT: s_mov_b32 s2, -1991; GFX11-NEXT: buffer_load_b64 v[0:1], off, s[0:3], 0992; GFX11-NEXT: s_waitcnt vmcnt(0)993; GFX11-NEXT: s_setpc_b64 s[30:31]994 %val = load <4 x half>, ptr addrspace(1) poison995 ret <4 x half> %val996}997 998; FIXME: Mixing buffer and global999; FIXME: Should not scalarize1000define <5 x i16> @v5i16_func_void() #0 {1001; CI-LABEL: v5i16_func_void:1002; CI: ; %bb.0:1003; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1004; CI-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x01005; CI-NEXT: s_mov_b32 s7, 0xf0001006; CI-NEXT: s_mov_b32 s6, -11007; CI-NEXT: s_waitcnt lgkmcnt(0)1008; CI-NEXT: buffer_load_dwordx2 v[0:1], off, s[4:7], 01009; CI-NEXT: buffer_load_sshort v4, off, s[4:7], 0 offset:81010; CI-NEXT: s_waitcnt vmcnt(1)1011; CI-NEXT: v_lshr_b64 v[5:6], v[0:1], 161012; CI-NEXT: v_lshrrev_b32_e32 v3, 16, v11013; CI-NEXT: v_mov_b32_e32 v2, v11014; CI-NEXT: v_mov_b32_e32 v1, v51015; CI-NEXT: s_waitcnt vmcnt(0)1016; CI-NEXT: s_setpc_b64 s[30:31]1017;1018; GFX89-LABEL: v5i16_func_void:1019; GFX89: ; %bb.0:1020; GFX89-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1021; GFX89-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x01022; GFX89-NEXT: s_mov_b32 s7, 0xf0001023; GFX89-NEXT: s_mov_b32 s6, -11024; GFX89-NEXT: s_waitcnt lgkmcnt(0)1025; GFX89-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 01026; GFX89-NEXT: s_waitcnt vmcnt(0)1027; GFX89-NEXT: s_setpc_b64 s[30:31]1028;1029; GFX11-LABEL: v5i16_func_void:1030; GFX11: ; %bb.0:1031; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1032; GFX11-NEXT: s_load_b64 s[0:1], s[0:1], 0x01033; GFX11-NEXT: s_mov_b32 s3, 0x310160001034; GFX11-NEXT: s_mov_b32 s2, -11035; GFX11-NEXT: s_waitcnt lgkmcnt(0)1036; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 01037; GFX11-NEXT: s_waitcnt vmcnt(0)1038; GFX11-NEXT: s_setpc_b64 s[30:31]1039 %ptr = load volatile ptr addrspace(1), ptr addrspace(4) poison1040 %val = load <5 x i16>, ptr addrspace(1) %ptr1041 ret <5 x i16> %val1042}1043 1044define <8 x i16> @v8i16_func_void() #0 {1045; CI-LABEL: v8i16_func_void:1046; CI: ; %bb.0:1047; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1048; CI-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x01049; CI-NEXT: s_mov_b32 s7, 0xf0001050; CI-NEXT: s_mov_b32 s6, -11051; CI-NEXT: s_waitcnt lgkmcnt(0)1052; CI-NEXT: buffer_load_dwordx4 v[8:11], off, s[4:7], 01053; CI-NEXT: s_waitcnt vmcnt(0)1054; CI-NEXT: v_lshrrev_b32_e32 v1, 16, v81055; CI-NEXT: v_lshrrev_b32_e32 v3, 16, v91056; CI-NEXT: v_lshrrev_b32_e32 v5, 16, v101057; CI-NEXT: v_lshrrev_b32_e32 v7, 16, v111058; CI-NEXT: v_mov_b32_e32 v0, v81059; CI-NEXT: v_mov_b32_e32 v2, v91060; CI-NEXT: v_mov_b32_e32 v4, v101061; CI-NEXT: v_mov_b32_e32 v6, v111062; CI-NEXT: s_setpc_b64 s[30:31]1063;1064; GFX89-LABEL: v8i16_func_void:1065; GFX89: ; %bb.0:1066; GFX89-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1067; GFX89-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x01068; GFX89-NEXT: s_mov_b32 s7, 0xf0001069; GFX89-NEXT: s_mov_b32 s6, -11070; GFX89-NEXT: s_waitcnt lgkmcnt(0)1071; GFX89-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 01072; GFX89-NEXT: s_waitcnt vmcnt(0)1073; GFX89-NEXT: s_setpc_b64 s[30:31]1074;1075; GFX11-LABEL: v8i16_func_void:1076; GFX11: ; %bb.0:1077; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1078; GFX11-NEXT: s_load_b64 s[0:1], s[0:1], 0x01079; GFX11-NEXT: s_mov_b32 s3, 0x310160001080; GFX11-NEXT: s_mov_b32 s2, -11081; GFX11-NEXT: s_waitcnt lgkmcnt(0)1082; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 01083; GFX11-NEXT: s_waitcnt vmcnt(0)1084; GFX11-NEXT: s_setpc_b64 s[30:31]1085 %ptr = load volatile ptr addrspace(1), ptr addrspace(4) poison1086 %val = load <8 x i16>, ptr addrspace(1) %ptr1087 ret <8 x i16> %val1088}1089 1090define <16 x i16> @v16i16_func_void() #0 {1091; CI-LABEL: v16i16_func_void:1092; CI: ; %bb.0:1093; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1094; CI-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x01095; CI-NEXT: s_mov_b32 s7, 0xf0001096; CI-NEXT: s_mov_b32 s6, -11097; CI-NEXT: s_waitcnt lgkmcnt(0)1098; CI-NEXT: buffer_load_dwordx4 v[22:25], off, s[4:7], 01099; CI-NEXT: buffer_load_dwordx4 v[18:21], off, s[4:7], 0 offset:161100; CI-NEXT: s_waitcnt vmcnt(1)1101; CI-NEXT: v_lshrrev_b32_e32 v1, 16, v221102; CI-NEXT: v_lshrrev_b32_e32 v3, 16, v231103; CI-NEXT: v_lshrrev_b32_e32 v5, 16, v241104; CI-NEXT: v_lshrrev_b32_e32 v7, 16, v251105; CI-NEXT: s_waitcnt vmcnt(0)1106; CI-NEXT: v_lshrrev_b32_e32 v9, 16, v181107; CI-NEXT: v_lshrrev_b32_e32 v11, 16, v191108; CI-NEXT: v_lshrrev_b32_e32 v13, 16, v201109; CI-NEXT: v_lshrrev_b32_e32 v15, 16, v211110; CI-NEXT: v_mov_b32_e32 v0, v221111; CI-NEXT: v_mov_b32_e32 v2, v231112; CI-NEXT: v_mov_b32_e32 v4, v241113; CI-NEXT: v_mov_b32_e32 v6, v251114; CI-NEXT: v_mov_b32_e32 v8, v181115; CI-NEXT: v_mov_b32_e32 v10, v191116; CI-NEXT: v_mov_b32_e32 v12, v201117; CI-NEXT: v_mov_b32_e32 v14, v211118; CI-NEXT: s_setpc_b64 s[30:31]1119;1120; GFX89-LABEL: v16i16_func_void:1121; GFX89: ; %bb.0:1122; GFX89-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1123; GFX89-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x01124; GFX89-NEXT: s_mov_b32 s7, 0xf0001125; GFX89-NEXT: s_mov_b32 s6, -11126; GFX89-NEXT: s_waitcnt lgkmcnt(0)1127; GFX89-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 01128; GFX89-NEXT: buffer_load_dwordx4 v[4:7], off, s[4:7], 0 offset:161129; GFX89-NEXT: s_waitcnt vmcnt(0)1130; GFX89-NEXT: s_setpc_b64 s[30:31]1131;1132; GFX11-LABEL: v16i16_func_void:1133; GFX11: ; %bb.0:1134; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1135; GFX11-NEXT: s_load_b64 s[0:1], s[0:1], 0x01136; GFX11-NEXT: s_mov_b32 s3, 0x310160001137; GFX11-NEXT: s_mov_b32 s2, -11138; GFX11-NEXT: s_waitcnt lgkmcnt(0)1139; GFX11-NEXT: s_clause 0x11140; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 01141; GFX11-NEXT: buffer_load_b128 v[4:7], off, s[0:3], 0 offset:161142; GFX11-NEXT: s_waitcnt vmcnt(0)1143; GFX11-NEXT: s_setpc_b64 s[30:31]1144 %ptr = load volatile ptr addrspace(1), ptr addrspace(4) poison1145 %val = load <16 x i16>, ptr addrspace(1) %ptr1146 ret <16 x i16> %val1147}1148 1149; FIXME: Should pack1150define <16 x i8> @v16i8_func_void() #0 {1151; GFX789-LABEL: v16i8_func_void:1152; GFX789: ; %bb.0:1153; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1154; GFX789-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x01155; GFX789-NEXT: s_mov_b32 s7, 0xf0001156; GFX789-NEXT: s_mov_b32 s6, -11157; GFX789-NEXT: s_waitcnt lgkmcnt(0)1158; GFX789-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 01159; GFX789-NEXT: s_waitcnt vmcnt(0)1160; GFX789-NEXT: v_lshrrev_b32_e32 v16, 8, v01161; GFX789-NEXT: v_lshrrev_b32_e32 v17, 16, v01162; GFX789-NEXT: v_lshrrev_b32_e32 v18, 24, v01163; GFX789-NEXT: v_lshrrev_b32_e32 v5, 8, v11164; GFX789-NEXT: v_lshrrev_b32_e32 v6, 16, v11165; GFX789-NEXT: v_lshrrev_b32_e32 v7, 24, v11166; GFX789-NEXT: v_lshrrev_b32_e32 v9, 8, v21167; GFX789-NEXT: v_lshrrev_b32_e32 v10, 16, v21168; GFX789-NEXT: v_lshrrev_b32_e32 v11, 24, v21169; GFX789-NEXT: v_lshrrev_b32_e32 v13, 8, v31170; GFX789-NEXT: v_lshrrev_b32_e32 v14, 16, v31171; GFX789-NEXT: v_lshrrev_b32_e32 v15, 24, v31172; GFX789-NEXT: v_mov_b32_e32 v4, v11173; GFX789-NEXT: v_mov_b32_e32 v8, v21174; GFX789-NEXT: v_mov_b32_e32 v12, v31175; GFX789-NEXT: v_mov_b32_e32 v1, v161176; GFX789-NEXT: v_mov_b32_e32 v2, v171177; GFX789-NEXT: v_mov_b32_e32 v3, v181178; GFX789-NEXT: s_setpc_b64 s[30:31]1179;1180; GFX11-LABEL: v16i8_func_void:1181; GFX11: ; %bb.0:1182; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1183; GFX11-NEXT: s_load_b64 s[0:1], s[0:1], 0x01184; GFX11-NEXT: s_mov_b32 s3, 0x310160001185; GFX11-NEXT: s_mov_b32 s2, -11186; GFX11-NEXT: s_waitcnt lgkmcnt(0)1187; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 01188; GFX11-NEXT: s_waitcnt vmcnt(0)1189; GFX11-NEXT: v_lshrrev_b32_e32 v16, 8, v01190; GFX11-NEXT: v_lshrrev_b32_e32 v17, 16, v01191; GFX11-NEXT: v_lshrrev_b32_e32 v18, 24, v01192; GFX11-NEXT: v_lshrrev_b32_e32 v5, 8, v11193; GFX11-NEXT: v_lshrrev_b32_e32 v6, 16, v11194; GFX11-NEXT: v_lshrrev_b32_e32 v7, 24, v11195; GFX11-NEXT: v_lshrrev_b32_e32 v9, 8, v21196; GFX11-NEXT: v_lshrrev_b32_e32 v10, 16, v21197; GFX11-NEXT: v_lshrrev_b32_e32 v11, 24, v21198; GFX11-NEXT: v_lshrrev_b32_e32 v13, 8, v31199; GFX11-NEXT: v_lshrrev_b32_e32 v14, 16, v31200; GFX11-NEXT: v_lshrrev_b32_e32 v15, 24, v31201; GFX11-NEXT: v_dual_mov_b32 v4, v1 :: v_dual_mov_b32 v1, v161202; GFX11-NEXT: v_mov_b32_e32 v8, v21203; GFX11-NEXT: v_dual_mov_b32 v12, v3 :: v_dual_mov_b32 v3, v181204; GFX11-NEXT: v_mov_b32_e32 v2, v171205; GFX11-NEXT: s_setpc_b64 s[30:31]1206 %ptr = load volatile ptr addrspace(1), ptr addrspace(4) poison1207 %val = load <16 x i8>, ptr addrspace(1) %ptr1208 ret <16 x i8> %val1209}1210 1211; FIXME: Should pack1212define <4 x i8> @v4i8_func_void() #0 {1213; GFX789-LABEL: v4i8_func_void:1214; GFX789: ; %bb.0:1215; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1216; GFX789-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x01217; GFX789-NEXT: s_mov_b32 s7, 0xf0001218; GFX789-NEXT: s_mov_b32 s6, -11219; GFX789-NEXT: s_waitcnt lgkmcnt(0)1220; GFX789-NEXT: buffer_load_dword v0, off, s[4:7], 01221; GFX789-NEXT: s_waitcnt vmcnt(0)1222; GFX789-NEXT: v_lshrrev_b32_e32 v2, 16, v01223; GFX789-NEXT: v_lshrrev_b32_e32 v1, 8, v01224; GFX789-NEXT: v_lshrrev_b32_e32 v3, 24, v01225; GFX789-NEXT: s_setpc_b64 s[30:31]1226;1227; GFX11-LABEL: v4i8_func_void:1228; GFX11: ; %bb.0:1229; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1230; GFX11-NEXT: s_load_b64 s[0:1], s[0:1], 0x01231; GFX11-NEXT: s_mov_b32 s3, 0x310160001232; GFX11-NEXT: s_mov_b32 s2, -11233; GFX11-NEXT: s_waitcnt lgkmcnt(0)1234; GFX11-NEXT: buffer_load_b32 v0, off, s[0:3], 01235; GFX11-NEXT: s_waitcnt vmcnt(0)1236; GFX11-NEXT: v_lshrrev_b32_e32 v1, 8, v01237; GFX11-NEXT: v_lshrrev_b32_e32 v2, 16, v01238; GFX11-NEXT: v_lshrrev_b32_e32 v3, 24, v01239; GFX11-NEXT: s_setpc_b64 s[30:31]1240 %ptr = load volatile ptr addrspace(1), ptr addrspace(4) poison1241 %val = load <4 x i8>, ptr addrspace(1) %ptr1242 ret <4 x i8> %val1243}1244 1245define {i8, i32} @struct_i8_i32_func_void() #0 {1246; GFX789-LABEL: struct_i8_i32_func_void:1247; GFX789: ; %bb.0:1248; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1249; GFX789-NEXT: s_mov_b32 s7, 0xf0001250; GFX789-NEXT: s_mov_b32 s6, -11251; GFX789-NEXT: buffer_load_ubyte v0, off, s[4:7], 01252; GFX789-NEXT: buffer_load_dword v1, off, s[4:7], 01253; GFX789-NEXT: s_waitcnt vmcnt(0)1254; GFX789-NEXT: s_setpc_b64 s[30:31]1255;1256; GFX11-LABEL: struct_i8_i32_func_void:1257; GFX11: ; %bb.0:1258; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1259; GFX11-NEXT: s_mov_b32 s3, 0x310160001260; GFX11-NEXT: s_mov_b32 s2, -11261; GFX11-NEXT: s_clause 0x11262; GFX11-NEXT: buffer_load_u8 v0, off, s[0:3], 01263; GFX11-NEXT: buffer_load_b32 v1, off, s[0:3], 01264; GFX11-NEXT: s_waitcnt vmcnt(0)1265; GFX11-NEXT: s_setpc_b64 s[30:31]1266 %val = load { i8, i32 }, ptr addrspace(1) poison1267 ret { i8, i32 } %val1268}1269 1270define void @void_func_sret_struct_i8_i32(ptr addrspace(5) sret({ i8, i32 }) %arg0) #0 {1271; GFX789-LABEL: void_func_sret_struct_i8_i32:1272; GFX789: ; %bb.0:1273; GFX789-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1274; GFX789-NEXT: s_mov_b32 s7, 0xf0001275; GFX789-NEXT: s_mov_b32 s6, -11276; GFX789-NEXT: buffer_load_ubyte v1, off, s[4:7], 0 glc1277; GFX789-NEXT: s_waitcnt vmcnt(0)1278; GFX789-NEXT: buffer_load_dword v2, off, s[4:7], 0 glc1279; GFX789-NEXT: s_waitcnt vmcnt(0)1280; GFX789-NEXT: buffer_store_byte v1, v0, s[0:3], 0 offen1281; GFX789-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:41282; GFX789-NEXT: s_waitcnt vmcnt(0)1283; GFX789-NEXT: s_setpc_b64 s[30:31]1284;1285; GFX11-LABEL: void_func_sret_struct_i8_i32:1286; GFX11: ; %bb.0:1287; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1288; GFX11-NEXT: s_mov_b32 s3, 0x310160001289; GFX11-NEXT: s_mov_b32 s2, -11290; GFX11-NEXT: buffer_load_u8 v1, off, s[0:3], 0 glc dlc1291; GFX11-NEXT: s_waitcnt vmcnt(0)1292; GFX11-NEXT: buffer_load_b32 v2, off, s[0:3], 0 glc dlc1293; GFX11-NEXT: s_waitcnt vmcnt(0)1294; GFX11-NEXT: s_clause 0x11295; GFX11-NEXT: scratch_store_b8 v0, v1, off1296; GFX11-NEXT: scratch_store_b32 v0, v2, off offset:41297; GFX11-NEXT: s_setpc_b64 s[30:31]1298 %val0 = load volatile i8, ptr addrspace(1) poison1299 %val1 = load volatile i32, ptr addrspace(1) poison1300 %gep0 = getelementptr inbounds { i8, i32 }, ptr addrspace(5) %arg0, i32 0, i32 01301 %gep1 = getelementptr inbounds { i8, i32 }, ptr addrspace(5) %arg0, i32 0, i32 11302 store i8 %val0, ptr addrspace(5) %gep01303 store i32 %val1, ptr addrspace(5) %gep11304 ret void1305}1306 1307; FIXME: Should be able to fold offsets in all of these pre-gfx9. Call1308; lowering introduces an extra CopyToReg/CopyFromReg obscuring the1309; AssertZext inserted. Not using it introduces the spills.1310define <33 x i32> @v33i32_func_void() #0 {1311; CI-LABEL: v33i32_func_void:1312; CI: ; %bb.0:1313; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1314; CI-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x01315; CI-NEXT: s_mov_b32 s7, 0xf0001316; CI-NEXT: s_mov_b32 s6, -11317; CI-NEXT: v_add_i32_e32 v34, vcc, 0x80, v01318; CI-NEXT: s_waitcnt lgkmcnt(0)1319; CI-NEXT: buffer_load_dword v33, off, s[4:7], 0 offset:1281320; CI-NEXT: buffer_load_dwordx4 v[1:4], off, s[4:7], 0 offset:1121321; CI-NEXT: buffer_load_dwordx4 v[5:8], off, s[4:7], 0 offset:961322; CI-NEXT: buffer_load_dwordx4 v[9:12], off, s[4:7], 0 offset:801323; CI-NEXT: buffer_load_dwordx4 v[13:16], off, s[4:7], 0 offset:641324; CI-NEXT: buffer_load_dwordx4 v[17:20], off, s[4:7], 0 offset:481325; CI-NEXT: buffer_load_dwordx4 v[21:24], off, s[4:7], 0 offset:321326; CI-NEXT: buffer_load_dwordx4 v[25:28], off, s[4:7], 0 offset:161327; CI-NEXT: buffer_load_dwordx4 v[29:32], off, s[4:7], 01328; CI-NEXT: s_waitcnt vmcnt(8)1329; CI-NEXT: buffer_store_dword v33, v34, s[0:3], 0 offen1330; CI-NEXT: v_add_i32_e32 v33, vcc, 0x7c, v01331; CI-NEXT: s_waitcnt vmcnt(8)1332; CI-NEXT: buffer_store_dword v4, v33, s[0:3], 0 offen1333; CI-NEXT: v_add_i32_e32 v4, vcc, 0x78, v01334; CI-NEXT: buffer_store_dword v3, v4, s[0:3], 0 offen1335; CI-NEXT: v_add_i32_e32 v3, vcc, 0x74, v01336; CI-NEXT: buffer_store_dword v2, v3, s[0:3], 0 offen1337; CI-NEXT: v_add_i32_e32 v2, vcc, 0x70, v01338; CI-NEXT: buffer_store_dword v1, v2, s[0:3], 0 offen1339; CI-NEXT: v_add_i32_e32 v1, vcc, 0x6c, v01340; CI-NEXT: v_add_i32_e32 v2, vcc, 0x68, v01341; CI-NEXT: v_add_i32_e32 v3, vcc, 0x64, v01342; CI-NEXT: s_waitcnt vmcnt(11)1343; CI-NEXT: buffer_store_dword v8, v1, s[0:3], 0 offen1344; CI-NEXT: v_add_i32_e32 v1, vcc, 0x60, v01345; CI-NEXT: buffer_store_dword v7, v2, s[0:3], 0 offen1346; CI-NEXT: v_add_i32_e32 v2, vcc, 0x5c, v01347; CI-NEXT: buffer_store_dword v6, v3, s[0:3], 0 offen1348; CI-NEXT: v_add_i32_e32 v3, vcc, 0x58, v01349; CI-NEXT: buffer_store_dword v5, v1, s[0:3], 0 offen1350; CI-NEXT: v_add_i32_e32 v1, vcc, 0x54, v01351; CI-NEXT: v_add_i32_e32 v4, vcc, 0x50, v01352; CI-NEXT: v_add_i32_e32 v5, vcc, 0x4c, v01353; CI-NEXT: s_waitcnt vmcnt(14)1354; CI-NEXT: buffer_store_dword v12, v2, s[0:3], 0 offen1355; CI-NEXT: buffer_store_dword v11, v3, s[0:3], 0 offen1356; CI-NEXT: buffer_store_dword v10, v1, s[0:3], 0 offen1357; CI-NEXT: v_add_i32_e32 v1, vcc, 56, v01358; CI-NEXT: v_add_i32_e32 v6, vcc, 0x48, v01359; CI-NEXT: v_add_i32_e32 v7, vcc, 0x44, v01360; CI-NEXT: v_add_i32_e32 v2, vcc, 64, v01361; CI-NEXT: v_add_i32_e32 v3, vcc, 60, v01362; CI-NEXT: buffer_store_dword v9, v4, s[0:3], 0 offen1363; CI-NEXT: v_add_i32_e32 v4, vcc, 52, v01364; CI-NEXT: v_add_i32_e32 v8, vcc, 48, v01365; CI-NEXT: v_add_i32_e32 v9, vcc, 44, v01366; CI-NEXT: v_add_i32_e32 v10, vcc, 40, v01367; CI-NEXT: v_add_i32_e32 v11, vcc, 36, v01368; CI-NEXT: s_waitcnt vmcnt(14)1369; CI-NEXT: buffer_store_dword v16, v5, s[0:3], 0 offen1370; CI-NEXT: buffer_store_dword v15, v6, s[0:3], 0 offen1371; CI-NEXT: buffer_store_dword v14, v7, s[0:3], 0 offen1372; CI-NEXT: buffer_store_dword v13, v2, s[0:3], 0 offen1373; CI-NEXT: buffer_store_dword v20, v3, s[0:3], 0 offen1374; CI-NEXT: buffer_store_dword v19, v1, s[0:3], 0 offen1375; CI-NEXT: buffer_store_dword v18, v4, s[0:3], 0 offen1376; CI-NEXT: buffer_store_dword v17, v8, s[0:3], 0 offen1377; CI-NEXT: buffer_store_dword v24, v9, s[0:3], 0 offen1378; CI-NEXT: buffer_store_dword v23, v10, s[0:3], 0 offen1379; CI-NEXT: buffer_store_dword v22, v11, s[0:3], 0 offen1380; CI-NEXT: v_add_i32_e32 v1, vcc, 32, v01381; CI-NEXT: buffer_store_dword v21, v1, s[0:3], 0 offen1382; CI-NEXT: v_add_i32_e32 v1, vcc, 28, v01383; CI-NEXT: buffer_store_dword v28, v1, s[0:3], 0 offen1384; CI-NEXT: v_add_i32_e32 v1, vcc, 24, v01385; CI-NEXT: buffer_store_dword v27, v1, s[0:3], 0 offen1386; CI-NEXT: v_add_i32_e32 v1, vcc, 20, v01387; CI-NEXT: buffer_store_dword v26, v1, s[0:3], 0 offen1388; CI-NEXT: v_add_i32_e32 v1, vcc, 16, v01389; CI-NEXT: buffer_store_dword v25, v1, s[0:3], 0 offen1390; CI-NEXT: v_add_i32_e32 v1, vcc, 12, v01391; CI-NEXT: s_waitcnt vmcnt(14)1392; CI-NEXT: buffer_store_dword v32, v1, s[0:3], 0 offen1393; CI-NEXT: v_add_i32_e32 v1, vcc, 8, v01394; CI-NEXT: buffer_store_dword v31, v1, s[0:3], 0 offen1395; CI-NEXT: v_add_i32_e32 v1, vcc, 4, v01396; CI-NEXT: buffer_store_dword v30, v1, s[0:3], 0 offen1397; CI-NEXT: buffer_store_dword v29, v0, s[0:3], 0 offen1398; CI-NEXT: s_waitcnt vmcnt(0)1399; CI-NEXT: s_setpc_b64 s[30:31]1400;1401; GFX8-LABEL: v33i32_func_void:1402; GFX8: ; %bb.0:1403; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1404; GFX8-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x01405; GFX8-NEXT: s_mov_b32 s7, 0xf0001406; GFX8-NEXT: s_mov_b32 s6, -11407; GFX8-NEXT: v_add_u32_e32 v34, vcc, 0x80, v01408; GFX8-NEXT: s_waitcnt lgkmcnt(0)1409; GFX8-NEXT: buffer_load_dword v33, off, s[4:7], 0 offset:1281410; GFX8-NEXT: buffer_load_dwordx4 v[1:4], off, s[4:7], 0 offset:1121411; GFX8-NEXT: buffer_load_dwordx4 v[5:8], off, s[4:7], 0 offset:961412; GFX8-NEXT: buffer_load_dwordx4 v[9:12], off, s[4:7], 0 offset:801413; GFX8-NEXT: buffer_load_dwordx4 v[13:16], off, s[4:7], 0 offset:641414; GFX8-NEXT: buffer_load_dwordx4 v[17:20], off, s[4:7], 0 offset:481415; GFX8-NEXT: buffer_load_dwordx4 v[21:24], off, s[4:7], 0 offset:321416; GFX8-NEXT: buffer_load_dwordx4 v[25:28], off, s[4:7], 0 offset:161417; GFX8-NEXT: buffer_load_dwordx4 v[29:32], off, s[4:7], 01418; GFX8-NEXT: s_waitcnt vmcnt(8)1419; GFX8-NEXT: buffer_store_dword v33, v34, s[0:3], 0 offen1420; GFX8-NEXT: v_add_u32_e32 v33, vcc, 0x7c, v01421; GFX8-NEXT: s_waitcnt vmcnt(8)1422; GFX8-NEXT: buffer_store_dword v4, v33, s[0:3], 0 offen1423; GFX8-NEXT: v_add_u32_e32 v4, vcc, 0x78, v01424; GFX8-NEXT: buffer_store_dword v3, v4, s[0:3], 0 offen1425; GFX8-NEXT: v_add_u32_e32 v3, vcc, 0x74, v01426; GFX8-NEXT: buffer_store_dword v2, v3, s[0:3], 0 offen1427; GFX8-NEXT: v_add_u32_e32 v2, vcc, 0x70, v01428; GFX8-NEXT: buffer_store_dword v1, v2, s[0:3], 0 offen1429; GFX8-NEXT: v_add_u32_e32 v1, vcc, 0x6c, v01430; GFX8-NEXT: v_add_u32_e32 v2, vcc, 0x68, v01431; GFX8-NEXT: v_add_u32_e32 v3, vcc, 0x64, v01432; GFX8-NEXT: s_waitcnt vmcnt(11)1433; GFX8-NEXT: buffer_store_dword v8, v1, s[0:3], 0 offen1434; GFX8-NEXT: v_add_u32_e32 v1, vcc, 0x60, v01435; GFX8-NEXT: buffer_store_dword v7, v2, s[0:3], 0 offen1436; GFX8-NEXT: v_add_u32_e32 v2, vcc, 0x5c, v01437; GFX8-NEXT: buffer_store_dword v6, v3, s[0:3], 0 offen1438; GFX8-NEXT: v_add_u32_e32 v3, vcc, 0x58, v01439; GFX8-NEXT: buffer_store_dword v5, v1, s[0:3], 0 offen1440; GFX8-NEXT: v_add_u32_e32 v1, vcc, 0x54, v01441; GFX8-NEXT: v_add_u32_e32 v4, vcc, 0x50, v01442; GFX8-NEXT: v_add_u32_e32 v5, vcc, 0x4c, v01443; GFX8-NEXT: s_waitcnt vmcnt(14)1444; GFX8-NEXT: buffer_store_dword v12, v2, s[0:3], 0 offen1445; GFX8-NEXT: buffer_store_dword v11, v3, s[0:3], 0 offen1446; GFX8-NEXT: buffer_store_dword v10, v1, s[0:3], 0 offen1447; GFX8-NEXT: v_add_u32_e32 v1, vcc, 56, v01448; GFX8-NEXT: v_add_u32_e32 v6, vcc, 0x48, v01449; GFX8-NEXT: v_add_u32_e32 v7, vcc, 0x44, v01450; GFX8-NEXT: v_add_u32_e32 v2, vcc, 64, v01451; GFX8-NEXT: v_add_u32_e32 v3, vcc, 60, v01452; GFX8-NEXT: buffer_store_dword v9, v4, s[0:3], 0 offen1453; GFX8-NEXT: v_add_u32_e32 v4, vcc, 52, v01454; GFX8-NEXT: v_add_u32_e32 v8, vcc, 48, v01455; GFX8-NEXT: v_add_u32_e32 v9, vcc, 44, v01456; GFX8-NEXT: v_add_u32_e32 v10, vcc, 40, v01457; GFX8-NEXT: v_add_u32_e32 v11, vcc, 36, v01458; GFX8-NEXT: s_waitcnt vmcnt(14)1459; GFX8-NEXT: buffer_store_dword v16, v5, s[0:3], 0 offen1460; GFX8-NEXT: buffer_store_dword v15, v6, s[0:3], 0 offen1461; GFX8-NEXT: buffer_store_dword v14, v7, s[0:3], 0 offen1462; GFX8-NEXT: buffer_store_dword v13, v2, s[0:3], 0 offen1463; GFX8-NEXT: buffer_store_dword v20, v3, s[0:3], 0 offen1464; GFX8-NEXT: buffer_store_dword v19, v1, s[0:3], 0 offen1465; GFX8-NEXT: buffer_store_dword v18, v4, s[0:3], 0 offen1466; GFX8-NEXT: buffer_store_dword v17, v8, s[0:3], 0 offen1467; GFX8-NEXT: buffer_store_dword v24, v9, s[0:3], 0 offen1468; GFX8-NEXT: buffer_store_dword v23, v10, s[0:3], 0 offen1469; GFX8-NEXT: buffer_store_dword v22, v11, s[0:3], 0 offen1470; GFX8-NEXT: v_add_u32_e32 v1, vcc, 32, v01471; GFX8-NEXT: buffer_store_dword v21, v1, s[0:3], 0 offen1472; GFX8-NEXT: v_add_u32_e32 v1, vcc, 28, v01473; GFX8-NEXT: buffer_store_dword v28, v1, s[0:3], 0 offen1474; GFX8-NEXT: v_add_u32_e32 v1, vcc, 24, v01475; GFX8-NEXT: buffer_store_dword v27, v1, s[0:3], 0 offen1476; GFX8-NEXT: v_add_u32_e32 v1, vcc, 20, v01477; GFX8-NEXT: buffer_store_dword v26, v1, s[0:3], 0 offen1478; GFX8-NEXT: v_add_u32_e32 v1, vcc, 16, v01479; GFX8-NEXT: buffer_store_dword v25, v1, s[0:3], 0 offen1480; GFX8-NEXT: v_add_u32_e32 v1, vcc, 12, v01481; GFX8-NEXT: s_waitcnt vmcnt(14)1482; GFX8-NEXT: buffer_store_dword v32, v1, s[0:3], 0 offen1483; GFX8-NEXT: v_add_u32_e32 v1, vcc, 8, v01484; GFX8-NEXT: buffer_store_dword v31, v1, s[0:3], 0 offen1485; GFX8-NEXT: v_add_u32_e32 v1, vcc, 4, v01486; GFX8-NEXT: buffer_store_dword v30, v1, s[0:3], 0 offen1487; GFX8-NEXT: buffer_store_dword v29, v0, s[0:3], 0 offen1488; GFX8-NEXT: s_waitcnt vmcnt(0)1489; GFX8-NEXT: s_setpc_b64 s[30:31]1490;1491; GFX9-LABEL: v33i32_func_void:1492; GFX9: ; %bb.0:1493; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1494; GFX9-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x01495; GFX9-NEXT: s_mov_b32 s7, 0xf0001496; GFX9-NEXT: s_mov_b32 s6, -11497; GFX9-NEXT: s_waitcnt lgkmcnt(0)1498; GFX9-NEXT: buffer_load_dwordx4 v[1:4], off, s[4:7], 0 offset:1121499; GFX9-NEXT: buffer_load_dwordx4 v[5:8], off, s[4:7], 0 offset:961500; GFX9-NEXT: buffer_load_dwordx4 v[9:12], off, s[4:7], 0 offset:801501; GFX9-NEXT: buffer_load_dwordx4 v[13:16], off, s[4:7], 0 offset:641502; GFX9-NEXT: buffer_load_dword v33, off, s[4:7], 0 offset:1281503; GFX9-NEXT: buffer_load_dwordx4 v[17:20], off, s[4:7], 0 offset:481504; GFX9-NEXT: buffer_load_dwordx4 v[21:24], off, s[4:7], 0 offset:321505; GFX9-NEXT: buffer_load_dwordx4 v[25:28], off, s[4:7], 0 offset:161506; GFX9-NEXT: buffer_load_dwordx4 v[29:32], off, s[4:7], 01507; GFX9-NEXT: s_waitcnt vmcnt(8)1508; GFX9-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:1241509; GFX9-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:1201510; GFX9-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:1161511; GFX9-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen offset:1121512; GFX9-NEXT: s_waitcnt vmcnt(11)1513; GFX9-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:1081514; GFX9-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:1041515; GFX9-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:1001516; GFX9-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:961517; GFX9-NEXT: s_waitcnt vmcnt(14)1518; GFX9-NEXT: buffer_store_dword v12, v0, s[0:3], 0 offen offset:921519; GFX9-NEXT: buffer_store_dword v11, v0, s[0:3], 0 offen offset:881520; GFX9-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:841521; GFX9-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:801522; GFX9-NEXT: s_waitcnt vmcnt(17)1523; GFX9-NEXT: buffer_store_dword v16, v0, s[0:3], 0 offen offset:761524; GFX9-NEXT: buffer_store_dword v15, v0, s[0:3], 0 offen offset:721525; GFX9-NEXT: buffer_store_dword v14, v0, s[0:3], 0 offen offset:681526; GFX9-NEXT: buffer_store_dword v13, v0, s[0:3], 0 offen offset:641527; GFX9-NEXT: s_waitcnt vmcnt(20)1528; GFX9-NEXT: buffer_store_dword v33, v0, s[0:3], 0 offen offset:1281529; GFX9-NEXT: s_waitcnt vmcnt(20)1530; GFX9-NEXT: buffer_store_dword v20, v0, s[0:3], 0 offen offset:601531; GFX9-NEXT: buffer_store_dword v19, v0, s[0:3], 0 offen offset:561532; GFX9-NEXT: buffer_store_dword v18, v0, s[0:3], 0 offen offset:521533; GFX9-NEXT: buffer_store_dword v17, v0, s[0:3], 0 offen offset:481534; GFX9-NEXT: s_waitcnt vmcnt(23)1535; GFX9-NEXT: buffer_store_dword v24, v0, s[0:3], 0 offen offset:441536; GFX9-NEXT: buffer_store_dword v23, v0, s[0:3], 0 offen offset:401537; GFX9-NEXT: buffer_store_dword v22, v0, s[0:3], 0 offen offset:361538; GFX9-NEXT: buffer_store_dword v21, v0, s[0:3], 0 offen offset:321539; GFX9-NEXT: s_waitcnt vmcnt(26)1540; GFX9-NEXT: buffer_store_dword v28, v0, s[0:3], 0 offen offset:281541; GFX9-NEXT: buffer_store_dword v27, v0, s[0:3], 0 offen offset:241542; GFX9-NEXT: buffer_store_dword v26, v0, s[0:3], 0 offen offset:201543; GFX9-NEXT: buffer_store_dword v25, v0, s[0:3], 0 offen offset:161544; GFX9-NEXT: s_waitcnt vmcnt(29)1545; GFX9-NEXT: buffer_store_dword v32, v0, s[0:3], 0 offen offset:121546; GFX9-NEXT: buffer_store_dword v31, v0, s[0:3], 0 offen offset:81547; GFX9-NEXT: buffer_store_dword v30, v0, s[0:3], 0 offen offset:41548; GFX9-NEXT: buffer_store_dword v29, v0, s[0:3], 0 offen1549; GFX9-NEXT: s_waitcnt vmcnt(0)1550; GFX9-NEXT: s_setpc_b64 s[30:31]1551;1552; GFX11-LABEL: v33i32_func_void:1553; GFX11: ; %bb.0:1554; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1555; GFX11-NEXT: s_load_b64 s[0:1], s[0:1], 0x01556; GFX11-NEXT: s_mov_b32 s3, 0x310160001557; GFX11-NEXT: s_mov_b32 s2, -11558; GFX11-NEXT: s_waitcnt lgkmcnt(0)1559; GFX11-NEXT: s_clause 0x81560; GFX11-NEXT: buffer_load_b128 v[1:4], off, s[0:3], 0 offset:1121561; GFX11-NEXT: buffer_load_b128 v[5:8], off, s[0:3], 0 offset:961562; GFX11-NEXT: buffer_load_b128 v[9:12], off, s[0:3], 0 offset:801563; GFX11-NEXT: buffer_load_b128 v[13:16], off, s[0:3], 0 offset:641564; GFX11-NEXT: buffer_load_b128 v[17:20], off, s[0:3], 0 offset:481565; GFX11-NEXT: buffer_load_b128 v[21:24], off, s[0:3], 0 offset:321566; GFX11-NEXT: buffer_load_b128 v[25:28], off, s[0:3], 0 offset:161567; GFX11-NEXT: buffer_load_b128 v[29:32], off, s[0:3], 01568; GFX11-NEXT: buffer_load_b32 v33, off, s[0:3], 0 offset:1281569; GFX11-NEXT: s_waitcnt vmcnt(8)1570; GFX11-NEXT: scratch_store_b128 v0, v[1:4], off offset:1121571; GFX11-NEXT: s_waitcnt vmcnt(7)1572; GFX11-NEXT: scratch_store_b128 v0, v[5:8], off offset:961573; GFX11-NEXT: s_waitcnt vmcnt(6)1574; GFX11-NEXT: scratch_store_b128 v0, v[9:12], off offset:801575; GFX11-NEXT: s_waitcnt vmcnt(5)1576; GFX11-NEXT: scratch_store_b128 v0, v[13:16], off offset:641577; GFX11-NEXT: s_waitcnt vmcnt(4)1578; GFX11-NEXT: scratch_store_b128 v0, v[17:20], off offset:481579; GFX11-NEXT: s_waitcnt vmcnt(3)1580; GFX11-NEXT: scratch_store_b128 v0, v[21:24], off offset:321581; GFX11-NEXT: s_waitcnt vmcnt(2)1582; GFX11-NEXT: scratch_store_b128 v0, v[25:28], off offset:161583; GFX11-NEXT: s_waitcnt vmcnt(1)1584; GFX11-NEXT: scratch_store_b128 v0, v[29:32], off1585; GFX11-NEXT: s_waitcnt vmcnt(0)1586; GFX11-NEXT: scratch_store_b32 v0, v33, off offset:1281587; GFX11-NEXT: s_setpc_b64 s[30:31]1588 %ptr = load volatile ptr addrspace(1), ptr addrspace(4) poison1589 %val = load <33 x i32>, ptr addrspace(1) %ptr1590 ret <33 x i32> %val1591}1592 1593define { <32 x i32>, i32 } @struct_v32i32_i32_func_void() #0 {1594; CI-LABEL: struct_v32i32_i32_func_void:1595; CI: ; %bb.0:1596; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1597; CI-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x01598; CI-NEXT: s_mov_b32 s7, 0xf0001599; CI-NEXT: s_mov_b32 s6, -11600; CI-NEXT: v_add_i32_e32 v34, vcc, 0x80, v01601; CI-NEXT: s_waitcnt lgkmcnt(0)1602; CI-NEXT: buffer_load_dword v33, off, s[4:7], 0 offset:1281603; CI-NEXT: buffer_load_dwordx4 v[1:4], off, s[4:7], 0 offset:1121604; CI-NEXT: buffer_load_dwordx4 v[5:8], off, s[4:7], 0 offset:961605; CI-NEXT: buffer_load_dwordx4 v[9:12], off, s[4:7], 0 offset:801606; CI-NEXT: buffer_load_dwordx4 v[13:16], off, s[4:7], 0 offset:641607; CI-NEXT: buffer_load_dwordx4 v[17:20], off, s[4:7], 0 offset:481608; CI-NEXT: buffer_load_dwordx4 v[21:24], off, s[4:7], 0 offset:321609; CI-NEXT: buffer_load_dwordx4 v[25:28], off, s[4:7], 0 offset:161610; CI-NEXT: buffer_load_dwordx4 v[29:32], off, s[4:7], 01611; CI-NEXT: s_waitcnt vmcnt(8)1612; CI-NEXT: buffer_store_dword v33, v34, s[0:3], 0 offen1613; CI-NEXT: v_add_i32_e32 v33, vcc, 0x7c, v01614; CI-NEXT: s_waitcnt vmcnt(8)1615; CI-NEXT: buffer_store_dword v4, v33, s[0:3], 0 offen1616; CI-NEXT: v_add_i32_e32 v4, vcc, 0x78, v01617; CI-NEXT: buffer_store_dword v3, v4, s[0:3], 0 offen1618; CI-NEXT: v_add_i32_e32 v3, vcc, 0x74, v01619; CI-NEXT: buffer_store_dword v2, v3, s[0:3], 0 offen1620; CI-NEXT: v_add_i32_e32 v2, vcc, 0x70, v01621; CI-NEXT: buffer_store_dword v1, v2, s[0:3], 0 offen1622; CI-NEXT: v_add_i32_e32 v1, vcc, 0x6c, v01623; CI-NEXT: v_add_i32_e32 v2, vcc, 0x68, v01624; CI-NEXT: v_add_i32_e32 v3, vcc, 0x64, v01625; CI-NEXT: s_waitcnt vmcnt(11)1626; CI-NEXT: buffer_store_dword v8, v1, s[0:3], 0 offen1627; CI-NEXT: v_add_i32_e32 v1, vcc, 0x60, v01628; CI-NEXT: buffer_store_dword v7, v2, s[0:3], 0 offen1629; CI-NEXT: v_add_i32_e32 v2, vcc, 0x5c, v01630; CI-NEXT: buffer_store_dword v6, v3, s[0:3], 0 offen1631; CI-NEXT: v_add_i32_e32 v3, vcc, 0x58, v01632; CI-NEXT: buffer_store_dword v5, v1, s[0:3], 0 offen1633; CI-NEXT: v_add_i32_e32 v1, vcc, 0x54, v01634; CI-NEXT: v_add_i32_e32 v4, vcc, 0x50, v01635; CI-NEXT: v_add_i32_e32 v5, vcc, 0x4c, v01636; CI-NEXT: s_waitcnt vmcnt(14)1637; CI-NEXT: buffer_store_dword v12, v2, s[0:3], 0 offen1638; CI-NEXT: buffer_store_dword v11, v3, s[0:3], 0 offen1639; CI-NEXT: buffer_store_dword v10, v1, s[0:3], 0 offen1640; CI-NEXT: v_add_i32_e32 v1, vcc, 56, v01641; CI-NEXT: v_add_i32_e32 v6, vcc, 0x48, v01642; CI-NEXT: v_add_i32_e32 v7, vcc, 0x44, v01643; CI-NEXT: v_add_i32_e32 v2, vcc, 64, v01644; CI-NEXT: v_add_i32_e32 v3, vcc, 60, v01645; CI-NEXT: buffer_store_dword v9, v4, s[0:3], 0 offen1646; CI-NEXT: v_add_i32_e32 v4, vcc, 52, v01647; CI-NEXT: v_add_i32_e32 v8, vcc, 48, v01648; CI-NEXT: v_add_i32_e32 v9, vcc, 44, v01649; CI-NEXT: v_add_i32_e32 v10, vcc, 40, v01650; CI-NEXT: v_add_i32_e32 v11, vcc, 36, v01651; CI-NEXT: s_waitcnt vmcnt(14)1652; CI-NEXT: buffer_store_dword v16, v5, s[0:3], 0 offen1653; CI-NEXT: buffer_store_dword v15, v6, s[0:3], 0 offen1654; CI-NEXT: buffer_store_dword v14, v7, s[0:3], 0 offen1655; CI-NEXT: buffer_store_dword v13, v2, s[0:3], 0 offen1656; CI-NEXT: buffer_store_dword v20, v3, s[0:3], 0 offen1657; CI-NEXT: buffer_store_dword v19, v1, s[0:3], 0 offen1658; CI-NEXT: buffer_store_dword v18, v4, s[0:3], 0 offen1659; CI-NEXT: buffer_store_dword v17, v8, s[0:3], 0 offen1660; CI-NEXT: buffer_store_dword v24, v9, s[0:3], 0 offen1661; CI-NEXT: buffer_store_dword v23, v10, s[0:3], 0 offen1662; CI-NEXT: buffer_store_dword v22, v11, s[0:3], 0 offen1663; CI-NEXT: v_add_i32_e32 v1, vcc, 32, v01664; CI-NEXT: buffer_store_dword v21, v1, s[0:3], 0 offen1665; CI-NEXT: v_add_i32_e32 v1, vcc, 28, v01666; CI-NEXT: buffer_store_dword v28, v1, s[0:3], 0 offen1667; CI-NEXT: v_add_i32_e32 v1, vcc, 24, v01668; CI-NEXT: buffer_store_dword v27, v1, s[0:3], 0 offen1669; CI-NEXT: v_add_i32_e32 v1, vcc, 20, v01670; CI-NEXT: buffer_store_dword v26, v1, s[0:3], 0 offen1671; CI-NEXT: v_add_i32_e32 v1, vcc, 16, v01672; CI-NEXT: buffer_store_dword v25, v1, s[0:3], 0 offen1673; CI-NEXT: v_add_i32_e32 v1, vcc, 12, v01674; CI-NEXT: s_waitcnt vmcnt(14)1675; CI-NEXT: buffer_store_dword v32, v1, s[0:3], 0 offen1676; CI-NEXT: v_add_i32_e32 v1, vcc, 8, v01677; CI-NEXT: buffer_store_dword v31, v1, s[0:3], 0 offen1678; CI-NEXT: v_add_i32_e32 v1, vcc, 4, v01679; CI-NEXT: buffer_store_dword v30, v1, s[0:3], 0 offen1680; CI-NEXT: buffer_store_dword v29, v0, s[0:3], 0 offen1681; CI-NEXT: s_waitcnt vmcnt(0)1682; CI-NEXT: s_setpc_b64 s[30:31]1683;1684; GFX8-LABEL: struct_v32i32_i32_func_void:1685; GFX8: ; %bb.0:1686; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1687; GFX8-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x01688; GFX8-NEXT: s_mov_b32 s7, 0xf0001689; GFX8-NEXT: s_mov_b32 s6, -11690; GFX8-NEXT: v_add_u32_e32 v34, vcc, 0x80, v01691; GFX8-NEXT: s_waitcnt lgkmcnt(0)1692; GFX8-NEXT: buffer_load_dword v33, off, s[4:7], 0 offset:1281693; GFX8-NEXT: buffer_load_dwordx4 v[1:4], off, s[4:7], 0 offset:1121694; GFX8-NEXT: buffer_load_dwordx4 v[5:8], off, s[4:7], 0 offset:961695; GFX8-NEXT: buffer_load_dwordx4 v[9:12], off, s[4:7], 0 offset:801696; GFX8-NEXT: buffer_load_dwordx4 v[13:16], off, s[4:7], 0 offset:641697; GFX8-NEXT: buffer_load_dwordx4 v[17:20], off, s[4:7], 0 offset:481698; GFX8-NEXT: buffer_load_dwordx4 v[21:24], off, s[4:7], 0 offset:321699; GFX8-NEXT: buffer_load_dwordx4 v[25:28], off, s[4:7], 0 offset:161700; GFX8-NEXT: buffer_load_dwordx4 v[29:32], off, s[4:7], 01701; GFX8-NEXT: s_waitcnt vmcnt(8)1702; GFX8-NEXT: buffer_store_dword v33, v34, s[0:3], 0 offen1703; GFX8-NEXT: v_add_u32_e32 v33, vcc, 0x7c, v01704; GFX8-NEXT: s_waitcnt vmcnt(8)1705; GFX8-NEXT: buffer_store_dword v4, v33, s[0:3], 0 offen1706; GFX8-NEXT: v_add_u32_e32 v4, vcc, 0x78, v01707; GFX8-NEXT: buffer_store_dword v3, v4, s[0:3], 0 offen1708; GFX8-NEXT: v_add_u32_e32 v3, vcc, 0x74, v01709; GFX8-NEXT: buffer_store_dword v2, v3, s[0:3], 0 offen1710; GFX8-NEXT: v_add_u32_e32 v2, vcc, 0x70, v01711; GFX8-NEXT: buffer_store_dword v1, v2, s[0:3], 0 offen1712; GFX8-NEXT: v_add_u32_e32 v1, vcc, 0x6c, v01713; GFX8-NEXT: v_add_u32_e32 v2, vcc, 0x68, v01714; GFX8-NEXT: v_add_u32_e32 v3, vcc, 0x64, v01715; GFX8-NEXT: s_waitcnt vmcnt(11)1716; GFX8-NEXT: buffer_store_dword v8, v1, s[0:3], 0 offen1717; GFX8-NEXT: v_add_u32_e32 v1, vcc, 0x60, v01718; GFX8-NEXT: buffer_store_dword v7, v2, s[0:3], 0 offen1719; GFX8-NEXT: v_add_u32_e32 v2, vcc, 0x5c, v01720; GFX8-NEXT: buffer_store_dword v6, v3, s[0:3], 0 offen1721; GFX8-NEXT: v_add_u32_e32 v3, vcc, 0x58, v01722; GFX8-NEXT: buffer_store_dword v5, v1, s[0:3], 0 offen1723; GFX8-NEXT: v_add_u32_e32 v1, vcc, 0x54, v01724; GFX8-NEXT: v_add_u32_e32 v4, vcc, 0x50, v01725; GFX8-NEXT: v_add_u32_e32 v5, vcc, 0x4c, v01726; GFX8-NEXT: s_waitcnt vmcnt(14)1727; GFX8-NEXT: buffer_store_dword v12, v2, s[0:3], 0 offen1728; GFX8-NEXT: buffer_store_dword v11, v3, s[0:3], 0 offen1729; GFX8-NEXT: buffer_store_dword v10, v1, s[0:3], 0 offen1730; GFX8-NEXT: v_add_u32_e32 v1, vcc, 56, v01731; GFX8-NEXT: v_add_u32_e32 v6, vcc, 0x48, v01732; GFX8-NEXT: v_add_u32_e32 v7, vcc, 0x44, v01733; GFX8-NEXT: v_add_u32_e32 v2, vcc, 64, v01734; GFX8-NEXT: v_add_u32_e32 v3, vcc, 60, v01735; GFX8-NEXT: buffer_store_dword v9, v4, s[0:3], 0 offen1736; GFX8-NEXT: v_add_u32_e32 v4, vcc, 52, v01737; GFX8-NEXT: v_add_u32_e32 v8, vcc, 48, v01738; GFX8-NEXT: v_add_u32_e32 v9, vcc, 44, v01739; GFX8-NEXT: v_add_u32_e32 v10, vcc, 40, v01740; GFX8-NEXT: v_add_u32_e32 v11, vcc, 36, v01741; GFX8-NEXT: s_waitcnt vmcnt(14)1742; GFX8-NEXT: buffer_store_dword v16, v5, s[0:3], 0 offen1743; GFX8-NEXT: buffer_store_dword v15, v6, s[0:3], 0 offen1744; GFX8-NEXT: buffer_store_dword v14, v7, s[0:3], 0 offen1745; GFX8-NEXT: buffer_store_dword v13, v2, s[0:3], 0 offen1746; GFX8-NEXT: buffer_store_dword v20, v3, s[0:3], 0 offen1747; GFX8-NEXT: buffer_store_dword v19, v1, s[0:3], 0 offen1748; GFX8-NEXT: buffer_store_dword v18, v4, s[0:3], 0 offen1749; GFX8-NEXT: buffer_store_dword v17, v8, s[0:3], 0 offen1750; GFX8-NEXT: buffer_store_dword v24, v9, s[0:3], 0 offen1751; GFX8-NEXT: buffer_store_dword v23, v10, s[0:3], 0 offen1752; GFX8-NEXT: buffer_store_dword v22, v11, s[0:3], 0 offen1753; GFX8-NEXT: v_add_u32_e32 v1, vcc, 32, v01754; GFX8-NEXT: buffer_store_dword v21, v1, s[0:3], 0 offen1755; GFX8-NEXT: v_add_u32_e32 v1, vcc, 28, v01756; GFX8-NEXT: buffer_store_dword v28, v1, s[0:3], 0 offen1757; GFX8-NEXT: v_add_u32_e32 v1, vcc, 24, v01758; GFX8-NEXT: buffer_store_dword v27, v1, s[0:3], 0 offen1759; GFX8-NEXT: v_add_u32_e32 v1, vcc, 20, v01760; GFX8-NEXT: buffer_store_dword v26, v1, s[0:3], 0 offen1761; GFX8-NEXT: v_add_u32_e32 v1, vcc, 16, v01762; GFX8-NEXT: buffer_store_dword v25, v1, s[0:3], 0 offen1763; GFX8-NEXT: v_add_u32_e32 v1, vcc, 12, v01764; GFX8-NEXT: s_waitcnt vmcnt(14)1765; GFX8-NEXT: buffer_store_dword v32, v1, s[0:3], 0 offen1766; GFX8-NEXT: v_add_u32_e32 v1, vcc, 8, v01767; GFX8-NEXT: buffer_store_dword v31, v1, s[0:3], 0 offen1768; GFX8-NEXT: v_add_u32_e32 v1, vcc, 4, v01769; GFX8-NEXT: buffer_store_dword v30, v1, s[0:3], 0 offen1770; GFX8-NEXT: buffer_store_dword v29, v0, s[0:3], 0 offen1771; GFX8-NEXT: s_waitcnt vmcnt(0)1772; GFX8-NEXT: s_setpc_b64 s[30:31]1773;1774; GFX9-LABEL: struct_v32i32_i32_func_void:1775; GFX9: ; %bb.0:1776; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1777; GFX9-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x01778; GFX9-NEXT: s_mov_b32 s7, 0xf0001779; GFX9-NEXT: s_mov_b32 s6, -11780; GFX9-NEXT: s_waitcnt lgkmcnt(0)1781; GFX9-NEXT: buffer_load_dwordx4 v[1:4], off, s[4:7], 0 offset:1121782; GFX9-NEXT: buffer_load_dwordx4 v[5:8], off, s[4:7], 0 offset:961783; GFX9-NEXT: buffer_load_dwordx4 v[9:12], off, s[4:7], 0 offset:801784; GFX9-NEXT: buffer_load_dwordx4 v[13:16], off, s[4:7], 0 offset:641785; GFX9-NEXT: buffer_load_dword v33, off, s[4:7], 0 offset:1281786; GFX9-NEXT: buffer_load_dwordx4 v[17:20], off, s[4:7], 0 offset:481787; GFX9-NEXT: buffer_load_dwordx4 v[21:24], off, s[4:7], 0 offset:321788; GFX9-NEXT: buffer_load_dwordx4 v[25:28], off, s[4:7], 0 offset:161789; GFX9-NEXT: buffer_load_dwordx4 v[29:32], off, s[4:7], 01790; GFX9-NEXT: s_waitcnt vmcnt(8)1791; GFX9-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:1241792; GFX9-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:1201793; GFX9-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:1161794; GFX9-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen offset:1121795; GFX9-NEXT: s_waitcnt vmcnt(11)1796; GFX9-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:1081797; GFX9-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:1041798; GFX9-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:1001799; GFX9-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:961800; GFX9-NEXT: s_waitcnt vmcnt(14)1801; GFX9-NEXT: buffer_store_dword v12, v0, s[0:3], 0 offen offset:921802; GFX9-NEXT: buffer_store_dword v11, v0, s[0:3], 0 offen offset:881803; GFX9-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:841804; GFX9-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:801805; GFX9-NEXT: s_waitcnt vmcnt(17)1806; GFX9-NEXT: buffer_store_dword v16, v0, s[0:3], 0 offen offset:761807; GFX9-NEXT: buffer_store_dword v15, v0, s[0:3], 0 offen offset:721808; GFX9-NEXT: buffer_store_dword v14, v0, s[0:3], 0 offen offset:681809; GFX9-NEXT: buffer_store_dword v13, v0, s[0:3], 0 offen offset:641810; GFX9-NEXT: s_waitcnt vmcnt(20)1811; GFX9-NEXT: buffer_store_dword v33, v0, s[0:3], 0 offen offset:1281812; GFX9-NEXT: s_waitcnt vmcnt(20)1813; GFX9-NEXT: buffer_store_dword v20, v0, s[0:3], 0 offen offset:601814; GFX9-NEXT: buffer_store_dword v19, v0, s[0:3], 0 offen offset:561815; GFX9-NEXT: buffer_store_dword v18, v0, s[0:3], 0 offen offset:521816; GFX9-NEXT: buffer_store_dword v17, v0, s[0:3], 0 offen offset:481817; GFX9-NEXT: s_waitcnt vmcnt(23)1818; GFX9-NEXT: buffer_store_dword v24, v0, s[0:3], 0 offen offset:441819; GFX9-NEXT: buffer_store_dword v23, v0, s[0:3], 0 offen offset:401820; GFX9-NEXT: buffer_store_dword v22, v0, s[0:3], 0 offen offset:361821; GFX9-NEXT: buffer_store_dword v21, v0, s[0:3], 0 offen offset:321822; GFX9-NEXT: s_waitcnt vmcnt(26)1823; GFX9-NEXT: buffer_store_dword v28, v0, s[0:3], 0 offen offset:281824; GFX9-NEXT: buffer_store_dword v27, v0, s[0:3], 0 offen offset:241825; GFX9-NEXT: buffer_store_dword v26, v0, s[0:3], 0 offen offset:201826; GFX9-NEXT: buffer_store_dword v25, v0, s[0:3], 0 offen offset:161827; GFX9-NEXT: s_waitcnt vmcnt(29)1828; GFX9-NEXT: buffer_store_dword v32, v0, s[0:3], 0 offen offset:121829; GFX9-NEXT: buffer_store_dword v31, v0, s[0:3], 0 offen offset:81830; GFX9-NEXT: buffer_store_dword v30, v0, s[0:3], 0 offen offset:41831; GFX9-NEXT: buffer_store_dword v29, v0, s[0:3], 0 offen1832; GFX9-NEXT: s_waitcnt vmcnt(0)1833; GFX9-NEXT: s_setpc_b64 s[30:31]1834;1835; GFX11-LABEL: struct_v32i32_i32_func_void:1836; GFX11: ; %bb.0:1837; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1838; GFX11-NEXT: s_load_b64 s[0:1], s[0:1], 0x01839; GFX11-NEXT: s_mov_b32 s3, 0x310160001840; GFX11-NEXT: s_mov_b32 s2, -11841; GFX11-NEXT: s_waitcnt lgkmcnt(0)1842; GFX11-NEXT: s_clause 0x81843; GFX11-NEXT: buffer_load_b128 v[1:4], off, s[0:3], 0 offset:1121844; GFX11-NEXT: buffer_load_b128 v[5:8], off, s[0:3], 0 offset:961845; GFX11-NEXT: buffer_load_b128 v[9:12], off, s[0:3], 0 offset:801846; GFX11-NEXT: buffer_load_b128 v[13:16], off, s[0:3], 0 offset:641847; GFX11-NEXT: buffer_load_b128 v[17:20], off, s[0:3], 0 offset:481848; GFX11-NEXT: buffer_load_b128 v[21:24], off, s[0:3], 0 offset:321849; GFX11-NEXT: buffer_load_b128 v[25:28], off, s[0:3], 0 offset:161850; GFX11-NEXT: buffer_load_b128 v[29:32], off, s[0:3], 01851; GFX11-NEXT: buffer_load_b32 v33, off, s[0:3], 0 offset:1281852; GFX11-NEXT: s_waitcnt vmcnt(8)1853; GFX11-NEXT: scratch_store_b128 v0, v[1:4], off offset:1121854; GFX11-NEXT: s_waitcnt vmcnt(7)1855; GFX11-NEXT: scratch_store_b128 v0, v[5:8], off offset:961856; GFX11-NEXT: s_waitcnt vmcnt(6)1857; GFX11-NEXT: scratch_store_b128 v0, v[9:12], off offset:801858; GFX11-NEXT: s_waitcnt vmcnt(5)1859; GFX11-NEXT: scratch_store_b128 v0, v[13:16], off offset:641860; GFX11-NEXT: s_waitcnt vmcnt(4)1861; GFX11-NEXT: scratch_store_b128 v0, v[17:20], off offset:481862; GFX11-NEXT: s_waitcnt vmcnt(3)1863; GFX11-NEXT: scratch_store_b128 v0, v[21:24], off offset:321864; GFX11-NEXT: s_waitcnt vmcnt(2)1865; GFX11-NEXT: scratch_store_b128 v0, v[25:28], off offset:161866; GFX11-NEXT: s_waitcnt vmcnt(1)1867; GFX11-NEXT: scratch_store_b128 v0, v[29:32], off1868; GFX11-NEXT: s_waitcnt vmcnt(0)1869; GFX11-NEXT: scratch_store_b32 v0, v33, off offset:1281870; GFX11-NEXT: s_setpc_b64 s[30:31]1871 %ptr = load volatile ptr addrspace(1), ptr addrspace(4) poison1872 %val = load { <32 x i32>, i32 }, ptr addrspace(1) %ptr1873 ret { <32 x i32>, i32 }%val1874}1875 1876define { i32, <32 x i32> } @struct_i32_v32i32_func_void() #0 {1877; CI-LABEL: struct_i32_v32i32_func_void:1878; CI: ; %bb.0:1879; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1880; CI-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x01881; CI-NEXT: s_mov_b32 s7, 0xf0001882; CI-NEXT: s_mov_b32 s6, -11883; CI-NEXT: s_waitcnt lgkmcnt(0)1884; CI-NEXT: buffer_load_dword v33, off, s[4:7], 01885; CI-NEXT: buffer_load_dwordx4 v[1:4], off, s[4:7], 0 offset:2401886; CI-NEXT: buffer_load_dwordx4 v[5:8], off, s[4:7], 0 offset:2241887; CI-NEXT: buffer_load_dwordx4 v[9:12], off, s[4:7], 0 offset:2081888; CI-NEXT: buffer_load_dwordx4 v[13:16], off, s[4:7], 0 offset:1921889; CI-NEXT: buffer_load_dwordx4 v[17:20], off, s[4:7], 0 offset:1761890; CI-NEXT: buffer_load_dwordx4 v[21:24], off, s[4:7], 0 offset:1601891; CI-NEXT: buffer_load_dwordx4 v[25:28], off, s[4:7], 0 offset:1441892; CI-NEXT: buffer_load_dwordx4 v[29:32], off, s[4:7], 0 offset:1281893; CI-NEXT: s_waitcnt vmcnt(8)1894; CI-NEXT: buffer_store_dword v33, v0, s[0:3], 0 offen1895; CI-NEXT: v_add_i32_e32 v33, vcc, 0xfc, v01896; CI-NEXT: s_waitcnt vmcnt(8)1897; CI-NEXT: buffer_store_dword v4, v33, s[0:3], 0 offen1898; CI-NEXT: v_add_i32_e32 v4, vcc, 0xf8, v01899; CI-NEXT: buffer_store_dword v3, v4, s[0:3], 0 offen1900; CI-NEXT: v_add_i32_e32 v3, vcc, 0xf4, v01901; CI-NEXT: buffer_store_dword v2, v3, s[0:3], 0 offen1902; CI-NEXT: v_add_i32_e32 v2, vcc, 0xf0, v01903; CI-NEXT: buffer_store_dword v1, v2, s[0:3], 0 offen1904; CI-NEXT: v_add_i32_e32 v1, vcc, 0xec, v01905; CI-NEXT: v_add_i32_e32 v2, vcc, 0xe8, v01906; CI-NEXT: v_add_i32_e32 v3, vcc, 0xe4, v01907; CI-NEXT: s_waitcnt vmcnt(11)1908; CI-NEXT: buffer_store_dword v8, v1, s[0:3], 0 offen1909; CI-NEXT: v_add_i32_e32 v1, vcc, 0xe0, v01910; CI-NEXT: buffer_store_dword v7, v2, s[0:3], 0 offen1911; CI-NEXT: v_add_i32_e32 v2, vcc, 0xdc, v01912; CI-NEXT: buffer_store_dword v6, v3, s[0:3], 0 offen1913; CI-NEXT: v_add_i32_e32 v3, vcc, 0xd8, v01914; CI-NEXT: buffer_store_dword v5, v1, s[0:3], 0 offen1915; CI-NEXT: v_add_i32_e32 v1, vcc, 0xd4, v01916; CI-NEXT: v_add_i32_e32 v4, vcc, 0xd0, v01917; CI-NEXT: v_add_i32_e32 v5, vcc, 0xcc, v01918; CI-NEXT: v_add_i32_e32 v6, vcc, 0xc8, v01919; CI-NEXT: s_waitcnt vmcnt(14)1920; CI-NEXT: buffer_store_dword v12, v2, s[0:3], 0 offen1921; CI-NEXT: buffer_store_dword v11, v3, s[0:3], 0 offen1922; CI-NEXT: buffer_store_dword v10, v1, s[0:3], 0 offen1923; CI-NEXT: v_add_i32_e32 v1, vcc, 0xb8, v01924; CI-NEXT: v_add_i32_e32 v7, vcc, 0xc4, v01925; CI-NEXT: v_add_i32_e32 v2, vcc, 0xc0, v01926; CI-NEXT: v_add_i32_e32 v3, vcc, 0xbc, v01927; CI-NEXT: buffer_store_dword v9, v4, s[0:3], 0 offen1928; CI-NEXT: v_add_i32_e32 v4, vcc, 0xb4, v01929; CI-NEXT: v_add_i32_e32 v8, vcc, 0xb0, v01930; CI-NEXT: v_add_i32_e32 v9, vcc, 0xac, v01931; CI-NEXT: v_add_i32_e32 v10, vcc, 0xa8, v01932; CI-NEXT: v_add_i32_e32 v11, vcc, 0xa4, v01933; CI-NEXT: s_waitcnt vmcnt(14)1934; CI-NEXT: buffer_store_dword v16, v5, s[0:3], 0 offen1935; CI-NEXT: v_add_i32_e32 v5, vcc, 0xa0, v01936; CI-NEXT: buffer_store_dword v15, v6, s[0:3], 0 offen1937; CI-NEXT: buffer_store_dword v14, v7, s[0:3], 0 offen1938; CI-NEXT: buffer_store_dword v13, v2, s[0:3], 0 offen1939; CI-NEXT: buffer_store_dword v20, v3, s[0:3], 0 offen1940; CI-NEXT: buffer_store_dword v19, v1, s[0:3], 0 offen1941; CI-NEXT: buffer_store_dword v18, v4, s[0:3], 0 offen1942; CI-NEXT: buffer_store_dword v17, v8, s[0:3], 0 offen1943; CI-NEXT: buffer_store_dword v24, v9, s[0:3], 0 offen1944; CI-NEXT: buffer_store_dword v23, v10, s[0:3], 0 offen1945; CI-NEXT: buffer_store_dword v22, v11, s[0:3], 0 offen1946; CI-NEXT: buffer_store_dword v21, v5, s[0:3], 0 offen1947; CI-NEXT: v_add_i32_e32 v1, vcc, 0x9c, v01948; CI-NEXT: buffer_store_dword v28, v1, s[0:3], 0 offen1949; CI-NEXT: v_add_i32_e32 v1, vcc, 0x98, v01950; CI-NEXT: buffer_store_dword v27, v1, s[0:3], 0 offen1951; CI-NEXT: v_add_i32_e32 v1, vcc, 0x94, v01952; CI-NEXT: buffer_store_dword v26, v1, s[0:3], 0 offen1953; CI-NEXT: v_add_i32_e32 v1, vcc, 0x90, v01954; CI-NEXT: buffer_store_dword v25, v1, s[0:3], 0 offen1955; CI-NEXT: v_add_i32_e32 v1, vcc, 0x8c, v01956; CI-NEXT: s_waitcnt vmcnt(14)1957; CI-NEXT: buffer_store_dword v32, v1, s[0:3], 0 offen1958; CI-NEXT: v_add_i32_e32 v1, vcc, 0x88, v01959; CI-NEXT: buffer_store_dword v31, v1, s[0:3], 0 offen1960; CI-NEXT: v_add_i32_e32 v1, vcc, 0x84, v01961; CI-NEXT: v_add_i32_e32 v0, vcc, 0x80, v01962; CI-NEXT: buffer_store_dword v30, v1, s[0:3], 0 offen1963; CI-NEXT: buffer_store_dword v29, v0, s[0:3], 0 offen1964; CI-NEXT: s_waitcnt vmcnt(0)1965; CI-NEXT: s_setpc_b64 s[30:31]1966;1967; GFX8-LABEL: struct_i32_v32i32_func_void:1968; GFX8: ; %bb.0:1969; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1970; GFX8-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x01971; GFX8-NEXT: s_mov_b32 s7, 0xf0001972; GFX8-NEXT: s_mov_b32 s6, -11973; GFX8-NEXT: s_waitcnt lgkmcnt(0)1974; GFX8-NEXT: buffer_load_dword v33, off, s[4:7], 01975; GFX8-NEXT: buffer_load_dwordx4 v[1:4], off, s[4:7], 0 offset:2401976; GFX8-NEXT: buffer_load_dwordx4 v[5:8], off, s[4:7], 0 offset:2241977; GFX8-NEXT: buffer_load_dwordx4 v[9:12], off, s[4:7], 0 offset:2081978; GFX8-NEXT: buffer_load_dwordx4 v[13:16], off, s[4:7], 0 offset:1921979; GFX8-NEXT: buffer_load_dwordx4 v[17:20], off, s[4:7], 0 offset:1761980; GFX8-NEXT: buffer_load_dwordx4 v[21:24], off, s[4:7], 0 offset:1601981; GFX8-NEXT: buffer_load_dwordx4 v[25:28], off, s[4:7], 0 offset:1441982; GFX8-NEXT: buffer_load_dwordx4 v[29:32], off, s[4:7], 0 offset:1281983; GFX8-NEXT: s_waitcnt vmcnt(8)1984; GFX8-NEXT: buffer_store_dword v33, v0, s[0:3], 0 offen1985; GFX8-NEXT: v_add_u32_e32 v33, vcc, 0xfc, v01986; GFX8-NEXT: s_waitcnt vmcnt(8)1987; GFX8-NEXT: buffer_store_dword v4, v33, s[0:3], 0 offen1988; GFX8-NEXT: v_add_u32_e32 v4, vcc, 0xf8, v01989; GFX8-NEXT: buffer_store_dword v3, v4, s[0:3], 0 offen1990; GFX8-NEXT: v_add_u32_e32 v3, vcc, 0xf4, v01991; GFX8-NEXT: buffer_store_dword v2, v3, s[0:3], 0 offen1992; GFX8-NEXT: v_add_u32_e32 v2, vcc, 0xf0, v01993; GFX8-NEXT: buffer_store_dword v1, v2, s[0:3], 0 offen1994; GFX8-NEXT: v_add_u32_e32 v1, vcc, 0xec, v01995; GFX8-NEXT: v_add_u32_e32 v2, vcc, 0xe8, v01996; GFX8-NEXT: v_add_u32_e32 v3, vcc, 0xe4, v01997; GFX8-NEXT: s_waitcnt vmcnt(11)1998; GFX8-NEXT: buffer_store_dword v8, v1, s[0:3], 0 offen1999; GFX8-NEXT: v_add_u32_e32 v1, vcc, 0xe0, v02000; GFX8-NEXT: buffer_store_dword v7, v2, s[0:3], 0 offen2001; GFX8-NEXT: v_add_u32_e32 v2, vcc, 0xdc, v02002; GFX8-NEXT: buffer_store_dword v6, v3, s[0:3], 0 offen2003; GFX8-NEXT: v_add_u32_e32 v3, vcc, 0xd8, v02004; GFX8-NEXT: buffer_store_dword v5, v1, s[0:3], 0 offen2005; GFX8-NEXT: v_add_u32_e32 v1, vcc, 0xd4, v02006; GFX8-NEXT: v_add_u32_e32 v4, vcc, 0xd0, v02007; GFX8-NEXT: v_add_u32_e32 v5, vcc, 0xcc, v02008; GFX8-NEXT: v_add_u32_e32 v6, vcc, 0xc8, v02009; GFX8-NEXT: s_waitcnt vmcnt(14)2010; GFX8-NEXT: buffer_store_dword v12, v2, s[0:3], 0 offen2011; GFX8-NEXT: buffer_store_dword v11, v3, s[0:3], 0 offen2012; GFX8-NEXT: buffer_store_dword v10, v1, s[0:3], 0 offen2013; GFX8-NEXT: v_add_u32_e32 v1, vcc, 0xb8, v02014; GFX8-NEXT: v_add_u32_e32 v7, vcc, 0xc4, v02015; GFX8-NEXT: v_add_u32_e32 v2, vcc, 0xc0, v02016; GFX8-NEXT: v_add_u32_e32 v3, vcc, 0xbc, v02017; GFX8-NEXT: buffer_store_dword v9, v4, s[0:3], 0 offen2018; GFX8-NEXT: v_add_u32_e32 v4, vcc, 0xb4, v02019; GFX8-NEXT: v_add_u32_e32 v8, vcc, 0xb0, v02020; GFX8-NEXT: v_add_u32_e32 v9, vcc, 0xac, v02021; GFX8-NEXT: v_add_u32_e32 v10, vcc, 0xa8, v02022; GFX8-NEXT: v_add_u32_e32 v11, vcc, 0xa4, v02023; GFX8-NEXT: s_waitcnt vmcnt(14)2024; GFX8-NEXT: buffer_store_dword v16, v5, s[0:3], 0 offen2025; GFX8-NEXT: v_add_u32_e32 v5, vcc, 0xa0, v02026; GFX8-NEXT: buffer_store_dword v15, v6, s[0:3], 0 offen2027; GFX8-NEXT: buffer_store_dword v14, v7, s[0:3], 0 offen2028; GFX8-NEXT: buffer_store_dword v13, v2, s[0:3], 0 offen2029; GFX8-NEXT: buffer_store_dword v20, v3, s[0:3], 0 offen2030; GFX8-NEXT: buffer_store_dword v19, v1, s[0:3], 0 offen2031; GFX8-NEXT: buffer_store_dword v18, v4, s[0:3], 0 offen2032; GFX8-NEXT: buffer_store_dword v17, v8, s[0:3], 0 offen2033; GFX8-NEXT: buffer_store_dword v24, v9, s[0:3], 0 offen2034; GFX8-NEXT: buffer_store_dword v23, v10, s[0:3], 0 offen2035; GFX8-NEXT: buffer_store_dword v22, v11, s[0:3], 0 offen2036; GFX8-NEXT: buffer_store_dword v21, v5, s[0:3], 0 offen2037; GFX8-NEXT: v_add_u32_e32 v1, vcc, 0x9c, v02038; GFX8-NEXT: buffer_store_dword v28, v1, s[0:3], 0 offen2039; GFX8-NEXT: v_add_u32_e32 v1, vcc, 0x98, v02040; GFX8-NEXT: buffer_store_dword v27, v1, s[0:3], 0 offen2041; GFX8-NEXT: v_add_u32_e32 v1, vcc, 0x94, v02042; GFX8-NEXT: buffer_store_dword v26, v1, s[0:3], 0 offen2043; GFX8-NEXT: v_add_u32_e32 v1, vcc, 0x90, v02044; GFX8-NEXT: buffer_store_dword v25, v1, s[0:3], 0 offen2045; GFX8-NEXT: v_add_u32_e32 v1, vcc, 0x8c, v02046; GFX8-NEXT: s_waitcnt vmcnt(14)2047; GFX8-NEXT: buffer_store_dword v32, v1, s[0:3], 0 offen2048; GFX8-NEXT: v_add_u32_e32 v1, vcc, 0x88, v02049; GFX8-NEXT: buffer_store_dword v31, v1, s[0:3], 0 offen2050; GFX8-NEXT: v_add_u32_e32 v1, vcc, 0x84, v02051; GFX8-NEXT: v_add_u32_e32 v0, vcc, 0x80, v02052; GFX8-NEXT: buffer_store_dword v30, v1, s[0:3], 0 offen2053; GFX8-NEXT: buffer_store_dword v29, v0, s[0:3], 0 offen2054; GFX8-NEXT: s_waitcnt vmcnt(0)2055; GFX8-NEXT: s_setpc_b64 s[30:31]2056;2057; GFX9-LABEL: struct_i32_v32i32_func_void:2058; GFX9: ; %bb.0:2059; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2060; GFX9-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x02061; GFX9-NEXT: s_mov_b32 s7, 0xf0002062; GFX9-NEXT: s_mov_b32 s6, -12063; GFX9-NEXT: s_waitcnt lgkmcnt(0)2064; GFX9-NEXT: buffer_load_dwordx4 v[1:4], off, s[4:7], 0 offset:2402065; GFX9-NEXT: buffer_load_dwordx4 v[5:8], off, s[4:7], 0 offset:2242066; GFX9-NEXT: buffer_load_dwordx4 v[9:12], off, s[4:7], 0 offset:2082067; GFX9-NEXT: buffer_load_dwordx4 v[13:16], off, s[4:7], 0 offset:1922068; GFX9-NEXT: buffer_load_dword v33, off, s[4:7], 02069; GFX9-NEXT: buffer_load_dwordx4 v[17:20], off, s[4:7], 0 offset:1762070; GFX9-NEXT: buffer_load_dwordx4 v[21:24], off, s[4:7], 0 offset:1602071; GFX9-NEXT: buffer_load_dwordx4 v[25:28], off, s[4:7], 0 offset:1442072; GFX9-NEXT: buffer_load_dwordx4 v[29:32], off, s[4:7], 0 offset:1282073; GFX9-NEXT: s_waitcnt vmcnt(8)2074; GFX9-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:2522075; GFX9-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:2482076; GFX9-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:2442077; GFX9-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen offset:2402078; GFX9-NEXT: s_waitcnt vmcnt(11)2079; GFX9-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:2362080; GFX9-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:2322081; GFX9-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:2282082; GFX9-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:2242083; GFX9-NEXT: s_waitcnt vmcnt(14)2084; GFX9-NEXT: buffer_store_dword v12, v0, s[0:3], 0 offen offset:2202085; GFX9-NEXT: buffer_store_dword v11, v0, s[0:3], 0 offen offset:2162086; GFX9-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:2122087; GFX9-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:2082088; GFX9-NEXT: s_waitcnt vmcnt(17)2089; GFX9-NEXT: buffer_store_dword v16, v0, s[0:3], 0 offen offset:2042090; GFX9-NEXT: buffer_store_dword v15, v0, s[0:3], 0 offen offset:2002091; GFX9-NEXT: buffer_store_dword v14, v0, s[0:3], 0 offen offset:1962092; GFX9-NEXT: buffer_store_dword v13, v0, s[0:3], 0 offen offset:1922093; GFX9-NEXT: s_waitcnt vmcnt(20)2094; GFX9-NEXT: buffer_store_dword v33, v0, s[0:3], 0 offen2095; GFX9-NEXT: s_waitcnt vmcnt(20)2096; GFX9-NEXT: buffer_store_dword v20, v0, s[0:3], 0 offen offset:1882097; GFX9-NEXT: buffer_store_dword v19, v0, s[0:3], 0 offen offset:1842098; GFX9-NEXT: buffer_store_dword v18, v0, s[0:3], 0 offen offset:1802099; GFX9-NEXT: buffer_store_dword v17, v0, s[0:3], 0 offen offset:1762100; GFX9-NEXT: s_waitcnt vmcnt(23)2101; GFX9-NEXT: buffer_store_dword v24, v0, s[0:3], 0 offen offset:1722102; GFX9-NEXT: buffer_store_dword v23, v0, s[0:3], 0 offen offset:1682103; GFX9-NEXT: buffer_store_dword v22, v0, s[0:3], 0 offen offset:1642104; GFX9-NEXT: buffer_store_dword v21, v0, s[0:3], 0 offen offset:1602105; GFX9-NEXT: s_waitcnt vmcnt(26)2106; GFX9-NEXT: buffer_store_dword v28, v0, s[0:3], 0 offen offset:1562107; GFX9-NEXT: buffer_store_dword v27, v0, s[0:3], 0 offen offset:1522108; GFX9-NEXT: buffer_store_dword v26, v0, s[0:3], 0 offen offset:1482109; GFX9-NEXT: buffer_store_dword v25, v0, s[0:3], 0 offen offset:1442110; GFX9-NEXT: s_waitcnt vmcnt(29)2111; GFX9-NEXT: buffer_store_dword v32, v0, s[0:3], 0 offen offset:1402112; GFX9-NEXT: buffer_store_dword v31, v0, s[0:3], 0 offen offset:1362113; GFX9-NEXT: buffer_store_dword v30, v0, s[0:3], 0 offen offset:1322114; GFX9-NEXT: buffer_store_dword v29, v0, s[0:3], 0 offen offset:1282115; GFX9-NEXT: s_waitcnt vmcnt(0)2116; GFX9-NEXT: s_setpc_b64 s[30:31]2117;2118; GFX11-LABEL: struct_i32_v32i32_func_void:2119; GFX11: ; %bb.0:2120; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2121; GFX11-NEXT: s_load_b64 s[0:1], s[0:1], 0x02122; GFX11-NEXT: s_mov_b32 s3, 0x310160002123; GFX11-NEXT: s_mov_b32 s2, -12124; GFX11-NEXT: s_waitcnt lgkmcnt(0)2125; GFX11-NEXT: s_clause 0x82126; GFX11-NEXT: buffer_load_b128 v[1:4], off, s[0:3], 0 offset:2402127; GFX11-NEXT: buffer_load_b128 v[5:8], off, s[0:3], 0 offset:2242128; GFX11-NEXT: buffer_load_b128 v[9:12], off, s[0:3], 0 offset:2082129; GFX11-NEXT: buffer_load_b128 v[13:16], off, s[0:3], 0 offset:1922130; GFX11-NEXT: buffer_load_b128 v[17:20], off, s[0:3], 0 offset:1762131; GFX11-NEXT: buffer_load_b128 v[21:24], off, s[0:3], 0 offset:1602132; GFX11-NEXT: buffer_load_b128 v[25:28], off, s[0:3], 0 offset:1442133; GFX11-NEXT: buffer_load_b128 v[29:32], off, s[0:3], 0 offset:1282134; GFX11-NEXT: buffer_load_b32 v33, off, s[0:3], 02135; GFX11-NEXT: s_waitcnt vmcnt(8)2136; GFX11-NEXT: scratch_store_b128 v0, v[1:4], off offset:2402137; GFX11-NEXT: s_waitcnt vmcnt(7)2138; GFX11-NEXT: scratch_store_b128 v0, v[5:8], off offset:2242139; GFX11-NEXT: s_waitcnt vmcnt(6)2140; GFX11-NEXT: scratch_store_b128 v0, v[9:12], off offset:2082141; GFX11-NEXT: s_waitcnt vmcnt(5)2142; GFX11-NEXT: scratch_store_b128 v0, v[13:16], off offset:1922143; GFX11-NEXT: s_waitcnt vmcnt(4)2144; GFX11-NEXT: scratch_store_b128 v0, v[17:20], off offset:1762145; GFX11-NEXT: s_waitcnt vmcnt(3)2146; GFX11-NEXT: scratch_store_b128 v0, v[21:24], off offset:1602147; GFX11-NEXT: s_waitcnt vmcnt(2)2148; GFX11-NEXT: scratch_store_b128 v0, v[25:28], off offset:1442149; GFX11-NEXT: s_waitcnt vmcnt(1)2150; GFX11-NEXT: scratch_store_b128 v0, v[29:32], off offset:1282151; GFX11-NEXT: s_waitcnt vmcnt(0)2152; GFX11-NEXT: scratch_store_b32 v0, v33, off2153; GFX11-NEXT: s_setpc_b64 s[30:31]2154 %ptr = load volatile ptr addrspace(1), ptr addrspace(4) poison2155 %val = load { i32, <32 x i32> }, ptr addrspace(1) %ptr2156 ret { i32, <32 x i32> }%val2157}2158 2159; Make sure the last struct component is returned in v3, not v4.2160define { <3 x i32>, i32 } @v3i32_struct_func_void_wasted_reg() #0 {2161; CI-LABEL: v3i32_struct_func_void_wasted_reg:2162; CI: ; %bb.0:2163; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2164; CI-NEXT: s_mov_b32 m0, -12165; CI-NEXT: ds_read_b32 v0, v02166; CI-NEXT: s_waitcnt lgkmcnt(0)2167; CI-NEXT: ds_read_b32 v1, v02168; CI-NEXT: ds_read_b32 v2, v02169; CI-NEXT: ds_read_b32 v3, v02170; CI-NEXT: s_waitcnt lgkmcnt(0)2171; CI-NEXT: s_setpc_b64 s[30:31]2172;2173; GFX8-LABEL: v3i32_struct_func_void_wasted_reg:2174; GFX8: ; %bb.0:2175; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2176; GFX8-NEXT: s_mov_b32 m0, -12177; GFX8-NEXT: ds_read_b32 v0, v02178; GFX8-NEXT: s_waitcnt lgkmcnt(0)2179; GFX8-NEXT: ds_read_b32 v1, v02180; GFX8-NEXT: ds_read_b32 v2, v02181; GFX8-NEXT: ds_read_b32 v3, v02182; GFX8-NEXT: s_waitcnt lgkmcnt(0)2183; GFX8-NEXT: s_setpc_b64 s[30:31]2184;2185; GFX9-LABEL: v3i32_struct_func_void_wasted_reg:2186; GFX9: ; %bb.0:2187; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2188; GFX9-NEXT: ds_read_b32 v0, v02189; GFX9-NEXT: s_waitcnt lgkmcnt(0)2190; GFX9-NEXT: ds_read_b32 v1, v02191; GFX9-NEXT: ds_read_b32 v2, v02192; GFX9-NEXT: ds_read_b32 v3, v02193; GFX9-NEXT: s_waitcnt lgkmcnt(0)2194; GFX9-NEXT: s_setpc_b64 s[30:31]2195;2196; GFX11-LABEL: v3i32_struct_func_void_wasted_reg:2197; GFX11: ; %bb.0:2198; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2199; GFX11-NEXT: ds_load_b32 v0, v02200; GFX11-NEXT: s_waitcnt lgkmcnt(0)2201; GFX11-NEXT: ds_load_b32 v1, v02202; GFX11-NEXT: ds_load_b32 v2, v02203; GFX11-NEXT: ds_load_b32 v3, v02204; GFX11-NEXT: s_waitcnt lgkmcnt(0)2205; GFX11-NEXT: s_setpc_b64 s[30:31]2206 %load0 = load volatile i32, ptr addrspace(3) poison2207 %load1 = load volatile i32, ptr addrspace(3) poison2208 %load2 = load volatile i32, ptr addrspace(3) poison2209 %load3 = load volatile i32, ptr addrspace(3) poison2210 2211 %insert.0 = insertelement <3 x i32> poison, i32 %load0, i32 02212 %insert.1 = insertelement <3 x i32> %insert.0, i32 %load1, i32 12213 %insert.2 = insertelement <3 x i32> %insert.1, i32 %load2, i32 22214 %insert.3 = insertvalue { <3 x i32>, i32 } poison, <3 x i32> %insert.2, 02215 %insert.4 = insertvalue { <3 x i32>, i32 } %insert.3, i32 %load3, 12216 ret { <3 x i32>, i32 } %insert.42217}2218 2219define { <3 x float>, i32 } @v3f32_struct_func_void_wasted_reg() #0 {2220; CI-LABEL: v3f32_struct_func_void_wasted_reg:2221; CI: ; %bb.0:2222; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2223; CI-NEXT: s_mov_b32 m0, -12224; CI-NEXT: ds_read_b32 v0, v02225; CI-NEXT: s_waitcnt lgkmcnt(0)2226; CI-NEXT: ds_read_b32 v1, v02227; CI-NEXT: ds_read_b32 v2, v02228; CI-NEXT: ds_read_b32 v3, v02229; CI-NEXT: s_waitcnt lgkmcnt(0)2230; CI-NEXT: s_setpc_b64 s[30:31]2231;2232; GFX8-LABEL: v3f32_struct_func_void_wasted_reg:2233; GFX8: ; %bb.0:2234; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2235; GFX8-NEXT: s_mov_b32 m0, -12236; GFX8-NEXT: ds_read_b32 v0, v02237; GFX8-NEXT: s_waitcnt lgkmcnt(0)2238; GFX8-NEXT: ds_read_b32 v1, v02239; GFX8-NEXT: ds_read_b32 v2, v02240; GFX8-NEXT: ds_read_b32 v3, v02241; GFX8-NEXT: s_waitcnt lgkmcnt(0)2242; GFX8-NEXT: s_setpc_b64 s[30:31]2243;2244; GFX9-LABEL: v3f32_struct_func_void_wasted_reg:2245; GFX9: ; %bb.0:2246; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2247; GFX9-NEXT: ds_read_b32 v0, v02248; GFX9-NEXT: s_waitcnt lgkmcnt(0)2249; GFX9-NEXT: ds_read_b32 v1, v02250; GFX9-NEXT: ds_read_b32 v2, v02251; GFX9-NEXT: ds_read_b32 v3, v02252; GFX9-NEXT: s_waitcnt lgkmcnt(0)2253; GFX9-NEXT: s_setpc_b64 s[30:31]2254;2255; GFX11-LABEL: v3f32_struct_func_void_wasted_reg:2256; GFX11: ; %bb.0:2257; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2258; GFX11-NEXT: ds_load_b32 v0, v02259; GFX11-NEXT: s_waitcnt lgkmcnt(0)2260; GFX11-NEXT: ds_load_b32 v1, v02261; GFX11-NEXT: ds_load_b32 v2, v02262; GFX11-NEXT: ds_load_b32 v3, v02263; GFX11-NEXT: s_waitcnt lgkmcnt(0)2264; GFX11-NEXT: s_setpc_b64 s[30:31]2265 %load0 = load volatile float, ptr addrspace(3) poison2266 %load1 = load volatile float, ptr addrspace(3) poison2267 %load2 = load volatile float, ptr addrspace(3) poison2268 %load3 = load volatile i32, ptr addrspace(3) poison2269 2270 %insert.0 = insertelement <3 x float> poison, float %load0, i32 02271 %insert.1 = insertelement <3 x float> %insert.0, float %load1, i32 12272 %insert.2 = insertelement <3 x float> %insert.1, float %load2, i32 22273 %insert.3 = insertvalue { <3 x float>, i32 } poison, <3 x float> %insert.2, 02274 %insert.4 = insertvalue { <3 x float>, i32 } %insert.3, i32 %load3, 12275 ret { <3 x float>, i32 } %insert.42276}2277 2278define void @void_func_sret_max_known_zero_bits(ptr addrspace(5) sret(i8) %arg0) #0 {2279; CI-LABEL: void_func_sret_max_known_zero_bits:2280; CI: ; %bb.0:2281; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2282; CI-NEXT: v_lshrrev_b32_e32 v0, 16, v02283; CI-NEXT: s_mov_b32 m0, -12284; CI-NEXT: ds_write_b32 v0, v02285; CI-NEXT: v_mov_b32_e32 v0, 02286; CI-NEXT: ds_write_b32 v0, v02287; CI-NEXT: ds_write_b32 v0, v02288; CI-NEXT: s_waitcnt lgkmcnt(0)2289; CI-NEXT: s_setpc_b64 s[30:31]2290;2291; GFX8-LABEL: void_func_sret_max_known_zero_bits:2292; GFX8: ; %bb.0:2293; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2294; GFX8-NEXT: v_lshrrev_b32_e32 v0, 16, v02295; GFX8-NEXT: s_mov_b32 m0, -12296; GFX8-NEXT: ds_write_b32 v0, v02297; GFX8-NEXT: v_mov_b32_e32 v0, 02298; GFX8-NEXT: ds_write_b32 v0, v02299; GFX8-NEXT: ds_write_b32 v0, v02300; GFX8-NEXT: s_waitcnt lgkmcnt(0)2301; GFX8-NEXT: s_setpc_b64 s[30:31]2302;2303; GFX9-LABEL: void_func_sret_max_known_zero_bits:2304; GFX9: ; %bb.0:2305; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2306; GFX9-NEXT: v_lshrrev_b32_e32 v0, 16, v02307; GFX9-NEXT: ds_write_b32 v0, v02308; GFX9-NEXT: v_mov_b32_e32 v0, 02309; GFX9-NEXT: ds_write_b32 v0, v02310; GFX9-NEXT: ds_write_b32 v0, v02311; GFX9-NEXT: s_waitcnt lgkmcnt(0)2312; GFX9-NEXT: s_setpc_b64 s[30:31]2313;2314; GFX11-TRUE16-LABEL: void_func_sret_max_known_zero_bits:2315; GFX11-TRUE16: ; %bb.0:2316; GFX11-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2317; GFX11-TRUE16-NEXT: v_mov_b16_e32 v1.h, 02318; GFX11-TRUE16-NEXT: v_mov_b16_e32 v1.l, v0.h2319; GFX11-TRUE16-NEXT: v_lshrrev_b32_e32 v0, 17, v02320; GFX11-TRUE16-NEXT: v_mov_b32_e32 v2, 02321; GFX11-TRUE16-NEXT: ds_store_b32 v0, v12322; GFX11-TRUE16-NEXT: ds_store_b32 v0, v02323; GFX11-TRUE16-NEXT: ds_store_b32 v0, v22324; GFX11-TRUE16-NEXT: s_waitcnt lgkmcnt(0)2325; GFX11-TRUE16-NEXT: s_setpc_b64 s[30:31]2326;2327; GFX11-FAKE16-LABEL: void_func_sret_max_known_zero_bits:2328; GFX11-FAKE16: ; %bb.0:2329; GFX11-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2330; GFX11-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v02331; GFX11-FAKE16-NEXT: v_lshrrev_b32_e32 v0, 17, v02332; GFX11-FAKE16-NEXT: v_mov_b32_e32 v2, 02333; GFX11-FAKE16-NEXT: ds_store_b32 v0, v12334; GFX11-FAKE16-NEXT: ds_store_b32 v0, v02335; GFX11-FAKE16-NEXT: ds_store_b32 v0, v22336; GFX11-FAKE16-NEXT: s_waitcnt lgkmcnt(0)2337; GFX11-FAKE16-NEXT: s_setpc_b64 s[30:31]2338 %arg0.int = ptrtoint ptr addrspace(5) %arg0 to i322339 2340 %lshr0 = lshr i32 %arg0.int, 162341 %lshr1 = lshr i32 %arg0.int, 172342 %lshr2 = lshr i32 %arg0.int, 182343 2344 store volatile i32 %lshr0, ptr addrspace(3) poison2345 store volatile i32 %lshr1, ptr addrspace(3) poison2346 store volatile i32 %lshr2, ptr addrspace(3) poison2347 ret void2348}2349 2350define bfloat @bf16_func_void() #0 {2351; CI-LABEL: bf16_func_void:2352; CI: ; %bb.0:2353; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2354; CI-NEXT: s_mov_b32 s7, 0xf0002355; CI-NEXT: s_mov_b32 s6, -12356; CI-NEXT: buffer_load_ushort v0, off, s[4:7], 02357; CI-NEXT: s_waitcnt vmcnt(0)2358; CI-NEXT: v_lshlrev_b32_e32 v0, 16, v02359; CI-NEXT: s_setpc_b64 s[30:31]2360;2361; GFX89-LABEL: bf16_func_void:2362; GFX89: ; %bb.0:2363; GFX89-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2364; GFX89-NEXT: s_mov_b32 s7, 0xf0002365; GFX89-NEXT: s_mov_b32 s6, -12366; GFX89-NEXT: buffer_load_ushort v0, off, s[4:7], 02367; GFX89-NEXT: s_waitcnt vmcnt(0)2368; GFX89-NEXT: s_setpc_b64 s[30:31]2369;2370; GFX11-LABEL: bf16_func_void:2371; GFX11: ; %bb.0:2372; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2373; GFX11-NEXT: s_mov_b32 s3, 0x310160002374; GFX11-NEXT: s_mov_b32 s2, -12375; GFX11-NEXT: buffer_load_u16 v0, off, s[0:3], 02376; GFX11-NEXT: s_waitcnt vmcnt(0)2377; GFX11-NEXT: s_setpc_b64 s[30:31]2378 %val = load bfloat, ptr addrspace(1) poison2379 ret bfloat %val2380}2381 2382define <2 x bfloat> @v2bf16_func_void() #0 {2383; CI-LABEL: v2bf16_func_void:2384; CI: ; %bb.0:2385; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2386; CI-NEXT: s_mov_b32 s7, 0xf0002387; CI-NEXT: s_mov_b32 s6, -12388; CI-NEXT: buffer_load_dword v1, off, s[4:7], 02389; CI-NEXT: s_waitcnt vmcnt(0)2390; CI-NEXT: v_lshlrev_b32_e32 v0, 16, v12391; CI-NEXT: v_and_b32_e32 v1, 0xffff0000, v12392; CI-NEXT: s_setpc_b64 s[30:31]2393;2394; GFX89-LABEL: v2bf16_func_void:2395; GFX89: ; %bb.0:2396; GFX89-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2397; GFX89-NEXT: s_mov_b32 s7, 0xf0002398; GFX89-NEXT: s_mov_b32 s6, -12399; GFX89-NEXT: buffer_load_dword v0, off, s[4:7], 02400; GFX89-NEXT: s_waitcnt vmcnt(0)2401; GFX89-NEXT: s_setpc_b64 s[30:31]2402;2403; GFX11-LABEL: v2bf16_func_void:2404; GFX11: ; %bb.0:2405; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2406; GFX11-NEXT: s_mov_b32 s3, 0x310160002407; GFX11-NEXT: s_mov_b32 s2, -12408; GFX11-NEXT: buffer_load_b32 v0, off, s[0:3], 02409; GFX11-NEXT: s_waitcnt vmcnt(0)2410; GFX11-NEXT: s_setpc_b64 s[30:31]2411 %val = load <2 x bfloat>, ptr addrspace(1) poison2412 ret <2 x bfloat> %val2413}2414 2415define <3 x bfloat> @v3bf16_func_void() #0 {2416; CI-LABEL: v3bf16_func_void:2417; CI: ; %bb.0:2418; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2419; CI-NEXT: s_mov_b32 s7, 0xf0002420; CI-NEXT: s_mov_b32 s6, -12421; CI-NEXT: buffer_load_dwordx2 v[1:2], off, s[4:7], 02422; CI-NEXT: s_waitcnt vmcnt(0)2423; CI-NEXT: v_lshlrev_b32_e32 v0, 16, v12424; CI-NEXT: v_and_b32_e32 v1, 0xffff0000, v12425; CI-NEXT: v_lshlrev_b32_e32 v2, 16, v22426; CI-NEXT: s_setpc_b64 s[30:31]2427;2428; GFX89-LABEL: v3bf16_func_void:2429; GFX89: ; %bb.0:2430; GFX89-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2431; GFX89-NEXT: s_mov_b32 s7, 0xf0002432; GFX89-NEXT: s_mov_b32 s6, -12433; GFX89-NEXT: buffer_load_dwordx2 v[0:1], off, s[4:7], 02434; GFX89-NEXT: s_waitcnt vmcnt(0)2435; GFX89-NEXT: s_setpc_b64 s[30:31]2436;2437; GFX11-LABEL: v3bf16_func_void:2438; GFX11: ; %bb.0:2439; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2440; GFX11-NEXT: s_mov_b32 s3, 0x310160002441; GFX11-NEXT: s_mov_b32 s2, -12442; GFX11-NEXT: buffer_load_b64 v[0:1], off, s[0:3], 02443; GFX11-NEXT: s_waitcnt vmcnt(0)2444; GFX11-NEXT: s_setpc_b64 s[30:31]2445 %val = load <3 x bfloat>, ptr addrspace(1) poison2446 ret <3 x bfloat> %val2447}2448 2449define <4 x bfloat> @v4bf16_func_void() #0 {2450; CI-LABEL: v4bf16_func_void:2451; CI: ; %bb.0:2452; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2453; CI-NEXT: s_mov_b32 s7, 0xf0002454; CI-NEXT: s_mov_b32 s6, -12455; CI-NEXT: buffer_load_dwordx2 v[2:3], off, s[4:7], 02456; CI-NEXT: s_waitcnt vmcnt(0)2457; CI-NEXT: v_lshlrev_b32_e32 v0, 16, v22458; CI-NEXT: v_and_b32_e32 v1, 0xffff0000, v22459; CI-NEXT: v_lshlrev_b32_e32 v2, 16, v32460; CI-NEXT: v_and_b32_e32 v3, 0xffff0000, v32461; CI-NEXT: s_setpc_b64 s[30:31]2462;2463; GFX89-LABEL: v4bf16_func_void:2464; GFX89: ; %bb.0:2465; GFX89-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2466; GFX89-NEXT: s_mov_b32 s7, 0xf0002467; GFX89-NEXT: s_mov_b32 s6, -12468; GFX89-NEXT: buffer_load_dwordx2 v[0:1], off, s[4:7], 02469; GFX89-NEXT: s_waitcnt vmcnt(0)2470; GFX89-NEXT: s_setpc_b64 s[30:31]2471;2472; GFX11-LABEL: v4bf16_func_void:2473; GFX11: ; %bb.0:2474; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2475; GFX11-NEXT: s_mov_b32 s3, 0x310160002476; GFX11-NEXT: s_mov_b32 s2, -12477; GFX11-NEXT: buffer_load_b64 v[0:1], off, s[0:3], 02478; GFX11-NEXT: s_waitcnt vmcnt(0)2479; GFX11-NEXT: s_setpc_b64 s[30:31]2480 %val = load <4 x bfloat>, ptr addrspace(1) poison2481 ret <4 x bfloat> %val2482}2483 2484define <6 x bfloat> @v6bf16_func_void() #0 {2485; CI-LABEL: v6bf16_func_void:2486; CI: ; %bb.0:2487; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2488; CI-NEXT: s_mov_b32 s7, 0xf0002489; CI-NEXT: s_mov_b32 s6, -12490; CI-NEXT: buffer_load_dwordx3 v[3:5], off, s[4:7], 02491; CI-NEXT: s_waitcnt vmcnt(0)2492; CI-NEXT: v_lshlrev_b32_e32 v0, 16, v32493; CI-NEXT: v_and_b32_e32 v1, 0xffff0000, v32494; CI-NEXT: v_lshlrev_b32_e32 v2, 16, v42495; CI-NEXT: v_and_b32_e32 v3, 0xffff0000, v42496; CI-NEXT: v_lshlrev_b32_e32 v4, 16, v52497; CI-NEXT: v_and_b32_e32 v5, 0xffff0000, v52498; CI-NEXT: s_setpc_b64 s[30:31]2499;2500; GFX89-LABEL: v6bf16_func_void:2501; GFX89: ; %bb.0:2502; GFX89-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2503; GFX89-NEXT: s_mov_b32 s7, 0xf0002504; GFX89-NEXT: s_mov_b32 s6, -12505; GFX89-NEXT: buffer_load_dwordx3 v[0:2], off, s[4:7], 02506; GFX89-NEXT: s_waitcnt vmcnt(0)2507; GFX89-NEXT: s_setpc_b64 s[30:31]2508;2509; GFX11-LABEL: v6bf16_func_void:2510; GFX11: ; %bb.0:2511; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2512; GFX11-NEXT: s_mov_b32 s3, 0x310160002513; GFX11-NEXT: s_mov_b32 s2, -12514; GFX11-NEXT: buffer_load_b96 v[0:2], off, s[0:3], 02515; GFX11-NEXT: s_waitcnt vmcnt(0)2516; GFX11-NEXT: s_setpc_b64 s[30:31]2517 %val = load <6 x bfloat>, ptr addrspace(1) poison2518 ret <6 x bfloat> %val2519}2520 2521define <8 x bfloat> @v8bf16_func_void() #0 {2522; CI-LABEL: v8bf16_func_void:2523; CI: ; %bb.0:2524; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2525; CI-NEXT: s_mov_b32 s7, 0xf0002526; CI-NEXT: s_mov_b32 s6, -12527; CI-NEXT: buffer_load_dwordx4 v[4:7], off, s[4:7], 02528; CI-NEXT: s_waitcnt vmcnt(0)2529; CI-NEXT: v_lshlrev_b32_e32 v0, 16, v42530; CI-NEXT: v_and_b32_e32 v1, 0xffff0000, v42531; CI-NEXT: v_lshlrev_b32_e32 v2, 16, v52532; CI-NEXT: v_and_b32_e32 v3, 0xffff0000, v52533; CI-NEXT: v_lshlrev_b32_e32 v4, 16, v62534; CI-NEXT: v_and_b32_e32 v5, 0xffff0000, v62535; CI-NEXT: v_lshlrev_b32_e32 v6, 16, v72536; CI-NEXT: v_and_b32_e32 v7, 0xffff0000, v72537; CI-NEXT: s_setpc_b64 s[30:31]2538;2539; GFX89-LABEL: v8bf16_func_void:2540; GFX89: ; %bb.0:2541; GFX89-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2542; GFX89-NEXT: s_mov_b32 s7, 0xf0002543; GFX89-NEXT: s_mov_b32 s6, -12544; GFX89-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 02545; GFX89-NEXT: s_waitcnt vmcnt(0)2546; GFX89-NEXT: s_setpc_b64 s[30:31]2547;2548; GFX11-LABEL: v8bf16_func_void:2549; GFX11: ; %bb.0:2550; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2551; GFX11-NEXT: s_mov_b32 s3, 0x310160002552; GFX11-NEXT: s_mov_b32 s2, -12553; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 02554; GFX11-NEXT: s_waitcnt vmcnt(0)2555; GFX11-NEXT: s_setpc_b64 s[30:31]2556 %val = load <8 x bfloat>, ptr addrspace(1) poison2557 ret <8 x bfloat> %val2558}2559 2560define <16 x bfloat> @v16bf16_func_void() #0 {2561; CI-LABEL: v16bf16_func_void:2562; CI: ; %bb.0:2563; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2564; CI-NEXT: s_mov_b32 s7, 0xf0002565; CI-NEXT: s_mov_b32 s6, -12566; CI-NEXT: buffer_load_dwordx4 v[4:7], off, s[4:7], 02567; CI-NEXT: s_waitcnt vmcnt(0)2568; CI-NEXT: v_lshlrev_b32_e32 v0, 16, v42569; CI-NEXT: v_and_b32_e32 v1, 0xffff0000, v42570; CI-NEXT: v_lshlrev_b32_e32 v2, 16, v52571; CI-NEXT: v_and_b32_e32 v3, 0xffff0000, v52572; CI-NEXT: v_lshlrev_b32_e32 v4, 16, v62573; CI-NEXT: v_and_b32_e32 v5, 0xffff0000, v62574; CI-NEXT: v_lshlrev_b32_e32 v6, 16, v72575; CI-NEXT: v_and_b32_e32 v7, 0xffff0000, v72576; CI-NEXT: v_mov_b32_e32 v8, v02577; CI-NEXT: v_mov_b32_e32 v9, v12578; CI-NEXT: v_mov_b32_e32 v10, v22579; CI-NEXT: v_mov_b32_e32 v11, v32580; CI-NEXT: v_mov_b32_e32 v12, v42581; CI-NEXT: v_mov_b32_e32 v13, v52582; CI-NEXT: v_mov_b32_e32 v14, v62583; CI-NEXT: v_mov_b32_e32 v15, v72584; CI-NEXT: s_setpc_b64 s[30:31]2585;2586; GFX89-LABEL: v16bf16_func_void:2587; GFX89: ; %bb.0:2588; GFX89-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2589; GFX89-NEXT: s_mov_b32 s7, 0xf0002590; GFX89-NEXT: s_mov_b32 s6, -12591; GFX89-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 02592; GFX89-NEXT: s_waitcnt vmcnt(0)2593; GFX89-NEXT: v_mov_b32_e32 v4, v02594; GFX89-NEXT: v_mov_b32_e32 v5, v12595; GFX89-NEXT: v_mov_b32_e32 v6, v22596; GFX89-NEXT: v_mov_b32_e32 v7, v32597; GFX89-NEXT: s_setpc_b64 s[30:31]2598;2599; GFX11-LABEL: v16bf16_func_void:2600; GFX11: ; %bb.0:2601; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2602; GFX11-NEXT: s_mov_b32 s3, 0x310160002603; GFX11-NEXT: s_mov_b32 s2, -12604; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 02605; GFX11-NEXT: s_waitcnt vmcnt(0)2606; GFX11-NEXT: v_dual_mov_b32 v4, v0 :: v_dual_mov_b32 v5, v12607; GFX11-NEXT: v_dual_mov_b32 v6, v2 :: v_dual_mov_b32 v7, v32608; GFX11-NEXT: s_setpc_b64 s[30:31]2609 %val = load <16 x bfloat>, ptr addrspace(1) poison2610 ret <16 x bfloat> %val2611}2612 2613define <32 x bfloat> @v32bf16_func_void() #0 {2614; CI-LABEL: v32bf16_func_void:2615; CI: ; %bb.0:2616; CI-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2617; CI-NEXT: s_mov_b32 s7, 0xf0002618; CI-NEXT: s_mov_b32 s6, -12619; CI-NEXT: buffer_load_dwordx4 v[4:7], off, s[4:7], 02620; CI-NEXT: s_waitcnt vmcnt(0)2621; CI-NEXT: v_lshlrev_b32_e32 v0, 16, v42622; CI-NEXT: v_and_b32_e32 v1, 0xffff0000, v42623; CI-NEXT: v_lshlrev_b32_e32 v2, 16, v52624; CI-NEXT: v_and_b32_e32 v3, 0xffff0000, v52625; CI-NEXT: v_lshlrev_b32_e32 v4, 16, v62626; CI-NEXT: v_and_b32_e32 v5, 0xffff0000, v62627; CI-NEXT: v_lshlrev_b32_e32 v6, 16, v72628; CI-NEXT: v_and_b32_e32 v7, 0xffff0000, v72629; CI-NEXT: v_mov_b32_e32 v8, v02630; CI-NEXT: v_mov_b32_e32 v9, v12631; CI-NEXT: v_mov_b32_e32 v10, v22632; CI-NEXT: v_mov_b32_e32 v11, v32633; CI-NEXT: v_mov_b32_e32 v16, v02634; CI-NEXT: v_mov_b32_e32 v17, v12635; CI-NEXT: v_mov_b32_e32 v18, v22636; CI-NEXT: v_mov_b32_e32 v19, v32637; CI-NEXT: v_mov_b32_e32 v24, v02638; CI-NEXT: v_mov_b32_e32 v25, v12639; CI-NEXT: v_mov_b32_e32 v26, v22640; CI-NEXT: v_mov_b32_e32 v27, v32641; CI-NEXT: v_mov_b32_e32 v12, v42642; CI-NEXT: v_mov_b32_e32 v20, v42643; CI-NEXT: v_mov_b32_e32 v28, v42644; CI-NEXT: v_mov_b32_e32 v13, v52645; CI-NEXT: v_mov_b32_e32 v21, v52646; CI-NEXT: v_mov_b32_e32 v29, v52647; CI-NEXT: v_mov_b32_e32 v14, v62648; CI-NEXT: v_mov_b32_e32 v22, v62649; CI-NEXT: v_mov_b32_e32 v30, v62650; CI-NEXT: v_mov_b32_e32 v15, v72651; CI-NEXT: v_mov_b32_e32 v23, v72652; CI-NEXT: v_mov_b32_e32 v31, v72653; CI-NEXT: s_setpc_b64 s[30:31]2654;2655; GFX89-LABEL: v32bf16_func_void:2656; GFX89: ; %bb.0:2657; GFX89-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2658; GFX89-NEXT: s_mov_b32 s7, 0xf0002659; GFX89-NEXT: s_mov_b32 s6, -12660; GFX89-NEXT: buffer_load_dwordx4 v[0:3], off, s[4:7], 02661; GFX89-NEXT: s_waitcnt vmcnt(0)2662; GFX89-NEXT: v_mov_b32_e32 v4, v02663; GFX89-NEXT: v_mov_b32_e32 v5, v12664; GFX89-NEXT: v_mov_b32_e32 v6, v22665; GFX89-NEXT: v_mov_b32_e32 v7, v32666; GFX89-NEXT: v_mov_b32_e32 v8, v02667; GFX89-NEXT: v_mov_b32_e32 v9, v12668; GFX89-NEXT: v_mov_b32_e32 v10, v22669; GFX89-NEXT: v_mov_b32_e32 v11, v32670; GFX89-NEXT: v_mov_b32_e32 v12, v02671; GFX89-NEXT: v_mov_b32_e32 v13, v12672; GFX89-NEXT: v_mov_b32_e32 v14, v22673; GFX89-NEXT: v_mov_b32_e32 v15, v32674; GFX89-NEXT: s_setpc_b64 s[30:31]2675;2676; GFX11-LABEL: v32bf16_func_void:2677; GFX11: ; %bb.0:2678; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2679; GFX11-NEXT: s_mov_b32 s3, 0x310160002680; GFX11-NEXT: s_mov_b32 s2, -12681; GFX11-NEXT: buffer_load_b128 v[0:3], off, s[0:3], 02682; GFX11-NEXT: s_waitcnt vmcnt(0)2683; GFX11-NEXT: v_dual_mov_b32 v4, v0 :: v_dual_mov_b32 v5, v12684; GFX11-NEXT: v_dual_mov_b32 v6, v2 :: v_dual_mov_b32 v7, v32685; GFX11-NEXT: v_dual_mov_b32 v8, v0 :: v_dual_mov_b32 v9, v12686; GFX11-NEXT: v_dual_mov_b32 v10, v2 :: v_dual_mov_b32 v11, v32687; GFX11-NEXT: v_dual_mov_b32 v12, v0 :: v_dual_mov_b32 v13, v12688; GFX11-NEXT: v_dual_mov_b32 v14, v2 :: v_dual_mov_b32 v15, v32689; GFX11-NEXT: s_setpc_b64 s[30:31]2690 %val = load <32 x bfloat>, ptr addrspace(1) poison2691 ret <32 x bfloat> %val2692}2693 2694attributes #0 = { nounwind }2695