brintos

brintos / llvm-project-archived public Read only

0
0
Text · 21.7 KiB · 3034711 Raw
585 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 amdgpu_kernel void @store_lds_v3i32(ptr addrspace(3) %out, <3 x i32> %x) {9; GFX9-LABEL: store_lds_v3i32:10; GFX9:       ; %bb.0:11; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x1012; GFX9-NEXT:    s_waitcnt lgkmcnt(0)13; GFX9-NEXT:    s_load_dword s3, s[4:5], 0x014; GFX9-NEXT:    ; kill: killed $sgpr4_sgpr515; GFX9-NEXT:    v_mov_b32_e32 v0, s016; GFX9-NEXT:    v_mov_b32_e32 v1, s117; GFX9-NEXT:    v_mov_b32_e32 v2, s218; GFX9-NEXT:    s_waitcnt lgkmcnt(0)19; GFX9-NEXT:    v_mov_b32_e32 v3, s320; GFX9-NEXT:    ds_write_b96 v3, v[0:2]21; GFX9-NEXT:    s_endpgm22;23; GFX7-LABEL: store_lds_v3i32:24; GFX7:       ; %bb.0:25; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x426; GFX7-NEXT:    s_waitcnt lgkmcnt(0)27; GFX7-NEXT:    s_load_dword s3, s[4:5], 0x028; GFX7-NEXT:    s_mov_b32 m0, -129; GFX7-NEXT:    v_mov_b32_e32 v0, s030; GFX7-NEXT:    v_mov_b32_e32 v1, s131; GFX7-NEXT:    v_mov_b32_e32 v2, s232; GFX7-NEXT:    s_waitcnt lgkmcnt(0)33; GFX7-NEXT:    v_mov_b32_e32 v3, s334; GFX7-NEXT:    ds_write_b96 v3, v[0:2]35; GFX7-NEXT:    s_endpgm36;37; GFX6-LABEL: store_lds_v3i32:38; GFX6:       ; %bb.0:39; GFX6-NEXT:    s_load_dword s6, s[4:5], 0x040; GFX6-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x441; GFX6-NEXT:    s_mov_b32 m0, -142; GFX6-NEXT:    s_waitcnt lgkmcnt(0)43; GFX6-NEXT:    v_mov_b32_e32 v2, s644; GFX6-NEXT:    v_mov_b32_e32 v1, s245; GFX6-NEXT:    v_mov_b32_e32 v0, s046; GFX6-NEXT:    ds_write_b32 v2, v1 offset:847; GFX6-NEXT:    v_mov_b32_e32 v1, s148; GFX6-NEXT:    ds_write_b64 v2, v[0:1]49; GFX6-NEXT:    s_endpgm50;51; GFX10-LABEL: store_lds_v3i32:52; GFX10:       ; %bb.0:53; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x1054; GFX10-NEXT:    s_waitcnt lgkmcnt(0)55; GFX10-NEXT:    s_load_dword s3, s[4:5], 0x056; GFX10-NEXT:    ; kill: killed $sgpr4_sgpr557; GFX10-NEXT:    v_mov_b32_e32 v0, s058; GFX10-NEXT:    v_mov_b32_e32 v1, s159; GFX10-NEXT:    v_mov_b32_e32 v2, s260; GFX10-NEXT:    s_waitcnt lgkmcnt(0)61; GFX10-NEXT:    v_mov_b32_e32 v3, s362; GFX10-NEXT:    ds_write_b96 v3, v[0:2]63; GFX10-NEXT:    s_endpgm64;65; GFX11-LABEL: store_lds_v3i32:66; GFX11:       ; %bb.0:67; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x1068; GFX11-NEXT:    s_waitcnt lgkmcnt(0)69; GFX11-NEXT:    s_load_b32 s3, s[4:5], 0x070; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s171; GFX11-NEXT:    s_waitcnt lgkmcnt(0)72; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s373; GFX11-NEXT:    ds_store_b96 v3, v[0:2]74; GFX11-NEXT:    s_endpgm75  store <3 x i32> %x, ptr addrspace(3) %out76  ret void77}78 79define amdgpu_kernel void @store_lds_v3i32_align1(ptr addrspace(3) %out, <3 x i32> %x) {80; GFX9-LABEL: store_lds_v3i32_align1:81; GFX9:       ; %bb.0:82; GFX9-NEXT:    s_load_dword s6, s[4:5], 0x083; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x1084; GFX9-NEXT:    s_waitcnt lgkmcnt(0)85; GFX9-NEXT:    v_mov_b32_e32 v0, s686; GFX9-NEXT:    v_mov_b32_e32 v1, s287; GFX9-NEXT:    v_mov_b32_e32 v2, s188; GFX9-NEXT:    ds_write_b8 v0, v1 offset:889; GFX9-NEXT:    ds_write_b8_d16_hi v0, v1 offset:1090; GFX9-NEXT:    ds_write_b8 v0, v2 offset:491; GFX9-NEXT:    ds_write_b8_d16_hi v0, v2 offset:692; GFX9-NEXT:    v_mov_b32_e32 v1, s093; GFX9-NEXT:    s_lshr_b32 s3, s2, 894; GFX9-NEXT:    ds_write_b8 v0, v195; GFX9-NEXT:    ds_write_b8_d16_hi v0, v1 offset:296; GFX9-NEXT:    v_mov_b32_e32 v1, s397; GFX9-NEXT:    s_lshr_b32 s2, s2, 2498; GFX9-NEXT:    ds_write_b8 v0, v1 offset:999; GFX9-NEXT:    v_mov_b32_e32 v1, s2100; GFX9-NEXT:    s_lshr_b32 s2, s1, 8101; GFX9-NEXT:    ds_write_b8 v0, v1 offset:11102; GFX9-NEXT:    v_mov_b32_e32 v1, s2103; GFX9-NEXT:    s_lshr_b32 s1, s1, 24104; GFX9-NEXT:    ds_write_b8 v0, v1 offset:5105; GFX9-NEXT:    v_mov_b32_e32 v1, s1106; GFX9-NEXT:    s_lshr_b32 s1, s0, 8107; GFX9-NEXT:    ds_write_b8 v0, v1 offset:7108; GFX9-NEXT:    v_mov_b32_e32 v1, s1109; GFX9-NEXT:    s_lshr_b32 s0, s0, 24110; GFX9-NEXT:    ds_write_b8 v0, v1 offset:1111; GFX9-NEXT:    v_mov_b32_e32 v1, s0112; GFX9-NEXT:    ds_write_b8 v0, v1 offset:3113; GFX9-NEXT:    s_endpgm114;115; GFX7-LABEL: store_lds_v3i32_align1:116; GFX7:       ; %bb.0:117; GFX7-NEXT:    s_load_dword s6, s[4:5], 0x0118; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x4119; GFX7-NEXT:    s_mov_b32 m0, -1120; GFX7-NEXT:    s_waitcnt lgkmcnt(0)121; GFX7-NEXT:    v_mov_b32_e32 v0, s6122; GFX7-NEXT:    v_mov_b32_e32 v1, s2123; GFX7-NEXT:    v_mov_b32_e32 v2, s1124; GFX7-NEXT:    ds_write_b8 v0, v1 offset:8125; GFX7-NEXT:    ds_write_b8 v0, v2 offset:4126; GFX7-NEXT:    v_mov_b32_e32 v1, s0127; GFX7-NEXT:    s_lshr_b32 s3, s2, 8128; GFX7-NEXT:    ds_write_b8 v0, v1129; GFX7-NEXT:    v_mov_b32_e32 v1, s3130; GFX7-NEXT:    s_lshr_b32 s3, s2, 24131; GFX7-NEXT:    ds_write_b8 v0, v1 offset:9132; GFX7-NEXT:    v_mov_b32_e32 v1, s3133; GFX7-NEXT:    s_lshr_b32 s2, s2, 16134; GFX7-NEXT:    ds_write_b8 v0, v1 offset:11135; GFX7-NEXT:    v_mov_b32_e32 v1, s2136; GFX7-NEXT:    s_lshr_b32 s2, s1, 8137; GFX7-NEXT:    ds_write_b8 v0, v1 offset:10138; GFX7-NEXT:    v_mov_b32_e32 v1, s2139; GFX7-NEXT:    s_lshr_b32 s2, s1, 24140; GFX7-NEXT:    ds_write_b8 v0, v1 offset:5141; GFX7-NEXT:    v_mov_b32_e32 v1, s2142; GFX7-NEXT:    s_lshr_b32 s1, s1, 16143; GFX7-NEXT:    ds_write_b8 v0, v1 offset:7144; GFX7-NEXT:    v_mov_b32_e32 v1, s1145; GFX7-NEXT:    s_lshr_b32 s1, s0, 8146; GFX7-NEXT:    ds_write_b8 v0, v1 offset:6147; GFX7-NEXT:    v_mov_b32_e32 v1, s1148; GFX7-NEXT:    s_lshr_b32 s1, s0, 24149; GFX7-NEXT:    ds_write_b8 v0, v1 offset:1150; GFX7-NEXT:    v_mov_b32_e32 v1, s1151; GFX7-NEXT:    s_lshr_b32 s0, s0, 16152; GFX7-NEXT:    ds_write_b8 v0, v1 offset:3153; GFX7-NEXT:    v_mov_b32_e32 v1, s0154; GFX7-NEXT:    ds_write_b8 v0, v1 offset:2155; GFX7-NEXT:    s_endpgm156;157; GFX6-LABEL: store_lds_v3i32_align1:158; GFX6:       ; %bb.0:159; GFX6-NEXT:    s_load_dword s6, s[4:5], 0x0160; GFX6-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x4161; GFX6-NEXT:    s_mov_b32 m0, -1162; GFX6-NEXT:    s_waitcnt lgkmcnt(0)163; GFX6-NEXT:    v_mov_b32_e32 v0, s6164; GFX6-NEXT:    v_mov_b32_e32 v1, s2165; GFX6-NEXT:    v_mov_b32_e32 v2, s1166; GFX6-NEXT:    ds_write_b8 v0, v1 offset:8167; GFX6-NEXT:    ds_write_b8 v0, v2 offset:4168; GFX6-NEXT:    v_mov_b32_e32 v1, s0169; GFX6-NEXT:    s_lshr_b32 s3, s2, 8170; GFX6-NEXT:    ds_write_b8 v0, v1171; GFX6-NEXT:    v_mov_b32_e32 v1, s3172; GFX6-NEXT:    s_lshr_b32 s3, s2, 24173; GFX6-NEXT:    ds_write_b8 v0, v1 offset:9174; GFX6-NEXT:    v_mov_b32_e32 v1, s3175; GFX6-NEXT:    s_lshr_b32 s2, s2, 16176; GFX6-NEXT:    ds_write_b8 v0, v1 offset:11177; GFX6-NEXT:    v_mov_b32_e32 v1, s2178; GFX6-NEXT:    s_lshr_b32 s2, s1, 8179; GFX6-NEXT:    ds_write_b8 v0, v1 offset:10180; GFX6-NEXT:    v_mov_b32_e32 v1, s2181; GFX6-NEXT:    s_lshr_b32 s2, s1, 24182; GFX6-NEXT:    ds_write_b8 v0, v1 offset:5183; GFX6-NEXT:    v_mov_b32_e32 v1, s2184; GFX6-NEXT:    s_lshr_b32 s1, s1, 16185; GFX6-NEXT:    ds_write_b8 v0, v1 offset:7186; GFX6-NEXT:    v_mov_b32_e32 v1, s1187; GFX6-NEXT:    s_lshr_b32 s1, s0, 8188; GFX6-NEXT:    ds_write_b8 v0, v1 offset:6189; GFX6-NEXT:    v_mov_b32_e32 v1, s1190; GFX6-NEXT:    s_lshr_b32 s1, s0, 24191; GFX6-NEXT:    ds_write_b8 v0, v1 offset:1192; GFX6-NEXT:    v_mov_b32_e32 v1, s1193; GFX6-NEXT:    s_lshr_b32 s0, s0, 16194; GFX6-NEXT:    ds_write_b8 v0, v1 offset:3195; GFX6-NEXT:    v_mov_b32_e32 v1, s0196; GFX6-NEXT:    ds_write_b8 v0, v1 offset:2197; GFX6-NEXT:    s_endpgm198;199; GFX10-LABEL: store_lds_v3i32_align1:200; GFX10:       ; %bb.0:201; GFX10-NEXT:    s_clause 0x1202; GFX10-NEXT:    s_load_dword s6, s[4:5], 0x0203; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x10204; GFX10-NEXT:    s_waitcnt lgkmcnt(0)205; GFX10-NEXT:    v_mov_b32_e32 v0, s6206; GFX10-NEXT:    v_mov_b32_e32 v1, s2207; GFX10-NEXT:    v_mov_b32_e32 v2, s1208; GFX10-NEXT:    v_mov_b32_e32 v3, s0209; GFX10-NEXT:    s_lshr_b32 s3, s2, 8210; GFX10-NEXT:    s_lshr_b32 s2, s2, 24211; GFX10-NEXT:    s_lshr_b32 s4, s1, 8212; GFX10-NEXT:    s_lshr_b32 s1, s1, 24213; GFX10-NEXT:    s_lshr_b32 s5, s0, 8214; GFX10-NEXT:    s_lshr_b32 s0, s0, 24215; GFX10-NEXT:    v_mov_b32_e32 v4, s3216; GFX10-NEXT:    v_mov_b32_e32 v5, s2217; GFX10-NEXT:    v_mov_b32_e32 v6, s4218; GFX10-NEXT:    v_mov_b32_e32 v7, s1219; GFX10-NEXT:    v_mov_b32_e32 v8, s5220; GFX10-NEXT:    v_mov_b32_e32 v9, s0221; GFX10-NEXT:    ds_write_b8 v0, v1 offset:8222; GFX10-NEXT:    ds_write_b8_d16_hi v0, v1 offset:10223; GFX10-NEXT:    ds_write_b8 v0, v2 offset:4224; GFX10-NEXT:    ds_write_b8_d16_hi v0, v2 offset:6225; GFX10-NEXT:    ds_write_b8 v0, v3226; GFX10-NEXT:    ds_write_b8_d16_hi v0, v3 offset:2227; GFX10-NEXT:    ds_write_b8 v0, v4 offset:9228; GFX10-NEXT:    ds_write_b8 v0, v5 offset:11229; GFX10-NEXT:    ds_write_b8 v0, v6 offset:5230; GFX10-NEXT:    ds_write_b8 v0, v7 offset:7231; GFX10-NEXT:    ds_write_b8 v0, v8 offset:1232; GFX10-NEXT:    ds_write_b8 v0, v9 offset:3233; GFX10-NEXT:    s_endpgm234;235; GFX11-LABEL: store_lds_v3i32_align1:236; GFX11:       ; %bb.0:237; GFX11-NEXT:    s_clause 0x1238; GFX11-NEXT:    s_load_b32 s6, s[4:5], 0x0239; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x10240; GFX11-NEXT:    s_waitcnt lgkmcnt(0)241; GFX11-NEXT:    v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s2242; GFX11-NEXT:    s_lshr_b32 s3, s2, 8243; GFX11-NEXT:    s_lshr_b32 s2, s2, 24244; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)245; GFX11-NEXT:    v_dual_mov_b32 v4, s3 :: v_dual_mov_b32 v5, s2246; GFX11-NEXT:    v_dual_mov_b32 v2, s1 :: v_dual_mov_b32 v3, s0247; GFX11-NEXT:    s_lshr_b32 s4, s1, 8248; GFX11-NEXT:    s_lshr_b32 s1, s1, 24249; GFX11-NEXT:    s_lshr_b32 s5, s0, 8250; GFX11-NEXT:    s_lshr_b32 s0, s0, 24251; GFX11-NEXT:    v_dual_mov_b32 v6, s4 :: v_dual_mov_b32 v7, s1252; GFX11-NEXT:    v_dual_mov_b32 v8, s5 :: v_dual_mov_b32 v9, s0253; GFX11-NEXT:    ds_store_b8 v0, v1 offset:8254; GFX11-NEXT:    ds_store_b8_d16_hi v0, v1 offset:10255; GFX11-NEXT:    ds_store_b8 v0, v4 offset:9256; GFX11-NEXT:    ds_store_b8 v0, v5 offset:11257; GFX11-NEXT:    ds_store_b8 v0, v3258; GFX11-NEXT:    ds_store_b8_d16_hi v0, v3 offset:2259; GFX11-NEXT:    ds_store_b8 v0, v2 offset:4260; GFX11-NEXT:    ds_store_b8_d16_hi v0, v2 offset:6261; GFX11-NEXT:    ds_store_b8 v0, v6 offset:5262; GFX11-NEXT:    ds_store_b8 v0, v7 offset:7263; GFX11-NEXT:    ds_store_b8 v0, v8 offset:1264; GFX11-NEXT:    ds_store_b8 v0, v9 offset:3265; GFX11-NEXT:    s_endpgm266  store <3 x i32> %x, ptr addrspace(3) %out, align 1267  ret void268}269 270define amdgpu_kernel void @store_lds_v3i32_align2(ptr addrspace(3) %out, <3 x i32> %x) {271; GFX9-LABEL: store_lds_v3i32_align2:272; GFX9:       ; %bb.0:273; GFX9-NEXT:    s_load_dword s6, s[4:5], 0x0274; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x10275; GFX9-NEXT:    s_waitcnt lgkmcnt(0)276; GFX9-NEXT:    v_mov_b32_e32 v0, s6277; GFX9-NEXT:    v_mov_b32_e32 v1, s2278; GFX9-NEXT:    v_mov_b32_e32 v2, s1279; GFX9-NEXT:    ds_write_b16 v0, v1 offset:8280; GFX9-NEXT:    ds_write_b16_d16_hi v0, v1 offset:10281; GFX9-NEXT:    ds_write_b16 v0, v2 offset:4282; GFX9-NEXT:    ds_write_b16_d16_hi v0, v2 offset:6283; GFX9-NEXT:    v_mov_b32_e32 v1, s0284; GFX9-NEXT:    ds_write_b16 v0, v1285; GFX9-NEXT:    ds_write_b16_d16_hi v0, v1 offset:2286; GFX9-NEXT:    s_endpgm287;288; GFX7-LABEL: store_lds_v3i32_align2:289; GFX7:       ; %bb.0:290; GFX7-NEXT:    s_load_dword s6, s[4:5], 0x0291; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x4292; GFX7-NEXT:    s_mov_b32 m0, -1293; GFX7-NEXT:    s_waitcnt lgkmcnt(0)294; GFX7-NEXT:    v_mov_b32_e32 v0, s6295; GFX7-NEXT:    v_mov_b32_e32 v1, s2296; GFX7-NEXT:    v_mov_b32_e32 v2, s1297; GFX7-NEXT:    ds_write_b16 v0, v1 offset:8298; GFX7-NEXT:    ds_write_b16 v0, v2 offset:4299; GFX7-NEXT:    v_mov_b32_e32 v1, s0300; GFX7-NEXT:    s_lshr_b32 s2, s2, 16301; GFX7-NEXT:    ds_write_b16 v0, v1302; GFX7-NEXT:    v_mov_b32_e32 v1, s2303; GFX7-NEXT:    s_lshr_b32 s1, s1, 16304; GFX7-NEXT:    ds_write_b16 v0, v1 offset:10305; GFX7-NEXT:    v_mov_b32_e32 v1, s1306; GFX7-NEXT:    s_lshr_b32 s0, s0, 16307; GFX7-NEXT:    ds_write_b16 v0, v1 offset:6308; GFX7-NEXT:    v_mov_b32_e32 v1, s0309; GFX7-NEXT:    ds_write_b16 v0, v1 offset:2310; GFX7-NEXT:    s_endpgm311;312; GFX6-LABEL: store_lds_v3i32_align2:313; GFX6:       ; %bb.0:314; GFX6-NEXT:    s_load_dword s6, s[4:5], 0x0315; GFX6-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x4316; GFX6-NEXT:    s_mov_b32 m0, -1317; GFX6-NEXT:    s_waitcnt lgkmcnt(0)318; GFX6-NEXT:    v_mov_b32_e32 v0, s6319; GFX6-NEXT:    v_mov_b32_e32 v1, s2320; GFX6-NEXT:    v_mov_b32_e32 v2, s1321; GFX6-NEXT:    ds_write_b16 v0, v1 offset:8322; GFX6-NEXT:    ds_write_b16 v0, v2 offset:4323; GFX6-NEXT:    v_mov_b32_e32 v1, s0324; GFX6-NEXT:    s_lshr_b32 s2, s2, 16325; GFX6-NEXT:    ds_write_b16 v0, v1326; GFX6-NEXT:    v_mov_b32_e32 v1, s2327; GFX6-NEXT:    s_lshr_b32 s1, s1, 16328; GFX6-NEXT:    ds_write_b16 v0, v1 offset:10329; GFX6-NEXT:    v_mov_b32_e32 v1, s1330; GFX6-NEXT:    s_lshr_b32 s0, s0, 16331; GFX6-NEXT:    ds_write_b16 v0, v1 offset:6332; GFX6-NEXT:    v_mov_b32_e32 v1, s0333; GFX6-NEXT:    ds_write_b16 v0, v1 offset:2334; GFX6-NEXT:    s_endpgm335;336; GFX10-LABEL: store_lds_v3i32_align2:337; GFX10:       ; %bb.0:338; GFX10-NEXT:    s_clause 0x1339; GFX10-NEXT:    s_load_dword s6, s[4:5], 0x0340; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x10341; GFX10-NEXT:    s_waitcnt lgkmcnt(0)342; GFX10-NEXT:    v_mov_b32_e32 v0, s6343; GFX10-NEXT:    v_mov_b32_e32 v1, s2344; GFX10-NEXT:    v_mov_b32_e32 v2, s1345; GFX10-NEXT:    v_mov_b32_e32 v3, s0346; GFX10-NEXT:    ds_write_b16 v0, v1 offset:8347; GFX10-NEXT:    ds_write_b16_d16_hi v0, v1 offset:10348; GFX10-NEXT:    ds_write_b16 v0, v2 offset:4349; GFX10-NEXT:    ds_write_b16_d16_hi v0, v2 offset:6350; GFX10-NEXT:    ds_write_b16 v0, v3351; GFX10-NEXT:    ds_write_b16_d16_hi v0, v3 offset:2352; GFX10-NEXT:    s_endpgm353;354; GFX11-LABEL: store_lds_v3i32_align2:355; GFX11:       ; %bb.0:356; GFX11-NEXT:    s_clause 0x1357; GFX11-NEXT:    s_load_b32 s6, s[4:5], 0x0358; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x10359; GFX11-NEXT:    s_waitcnt lgkmcnt(0)360; GFX11-NEXT:    v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s0361; GFX11-NEXT:    v_dual_mov_b32 v2, s1 :: v_dual_mov_b32 v3, s2362; GFX11-NEXT:    ds_store_b16 v0, v1363; GFX11-NEXT:    ds_store_b16 v0, v2 offset:4364; GFX11-NEXT:    ds_store_b16 v0, v3 offset:8365; GFX11-NEXT:    ds_store_b16_d16_hi v0, v3 offset:10366; GFX11-NEXT:    ds_store_b16_d16_hi v0, v2 offset:6367; GFX11-NEXT:    ds_store_b16_d16_hi v0, v1 offset:2368; GFX11-NEXT:    s_endpgm369  store <3 x i32> %x, ptr addrspace(3) %out, align 2370  ret void371}372 373define amdgpu_kernel void @store_lds_v3i32_align4(ptr addrspace(3) %out, <3 x i32> %x) {374; GFX9-LABEL: store_lds_v3i32_align4:375; GFX9:       ; %bb.0:376; GFX9-NEXT:    s_load_dword s6, s[4:5], 0x0377; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x10378; GFX9-NEXT:    s_waitcnt lgkmcnt(0)379; GFX9-NEXT:    v_mov_b32_e32 v0, s6380; GFX9-NEXT:    v_mov_b32_e32 v1, s0381; GFX9-NEXT:    v_mov_b32_e32 v2, s1382; GFX9-NEXT:    v_mov_b32_e32 v3, s2383; GFX9-NEXT:    ds_write2_b32 v0, v1, v2 offset1:1384; GFX9-NEXT:    ds_write_b32 v0, v3 offset:8385; GFX9-NEXT:    s_endpgm386;387; GFX7-LABEL: store_lds_v3i32_align4:388; GFX7:       ; %bb.0:389; GFX7-NEXT:    s_load_dword s6, s[4:5], 0x0390; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x4391; GFX7-NEXT:    s_mov_b32 m0, -1392; GFX7-NEXT:    s_waitcnt lgkmcnt(0)393; GFX7-NEXT:    v_mov_b32_e32 v0, s6394; GFX7-NEXT:    v_mov_b32_e32 v1, s0395; GFX7-NEXT:    v_mov_b32_e32 v2, s1396; GFX7-NEXT:    ds_write2_b32 v0, v1, v2 offset1:1397; GFX7-NEXT:    v_mov_b32_e32 v1, s2398; GFX7-NEXT:    ds_write_b32 v0, v1 offset:8399; GFX7-NEXT:    s_endpgm400;401; GFX6-LABEL: store_lds_v3i32_align4:402; GFX6:       ; %bb.0:403; GFX6-NEXT:    s_load_dword s6, s[4:5], 0x0404; GFX6-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x4405; GFX6-NEXT:    s_mov_b32 m0, -1406; GFX6-NEXT:    s_waitcnt lgkmcnt(0)407; GFX6-NEXT:    v_mov_b32_e32 v0, s6408; GFX6-NEXT:    v_mov_b32_e32 v1, s2409; GFX6-NEXT:    v_mov_b32_e32 v2, s0410; GFX6-NEXT:    ds_write_b32 v0, v1 offset:8411; GFX6-NEXT:    v_mov_b32_e32 v1, s1412; GFX6-NEXT:    ds_write2_b32 v0, v2, v1 offset1:1413; GFX6-NEXT:    s_endpgm414;415; GFX10-LABEL: store_lds_v3i32_align4:416; GFX10:       ; %bb.0:417; GFX10-NEXT:    s_clause 0x1418; GFX10-NEXT:    s_load_dword s6, s[4:5], 0x0419; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x10420; GFX10-NEXT:    s_waitcnt lgkmcnt(0)421; GFX10-NEXT:    v_mov_b32_e32 v0, s6422; GFX10-NEXT:    v_mov_b32_e32 v1, s2423; GFX10-NEXT:    v_mov_b32_e32 v2, s0424; GFX10-NEXT:    v_mov_b32_e32 v3, s1425; GFX10-NEXT:    ds_write_b32 v0, v1 offset:8426; GFX10-NEXT:    ds_write2_b32 v0, v2, v3 offset1:1427; GFX10-NEXT:    s_endpgm428;429; GFX11-LABEL: store_lds_v3i32_align4:430; GFX11:       ; %bb.0:431; GFX11-NEXT:    s_clause 0x1432; GFX11-NEXT:    s_load_b32 s6, s[4:5], 0x0433; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x10434; GFX11-NEXT:    s_waitcnt lgkmcnt(0)435; GFX11-NEXT:    v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s0436; GFX11-NEXT:    v_dual_mov_b32 v2, s1 :: v_dual_mov_b32 v3, s2437; GFX11-NEXT:    ds_store_2addr_b32 v0, v1, v2 offset1:1438; GFX11-NEXT:    ds_store_b32 v0, v3 offset:8439; GFX11-NEXT:    s_endpgm440  store <3 x i32> %x, ptr addrspace(3) %out, align 4441  ret void442}443 444define amdgpu_kernel void @store_lds_v3i32_align8(ptr addrspace(3) %out, <3 x i32> %x) {445; GFX9-LABEL: store_lds_v3i32_align8:446; GFX9:       ; %bb.0:447; GFX9-NEXT:    s_load_dword s6, s[4:5], 0x0448; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x10449; GFX9-NEXT:    s_waitcnt lgkmcnt(0)450; GFX9-NEXT:    v_mov_b32_e32 v2, s6451; GFX9-NEXT:    v_mov_b32_e32 v3, s2452; GFX9-NEXT:    v_mov_b32_e32 v0, s0453; GFX9-NEXT:    v_mov_b32_e32 v1, s1454; GFX9-NEXT:    ds_write_b32 v2, v3 offset:8455; GFX9-NEXT:    ds_write_b64 v2, v[0:1]456; GFX9-NEXT:    s_endpgm457;458; GFX7-LABEL: store_lds_v3i32_align8:459; GFX7:       ; %bb.0:460; GFX7-NEXT:    s_load_dword s6, s[4:5], 0x0461; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x4462; GFX7-NEXT:    s_mov_b32 m0, -1463; GFX7-NEXT:    s_waitcnt lgkmcnt(0)464; GFX7-NEXT:    v_mov_b32_e32 v2, s6465; GFX7-NEXT:    v_mov_b32_e32 v1, s2466; GFX7-NEXT:    v_mov_b32_e32 v0, s0467; GFX7-NEXT:    ds_write_b32 v2, v1 offset:8468; GFX7-NEXT:    v_mov_b32_e32 v1, s1469; GFX7-NEXT:    ds_write_b64 v2, v[0:1]470; GFX7-NEXT:    s_endpgm471;472; GFX6-LABEL: store_lds_v3i32_align8:473; GFX6:       ; %bb.0:474; GFX6-NEXT:    s_load_dword s6, s[4:5], 0x0475; GFX6-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x4476; GFX6-NEXT:    s_mov_b32 m0, -1477; GFX6-NEXT:    s_waitcnt lgkmcnt(0)478; GFX6-NEXT:    v_mov_b32_e32 v2, s6479; GFX6-NEXT:    v_mov_b32_e32 v1, s2480; GFX6-NEXT:    v_mov_b32_e32 v0, s0481; GFX6-NEXT:    ds_write_b32 v2, v1 offset:8482; GFX6-NEXT:    v_mov_b32_e32 v1, s1483; GFX6-NEXT:    ds_write_b64 v2, v[0:1]484; GFX6-NEXT:    s_endpgm485;486; GFX10-LABEL: store_lds_v3i32_align8:487; GFX10:       ; %bb.0:488; GFX10-NEXT:    s_clause 0x1489; GFX10-NEXT:    s_load_dword s6, s[4:5], 0x0490; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x10491; GFX10-NEXT:    s_waitcnt lgkmcnt(0)492; GFX10-NEXT:    v_mov_b32_e32 v2, s6493; GFX10-NEXT:    v_mov_b32_e32 v3, s2494; GFX10-NEXT:    v_mov_b32_e32 v0, s0495; GFX10-NEXT:    v_mov_b32_e32 v1, s1496; GFX10-NEXT:    ds_write_b32 v2, v3 offset:8497; GFX10-NEXT:    ds_write_b64 v2, v[0:1]498; GFX10-NEXT:    s_endpgm499;500; GFX11-LABEL: store_lds_v3i32_align8:501; GFX11:       ; %bb.0:502; GFX11-NEXT:    s_clause 0x1503; GFX11-NEXT:    s_load_b32 s6, s[4:5], 0x0504; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x10505; GFX11-NEXT:    s_waitcnt lgkmcnt(0)506; GFX11-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s2507; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1508; GFX11-NEXT:    ds_store_b32 v2, v3 offset:8509; GFX11-NEXT:    ds_store_b64 v2, v[0:1]510; GFX11-NEXT:    s_endpgm511  store <3 x i32> %x, ptr addrspace(3) %out, align 8512  ret void513}514 515define amdgpu_kernel void @store_lds_v3i32_align16(ptr addrspace(3) %out, <3 x i32> %x) {516; GFX9-LABEL: store_lds_v3i32_align16:517; GFX9:       ; %bb.0:518; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x10519; GFX9-NEXT:    s_waitcnt lgkmcnt(0)520; GFX9-NEXT:    s_load_dword s3, s[4:5], 0x0521; GFX9-NEXT:    ; kill: killed $sgpr4_sgpr5522; GFX9-NEXT:    v_mov_b32_e32 v0, s0523; GFX9-NEXT:    v_mov_b32_e32 v1, s1524; GFX9-NEXT:    v_mov_b32_e32 v2, s2525; GFX9-NEXT:    s_waitcnt lgkmcnt(0)526; GFX9-NEXT:    v_mov_b32_e32 v3, s3527; GFX9-NEXT:    ds_write_b96 v3, v[0:2]528; GFX9-NEXT:    s_endpgm529;530; GFX7-LABEL: store_lds_v3i32_align16:531; GFX7:       ; %bb.0:532; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x4533; GFX7-NEXT:    s_waitcnt lgkmcnt(0)534; GFX7-NEXT:    s_load_dword s3, s[4:5], 0x0535; GFX7-NEXT:    s_mov_b32 m0, -1536; GFX7-NEXT:    v_mov_b32_e32 v0, s0537; GFX7-NEXT:    v_mov_b32_e32 v1, s1538; GFX7-NEXT:    v_mov_b32_e32 v2, s2539; GFX7-NEXT:    s_waitcnt lgkmcnt(0)540; GFX7-NEXT:    v_mov_b32_e32 v3, s3541; GFX7-NEXT:    ds_write_b96 v3, v[0:2]542; GFX7-NEXT:    s_endpgm543;544; GFX6-LABEL: store_lds_v3i32_align16:545; GFX6:       ; %bb.0:546; GFX6-NEXT:    s_load_dword s6, s[4:5], 0x0547; GFX6-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x4548; GFX6-NEXT:    s_mov_b32 m0, -1549; GFX6-NEXT:    s_waitcnt lgkmcnt(0)550; GFX6-NEXT:    v_mov_b32_e32 v2, s6551; GFX6-NEXT:    v_mov_b32_e32 v1, s2552; GFX6-NEXT:    v_mov_b32_e32 v0, s0553; GFX6-NEXT:    ds_write_b32 v2, v1 offset:8554; GFX6-NEXT:    v_mov_b32_e32 v1, s1555; GFX6-NEXT:    ds_write_b64 v2, v[0:1]556; GFX6-NEXT:    s_endpgm557;558; GFX10-LABEL: store_lds_v3i32_align16:559; GFX10:       ; %bb.0:560; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x10561; GFX10-NEXT:    s_waitcnt lgkmcnt(0)562; GFX10-NEXT:    s_load_dword s3, s[4:5], 0x0563; GFX10-NEXT:    ; kill: killed $sgpr4_sgpr5564; GFX10-NEXT:    v_mov_b32_e32 v0, s0565; GFX10-NEXT:    v_mov_b32_e32 v1, s1566; GFX10-NEXT:    v_mov_b32_e32 v2, s2567; GFX10-NEXT:    s_waitcnt lgkmcnt(0)568; GFX10-NEXT:    v_mov_b32_e32 v3, s3569; GFX10-NEXT:    ds_write_b96 v3, v[0:2]570; GFX10-NEXT:    s_endpgm571;572; GFX11-LABEL: store_lds_v3i32_align16:573; GFX11:       ; %bb.0:574; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x10575; GFX11-NEXT:    s_waitcnt lgkmcnt(0)576; GFX11-NEXT:    s_load_b32 s3, s[4:5], 0x0577; GFX11-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1578; GFX11-NEXT:    s_waitcnt lgkmcnt(0)579; GFX11-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3580; GFX11-NEXT:    ds_store_b96 v3, v[0:2]581; GFX11-NEXT:    s_endpgm582  store <3 x i32> %x, ptr addrspace(3) %out, align 16583  ret void584}585