brintos

brintos / llvm-project-archived public Read only

0
0
Text · 22.1 KiB · 5b6af76 Raw
580 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 <4 x i32> @load_lds_v4i32(ptr addrspace(3) %ptr) {9; GFX9-LABEL: load_lds_v4i32:10; GFX9:       ; %bb.0:11; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12; GFX9-NEXT:    ds_read_b128 v[0:3], v013; GFX9-NEXT:    s_waitcnt lgkmcnt(0)14; GFX9-NEXT:    s_setpc_b64 s[30:31]15;16; GFX7-LABEL: load_lds_v4i32: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_b128 v[0:3], v021; GFX7-NEXT:    s_waitcnt lgkmcnt(0)22; GFX7-NEXT:    s_setpc_b64 s[30:31]23;24; GFX6-LABEL: load_lds_v4i32: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_b64 v[2:3], v232; GFX6-NEXT:    s_waitcnt lgkmcnt(0)33; GFX6-NEXT:    s_setpc_b64 s[30:31]34;35; GFX10-LABEL: load_lds_v4i32:36; GFX10:       ; %bb.0:37; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)38; GFX10-NEXT:    ds_read_b128 v[0:3], v039; GFX10-NEXT:    s_waitcnt lgkmcnt(0)40; GFX10-NEXT:    s_setpc_b64 s[30:31]41;42; GFX11-LABEL: load_lds_v4i32:43; GFX11:       ; %bb.0:44; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)45; GFX11-NEXT:    ds_load_b128 v[0:3], v046; GFX11-NEXT:    s_waitcnt lgkmcnt(0)47; GFX11-NEXT:    s_setpc_b64 s[30:31]48  %load = load <4 x i32>, ptr addrspace(3) %ptr49  ret <4 x i32> %load50}51 52define <4 x i32> @load_lds_v4i32_align1(ptr addrspace(3) %ptr) {53; GFX9-LABEL: load_lds_v4i32_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:    ds_read_u8 v13, v0 offset:1269; GFX9-NEXT:    ds_read_u8 v14, v0 offset:1370; GFX9-NEXT:    ds_read_u8 v15, v0 offset:1471; GFX9-NEXT:    ds_read_u8 v16, v0 offset:1572; GFX9-NEXT:    s_waitcnt lgkmcnt(14)73; GFX9-NEXT:    v_lshl_or_b32 v0, v2, 8, v174; GFX9-NEXT:    s_waitcnt lgkmcnt(12)75; GFX9-NEXT:    v_lshl_or_b32 v1, v4, 8, v376; GFX9-NEXT:    v_lshl_or_b32 v0, v1, 16, v077; GFX9-NEXT:    s_waitcnt lgkmcnt(10)78; GFX9-NEXT:    v_lshl_or_b32 v1, v6, 8, v579; GFX9-NEXT:    s_waitcnt lgkmcnt(8)80; GFX9-NEXT:    v_lshl_or_b32 v2, v8, 8, v781; GFX9-NEXT:    v_lshl_or_b32 v1, v2, 16, v182; GFX9-NEXT:    s_waitcnt lgkmcnt(6)83; GFX9-NEXT:    v_lshl_or_b32 v2, v10, 8, v984; GFX9-NEXT:    s_waitcnt lgkmcnt(4)85; GFX9-NEXT:    v_lshl_or_b32 v3, v12, 8, v1186; GFX9-NEXT:    v_lshl_or_b32 v2, v3, 16, v287; GFX9-NEXT:    s_waitcnt lgkmcnt(2)88; GFX9-NEXT:    v_lshl_or_b32 v3, v14, 8, v1389; GFX9-NEXT:    s_waitcnt lgkmcnt(0)90; GFX9-NEXT:    v_lshl_or_b32 v4, v16, 8, v1591; GFX9-NEXT:    v_lshl_or_b32 v3, v4, 16, v392; GFX9-NEXT:    s_setpc_b64 s[30:31]93;94; GFX7-LABEL: load_lds_v4i32_align1:95; GFX7:       ; %bb.0:96; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)97; GFX7-NEXT:    s_mov_b32 m0, -198; GFX7-NEXT:    ds_read_u8 v1, v0 offset:199; GFX7-NEXT:    ds_read_u8 v2, v0 offset:6100; GFX7-NEXT:    ds_read_u8 v3, v0 offset:4101; GFX7-NEXT:    ds_read_u8 v4, v0 offset:2102; GFX7-NEXT:    ds_read_u8 v5, v0103; GFX7-NEXT:    ds_read_u8 v6, v0 offset:3104; GFX7-NEXT:    ds_read_u8 v7, v0 offset:5105; GFX7-NEXT:    ds_read_u8 v8, v0 offset:7106; GFX7-NEXT:    s_waitcnt lgkmcnt(7)107; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 8, v1108; GFX7-NEXT:    s_waitcnt lgkmcnt(3)109; GFX7-NEXT:    v_or_b32_e32 v1, v1, v5110; GFX7-NEXT:    s_waitcnt lgkmcnt(2)111; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 8, v6112; GFX7-NEXT:    v_or_b32_e32 v4, v5, v4113; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v4114; GFX7-NEXT:    v_or_b32_e32 v4, v4, v1115; GFX7-NEXT:    s_waitcnt lgkmcnt(1)116; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 8, v7117; GFX7-NEXT:    v_or_b32_e32 v1, v1, v3118; GFX7-NEXT:    s_waitcnt lgkmcnt(0)119; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 8, v8120; GFX7-NEXT:    ds_read_u8 v5, v0 offset:9121; GFX7-NEXT:    ds_read_u8 v6, v0 offset:11122; GFX7-NEXT:    ds_read_u8 v7, v0 offset:13123; GFX7-NEXT:    ds_read_u8 v8, v0 offset:15124; GFX7-NEXT:    ds_read_u8 v9, v0 offset:14125; GFX7-NEXT:    ds_read_u8 v10, v0 offset:12126; GFX7-NEXT:    ds_read_u8 v11, v0 offset:10127; GFX7-NEXT:    ds_read_u8 v0, v0 offset:8128; GFX7-NEXT:    v_or_b32_e32 v2, v3, v2129; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v2130; GFX7-NEXT:    v_or_b32_e32 v1, v2, v1131; GFX7-NEXT:    s_waitcnt lgkmcnt(7)132; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 8, v5133; GFX7-NEXT:    s_waitcnt lgkmcnt(0)134; GFX7-NEXT:    v_or_b32_e32 v0, v2, v0135; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 8, v6136; GFX7-NEXT:    v_or_b32_e32 v2, v2, v11137; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v2138; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 8, v8139; GFX7-NEXT:    v_or_b32_e32 v2, v2, v0140; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 8, v7141; GFX7-NEXT:    v_or_b32_e32 v3, v3, v9142; GFX7-NEXT:    v_or_b32_e32 v0, v0, v10143; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v3144; GFX7-NEXT:    v_or_b32_e32 v3, v3, v0145; GFX7-NEXT:    v_mov_b32_e32 v0, v4146; GFX7-NEXT:    s_setpc_b64 s[30:31]147;148; GFX6-LABEL: load_lds_v4i32_align1:149; GFX6:       ; %bb.0:150; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)151; GFX6-NEXT:    v_add_i32_e32 v1, vcc, 5, v0152; GFX6-NEXT:    v_add_i32_e32 v2, vcc, 4, v0153; GFX6-NEXT:    v_add_i32_e32 v3, vcc, 7, v0154; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 6, v0155; GFX6-NEXT:    v_add_i32_e32 v5, vcc, 9, v0156; GFX6-NEXT:    v_add_i32_e32 v6, vcc, 8, v0157; GFX6-NEXT:    v_add_i32_e32 v7, vcc, 11, v0158; GFX6-NEXT:    s_mov_b32 m0, -1159; GFX6-NEXT:    ds_read_u8 v1, v1160; GFX6-NEXT:    ds_read_u8 v2, v2161; GFX6-NEXT:    ds_read_u8 v3, v3162; GFX6-NEXT:    ds_read_u8 v4, v4163; GFX6-NEXT:    ds_read_u8 v5, v5164; GFX6-NEXT:    ds_read_u8 v6, v6165; GFX6-NEXT:    ds_read_u8 v7, v7166; GFX6-NEXT:    ds_read_u8 v8, v0167; GFX6-NEXT:    s_waitcnt lgkmcnt(7)168; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 8, v1169; GFX6-NEXT:    s_waitcnt lgkmcnt(6)170; GFX6-NEXT:    v_or_b32_e32 v1, v1, v2171; GFX6-NEXT:    s_waitcnt lgkmcnt(5)172; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 8, v3173; GFX6-NEXT:    s_waitcnt lgkmcnt(4)174; GFX6-NEXT:    v_or_b32_e32 v2, v2, v4175; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v2176; GFX6-NEXT:    v_or_b32_e32 v1, v2, v1177; GFX6-NEXT:    s_waitcnt lgkmcnt(3)178; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 8, v5179; GFX6-NEXT:    s_waitcnt lgkmcnt(2)180; GFX6-NEXT:    v_or_b32_e32 v2, v2, v6181; GFX6-NEXT:    s_waitcnt lgkmcnt(1)182; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 8, v7183; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 10, v0184; GFX6-NEXT:    v_add_i32_e32 v5, vcc, 13, v0185; GFX6-NEXT:    v_add_i32_e32 v6, vcc, 12, v0186; GFX6-NEXT:    v_add_i32_e32 v7, vcc, 15, v0187; GFX6-NEXT:    v_add_i32_e32 v9, vcc, 14, v0188; GFX6-NEXT:    v_add_i32_e32 v10, vcc, 3, v0189; GFX6-NEXT:    v_add_i32_e32 v11, vcc, 2, v0190; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 1, v0191; GFX6-NEXT:    ds_read_u8 v4, v4192; GFX6-NEXT:    ds_read_u8 v5, v5193; GFX6-NEXT:    ds_read_u8 v6, v6194; GFX6-NEXT:    ds_read_u8 v7, v7195; GFX6-NEXT:    ds_read_u8 v9, v9196; GFX6-NEXT:    ds_read_u8 v10, v10197; GFX6-NEXT:    ds_read_u8 v11, v11198; GFX6-NEXT:    ds_read_u8 v0, v0199; GFX6-NEXT:    s_waitcnt lgkmcnt(7)200; GFX6-NEXT:    v_or_b32_e32 v3, v3, v4201; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v3202; GFX6-NEXT:    s_waitcnt lgkmcnt(4)203; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 8, v7204; GFX6-NEXT:    v_or_b32_e32 v2, v3, v2205; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 8, v5206; GFX6-NEXT:    s_waitcnt lgkmcnt(3)207; GFX6-NEXT:    v_or_b32_e32 v4, v4, v9208; GFX6-NEXT:    v_or_b32_e32 v3, v3, v6209; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v4210; GFX6-NEXT:    v_or_b32_e32 v3, v4, v3211; GFX6-NEXT:    s_waitcnt lgkmcnt(2)212; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 8, v10213; GFX6-NEXT:    s_waitcnt lgkmcnt(1)214; GFX6-NEXT:    v_or_b32_e32 v4, v4, v11215; GFX6-NEXT:    s_waitcnt lgkmcnt(0)216; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 8, v0217; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v4218; GFX6-NEXT:    v_or_b32_e32 v0, v0, v8219; GFX6-NEXT:    v_or_b32_e32 v0, v4, v0220; GFX6-NEXT:    s_setpc_b64 s[30:31]221;222; GFX10-LABEL: load_lds_v4i32_align1:223; GFX10:       ; %bb.0:224; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)225; GFX10-NEXT:    ds_read_u8 v1, v0226; GFX10-NEXT:    ds_read_u8 v2, v0 offset:1227; GFX10-NEXT:    ds_read_u8 v3, v0 offset:2228; GFX10-NEXT:    ds_read_u8 v4, v0 offset:3229; GFX10-NEXT:    ds_read_u8 v5, v0 offset:4230; GFX10-NEXT:    ds_read_u8 v6, v0 offset:5231; GFX10-NEXT:    ds_read_u8 v7, v0 offset:6232; GFX10-NEXT:    ds_read_u8 v8, v0 offset:7233; GFX10-NEXT:    ds_read_u8 v9, v0 offset:8234; GFX10-NEXT:    ds_read_u8 v10, v0 offset:9235; GFX10-NEXT:    ds_read_u8 v11, v0 offset:10236; GFX10-NEXT:    ds_read_u8 v12, v0 offset:11237; GFX10-NEXT:    ds_read_u8 v13, v0 offset:12238; GFX10-NEXT:    ds_read_u8 v14, v0 offset:13239; GFX10-NEXT:    ds_read_u8 v15, v0 offset:14240; GFX10-NEXT:    ds_read_u8 v0, v0 offset:15241; GFX10-NEXT:    s_waitcnt lgkmcnt(14)242; GFX10-NEXT:    v_lshl_or_b32 v1, v2, 8, v1243; GFX10-NEXT:    s_waitcnt lgkmcnt(12)244; GFX10-NEXT:    v_lshl_or_b32 v2, v4, 8, v3245; GFX10-NEXT:    s_waitcnt lgkmcnt(10)246; GFX10-NEXT:    v_lshl_or_b32 v3, v6, 8, v5247; GFX10-NEXT:    s_waitcnt lgkmcnt(8)248; GFX10-NEXT:    v_lshl_or_b32 v4, v8, 8, v7249; GFX10-NEXT:    s_waitcnt lgkmcnt(6)250; GFX10-NEXT:    v_lshl_or_b32 v5, v10, 8, v9251; GFX10-NEXT:    s_waitcnt lgkmcnt(4)252; GFX10-NEXT:    v_lshl_or_b32 v6, v12, 8, v11253; GFX10-NEXT:    s_waitcnt lgkmcnt(2)254; GFX10-NEXT:    v_lshl_or_b32 v7, v14, 8, v13255; GFX10-NEXT:    s_waitcnt lgkmcnt(0)256; GFX10-NEXT:    v_lshl_or_b32 v8, v0, 8, v15257; GFX10-NEXT:    v_lshl_or_b32 v0, v2, 16, v1258; GFX10-NEXT:    v_lshl_or_b32 v1, v4, 16, v3259; GFX10-NEXT:    v_lshl_or_b32 v2, v6, 16, v5260; GFX10-NEXT:    v_lshl_or_b32 v3, v8, 16, v7261; GFX10-NEXT:    s_setpc_b64 s[30:31]262;263; GFX11-LABEL: load_lds_v4i32_align1:264; GFX11:       ; %bb.0:265; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)266; GFX11-NEXT:    ds_load_u8 v1, v0267; GFX11-NEXT:    ds_load_u8 v2, v0 offset:1268; GFX11-NEXT:    ds_load_u8 v3, v0 offset:2269; GFX11-NEXT:    ds_load_u8 v4, v0 offset:3270; GFX11-NEXT:    ds_load_u8 v5, v0 offset:4271; GFX11-NEXT:    ds_load_u8 v6, v0 offset:5272; GFX11-NEXT:    ds_load_u8 v7, v0 offset:6273; GFX11-NEXT:    ds_load_u8 v8, v0 offset:7274; GFX11-NEXT:    ds_load_u8 v9, v0 offset:8275; GFX11-NEXT:    ds_load_u8 v10, v0 offset:9276; GFX11-NEXT:    ds_load_u8 v11, v0 offset:10277; GFX11-NEXT:    ds_load_u8 v12, v0 offset:11278; GFX11-NEXT:    ds_load_u8 v13, v0 offset:12279; GFX11-NEXT:    ds_load_u8 v14, v0 offset:13280; GFX11-NEXT:    ds_load_u8 v15, v0 offset:14281; GFX11-NEXT:    ds_load_u8 v0, v0 offset:15282; GFX11-NEXT:    s_waitcnt lgkmcnt(14)283; GFX11-NEXT:    v_lshl_or_b32 v1, v2, 8, v1284; GFX11-NEXT:    s_waitcnt lgkmcnt(12)285; GFX11-NEXT:    v_lshl_or_b32 v2, v4, 8, v3286; GFX11-NEXT:    s_waitcnt lgkmcnt(10)287; GFX11-NEXT:    v_lshl_or_b32 v3, v6, 8, v5288; GFX11-NEXT:    s_waitcnt lgkmcnt(8)289; GFX11-NEXT:    v_lshl_or_b32 v4, v8, 8, v7290; GFX11-NEXT:    s_waitcnt lgkmcnt(6)291; GFX11-NEXT:    v_lshl_or_b32 v5, v10, 8, v9292; GFX11-NEXT:    s_waitcnt lgkmcnt(4)293; GFX11-NEXT:    v_lshl_or_b32 v6, v12, 8, v11294; GFX11-NEXT:    s_waitcnt lgkmcnt(2)295; GFX11-NEXT:    v_lshl_or_b32 v7, v14, 8, v13296; GFX11-NEXT:    s_waitcnt lgkmcnt(0)297; GFX11-NEXT:    v_lshl_or_b32 v8, v0, 8, v15298; GFX11-NEXT:    v_lshl_or_b32 v0, v2, 16, v1299; GFX11-NEXT:    v_lshl_or_b32 v1, v4, 16, v3300; GFX11-NEXT:    v_lshl_or_b32 v2, v6, 16, v5301; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4)302; GFX11-NEXT:    v_lshl_or_b32 v3, v8, 16, v7303; GFX11-NEXT:    s_setpc_b64 s[30:31]304  %load = load <4 x i32>, ptr addrspace(3) %ptr, align 1305  ret <4 x i32> %load306}307 308define <4 x i32> @load_lds_v4i32_align2(ptr addrspace(3) %ptr) {309; GFX9-LABEL: load_lds_v4i32_align2:310; GFX9:       ; %bb.0:311; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)312; GFX9-NEXT:    ds_read_u16 v1, v0313; GFX9-NEXT:    ds_read_u16 v2, v0 offset:2314; GFX9-NEXT:    ds_read_u16 v3, v0 offset:4315; GFX9-NEXT:    ds_read_u16 v4, v0 offset:6316; GFX9-NEXT:    ds_read_u16 v5, v0 offset:8317; GFX9-NEXT:    ds_read_u16 v6, v0 offset:10318; GFX9-NEXT:    ds_read_u16 v7, v0 offset:12319; GFX9-NEXT:    ds_read_u16 v8, v0 offset:14320; GFX9-NEXT:    s_waitcnt lgkmcnt(6)321; GFX9-NEXT:    v_lshl_or_b32 v0, v2, 16, v1322; GFX9-NEXT:    s_waitcnt lgkmcnt(4)323; GFX9-NEXT:    v_lshl_or_b32 v1, v4, 16, v3324; GFX9-NEXT:    s_waitcnt lgkmcnt(2)325; GFX9-NEXT:    v_lshl_or_b32 v2, v6, 16, v5326; GFX9-NEXT:    s_waitcnt lgkmcnt(0)327; GFX9-NEXT:    v_lshl_or_b32 v3, v8, 16, v7328; GFX9-NEXT:    s_setpc_b64 s[30:31]329;330; GFX7-LABEL: load_lds_v4i32_align2:331; GFX7:       ; %bb.0:332; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)333; GFX7-NEXT:    s_mov_b32 m0, -1334; GFX7-NEXT:    ds_read_u16 v1, v0 offset:2335; GFX7-NEXT:    ds_read_u16 v3, v0 offset:12336; GFX7-NEXT:    ds_read_u16 v2, v0 offset:8337; GFX7-NEXT:    ds_read_u16 v4, v0 offset:4338; GFX7-NEXT:    ds_read_u16 v5, v0339; GFX7-NEXT:    ds_read_u16 v6, v0 offset:6340; GFX7-NEXT:    ds_read_u16 v7, v0 offset:10341; GFX7-NEXT:    ds_read_u16 v8, v0 offset:14342; GFX7-NEXT:    s_waitcnt lgkmcnt(7)343; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v1344; GFX7-NEXT:    s_waitcnt lgkmcnt(3)345; GFX7-NEXT:    v_or_b32_e32 v0, v0, v5346; GFX7-NEXT:    s_waitcnt lgkmcnt(2)347; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v6348; GFX7-NEXT:    v_or_b32_e32 v1, v1, v4349; GFX7-NEXT:    s_waitcnt lgkmcnt(1)350; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v7351; GFX7-NEXT:    v_or_b32_e32 v2, v4, v2352; GFX7-NEXT:    s_waitcnt lgkmcnt(0)353; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v8354; GFX7-NEXT:    v_or_b32_e32 v3, v4, v3355; GFX7-NEXT:    s_setpc_b64 s[30:31]356;357; GFX6-LABEL: load_lds_v4i32_align2:358; GFX6:       ; %bb.0:359; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)360; GFX6-NEXT:    v_add_i32_e32 v1, vcc, 6, v0361; GFX6-NEXT:    v_add_i32_e32 v2, vcc, 4, v0362; GFX6-NEXT:    v_add_i32_e32 v3, vcc, 10, v0363; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 8, v0364; GFX6-NEXT:    v_add_i32_e32 v5, vcc, 14, v0365; GFX6-NEXT:    v_add_i32_e32 v6, vcc, 12, v0366; GFX6-NEXT:    v_add_i32_e32 v7, vcc, 2, v0367; GFX6-NEXT:    s_mov_b32 m0, -1368; GFX6-NEXT:    ds_read_u16 v1, v1369; GFX6-NEXT:    ds_read_u16 v2, v2370; GFX6-NEXT:    ds_read_u16 v3, v3371; GFX6-NEXT:    ds_read_u16 v4, v4372; GFX6-NEXT:    ds_read_u16 v5, v5373; GFX6-NEXT:    ds_read_u16 v6, v6374; GFX6-NEXT:    ds_read_u16 v7, v7375; GFX6-NEXT:    ds_read_u16 v0, v0376; GFX6-NEXT:    s_waitcnt lgkmcnt(7)377; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 16, v1378; GFX6-NEXT:    s_waitcnt lgkmcnt(6)379; GFX6-NEXT:    v_or_b32_e32 v1, v1, v2380; GFX6-NEXT:    s_waitcnt lgkmcnt(5)381; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v3382; GFX6-NEXT:    s_waitcnt lgkmcnt(4)383; GFX6-NEXT:    v_or_b32_e32 v2, v2, v4384; GFX6-NEXT:    s_waitcnt lgkmcnt(3)385; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v5386; GFX6-NEXT:    s_waitcnt lgkmcnt(1)387; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v7388; GFX6-NEXT:    v_or_b32_e32 v3, v3, v6389; GFX6-NEXT:    s_waitcnt lgkmcnt(0)390; GFX6-NEXT:    v_or_b32_e32 v0, v4, v0391; GFX6-NEXT:    s_setpc_b64 s[30:31]392;393; GFX10-LABEL: load_lds_v4i32_align2:394; GFX10:       ; %bb.0:395; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)396; GFX10-NEXT:    ds_read_u16 v1, v0397; GFX10-NEXT:    ds_read_u16 v2, v0 offset:2398; GFX10-NEXT:    ds_read_u16 v3, v0 offset:4399; GFX10-NEXT:    ds_read_u16 v4, v0 offset:6400; GFX10-NEXT:    ds_read_u16 v5, v0 offset:8401; GFX10-NEXT:    ds_read_u16 v6, v0 offset:10402; GFX10-NEXT:    ds_read_u16 v7, v0 offset:12403; GFX10-NEXT:    ds_read_u16 v8, v0 offset:14404; GFX10-NEXT:    s_waitcnt lgkmcnt(6)405; GFX10-NEXT:    v_lshl_or_b32 v0, v2, 16, v1406; GFX10-NEXT:    s_waitcnt lgkmcnt(4)407; GFX10-NEXT:    v_lshl_or_b32 v1, v4, 16, v3408; GFX10-NEXT:    s_waitcnt lgkmcnt(2)409; GFX10-NEXT:    v_lshl_or_b32 v2, v6, 16, v5410; GFX10-NEXT:    s_waitcnt lgkmcnt(0)411; GFX10-NEXT:    v_lshl_or_b32 v3, v8, 16, v7412; GFX10-NEXT:    s_setpc_b64 s[30:31]413;414; GFX11-LABEL: load_lds_v4i32_align2:415; GFX11:       ; %bb.0:416; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)417; GFX11-NEXT:    ds_load_u16 v1, v0418; GFX11-NEXT:    ds_load_u16 v2, v0 offset:2419; GFX11-NEXT:    ds_load_u16 v3, v0 offset:4420; GFX11-NEXT:    ds_load_u16 v4, v0 offset:6421; GFX11-NEXT:    ds_load_u16 v5, v0 offset:8422; GFX11-NEXT:    ds_load_u16 v6, v0 offset:10423; GFX11-NEXT:    ds_load_u16 v7, v0 offset:12424; GFX11-NEXT:    ds_load_u16 v8, v0 offset:14425; GFX11-NEXT:    s_waitcnt lgkmcnt(6)426; GFX11-NEXT:    v_lshl_or_b32 v0, v2, 16, v1427; GFX11-NEXT:    s_waitcnt lgkmcnt(4)428; GFX11-NEXT:    v_lshl_or_b32 v1, v4, 16, v3429; GFX11-NEXT:    s_waitcnt lgkmcnt(2)430; GFX11-NEXT:    v_lshl_or_b32 v2, v6, 16, v5431; GFX11-NEXT:    s_waitcnt lgkmcnt(0)432; GFX11-NEXT:    v_lshl_or_b32 v3, v8, 16, v7433; GFX11-NEXT:    s_setpc_b64 s[30:31]434  %load = load <4 x i32>, ptr addrspace(3) %ptr, align 2435  ret <4 x i32> %load436}437 438define <4 x i32> @load_lds_v4i32_align4(ptr addrspace(3) %ptr) {439; GFX9-LABEL: load_lds_v4i32_align4:440; GFX9:       ; %bb.0:441; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)442; GFX9-NEXT:    v_mov_b32_e32 v2, v0443; GFX9-NEXT:    ds_read2_b32 v[0:1], v0 offset1:1444; GFX9-NEXT:    ds_read2_b32 v[2:3], v2 offset0:2 offset1:3445; GFX9-NEXT:    s_waitcnt lgkmcnt(0)446; GFX9-NEXT:    s_setpc_b64 s[30:31]447;448; GFX7-LABEL: load_lds_v4i32_align4:449; GFX7:       ; %bb.0:450; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)451; GFX7-NEXT:    v_mov_b32_e32 v2, v0452; GFX7-NEXT:    s_mov_b32 m0, -1453; GFX7-NEXT:    ds_read2_b32 v[0:1], v0 offset1:1454; GFX7-NEXT:    ds_read2_b32 v[2:3], v2 offset0:2 offset1:3455; GFX7-NEXT:    s_waitcnt lgkmcnt(0)456; GFX7-NEXT:    s_setpc_b64 s[30:31]457;458; GFX6-LABEL: load_lds_v4i32_align4:459; GFX6:       ; %bb.0:460; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)461; GFX6-NEXT:    v_add_i32_e32 v1, vcc, 4, v0462; GFX6-NEXT:    v_add_i32_e32 v2, vcc, 8, v0463; GFX6-NEXT:    v_add_i32_e32 v3, vcc, 12, v0464; GFX6-NEXT:    s_mov_b32 m0, -1465; GFX6-NEXT:    ds_read_b32 v2, v2466; GFX6-NEXT:    ds_read_b32 v3, v3467; GFX6-NEXT:    ds_read_b32 v0, v0468; GFX6-NEXT:    ds_read_b32 v1, v1469; GFX6-NEXT:    s_waitcnt lgkmcnt(0)470; GFX6-NEXT:    s_setpc_b64 s[30:31]471;472; GFX10-LABEL: load_lds_v4i32_align4:473; GFX10:       ; %bb.0:474; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)475; GFX10-NEXT:    v_mov_b32_e32 v2, v0476; GFX10-NEXT:    ds_read2_b32 v[0:1], v0 offset1:1477; GFX10-NEXT:    ds_read2_b32 v[2:3], v2 offset0:2 offset1:3478; GFX10-NEXT:    s_waitcnt lgkmcnt(0)479; GFX10-NEXT:    s_setpc_b64 s[30:31]480;481; GFX11-LABEL: load_lds_v4i32_align4:482; GFX11:       ; %bb.0:483; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)484; GFX11-NEXT:    v_mov_b32_e32 v2, v0485; GFX11-NEXT:    ds_load_2addr_b32 v[0:1], v0 offset1:1486; GFX11-NEXT:    ds_load_2addr_b32 v[2:3], v2 offset0:2 offset1:3487; GFX11-NEXT:    s_waitcnt lgkmcnt(0)488; GFX11-NEXT:    s_setpc_b64 s[30:31]489  %load = load <4 x i32>, ptr addrspace(3) %ptr, align 4490  ret <4 x i32> %load491}492 493define <4 x i32> @load_lds_v4i32_align8(ptr addrspace(3) %ptr) {494; GFX9-LABEL: load_lds_v4i32_align8:495; GFX9:       ; %bb.0:496; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)497; GFX9-NEXT:    ds_read2_b64 v[0:3], v0 offset1:1498; GFX9-NEXT:    s_waitcnt lgkmcnt(0)499; GFX9-NEXT:    s_setpc_b64 s[30:31]500;501; GFX7-LABEL: load_lds_v4i32_align8:502; GFX7:       ; %bb.0:503; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)504; GFX7-NEXT:    s_mov_b32 m0, -1505; GFX7-NEXT:    ds_read2_b64 v[0:3], v0 offset1:1506; GFX7-NEXT:    s_waitcnt lgkmcnt(0)507; GFX7-NEXT:    s_setpc_b64 s[30:31]508;509; GFX6-LABEL: load_lds_v4i32_align8:510; GFX6:       ; %bb.0:511; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)512; GFX6-NEXT:    v_mov_b32_e32 v2, v0513; GFX6-NEXT:    s_mov_b32 m0, -1514; GFX6-NEXT:    v_add_i32_e32 v2, vcc, 8, v2515; GFX6-NEXT:    ds_read_b64 v[0:1], v0516; GFX6-NEXT:    ds_read_b64 v[2:3], v2517; GFX6-NEXT:    s_waitcnt lgkmcnt(0)518; GFX6-NEXT:    s_setpc_b64 s[30:31]519;520; GFX10-LABEL: load_lds_v4i32_align8:521; GFX10:       ; %bb.0:522; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)523; GFX10-NEXT:    ds_read2_b64 v[0:3], v0 offset1:1524; GFX10-NEXT:    s_waitcnt lgkmcnt(0)525; GFX10-NEXT:    s_setpc_b64 s[30:31]526;527; GFX11-LABEL: load_lds_v4i32_align8:528; GFX11:       ; %bb.0:529; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)530; GFX11-NEXT:    ds_load_2addr_b64 v[0:3], v0 offset1:1531; GFX11-NEXT:    s_waitcnt lgkmcnt(0)532; GFX11-NEXT:    s_setpc_b64 s[30:31]533  %load = load <4 x i32>, ptr addrspace(3) %ptr, align 8534  ret <4 x i32> %load535}536 537define <4 x i32> @load_lds_v4i32_align16(ptr addrspace(3) %ptr) {538; GFX9-LABEL: load_lds_v4i32_align16:539; GFX9:       ; %bb.0:540; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)541; GFX9-NEXT:    ds_read_b128 v[0:3], v0542; GFX9-NEXT:    s_waitcnt lgkmcnt(0)543; GFX9-NEXT:    s_setpc_b64 s[30:31]544;545; GFX7-LABEL: load_lds_v4i32_align16:546; GFX7:       ; %bb.0:547; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)548; GFX7-NEXT:    s_mov_b32 m0, -1549; GFX7-NEXT:    ds_read_b128 v[0:3], v0550; GFX7-NEXT:    s_waitcnt lgkmcnt(0)551; GFX7-NEXT:    s_setpc_b64 s[30:31]552;553; GFX6-LABEL: load_lds_v4i32_align16:554; GFX6:       ; %bb.0:555; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)556; GFX6-NEXT:    v_mov_b32_e32 v2, v0557; GFX6-NEXT:    s_mov_b32 m0, -1558; GFX6-NEXT:    v_add_i32_e32 v2, vcc, 8, v2559; GFX6-NEXT:    ds_read_b64 v[0:1], v0560; GFX6-NEXT:    ds_read_b64 v[2:3], v2561; GFX6-NEXT:    s_waitcnt lgkmcnt(0)562; GFX6-NEXT:    s_setpc_b64 s[30:31]563;564; GFX10-LABEL: load_lds_v4i32_align16:565; GFX10:       ; %bb.0:566; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)567; GFX10-NEXT:    ds_read_b128 v[0:3], v0568; GFX10-NEXT:    s_waitcnt lgkmcnt(0)569; GFX10-NEXT:    s_setpc_b64 s[30:31]570;571; GFX11-LABEL: load_lds_v4i32_align16:572; GFX11:       ; %bb.0:573; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)574; GFX11-NEXT:    ds_load_b128 v[0:3], v0575; GFX11-NEXT:    s_waitcnt lgkmcnt(0)576; GFX11-NEXT:    s_setpc_b64 s[30:31]577  %load = load <4 x i32>, ptr addrspace(3) %ptr, align 16578  ret <4 x i32> %load579}580