brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.3 KiB · eb28f63 Raw
237 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=tonga < %s | FileCheck -check-prefixes=PREGFX10-UNPACKED %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx810 < %s | FileCheck -check-prefixes=PREGFX10-PACKED %s4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=PREGFX10-PACKED %s5; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10-PACKED %s6; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+real-true16 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GFX11-PACKED,GFX11-PACKED-TRUE16 %s7; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=-real-true16 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GFX11-PACKED,GFX11-PACKED-FAKE16 %s8 9define amdgpu_kernel void @tbuffer_store_d16_x(ptr addrspace(8) %rsrc, half %data, i32 %vindex) {10; PREGFX10-UNPACKED-LABEL: tbuffer_store_d16_x:11; PREGFX10-UNPACKED:       ; %bb.0: ; %main_body12; PREGFX10-UNPACKED-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x1013; PREGFX10-UNPACKED-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x014; PREGFX10-UNPACKED-NEXT:    s_waitcnt lgkmcnt(0)15; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v0, s416; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v1, s517; PREGFX10-UNPACKED-NEXT:    tbuffer_store_format_d16_x v0, v1, s[0:3], 0 format:[BUF_NUM_FORMAT_USCALED] idxen18; PREGFX10-UNPACKED-NEXT:    s_endpgm19;20; PREGFX10-PACKED-LABEL: tbuffer_store_d16_x:21; PREGFX10-PACKED:       ; %bb.0: ; %main_body22; PREGFX10-PACKED-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x1023; PREGFX10-PACKED-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x024; PREGFX10-PACKED-NEXT:    s_waitcnt lgkmcnt(0)25; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v0, s426; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v1, s527; PREGFX10-PACKED-NEXT:    tbuffer_store_format_d16_x v0, v1, s[0:3], 0 format:[BUF_NUM_FORMAT_USCALED] idxen28; PREGFX10-PACKED-NEXT:    s_endpgm29;30; GFX10-PACKED-LABEL: tbuffer_store_d16_x:31; GFX10-PACKED:       ; %bb.0: ; %main_body32; GFX10-PACKED-NEXT:    s_clause 0x133; GFX10-PACKED-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x1034; GFX10-PACKED-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x035; GFX10-PACKED-NEXT:    s_waitcnt lgkmcnt(0)36; GFX10-PACKED-NEXT:    v_mov_b32_e32 v0, s437; GFX10-PACKED-NEXT:    v_mov_b32_e32 v1, s538; GFX10-PACKED-NEXT:    tbuffer_store_format_d16_x v0, v1, s[0:3], 0 format:[BUF_FMT_10_11_11_SSCALED] idxen39; GFX10-PACKED-NEXT:    s_endpgm40;41; GFX11-PACKED-LABEL: tbuffer_store_d16_x:42; GFX11-PACKED:       ; %bb.0: ; %main_body43; GFX11-PACKED-NEXT:    s_clause 0x144; GFX11-PACKED-NEXT:    s_load_b64 s[6:7], s[4:5], 0x1045; GFX11-PACKED-NEXT:    s_load_b128 s[0:3], s[4:5], 0x046; GFX11-PACKED-NEXT:    s_waitcnt lgkmcnt(0)47; GFX11-PACKED-NEXT:    v_mov_b32_e32 v0, s648; GFX11-PACKED-NEXT:    v_mov_b32_e32 v1, s749; GFX11-PACKED-NEXT:    tbuffer_store_d16_format_x v0, v1, s[0:3], 0 format:[BUF_FMT_10_10_10_2_SNORM] idxen50; GFX11-PACKED-NEXT:    s_endpgm51main_body:52  call void @llvm.amdgcn.struct.ptr.tbuffer.store.f16(half %data, ptr addrspace(8) %rsrc, i32 %vindex, i32 0, i32 0, i32 33, i32 0)53  ret void54}55 56define amdgpu_kernel void @tbuffer_store_d16_xy(ptr addrspace(8) %rsrc, <2 x half> %data, i32 %vindex) {57; PREGFX10-UNPACKED-LABEL: tbuffer_store_d16_xy:58; PREGFX10-UNPACKED:       ; %bb.0: ; %main_body59; PREGFX10-UNPACKED-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x1060; PREGFX10-UNPACKED-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x061; PREGFX10-UNPACKED-NEXT:    s_waitcnt lgkmcnt(0)62; PREGFX10-UNPACKED-NEXT:    s_lshr_b32 s6, s4, 1663; PREGFX10-UNPACKED-NEXT:    s_and_b32 s4, s4, 0xffff64; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v0, s465; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v1, s666; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v2, s567; PREGFX10-UNPACKED-NEXT:    tbuffer_store_format_d16_xy v[0:1], v2, s[0:3], 0 format:[BUF_NUM_FORMAT_USCALED] idxen68; PREGFX10-UNPACKED-NEXT:    s_endpgm69;70; PREGFX10-PACKED-LABEL: tbuffer_store_d16_xy:71; PREGFX10-PACKED:       ; %bb.0: ; %main_body72; PREGFX10-PACKED-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x1073; PREGFX10-PACKED-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x074; PREGFX10-PACKED-NEXT:    s_waitcnt lgkmcnt(0)75; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v0, s476; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v1, s577; PREGFX10-PACKED-NEXT:    tbuffer_store_format_d16_xy v0, v1, s[0:3], 0 format:[BUF_NUM_FORMAT_USCALED] idxen78; PREGFX10-PACKED-NEXT:    s_endpgm79;80; GFX10-PACKED-LABEL: tbuffer_store_d16_xy:81; GFX10-PACKED:       ; %bb.0: ; %main_body82; GFX10-PACKED-NEXT:    s_clause 0x183; GFX10-PACKED-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x1084; GFX10-PACKED-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x085; GFX10-PACKED-NEXT:    s_waitcnt lgkmcnt(0)86; GFX10-PACKED-NEXT:    v_mov_b32_e32 v0, s487; GFX10-PACKED-NEXT:    v_mov_b32_e32 v1, s588; GFX10-PACKED-NEXT:    tbuffer_store_format_d16_xy v0, v1, s[0:3], 0 format:[BUF_FMT_10_11_11_SSCALED] idxen89; GFX10-PACKED-NEXT:    s_endpgm90;91; GFX11-PACKED-LABEL: tbuffer_store_d16_xy:92; GFX11-PACKED:       ; %bb.0: ; %main_body93; GFX11-PACKED-NEXT:    s_clause 0x194; GFX11-PACKED-NEXT:    s_load_b64 s[6:7], s[4:5], 0x1095; GFX11-PACKED-NEXT:    s_load_b128 s[0:3], s[4:5], 0x096; GFX11-PACKED-NEXT:    s_waitcnt lgkmcnt(0)97; GFX11-PACKED-NEXT:    v_mov_b32_e32 v0, s698; GFX11-PACKED-NEXT:    v_mov_b32_e32 v1, s799; GFX11-PACKED-NEXT:    tbuffer_store_d16_format_xy v0, v1, s[0:3], 0 format:[BUF_FMT_10_10_10_2_SNORM] idxen100; GFX11-PACKED-NEXT:    s_endpgm101main_body:102  call void @llvm.amdgcn.struct.ptr.tbuffer.store.v2f16(<2 x half> %data, ptr addrspace(8) %rsrc, i32 %vindex, i32 0, i32 0, i32 33, i32 0)103  ret void104}105 106define amdgpu_kernel void @tbuffer_store_d16_xyz(ptr addrspace(8) %rsrc, <4 x half> %data, i32 %vindex) {107; PREGFX10-UNPACKED-LABEL: tbuffer_store_d16_xyz:108; PREGFX10-UNPACKED:       ; %bb.0: ; %main_body109; PREGFX10-UNPACKED-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x10110; PREGFX10-UNPACKED-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0111; PREGFX10-UNPACKED-NEXT:    s_load_dword s6, s[8:9], 0x18112; PREGFX10-UNPACKED-NEXT:    s_waitcnt lgkmcnt(0)113; PREGFX10-UNPACKED-NEXT:    s_and_b32 s5, s5, 0xffff114; PREGFX10-UNPACKED-NEXT:    s_lshr_b32 s7, s4, 16115; PREGFX10-UNPACKED-NEXT:    s_and_b32 s4, s4, 0xffff116; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v0, s4117; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v1, s7118; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v2, s5119; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v3, s6120; PREGFX10-UNPACKED-NEXT:    tbuffer_store_format_d16_xyz v[0:2], v3, s[0:3], 0 format:[BUF_NUM_FORMAT_USCALED] idxen121; PREGFX10-UNPACKED-NEXT:    s_endpgm122;123; PREGFX10-PACKED-LABEL: tbuffer_store_d16_xyz:124; PREGFX10-PACKED:       ; %bb.0: ; %main_body125; PREGFX10-PACKED-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x10126; PREGFX10-PACKED-NEXT:    s_load_dword s6, s[8:9], 0x18127; PREGFX10-PACKED-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0128; PREGFX10-PACKED-NEXT:    s_waitcnt lgkmcnt(0)129; PREGFX10-PACKED-NEXT:    s_and_b32 s5, s5, 0xffff130; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v0, s4131; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v1, s5132; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v2, s6133; PREGFX10-PACKED-NEXT:    tbuffer_store_format_d16_xyz v[0:1], v2, s[0:3], 0 format:[BUF_NUM_FORMAT_USCALED] idxen134; PREGFX10-PACKED-NEXT:    s_endpgm135;136; GFX10-PACKED-LABEL: tbuffer_store_d16_xyz:137; GFX10-PACKED:       ; %bb.0: ; %main_body138; GFX10-PACKED-NEXT:    s_clause 0x2139; GFX10-PACKED-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x10140; GFX10-PACKED-NEXT:    s_load_dword s6, s[8:9], 0x18141; GFX10-PACKED-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0142; GFX10-PACKED-NEXT:    s_waitcnt lgkmcnt(0)143; GFX10-PACKED-NEXT:    s_and_b32 s5, s5, 0xffff144; GFX10-PACKED-NEXT:    v_mov_b32_e32 v0, s4145; GFX10-PACKED-NEXT:    v_mov_b32_e32 v1, s5146; GFX10-PACKED-NEXT:    v_mov_b32_e32 v2, s6147; GFX10-PACKED-NEXT:    tbuffer_store_format_d16_xyz v[0:1], v2, s[0:3], 0 format:[BUF_FMT_10_11_11_SSCALED] idxen148; GFX10-PACKED-NEXT:    s_endpgm149;150; GFX11-PACKED-LABEL: tbuffer_store_d16_xyz:151; GFX11-PACKED:       ; %bb.0: ; %main_body152; GFX11-PACKED-NEXT:    s_clause 0x2153; GFX11-PACKED-NEXT:    s_load_b64 s[6:7], s[4:5], 0x10154; GFX11-PACKED-NEXT:    s_load_b32 s8, s[4:5], 0x18155; GFX11-PACKED-NEXT:    s_load_b128 s[0:3], s[4:5], 0x0156; GFX11-PACKED-NEXT:    s_waitcnt lgkmcnt(0)157; GFX11-PACKED-NEXT:    s_and_b32 s4, s7, 0xffff158; GFX11-PACKED-NEXT:    v_mov_b32_e32 v0, s6159; GFX11-PACKED-NEXT:    v_mov_b32_e32 v1, s4160; GFX11-PACKED-NEXT:    v_mov_b32_e32 v2, s8161; GFX11-PACKED-NEXT:    tbuffer_store_d16_format_xyz v[0:1], v2, s[0:3], 0 format:[BUF_FMT_10_10_10_2_SNORM] idxen162; GFX11-PACKED-NEXT:    s_endpgm163main_body:164  %data_subvec = shufflevector <4 x half> %data, <4 x half> poison, <3 x i32> <i32 0, i32 1, i32 2>165  call void @llvm.amdgcn.struct.ptr.tbuffer.store.v3f16(<3 x half> %data_subvec, ptr addrspace(8) %rsrc, i32 %vindex, i32 0, i32 0, i32 33, i32 0)166  ret void167}168 169define amdgpu_kernel void @tbuffer_store_d16_xyzw(ptr addrspace(8) %rsrc, <4 x half> %data, i32 %vindex) {170; PREGFX10-UNPACKED-LABEL: tbuffer_store_d16_xyzw:171; PREGFX10-UNPACKED:       ; %bb.0: ; %main_body172; PREGFX10-UNPACKED-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x10173; PREGFX10-UNPACKED-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0174; PREGFX10-UNPACKED-NEXT:    s_load_dword s6, s[8:9], 0x18175; PREGFX10-UNPACKED-NEXT:    s_waitcnt lgkmcnt(0)176; PREGFX10-UNPACKED-NEXT:    s_lshr_b32 s7, s5, 16177; PREGFX10-UNPACKED-NEXT:    s_and_b32 s5, s5, 0xffff178; PREGFX10-UNPACKED-NEXT:    s_lshr_b32 s8, s4, 16179; PREGFX10-UNPACKED-NEXT:    s_and_b32 s4, s4, 0xffff180; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v0, s4181; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v1, s8182; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v2, s5183; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v3, s7184; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v4, s6185; PREGFX10-UNPACKED-NEXT:    tbuffer_store_format_d16_xyzw v[0:3], v4, s[0:3], 0 format:[BUF_NUM_FORMAT_USCALED] idxen186; PREGFX10-UNPACKED-NEXT:    s_endpgm187;188; PREGFX10-PACKED-LABEL: tbuffer_store_d16_xyzw:189; PREGFX10-PACKED:       ; %bb.0: ; %main_body190; PREGFX10-PACKED-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x10191; PREGFX10-PACKED-NEXT:    s_load_dword s6, s[8:9], 0x18192; PREGFX10-PACKED-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0193; PREGFX10-PACKED-NEXT:    s_waitcnt lgkmcnt(0)194; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v0, s4195; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v1, s5196; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v2, s6197; PREGFX10-PACKED-NEXT:    tbuffer_store_format_d16_xyzw v[0:1], v2, s[0:3], 0 format:[BUF_NUM_FORMAT_USCALED] idxen198; PREGFX10-PACKED-NEXT:    s_endpgm199;200; GFX10-PACKED-LABEL: tbuffer_store_d16_xyzw:201; GFX10-PACKED:       ; %bb.0: ; %main_body202; GFX10-PACKED-NEXT:    s_clause 0x2203; GFX10-PACKED-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x10204; GFX10-PACKED-NEXT:    s_load_dword s6, s[8:9], 0x18205; GFX10-PACKED-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0206; GFX10-PACKED-NEXT:    s_waitcnt lgkmcnt(0)207; GFX10-PACKED-NEXT:    v_mov_b32_e32 v0, s4208; GFX10-PACKED-NEXT:    v_mov_b32_e32 v1, s5209; GFX10-PACKED-NEXT:    v_mov_b32_e32 v2, s6210; GFX10-PACKED-NEXT:    tbuffer_store_format_d16_xyzw v[0:1], v2, s[0:3], 0 format:[BUF_FMT_10_11_11_SSCALED] idxen211; GFX10-PACKED-NEXT:    s_endpgm212;213; GFX11-PACKED-LABEL: tbuffer_store_d16_xyzw:214; GFX11-PACKED:       ; %bb.0: ; %main_body215; GFX11-PACKED-NEXT:    s_clause 0x2216; GFX11-PACKED-NEXT:    s_load_b64 s[6:7], s[4:5], 0x10217; GFX11-PACKED-NEXT:    s_load_b32 s8, s[4:5], 0x18218; GFX11-PACKED-NEXT:    s_load_b128 s[0:3], s[4:5], 0x0219; GFX11-PACKED-NEXT:    s_waitcnt lgkmcnt(0)220; GFX11-PACKED-NEXT:    v_mov_b32_e32 v0, s6221; GFX11-PACKED-NEXT:    v_mov_b32_e32 v1, s7222; GFX11-PACKED-NEXT:    v_mov_b32_e32 v2, s8223; GFX11-PACKED-NEXT:    tbuffer_store_d16_format_xyzw v[0:1], v2, s[0:3], 0 format:[BUF_FMT_10_10_10_2_SNORM] idxen224; GFX11-PACKED-NEXT:    s_endpgm225main_body:226  call void @llvm.amdgcn.struct.ptr.tbuffer.store.v4f16(<4 x half> %data, ptr addrspace(8) %rsrc, i32 %vindex, i32 0, i32 0, i32 33, i32 0)227  ret void228}229 230declare void @llvm.amdgcn.struct.ptr.tbuffer.store.f16(half, ptr addrspace(8), i32, i32, i32, i32, i32)231declare void @llvm.amdgcn.struct.ptr.tbuffer.store.v2f16(<2 x half>, ptr addrspace(8), i32, i32, i32, i32, i32)232declare void @llvm.amdgcn.struct.ptr.tbuffer.store.v3f16(<3 x half>, ptr addrspace(8), i32, i32, i32, i32, i32)233declare void @llvm.amdgcn.struct.ptr.tbuffer.store.v4f16(<4 x half>, ptr addrspace(8), i32, i32, i32, i32, i32)234;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:235; GFX11-PACKED-FAKE16: {{.*}}236; GFX11-PACKED-TRUE16: {{.*}}237