brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.9 KiB · bdd3cfe Raw
430 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel -new-reg-bank-select -mtriple=amdgcn-amd-amdpal -mcpu=hawaii < %s | FileCheck --check-prefixes=GFX7 %s3; RUN: llc -global-isel -new-reg-bank-select -mtriple=amdgcn-amd-amdpal -mcpu=gfx1200 < %s | FileCheck --check-prefixes=GFX12 %s4 5define amdgpu_ps void @store_P0_i8(i8 %a, ptr addrspace(0) %out) {6; GFX7-LABEL: store_P0_i8:7; GFX7:       ; %bb.0:8; GFX7-NEXT:    flat_store_byte v[1:2], v09; GFX7-NEXT:    s_endpgm10;11; GFX12-LABEL: store_P0_i8:12; GFX12:       ; %bb.0:13; GFX12-NEXT:    flat_store_b8 v[1:2], v014; GFX12-NEXT:    s_endpgm15  store i8 %a, ptr addrspace(0) %out16  ret void17}18 19define amdgpu_ps void @store_P0_i16(i16 %a, ptr addrspace(0) %out) {20; GFX7-LABEL: store_P0_i16:21; GFX7:       ; %bb.0:22; GFX7-NEXT:    flat_store_short v[1:2], v023; GFX7-NEXT:    s_endpgm24;25; GFX12-LABEL: store_P0_i16:26; GFX12:       ; %bb.0:27; GFX12-NEXT:    flat_store_b16 v[1:2], v028; GFX12-NEXT:    s_endpgm29  store i16 %a, ptr addrspace(0) %out30  ret void31}32 33define amdgpu_ps void @store_P0_i32(i32 %a, ptr addrspace(0) %out) {34; GFX7-LABEL: store_P0_i32:35; GFX7:       ; %bb.0:36; GFX7-NEXT:    flat_store_dword v[1:2], v037; GFX7-NEXT:    s_endpgm38;39; GFX12-LABEL: store_P0_i32:40; GFX12:       ; %bb.0:41; GFX12-NEXT:    flat_store_b32 v[1:2], v042; GFX12-NEXT:    s_endpgm43  store i32 %a, ptr addrspace(0) %out44  ret void45}46 47define amdgpu_ps void @store_P0_v2i32(<2 x i32> %a, ptr addrspace(0) %out) {48; GFX7-LABEL: store_P0_v2i32:49; GFX7:       ; %bb.0:50; GFX7-NEXT:    flat_store_dword v[2:3], v051; GFX7-NEXT:    v_add_i32_e32 v2, vcc, 4, v252; GFX7-NEXT:    v_addc_u32_e32 v3, vcc, 0, v3, vcc53; GFX7-NEXT:    flat_store_dword v[2:3], v154; GFX7-NEXT:    s_endpgm55;56; GFX12-LABEL: store_P0_v2i32:57; GFX12:       ; %bb.0:58; GFX12-NEXT:    flat_store_b64 v[2:3], v[0:1]59; GFX12-NEXT:    s_endpgm60  store <2 x i32> %a, ptr addrspace(0) %out61  ret void62}63 64define amdgpu_ps void @store_P0_v3i32(<3 x i32> %a, ptr addrspace(0) %out) {65; GFX7-LABEL: store_P0_v3i32:66; GFX7:       ; %bb.0:67; GFX7-NEXT:    v_add_i32_e32 v5, vcc, 4, v368; GFX7-NEXT:    v_addc_u32_e32 v6, vcc, 0, v4, vcc69; GFX7-NEXT:    flat_store_dword v[3:4], v070; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 8, v371; GFX7-NEXT:    flat_store_dword v[5:6], v172; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v4, vcc73; GFX7-NEXT:    flat_store_dword v[0:1], v274; GFX7-NEXT:    s_endpgm75;76; GFX12-LABEL: store_P0_v3i32:77; GFX12:       ; %bb.0:78; GFX12-NEXT:    flat_store_b96 v[3:4], v[0:2]79; GFX12-NEXT:    s_endpgm80  store <3 x i32> %a, ptr addrspace(0) %out81  ret void82}83 84define amdgpu_ps void @store_P0_v4i32(<4 x i32> %a, ptr addrspace(0) %out) {85; GFX7-LABEL: store_P0_v4i32:86; GFX7:       ; %bb.0:87; GFX7-NEXT:    v_add_i32_e32 v6, vcc, 4, v488; GFX7-NEXT:    v_addc_u32_e32 v7, vcc, 0, v5, vcc89; GFX7-NEXT:    flat_store_dword v[4:5], v090; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 8, v491; GFX7-NEXT:    flat_store_dword v[6:7], v192; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v5, vcc93; GFX7-NEXT:    flat_store_dword v[0:1], v294; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 12, v495; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v5, vcc96; GFX7-NEXT:    flat_store_dword v[0:1], v397; GFX7-NEXT:    s_endpgm98;99; GFX12-LABEL: store_P0_v4i32:100; GFX12:       ; %bb.0:101; GFX12-NEXT:    flat_store_b128 v[4:5], v[0:3]102; GFX12-NEXT:    s_endpgm103  store <4 x i32> %a, ptr addrspace(0) %out104  ret void105}106 107define amdgpu_ps void @store_P1_i8(i8 %a, ptr addrspace(1) %out) {108; GFX7-LABEL: store_P1_i8:109; GFX7:       ; %bb.0:110; GFX7-NEXT:    s_mov_b32 s2, 0111; GFX7-NEXT:    s_mov_b32 s3, 0xf000112; GFX7-NEXT:    s_mov_b64 s[0:1], 0113; GFX7-NEXT:    buffer_store_byte v0, v[1:2], s[0:3], 0 addr64114; GFX7-NEXT:    s_endpgm115;116; GFX12-LABEL: store_P1_i8:117; GFX12:       ; %bb.0:118; GFX12-NEXT:    global_store_b8 v[1:2], v0, off119; GFX12-NEXT:    s_endpgm120  store i8 %a, ptr addrspace(1) %out121  ret void122}123 124define amdgpu_ps void @store_P1_i16(i16 %a, ptr addrspace(1) %out) {125; GFX7-LABEL: store_P1_i16:126; GFX7:       ; %bb.0:127; GFX7-NEXT:    s_mov_b32 s2, 0128; GFX7-NEXT:    s_mov_b32 s3, 0xf000129; GFX7-NEXT:    s_mov_b64 s[0:1], 0130; GFX7-NEXT:    buffer_store_short v0, v[1:2], s[0:3], 0 addr64131; GFX7-NEXT:    s_endpgm132;133; GFX12-LABEL: store_P1_i16:134; GFX12:       ; %bb.0:135; GFX12-NEXT:    global_store_b16 v[1:2], v0, off136; GFX12-NEXT:    s_endpgm137  store i16 %a, ptr addrspace(1) %out138  ret void139}140 141define amdgpu_ps void @store_P1_i32(i32 %a, ptr addrspace(1) %out) {142; GFX7-LABEL: store_P1_i32:143; GFX7:       ; %bb.0:144; GFX7-NEXT:    s_mov_b32 s2, 0145; GFX7-NEXT:    s_mov_b32 s3, 0xf000146; GFX7-NEXT:    s_mov_b64 s[0:1], 0147; GFX7-NEXT:    buffer_store_dword v0, v[1:2], s[0:3], 0 addr64148; GFX7-NEXT:    s_endpgm149;150; GFX12-LABEL: store_P1_i32:151; GFX12:       ; %bb.0:152; GFX12-NEXT:    global_store_b32 v[1:2], v0, off153; GFX12-NEXT:    s_endpgm154  store i32 %a, ptr addrspace(1) %out155  ret void156}157 158define amdgpu_ps void @store_P1_v2i32(<2 x i32> %a, ptr addrspace(1) %out) {159; GFX7-LABEL: store_P1_v2i32:160; GFX7:       ; %bb.0:161; GFX7-NEXT:    s_mov_b32 s2, 0162; GFX7-NEXT:    s_mov_b32 s3, 0xf000163; GFX7-NEXT:    s_mov_b64 s[0:1], 0164; GFX7-NEXT:    buffer_store_dwordx2 v[0:1], v[2:3], s[0:3], 0 addr64165; GFX7-NEXT:    s_endpgm166;167; GFX12-LABEL: store_P1_v2i32:168; GFX12:       ; %bb.0:169; GFX12-NEXT:    global_store_b64 v[2:3], v[0:1], off170; GFX12-NEXT:    s_endpgm171  store <2 x i32> %a, ptr addrspace(1) %out172  ret void173}174 175define amdgpu_ps void @store_P1_v3i32(<3 x i32> %a, ptr addrspace(1) %out) {176; GFX7-LABEL: store_P1_v3i32:177; GFX7:       ; %bb.0:178; GFX7-NEXT:    s_mov_b32 s2, 0179; GFX7-NEXT:    s_mov_b32 s3, 0xf000180; GFX7-NEXT:    s_mov_b64 s[0:1], 0181; GFX7-NEXT:    buffer_store_dwordx3 v[0:2], v[3:4], s[0:3], 0 addr64182; GFX7-NEXT:    s_endpgm183;184; GFX12-LABEL: store_P1_v3i32:185; GFX12:       ; %bb.0:186; GFX12-NEXT:    global_store_b96 v[3:4], v[0:2], off187; GFX12-NEXT:    s_endpgm188  store <3 x i32> %a, ptr addrspace(1) %out189  ret void190}191 192define amdgpu_ps void @store_P1_v4i32(<4 x i32> %a, ptr addrspace(1) %out) {193; GFX7-LABEL: store_P1_v4i32:194; GFX7:       ; %bb.0:195; GFX7-NEXT:    s_mov_b32 s2, 0196; GFX7-NEXT:    s_mov_b32 s3, 0xf000197; GFX7-NEXT:    s_mov_b64 s[0:1], 0198; GFX7-NEXT:    buffer_store_dwordx4 v[0:3], v[4:5], s[0:3], 0 addr64199; GFX7-NEXT:    s_endpgm200;201; GFX12-LABEL: store_P1_v4i32:202; GFX12:       ; %bb.0:203; GFX12-NEXT:    global_store_b128 v[4:5], v[0:3], off204; GFX12-NEXT:    s_endpgm205  store <4 x i32> %a, ptr addrspace(1) %out206  ret void207}208 209define amdgpu_ps void @store_P3_i8(i8 %a, ptr addrspace(3) %out) {210; GFX7-LABEL: store_P3_i8:211; GFX7:       ; %bb.0:212; GFX7-NEXT:    s_mov_b32 m0, -1213; GFX7-NEXT:    ds_write_b8 v1, v0214; GFX7-NEXT:    s_endpgm215;216; GFX12-LABEL: store_P3_i8:217; GFX12:       ; %bb.0:218; GFX12-NEXT:    ds_store_b8 v1, v0219; GFX12-NEXT:    s_endpgm220  store i8 %a, ptr addrspace(3) %out221  ret void222}223 224define amdgpu_ps void @store_P3_i16(i16 %a, ptr addrspace(3) %out) {225; GFX7-LABEL: store_P3_i16:226; GFX7:       ; %bb.0:227; GFX7-NEXT:    s_mov_b32 m0, -1228; GFX7-NEXT:    ds_write_b16 v1, v0229; GFX7-NEXT:    s_endpgm230;231; GFX12-LABEL: store_P3_i16:232; GFX12:       ; %bb.0:233; GFX12-NEXT:    ds_store_b16 v1, v0234; GFX12-NEXT:    s_endpgm235  store i16 %a, ptr addrspace(3) %out236  ret void237}238 239define amdgpu_ps void @store_P3_i32(i32 %a, ptr addrspace(3) %out) {240; GFX7-LABEL: store_P3_i32:241; GFX7:       ; %bb.0:242; GFX7-NEXT:    s_mov_b32 m0, -1243; GFX7-NEXT:    ds_write_b32 v1, v0244; GFX7-NEXT:    s_endpgm245;246; GFX12-LABEL: store_P3_i32:247; GFX12:       ; %bb.0:248; GFX12-NEXT:    ds_store_b32 v1, v0249; GFX12-NEXT:    s_endpgm250  store i32 %a, ptr addrspace(3) %out251  ret void252}253 254define amdgpu_ps void @store_P3_v2i32(<2 x i32> %a, ptr addrspace(3) %out) {255; GFX7-LABEL: store_P3_v2i32:256; GFX7:       ; %bb.0:257; GFX7-NEXT:    s_mov_b32 m0, -1258; GFX7-NEXT:    ds_write_b64 v2, v[0:1]259; GFX7-NEXT:    s_endpgm260;261; GFX12-LABEL: store_P3_v2i32:262; GFX12:       ; %bb.0:263; GFX12-NEXT:    ds_store_b64 v2, v[0:1]264; GFX12-NEXT:    s_endpgm265  store <2 x i32> %a, ptr addrspace(3) %out266  ret void267}268 269define amdgpu_ps void @store_P3_v3i32(<3 x i32> %a, ptr addrspace(3) %out) {270; GFX7-LABEL: store_P3_v3i32:271; GFX7:       ; %bb.0:272; GFX7-NEXT:    s_mov_b32 m0, -1273; GFX7-NEXT:    ds_write_b96 v3, v[0:2]274; GFX7-NEXT:    s_endpgm275;276; GFX12-LABEL: store_P3_v3i32:277; GFX12:       ; %bb.0:278; GFX12-NEXT:    ds_store_b96 v3, v[0:2]279; GFX12-NEXT:    s_endpgm280  store <3 x i32> %a, ptr addrspace(3) %out281  ret void282}283 284define amdgpu_ps void @store_P3_v4i32(<4 x i32> %a, ptr addrspace(3) %out) {285; GFX7-LABEL: store_P3_v4i32:286; GFX7:       ; %bb.0:287; GFX7-NEXT:    s_mov_b32 m0, -1288; GFX7-NEXT:    ds_write_b128 v4, v[0:3]289; GFX7-NEXT:    s_endpgm290;291; GFX12-LABEL: store_P3_v4i32:292; GFX12:       ; %bb.0:293; GFX12-NEXT:    ds_store_b128 v4, v[0:3]294; GFX12-NEXT:    s_endpgm295  store <4 x i32> %a, ptr addrspace(3) %out296  ret void297}298 299define amdgpu_ps void @store_P5_i8(i8 %a, ptr addrspace(5) %out) {300; GFX7-LABEL: store_P5_i8:301; GFX7:       ; %bb.0:302; GFX7-NEXT:    s_getpc_b64 s[4:5]303; GFX7-NEXT:    s_mov_b32 s4, s0304; GFX7-NEXT:    s_load_dwordx4 s[4:7], s[4:5], 0x0305; GFX7-NEXT:    s_waitcnt lgkmcnt(0)306; GFX7-NEXT:    s_add_u32 s4, s4, s0307; GFX7-NEXT:    s_addc_u32 s5, s5, 0308; GFX7-NEXT:    buffer_store_byte v0, v1, s[4:7], 0 offen309; GFX7-NEXT:    s_endpgm310;311; GFX12-LABEL: store_P5_i8:312; GFX12:       ; %bb.0:313; GFX12-NEXT:    scratch_store_b8 v1, v0, off314; GFX12-NEXT:    s_endpgm315  store i8 %a, ptr addrspace(5) %out316  ret void317}318 319define amdgpu_ps void @store_P5_i16(i16 %a, ptr addrspace(5) %out) {320; GFX7-LABEL: store_P5_i16:321; GFX7:       ; %bb.0:322; GFX7-NEXT:    s_getpc_b64 s[4:5]323; GFX7-NEXT:    s_mov_b32 s4, s0324; GFX7-NEXT:    s_load_dwordx4 s[4:7], s[4:5], 0x0325; GFX7-NEXT:    s_waitcnt lgkmcnt(0)326; GFX7-NEXT:    s_add_u32 s4, s4, s0327; GFX7-NEXT:    s_addc_u32 s5, s5, 0328; GFX7-NEXT:    buffer_store_short v0, v1, s[4:7], 0 offen329; GFX7-NEXT:    s_endpgm330;331; GFX12-LABEL: store_P5_i16:332; GFX12:       ; %bb.0:333; GFX12-NEXT:    scratch_store_b16 v1, v0, off334; GFX12-NEXT:    s_endpgm335  store i16 %a, ptr addrspace(5) %out336  ret void337}338 339define amdgpu_ps void @store_P5_i32(i32 %a, ptr addrspace(5) %out) {340; GFX7-LABEL: store_P5_i32:341; GFX7:       ; %bb.0:342; GFX7-NEXT:    s_getpc_b64 s[4:5]343; GFX7-NEXT:    s_mov_b32 s4, s0344; GFX7-NEXT:    s_load_dwordx4 s[4:7], s[4:5], 0x0345; GFX7-NEXT:    s_waitcnt lgkmcnt(0)346; GFX7-NEXT:    s_add_u32 s4, s4, s0347; GFX7-NEXT:    s_addc_u32 s5, s5, 0348; GFX7-NEXT:    buffer_store_dword v0, v1, s[4:7], 0 offen349; GFX7-NEXT:    s_endpgm350;351; GFX12-LABEL: store_P5_i32:352; GFX12:       ; %bb.0:353; GFX12-NEXT:    scratch_store_b32 v1, v0, off354; GFX12-NEXT:    s_endpgm355  store i32 %a, ptr addrspace(5) %out356  ret void357}358 359define amdgpu_ps void @store_P5_v2i32(<2 x i32> %a, ptr addrspace(5) %out) {360; GFX7-LABEL: store_P5_v2i32:361; GFX7:       ; %bb.0:362; GFX7-NEXT:    s_getpc_b64 s[4:5]363; GFX7-NEXT:    s_mov_b32 s4, s0364; GFX7-NEXT:    s_load_dwordx4 s[4:7], s[4:5], 0x0365; GFX7-NEXT:    s_waitcnt lgkmcnt(0)366; GFX7-NEXT:    s_add_u32 s4, s4, s0367; GFX7-NEXT:    s_addc_u32 s5, s5, 0368; GFX7-NEXT:    buffer_store_dword v0, v2, s[4:7], 0 offen369; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 4, v2370; GFX7-NEXT:    buffer_store_dword v1, v0, s[4:7], 0 offen371; GFX7-NEXT:    s_endpgm372;373; GFX12-LABEL: store_P5_v2i32:374; GFX12:       ; %bb.0:375; GFX12-NEXT:    scratch_store_b64 v2, v[0:1], off376; GFX12-NEXT:    s_endpgm377  store <2 x i32> %a, ptr addrspace(5) %out378  ret void379}380 381define amdgpu_ps void @store_P5_v3i32(<3 x i32> %a, ptr addrspace(5) %out) {382; GFX7-LABEL: store_P5_v3i32:383; GFX7:       ; %bb.0:384; GFX7-NEXT:    s_getpc_b64 s[4:5]385; GFX7-NEXT:    s_mov_b32 s4, s0386; GFX7-NEXT:    s_load_dwordx4 s[4:7], s[4:5], 0x0387; GFX7-NEXT:    s_waitcnt lgkmcnt(0)388; GFX7-NEXT:    s_add_u32 s4, s4, s0389; GFX7-NEXT:    s_addc_u32 s5, s5, 0390; GFX7-NEXT:    buffer_store_dword v0, v3, s[4:7], 0 offen391; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 4, v3392; GFX7-NEXT:    buffer_store_dword v1, v0, s[4:7], 0 offen393; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 8, v3394; GFX7-NEXT:    buffer_store_dword v2, v0, s[4:7], 0 offen395; GFX7-NEXT:    s_endpgm396;397; GFX12-LABEL: store_P5_v3i32:398; GFX12:       ; %bb.0:399; GFX12-NEXT:    scratch_store_b96 v3, v[0:2], off400; GFX12-NEXT:    s_endpgm401  store <3 x i32> %a, ptr addrspace(5) %out402  ret void403}404 405define amdgpu_ps void @store_P5_v4i32(<4 x i32> %a, ptr addrspace(5) %out) {406; GFX7-LABEL: store_P5_v4i32:407; GFX7:       ; %bb.0:408; GFX7-NEXT:    s_getpc_b64 s[4:5]409; GFX7-NEXT:    s_mov_b32 s4, s0410; GFX7-NEXT:    s_load_dwordx4 s[4:7], s[4:5], 0x0411; GFX7-NEXT:    s_waitcnt lgkmcnt(0)412; GFX7-NEXT:    s_add_u32 s4, s4, s0413; GFX7-NEXT:    s_addc_u32 s5, s5, 0414; GFX7-NEXT:    buffer_store_dword v0, v4, s[4:7], 0 offen415; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 4, v4416; GFX7-NEXT:    buffer_store_dword v1, v0, s[4:7], 0 offen417; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 8, v4418; GFX7-NEXT:    buffer_store_dword v2, v0, s[4:7], 0 offen419; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 12, v4420; GFX7-NEXT:    buffer_store_dword v3, v0, s[4:7], 0 offen421; GFX7-NEXT:    s_endpgm422;423; GFX12-LABEL: store_P5_v4i32:424; GFX12:       ; %bb.0:425; GFX12-NEXT:    scratch_store_b128 v4, v[0:3], off426; GFX12-NEXT:    s_endpgm427  store <4 x i32> %a, ptr addrspace(5) %out428  ret void429}430