508 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx900 < %s | FileCheck --check-prefix=GFX9 %s3; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=hawaii < %s | FileCheck --check-prefix=GFX7 %s4; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=tahiti < %s | FileCheck --check-prefix=GFX6 %s5; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1010 < %s | FileCheck --check-prefix=GFX10 %s6; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1100 < %s | FileCheck --check-prefix=GFX11 %s7 8define <3 x i32> @load_lds_v3i32(ptr addrspace(3) %ptr) {9; GFX9-LABEL: load_lds_v3i32:10; GFX9: ; %bb.0:11; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12; GFX9-NEXT: ds_read_b96 v[0:2], v013; GFX9-NEXT: s_waitcnt lgkmcnt(0)14; GFX9-NEXT: s_setpc_b64 s[30:31]15;16; GFX7-LABEL: load_lds_v3i32:17; GFX7: ; %bb.0:18; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19; GFX7-NEXT: s_mov_b32 m0, -120; GFX7-NEXT: ds_read_b96 v[0:2], v021; GFX7-NEXT: s_waitcnt lgkmcnt(0)22; GFX7-NEXT: s_setpc_b64 s[30:31]23;24; GFX6-LABEL: load_lds_v3i32:25; GFX6: ; %bb.0:26; GFX6-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)27; GFX6-NEXT: v_mov_b32_e32 v2, v028; GFX6-NEXT: s_mov_b32 m0, -129; GFX6-NEXT: v_add_i32_e32 v2, vcc, 8, v230; GFX6-NEXT: ds_read_b64 v[0:1], v031; GFX6-NEXT: ds_read_b32 v2, v232; GFX6-NEXT: s_waitcnt lgkmcnt(0)33; GFX6-NEXT: s_setpc_b64 s[30:31]34;35; GFX10-LABEL: load_lds_v3i32:36; GFX10: ; %bb.0:37; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)38; GFX10-NEXT: ds_read_b96 v[0:2], v039; GFX10-NEXT: s_waitcnt lgkmcnt(0)40; GFX10-NEXT: s_setpc_b64 s[30:31]41;42; GFX11-LABEL: load_lds_v3i32:43; GFX11: ; %bb.0:44; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)45; GFX11-NEXT: ds_load_b96 v[0:2], v046; GFX11-NEXT: s_waitcnt lgkmcnt(0)47; GFX11-NEXT: s_setpc_b64 s[30:31]48 %load = load <3 x i32>, ptr addrspace(3) %ptr49 ret <3 x i32> %load50}51 52define <3 x i32> @load_lds_v3i32_align1(ptr addrspace(3) %ptr) {53; GFX9-LABEL: load_lds_v3i32_align1:54; GFX9: ; %bb.0:55; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)56; GFX9-NEXT: ds_read_u8 v1, v057; GFX9-NEXT: ds_read_u8 v2, v0 offset:158; GFX9-NEXT: ds_read_u8 v3, v0 offset:259; GFX9-NEXT: ds_read_u8 v4, v0 offset:360; GFX9-NEXT: ds_read_u8 v5, v0 offset:461; GFX9-NEXT: ds_read_u8 v6, v0 offset:562; GFX9-NEXT: ds_read_u8 v7, v0 offset:663; GFX9-NEXT: ds_read_u8 v8, v0 offset:764; GFX9-NEXT: ds_read_u8 v9, v0 offset:865; GFX9-NEXT: ds_read_u8 v10, v0 offset:966; GFX9-NEXT: ds_read_u8 v11, v0 offset:1067; GFX9-NEXT: ds_read_u8 v12, v0 offset:1168; GFX9-NEXT: s_waitcnt lgkmcnt(10)69; GFX9-NEXT: v_lshl_or_b32 v0, v2, 8, v170; GFX9-NEXT: s_waitcnt lgkmcnt(8)71; GFX9-NEXT: v_lshl_or_b32 v1, v4, 8, v372; GFX9-NEXT: v_lshl_or_b32 v0, v1, 16, v073; GFX9-NEXT: s_waitcnt lgkmcnt(6)74; GFX9-NEXT: v_lshl_or_b32 v1, v6, 8, v575; GFX9-NEXT: s_waitcnt lgkmcnt(4)76; GFX9-NEXT: v_lshl_or_b32 v2, v8, 8, v777; GFX9-NEXT: v_lshl_or_b32 v1, v2, 16, v178; GFX9-NEXT: s_waitcnt lgkmcnt(2)79; GFX9-NEXT: v_lshl_or_b32 v2, v10, 8, v980; GFX9-NEXT: s_waitcnt lgkmcnt(0)81; GFX9-NEXT: v_lshl_or_b32 v3, v12, 8, v1182; GFX9-NEXT: v_lshl_or_b32 v2, v3, 16, v283; GFX9-NEXT: s_setpc_b64 s[30:31]84;85; GFX7-LABEL: load_lds_v3i32_align1:86; GFX7: ; %bb.0:87; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)88; GFX7-NEXT: s_mov_b32 m0, -189; GFX7-NEXT: ds_read_u8 v1, v0 offset:190; GFX7-NEXT: ds_read_u8 v2, v0 offset:691; GFX7-NEXT: ds_read_u8 v4, v0 offset:492; GFX7-NEXT: ds_read_u8 v3, v0 offset:293; GFX7-NEXT: ds_read_u8 v5, v094; GFX7-NEXT: ds_read_u8 v6, v0 offset:395; GFX7-NEXT: ds_read_u8 v7, v0 offset:596; GFX7-NEXT: ds_read_u8 v8, v0 offset:797; GFX7-NEXT: s_waitcnt lgkmcnt(7)98; GFX7-NEXT: v_lshlrev_b32_e32 v1, 8, v199; GFX7-NEXT: s_waitcnt lgkmcnt(3)100; GFX7-NEXT: v_or_b32_e32 v1, v1, v5101; GFX7-NEXT: s_waitcnt lgkmcnt(2)102; GFX7-NEXT: v_lshlrev_b32_e32 v5, 8, v6103; GFX7-NEXT: v_or_b32_e32 v3, v5, v3104; GFX7-NEXT: v_lshlrev_b32_e32 v3, 16, v3105; GFX7-NEXT: v_or_b32_e32 v3, v3, v1106; GFX7-NEXT: s_waitcnt lgkmcnt(1)107; GFX7-NEXT: v_lshlrev_b32_e32 v1, 8, v7108; GFX7-NEXT: ds_read_u8 v5, v0 offset:9109; GFX7-NEXT: ds_read_u8 v6, v0 offset:11110; GFX7-NEXT: ds_read_u8 v7, v0 offset:10111; GFX7-NEXT: ds_read_u8 v0, v0 offset:8112; GFX7-NEXT: v_or_b32_e32 v1, v1, v4113; GFX7-NEXT: s_waitcnt lgkmcnt(4)114; GFX7-NEXT: v_lshlrev_b32_e32 v4, 8, v8115; GFX7-NEXT: v_or_b32_e32 v2, v4, v2116; GFX7-NEXT: v_lshlrev_b32_e32 v2, 16, v2117; GFX7-NEXT: v_or_b32_e32 v1, v2, v1118; GFX7-NEXT: s_waitcnt lgkmcnt(3)119; GFX7-NEXT: v_lshlrev_b32_e32 v2, 8, v5120; GFX7-NEXT: s_waitcnt lgkmcnt(0)121; GFX7-NEXT: v_or_b32_e32 v0, v2, v0122; GFX7-NEXT: v_lshlrev_b32_e32 v2, 8, v6123; GFX7-NEXT: v_or_b32_e32 v2, v2, v7124; GFX7-NEXT: v_lshlrev_b32_e32 v2, 16, v2125; GFX7-NEXT: v_or_b32_e32 v2, v2, v0126; GFX7-NEXT: v_mov_b32_e32 v0, v3127; GFX7-NEXT: s_setpc_b64 s[30:31]128;129; GFX6-LABEL: load_lds_v3i32_align1:130; GFX6: ; %bb.0:131; GFX6-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)132; GFX6-NEXT: v_add_i32_e32 v1, vcc, 5, v0133; GFX6-NEXT: v_add_i32_e32 v2, vcc, 4, v0134; GFX6-NEXT: v_add_i32_e32 v3, vcc, 7, v0135; GFX6-NEXT: v_add_i32_e32 v4, vcc, 6, v0136; GFX6-NEXT: v_add_i32_e32 v5, vcc, 9, v0137; GFX6-NEXT: v_add_i32_e32 v6, vcc, 8, v0138; GFX6-NEXT: v_add_i32_e32 v7, vcc, 11, v0139; GFX6-NEXT: s_mov_b32 m0, -1140; GFX6-NEXT: ds_read_u8 v1, v1141; GFX6-NEXT: ds_read_u8 v2, v2142; GFX6-NEXT: ds_read_u8 v3, v3143; GFX6-NEXT: ds_read_u8 v4, v4144; GFX6-NEXT: ds_read_u8 v5, v5145; GFX6-NEXT: ds_read_u8 v6, v6146; GFX6-NEXT: ds_read_u8 v7, v7147; GFX6-NEXT: ds_read_u8 v8, v0148; GFX6-NEXT: s_waitcnt lgkmcnt(7)149; GFX6-NEXT: v_lshlrev_b32_e32 v1, 8, v1150; GFX6-NEXT: s_waitcnt lgkmcnt(6)151; GFX6-NEXT: v_or_b32_e32 v1, v1, v2152; GFX6-NEXT: s_waitcnt lgkmcnt(5)153; GFX6-NEXT: v_lshlrev_b32_e32 v2, 8, v3154; GFX6-NEXT: s_waitcnt lgkmcnt(4)155; GFX6-NEXT: v_or_b32_e32 v2, v2, v4156; GFX6-NEXT: v_add_i32_e32 v4, vcc, 10, v0157; GFX6-NEXT: v_lshlrev_b32_e32 v2, 16, v2158; GFX6-NEXT: ds_read_u8 v4, v4159; GFX6-NEXT: v_or_b32_e32 v1, v2, v1160; GFX6-NEXT: s_waitcnt lgkmcnt(4)161; GFX6-NEXT: v_lshlrev_b32_e32 v2, 8, v5162; GFX6-NEXT: s_waitcnt lgkmcnt(3)163; GFX6-NEXT: v_or_b32_e32 v2, v2, v6164; GFX6-NEXT: v_add_i32_e32 v5, vcc, 3, v0165; GFX6-NEXT: v_add_i32_e32 v6, vcc, 2, v0166; GFX6-NEXT: v_add_i32_e32 v0, vcc, 1, v0167; GFX6-NEXT: ds_read_u8 v5, v5168; GFX6-NEXT: ds_read_u8 v6, v6169; GFX6-NEXT: ds_read_u8 v0, v0170; GFX6-NEXT: s_waitcnt lgkmcnt(5)171; GFX6-NEXT: v_lshlrev_b32_e32 v3, 8, v7172; GFX6-NEXT: s_waitcnt lgkmcnt(3)173; GFX6-NEXT: v_or_b32_e32 v3, v3, v4174; GFX6-NEXT: v_lshlrev_b32_e32 v3, 16, v3175; GFX6-NEXT: v_or_b32_e32 v2, v3, v2176; GFX6-NEXT: s_waitcnt lgkmcnt(2)177; GFX6-NEXT: v_lshlrev_b32_e32 v3, 8, v5178; GFX6-NEXT: s_waitcnt lgkmcnt(1)179; GFX6-NEXT: v_or_b32_e32 v3, v3, v6180; GFX6-NEXT: s_waitcnt lgkmcnt(0)181; GFX6-NEXT: v_lshlrev_b32_e32 v0, 8, v0182; GFX6-NEXT: v_lshlrev_b32_e32 v3, 16, v3183; GFX6-NEXT: v_or_b32_e32 v0, v0, v8184; GFX6-NEXT: v_or_b32_e32 v0, v3, v0185; GFX6-NEXT: s_setpc_b64 s[30:31]186;187; GFX10-LABEL: load_lds_v3i32_align1:188; GFX10: ; %bb.0:189; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)190; GFX10-NEXT: ds_read_u8 v1, v0191; GFX10-NEXT: ds_read_u8 v2, v0 offset:1192; GFX10-NEXT: ds_read_u8 v3, v0 offset:2193; GFX10-NEXT: ds_read_u8 v4, v0 offset:3194; GFX10-NEXT: ds_read_u8 v5, v0 offset:4195; GFX10-NEXT: ds_read_u8 v6, v0 offset:5196; GFX10-NEXT: ds_read_u8 v7, v0 offset:6197; GFX10-NEXT: ds_read_u8 v8, v0 offset:7198; GFX10-NEXT: ds_read_u8 v9, v0 offset:8199; GFX10-NEXT: ds_read_u8 v10, v0 offset:9200; GFX10-NEXT: ds_read_u8 v11, v0 offset:10201; GFX10-NEXT: ds_read_u8 v0, v0 offset:11202; GFX10-NEXT: s_waitcnt lgkmcnt(10)203; GFX10-NEXT: v_lshl_or_b32 v1, v2, 8, v1204; GFX10-NEXT: s_waitcnt lgkmcnt(8)205; GFX10-NEXT: v_lshl_or_b32 v2, v4, 8, v3206; GFX10-NEXT: s_waitcnt lgkmcnt(6)207; GFX10-NEXT: v_lshl_or_b32 v3, v6, 8, v5208; GFX10-NEXT: s_waitcnt lgkmcnt(4)209; GFX10-NEXT: v_lshl_or_b32 v4, v8, 8, v7210; GFX10-NEXT: s_waitcnt lgkmcnt(2)211; GFX10-NEXT: v_lshl_or_b32 v5, v10, 8, v9212; GFX10-NEXT: s_waitcnt lgkmcnt(0)213; GFX10-NEXT: v_lshl_or_b32 v6, v0, 8, v11214; GFX10-NEXT: v_lshl_or_b32 v0, v2, 16, v1215; GFX10-NEXT: v_lshl_or_b32 v1, v4, 16, v3216; GFX10-NEXT: v_lshl_or_b32 v2, v6, 16, v5217; GFX10-NEXT: s_setpc_b64 s[30:31]218;219; GFX11-LABEL: load_lds_v3i32_align1:220; GFX11: ; %bb.0:221; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)222; GFX11-NEXT: ds_load_u8 v1, v0223; GFX11-NEXT: ds_load_u8 v2, v0 offset:1224; GFX11-NEXT: ds_load_u8 v3, v0 offset:2225; GFX11-NEXT: ds_load_u8 v4, v0 offset:3226; GFX11-NEXT: ds_load_u8 v5, v0 offset:4227; GFX11-NEXT: ds_load_u8 v6, v0 offset:5228; GFX11-NEXT: ds_load_u8 v7, v0 offset:6229; GFX11-NEXT: ds_load_u8 v8, v0 offset:7230; GFX11-NEXT: ds_load_u8 v9, v0 offset:8231; GFX11-NEXT: ds_load_u8 v10, v0 offset:9232; GFX11-NEXT: ds_load_u8 v11, v0 offset:10233; GFX11-NEXT: ds_load_u8 v0, v0 offset:11234; GFX11-NEXT: s_waitcnt lgkmcnt(10)235; GFX11-NEXT: v_lshl_or_b32 v1, v2, 8, v1236; GFX11-NEXT: s_waitcnt lgkmcnt(8)237; GFX11-NEXT: v_lshl_or_b32 v2, v4, 8, v3238; GFX11-NEXT: s_waitcnt lgkmcnt(6)239; GFX11-NEXT: v_lshl_or_b32 v3, v6, 8, v5240; GFX11-NEXT: s_waitcnt lgkmcnt(4)241; GFX11-NEXT: v_lshl_or_b32 v4, v8, 8, v7242; GFX11-NEXT: s_waitcnt lgkmcnt(2)243; GFX11-NEXT: v_lshl_or_b32 v5, v10, 8, v9244; GFX11-NEXT: s_waitcnt lgkmcnt(0)245; GFX11-NEXT: v_lshl_or_b32 v6, v0, 8, v11246; GFX11-NEXT: v_lshl_or_b32 v0, v2, 16, v1247; GFX11-NEXT: v_lshl_or_b32 v1, v4, 16, v3248; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_3)249; GFX11-NEXT: v_lshl_or_b32 v2, v6, 16, v5250; GFX11-NEXT: s_setpc_b64 s[30:31]251 %load = load <3 x i32>, ptr addrspace(3) %ptr, align 1252 ret <3 x i32> %load253}254 255define <3 x i32> @load_lds_v3i32_align2(ptr addrspace(3) %ptr) {256; GFX9-LABEL: load_lds_v3i32_align2:257; GFX9: ; %bb.0:258; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)259; GFX9-NEXT: ds_read_u16 v1, v0260; GFX9-NEXT: ds_read_u16 v2, v0 offset:2261; GFX9-NEXT: ds_read_u16 v3, v0 offset:4262; GFX9-NEXT: ds_read_u16 v4, v0 offset:6263; GFX9-NEXT: ds_read_u16 v5, v0 offset:8264; GFX9-NEXT: ds_read_u16 v6, v0 offset:10265; GFX9-NEXT: s_waitcnt lgkmcnt(4)266; GFX9-NEXT: v_lshl_or_b32 v0, v2, 16, v1267; GFX9-NEXT: s_waitcnt lgkmcnt(2)268; GFX9-NEXT: v_lshl_or_b32 v1, v4, 16, v3269; GFX9-NEXT: s_waitcnt lgkmcnt(0)270; GFX9-NEXT: v_lshl_or_b32 v2, v6, 16, v5271; GFX9-NEXT: s_setpc_b64 s[30:31]272;273; GFX7-LABEL: load_lds_v3i32_align2:274; GFX7: ; %bb.0:275; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)276; GFX7-NEXT: s_mov_b32 m0, -1277; GFX7-NEXT: ds_read_u16 v1, v0 offset:2278; GFX7-NEXT: ds_read_u16 v2, v0 offset:8279; GFX7-NEXT: ds_read_u16 v3, v0 offset:4280; GFX7-NEXT: ds_read_u16 v4, v0281; GFX7-NEXT: ds_read_u16 v5, v0 offset:6282; GFX7-NEXT: ds_read_u16 v6, v0 offset:10283; GFX7-NEXT: s_waitcnt lgkmcnt(5)284; GFX7-NEXT: v_lshlrev_b32_e32 v0, 16, v1285; GFX7-NEXT: s_waitcnt lgkmcnt(2)286; GFX7-NEXT: v_or_b32_e32 v0, v0, v4287; GFX7-NEXT: s_waitcnt lgkmcnt(1)288; GFX7-NEXT: v_lshlrev_b32_e32 v1, 16, v5289; GFX7-NEXT: v_or_b32_e32 v1, v1, v3290; GFX7-NEXT: s_waitcnt lgkmcnt(0)291; GFX7-NEXT: v_lshlrev_b32_e32 v3, 16, v6292; GFX7-NEXT: v_or_b32_e32 v2, v3, v2293; GFX7-NEXT: s_setpc_b64 s[30:31]294;295; GFX6-LABEL: load_lds_v3i32_align2:296; GFX6: ; %bb.0:297; GFX6-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)298; GFX6-NEXT: v_add_i32_e32 v1, vcc, 6, v0299; GFX6-NEXT: v_add_i32_e32 v2, vcc, 4, v0300; GFX6-NEXT: v_add_i32_e32 v3, vcc, 10, v0301; GFX6-NEXT: v_add_i32_e32 v4, vcc, 8, v0302; GFX6-NEXT: v_add_i32_e32 v5, vcc, 2, v0303; GFX6-NEXT: s_mov_b32 m0, -1304; GFX6-NEXT: ds_read_u16 v1, v1305; GFX6-NEXT: ds_read_u16 v2, v2306; GFX6-NEXT: ds_read_u16 v3, v3307; GFX6-NEXT: ds_read_u16 v4, v4308; GFX6-NEXT: ds_read_u16 v5, v5309; GFX6-NEXT: ds_read_u16 v0, v0310; GFX6-NEXT: s_waitcnt lgkmcnt(5)311; GFX6-NEXT: v_lshlrev_b32_e32 v1, 16, v1312; GFX6-NEXT: s_waitcnt lgkmcnt(4)313; GFX6-NEXT: v_or_b32_e32 v1, v1, v2314; GFX6-NEXT: s_waitcnt lgkmcnt(3)315; GFX6-NEXT: v_lshlrev_b32_e32 v2, 16, v3316; GFX6-NEXT: s_waitcnt lgkmcnt(1)317; GFX6-NEXT: v_lshlrev_b32_e32 v3, 16, v5318; GFX6-NEXT: v_or_b32_e32 v2, v2, v4319; GFX6-NEXT: s_waitcnt lgkmcnt(0)320; GFX6-NEXT: v_or_b32_e32 v0, v3, v0321; GFX6-NEXT: s_setpc_b64 s[30:31]322;323; GFX10-LABEL: load_lds_v3i32_align2:324; GFX10: ; %bb.0:325; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)326; GFX10-NEXT: ds_read_u16 v1, v0327; GFX10-NEXT: ds_read_u16 v2, v0 offset:2328; GFX10-NEXT: ds_read_u16 v3, v0 offset:4329; GFX10-NEXT: ds_read_u16 v4, v0 offset:6330; GFX10-NEXT: ds_read_u16 v5, v0 offset:8331; GFX10-NEXT: ds_read_u16 v6, v0 offset:10332; GFX10-NEXT: s_waitcnt lgkmcnt(4)333; GFX10-NEXT: v_lshl_or_b32 v0, v2, 16, v1334; GFX10-NEXT: s_waitcnt lgkmcnt(2)335; GFX10-NEXT: v_lshl_or_b32 v1, v4, 16, v3336; GFX10-NEXT: s_waitcnt lgkmcnt(0)337; GFX10-NEXT: v_lshl_or_b32 v2, v6, 16, v5338; GFX10-NEXT: s_setpc_b64 s[30:31]339;340; GFX11-LABEL: load_lds_v3i32_align2:341; GFX11: ; %bb.0:342; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)343; GFX11-NEXT: ds_load_u16 v1, v0344; GFX11-NEXT: ds_load_u16 v2, v0 offset:2345; GFX11-NEXT: ds_load_u16 v3, v0 offset:4346; GFX11-NEXT: ds_load_u16 v4, v0 offset:6347; GFX11-NEXT: ds_load_u16 v5, v0 offset:8348; GFX11-NEXT: ds_load_u16 v6, v0 offset:10349; GFX11-NEXT: s_waitcnt lgkmcnt(4)350; GFX11-NEXT: v_lshl_or_b32 v0, v2, 16, v1351; GFX11-NEXT: s_waitcnt lgkmcnt(2)352; GFX11-NEXT: v_lshl_or_b32 v1, v4, 16, v3353; GFX11-NEXT: s_waitcnt lgkmcnt(0)354; GFX11-NEXT: v_lshl_or_b32 v2, v6, 16, v5355; GFX11-NEXT: s_setpc_b64 s[30:31]356 %load = load <3 x i32>, ptr addrspace(3) %ptr, align 2357 ret <3 x i32> %load358}359 360define <3 x i32> @load_lds_v3i32_align4(ptr addrspace(3) %ptr) {361; GFX9-LABEL: load_lds_v3i32_align4:362; GFX9: ; %bb.0:363; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)364; GFX9-NEXT: v_mov_b32_e32 v2, v0365; GFX9-NEXT: ds_read2_b32 v[0:1], v0 offset1:1366; GFX9-NEXT: ds_read_b32 v2, v2 offset:8367; GFX9-NEXT: s_waitcnt lgkmcnt(0)368; GFX9-NEXT: s_setpc_b64 s[30:31]369;370; GFX7-LABEL: load_lds_v3i32_align4:371; GFX7: ; %bb.0:372; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)373; GFX7-NEXT: v_mov_b32_e32 v2, v0374; GFX7-NEXT: s_mov_b32 m0, -1375; GFX7-NEXT: ds_read2_b32 v[0:1], v0 offset1:1376; GFX7-NEXT: ds_read_b32 v2, v2 offset:8377; GFX7-NEXT: s_waitcnt lgkmcnt(0)378; GFX7-NEXT: s_setpc_b64 s[30:31]379;380; GFX6-LABEL: load_lds_v3i32_align4:381; GFX6: ; %bb.0:382; GFX6-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)383; GFX6-NEXT: v_add_i32_e32 v1, vcc, 4, v0384; GFX6-NEXT: v_add_i32_e32 v2, vcc, 8, v0385; GFX6-NEXT: s_mov_b32 m0, -1386; GFX6-NEXT: ds_read_b32 v2, v2387; GFX6-NEXT: ds_read_b32 v0, v0388; GFX6-NEXT: ds_read_b32 v1, v1389; GFX6-NEXT: s_waitcnt lgkmcnt(0)390; GFX6-NEXT: s_setpc_b64 s[30:31]391;392; GFX10-LABEL: load_lds_v3i32_align4:393; GFX10: ; %bb.0:394; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)395; GFX10-NEXT: v_mov_b32_e32 v2, v0396; GFX10-NEXT: ds_read2_b32 v[0:1], v0 offset1:1397; GFX10-NEXT: ds_read_b32 v2, v2 offset:8398; GFX10-NEXT: s_waitcnt lgkmcnt(0)399; GFX10-NEXT: s_setpc_b64 s[30:31]400;401; GFX11-LABEL: load_lds_v3i32_align4:402; GFX11: ; %bb.0:403; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)404; GFX11-NEXT: v_mov_b32_e32 v2, v0405; GFX11-NEXT: ds_load_2addr_b32 v[0:1], v0 offset1:1406; GFX11-NEXT: ds_load_b32 v2, v2 offset:8407; GFX11-NEXT: s_waitcnt lgkmcnt(0)408; GFX11-NEXT: s_setpc_b64 s[30:31]409 %load = load <3 x i32>, ptr addrspace(3) %ptr, align 4410 ret <3 x i32> %load411}412 413define <3 x i32> @load_lds_v3i32_align8(ptr addrspace(3) %ptr) {414; GFX9-LABEL: load_lds_v3i32_align8:415; GFX9: ; %bb.0:416; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)417; GFX9-NEXT: v_mov_b32_e32 v2, v0418; GFX9-NEXT: ds_read_b64 v[0:1], v0419; GFX9-NEXT: ds_read_b32 v2, v2 offset:8420; GFX9-NEXT: s_waitcnt lgkmcnt(0)421; GFX9-NEXT: s_setpc_b64 s[30:31]422;423; GFX7-LABEL: load_lds_v3i32_align8:424; GFX7: ; %bb.0:425; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)426; GFX7-NEXT: v_mov_b32_e32 v2, v0427; GFX7-NEXT: s_mov_b32 m0, -1428; GFX7-NEXT: ds_read_b64 v[0:1], v0429; GFX7-NEXT: ds_read_b32 v2, v2 offset:8430; GFX7-NEXT: s_waitcnt lgkmcnt(0)431; GFX7-NEXT: s_setpc_b64 s[30:31]432;433; GFX6-LABEL: load_lds_v3i32_align8:434; GFX6: ; %bb.0:435; GFX6-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)436; GFX6-NEXT: v_mov_b32_e32 v2, v0437; GFX6-NEXT: s_mov_b32 m0, -1438; GFX6-NEXT: v_add_i32_e32 v2, vcc, 8, v2439; GFX6-NEXT: ds_read_b64 v[0:1], v0440; GFX6-NEXT: ds_read_b32 v2, v2441; GFX6-NEXT: s_waitcnt lgkmcnt(0)442; GFX6-NEXT: s_setpc_b64 s[30:31]443;444; GFX10-LABEL: load_lds_v3i32_align8:445; GFX10: ; %bb.0:446; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)447; GFX10-NEXT: v_mov_b32_e32 v2, v0448; GFX10-NEXT: ds_read_b64 v[0:1], v0449; GFX10-NEXT: ds_read_b32 v2, v2 offset:8450; GFX10-NEXT: s_waitcnt lgkmcnt(0)451; GFX10-NEXT: s_setpc_b64 s[30:31]452;453; GFX11-LABEL: load_lds_v3i32_align8:454; GFX11: ; %bb.0:455; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)456; GFX11-NEXT: v_mov_b32_e32 v2, v0457; GFX11-NEXT: ds_load_b64 v[0:1], v0458; GFX11-NEXT: ds_load_b32 v2, v2 offset:8459; GFX11-NEXT: s_waitcnt lgkmcnt(0)460; GFX11-NEXT: s_setpc_b64 s[30:31]461 %load = load <3 x i32>, ptr addrspace(3) %ptr, align 8462 ret <3 x i32> %load463}464 465define <3 x i32> @load_lds_v3i32_align16(ptr addrspace(3) %ptr) {466; GFX9-LABEL: load_lds_v3i32_align16:467; GFX9: ; %bb.0:468; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)469; GFX9-NEXT: ds_read_b96 v[0:2], v0470; GFX9-NEXT: s_waitcnt lgkmcnt(0)471; GFX9-NEXT: s_setpc_b64 s[30:31]472;473; GFX7-LABEL: load_lds_v3i32_align16:474; GFX7: ; %bb.0:475; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)476; GFX7-NEXT: s_mov_b32 m0, -1477; GFX7-NEXT: ds_read_b96 v[0:2], v0478; GFX7-NEXT: s_waitcnt lgkmcnt(0)479; GFX7-NEXT: s_setpc_b64 s[30:31]480;481; GFX6-LABEL: load_lds_v3i32_align16:482; GFX6: ; %bb.0:483; GFX6-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)484; GFX6-NEXT: v_mov_b32_e32 v2, v0485; GFX6-NEXT: s_mov_b32 m0, -1486; GFX6-NEXT: v_add_i32_e32 v2, vcc, 8, v2487; GFX6-NEXT: ds_read_b64 v[0:1], v0488; GFX6-NEXT: ds_read_b32 v2, v2489; GFX6-NEXT: s_waitcnt lgkmcnt(0)490; GFX6-NEXT: s_setpc_b64 s[30:31]491;492; GFX10-LABEL: load_lds_v3i32_align16:493; GFX10: ; %bb.0:494; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)495; GFX10-NEXT: ds_read_b96 v[0:2], v0496; GFX10-NEXT: s_waitcnt lgkmcnt(0)497; GFX10-NEXT: s_setpc_b64 s[30:31]498;499; GFX11-LABEL: load_lds_v3i32_align16:500; GFX11: ; %bb.0:501; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)502; GFX11-NEXT: ds_load_b96 v[0:2], v0503; GFX11-NEXT: s_waitcnt lgkmcnt(0)504; GFX11-NEXT: s_setpc_b64 s[30:31]505 %load = load <3 x i32>, ptr addrspace(3) %ptr, align 16506 ret <3 x i32> %load507}508