brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.2 KiB · 6248da0 Raw
275 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=amdgcn -mcpu=tonga | FileCheck -check-prefixes=PREGFX10-UNPACKED %s3; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx810 | FileCheck -check-prefixes=PREGFX10-PACKED %s4; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx900 | FileCheck -check-prefixes=PREGFX10-PACKED %s5; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1010 | FileCheck -check-prefixes=GFX10-PACKED %s6; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 -amdgpu-enable-vopd=0 | FileCheck -check-prefixes=GFX11-PACKED,GFX11-PACKED-TRUE16 %s7; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 -amdgpu-enable-vopd=0 | FileCheck -check-prefixes=GFX11-PACKED,GFX11-PACKED-FAKE16 %s8; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 -amdgpu-enable-vopd=0 | FileCheck -check-prefixes=GFX12-PACKED,GFX12-PACKED-SDAG,GFX12-PACKED-SDAG-TRUE16 %s9; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 -amdgpu-enable-vopd=0 | FileCheck -check-prefixes=GFX12-PACKED,GFX12-PACKED-SDAG,GFX12-PACKED-SDAG-FAKE16 %s10; RUN: llc < %s -global-isel -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 -amdgpu-enable-vopd=0 | FileCheck -check-prefixes=GFX12-PACKED,GFX12-PACKED-GISEL,GFX12-PACKED-GISEL-TRUE16 %s11; RUN: llc < %s -global-isel -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 -amdgpu-enable-vopd=0 | FileCheck -check-prefixes=GFX12-PACKED,GFX12-PACKED-GISEL,GFX12-PACKED-GISEL-FAKE16 %s12 13define amdgpu_kernel void @tbuffer_store_d16_x(<4 x i32> %rsrc, half %data) {14; PREGFX10-UNPACKED-LABEL: tbuffer_store_d16_x:15; PREGFX10-UNPACKED:       ; %bb.0: ; %main_body16; PREGFX10-UNPACKED-NEXT:    s_load_dword s6, s[4:5], 0x3417; PREGFX10-UNPACKED-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2418; PREGFX10-UNPACKED-NEXT:    s_waitcnt lgkmcnt(0)19; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v0, s620; PREGFX10-UNPACKED-NEXT:    tbuffer_store_format_d16_x v0, off, s[0:3], 0 format:[BUF_NUM_FORMAT_USCALED]21; PREGFX10-UNPACKED-NEXT:    s_endpgm22;23; PREGFX10-PACKED-LABEL: tbuffer_store_d16_x:24; PREGFX10-PACKED:       ; %bb.0: ; %main_body25; PREGFX10-PACKED-NEXT:    s_load_dword s6, s[4:5], 0x3426; PREGFX10-PACKED-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2427; PREGFX10-PACKED-NEXT:    s_waitcnt lgkmcnt(0)28; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v0, s629; PREGFX10-PACKED-NEXT:    tbuffer_store_format_d16_x v0, off, s[0:3], 0 format:[BUF_NUM_FORMAT_USCALED]30; PREGFX10-PACKED-NEXT:    s_endpgm31;32; GFX10-PACKED-LABEL: tbuffer_store_d16_x:33; GFX10-PACKED:       ; %bb.0: ; %main_body34; GFX10-PACKED-NEXT:    s_clause 0x135; GFX10-PACKED-NEXT:    s_load_dword s6, s[4:5], 0x3436; GFX10-PACKED-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2437; GFX10-PACKED-NEXT:    s_waitcnt lgkmcnt(0)38; GFX10-PACKED-NEXT:    v_mov_b32_e32 v0, s639; GFX10-PACKED-NEXT:    tbuffer_store_format_d16_x v0, off, s[0:3], 0 format:[BUF_FMT_10_11_11_SSCALED]40; GFX10-PACKED-NEXT:    s_endpgm41;42; GFX11-PACKED-LABEL: tbuffer_store_d16_x:43; GFX11-PACKED:       ; %bb.0: ; %main_body44; GFX11-PACKED-NEXT:    s_clause 0x145; GFX11-PACKED-NEXT:    s_load_b32 s6, s[4:5], 0x3446; GFX11-PACKED-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2447; GFX11-PACKED-NEXT:    s_waitcnt lgkmcnt(0)48; GFX11-PACKED-NEXT:    v_mov_b32_e32 v0, s649; GFX11-PACKED-NEXT:    tbuffer_store_d16_format_x v0, off, s[0:3], 0 format:[BUF_FMT_10_10_10_2_SNORM]50; GFX11-PACKED-NEXT:    s_endpgm51;52; GFX12-PACKED-LABEL: tbuffer_store_d16_x:53; GFX12-PACKED:       ; %bb.0: ; %main_body54; GFX12-PACKED-NEXT:    s_clause 0x155; GFX12-PACKED-NEXT:    s_load_b32 s6, s[4:5], 0x3456; GFX12-PACKED-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2457; GFX12-PACKED-NEXT:    s_wait_kmcnt 0x058; GFX12-PACKED-NEXT:    v_mov_b32_e32 v0, s659; GFX12-PACKED-NEXT:    tbuffer_store_d16_format_x v0, off, s[0:3], null format:[BUF_FMT_10_10_10_2_SNORM]60; GFX12-PACKED-NEXT:    s_endpgm61main_body:62  call void @llvm.amdgcn.raw.tbuffer.store.f16(half %data, <4 x i32> %rsrc, i32 0, i32 0, i32 33, i32 0)63  ret void64}65 66define amdgpu_kernel void @tbuffer_store_d16_xy(<4 x i32> %rsrc, <2 x half> %data) {67; PREGFX10-UNPACKED-LABEL: tbuffer_store_d16_xy:68; PREGFX10-UNPACKED:       ; %bb.0: ; %main_body69; PREGFX10-UNPACKED-NEXT:    s_load_dword s6, s[4:5], 0x3470; PREGFX10-UNPACKED-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2471; PREGFX10-UNPACKED-NEXT:    s_waitcnt lgkmcnt(0)72; PREGFX10-UNPACKED-NEXT:    s_lshr_b32 s4, s6, 1673; PREGFX10-UNPACKED-NEXT:    s_and_b32 s5, s6, 0xffff74; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v0, s575; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v1, s476; PREGFX10-UNPACKED-NEXT:    tbuffer_store_format_d16_xy v[0:1], off, s[0:3], 0 format:[BUF_NUM_FORMAT_USCALED]77; PREGFX10-UNPACKED-NEXT:    s_endpgm78;79; PREGFX10-PACKED-LABEL: tbuffer_store_d16_xy:80; PREGFX10-PACKED:       ; %bb.0: ; %main_body81; PREGFX10-PACKED-NEXT:    s_load_dword s6, s[4:5], 0x3482; PREGFX10-PACKED-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2483; PREGFX10-PACKED-NEXT:    s_waitcnt lgkmcnt(0)84; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v0, s685; PREGFX10-PACKED-NEXT:    tbuffer_store_format_d16_xy v0, off, s[0:3], 0 format:[BUF_NUM_FORMAT_USCALED]86; PREGFX10-PACKED-NEXT:    s_endpgm87;88; GFX10-PACKED-LABEL: tbuffer_store_d16_xy:89; GFX10-PACKED:       ; %bb.0: ; %main_body90; GFX10-PACKED-NEXT:    s_clause 0x191; GFX10-PACKED-NEXT:    s_load_dword s6, s[4:5], 0x3492; GFX10-PACKED-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2493; GFX10-PACKED-NEXT:    s_waitcnt lgkmcnt(0)94; GFX10-PACKED-NEXT:    v_mov_b32_e32 v0, s695; GFX10-PACKED-NEXT:    tbuffer_store_format_d16_xy v0, off, s[0:3], 0 format:[BUF_FMT_10_11_11_SSCALED]96; GFX10-PACKED-NEXT:    s_endpgm97;98; GFX11-PACKED-LABEL: tbuffer_store_d16_xy:99; GFX11-PACKED:       ; %bb.0: ; %main_body100; GFX11-PACKED-NEXT:    s_clause 0x1101; GFX11-PACKED-NEXT:    s_load_b32 s6, s[4:5], 0x34102; GFX11-PACKED-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24103; GFX11-PACKED-NEXT:    s_waitcnt lgkmcnt(0)104; GFX11-PACKED-NEXT:    v_mov_b32_e32 v0, s6105; GFX11-PACKED-NEXT:    tbuffer_store_d16_format_xy v0, off, s[0:3], 0 format:[BUF_FMT_10_10_10_2_SNORM]106; GFX11-PACKED-NEXT:    s_endpgm107;108; GFX12-PACKED-LABEL: tbuffer_store_d16_xy:109; GFX12-PACKED:       ; %bb.0: ; %main_body110; GFX12-PACKED-NEXT:    s_clause 0x1111; GFX12-PACKED-NEXT:    s_load_b32 s6, s[4:5], 0x34112; GFX12-PACKED-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24113; GFX12-PACKED-NEXT:    s_wait_kmcnt 0x0114; GFX12-PACKED-NEXT:    v_mov_b32_e32 v0, s6115; GFX12-PACKED-NEXT:    tbuffer_store_d16_format_xy v0, off, s[0:3], null format:[BUF_FMT_10_10_10_2_SNORM]116; GFX12-PACKED-NEXT:    s_endpgm117main_body:118  call void @llvm.amdgcn.raw.tbuffer.store.v2f16(<2 x half> %data, <4 x i32> %rsrc, i32 0, i32 0, i32 33, i32 0)119  ret void120}121 122define amdgpu_kernel void @tbuffer_store_d16_xyz(<4 x i32> %rsrc, <4 x half> %data) {123; PREGFX10-UNPACKED-LABEL: tbuffer_store_d16_xyz:124; PREGFX10-UNPACKED:       ; %bb.0: ; %main_body125; PREGFX10-UNPACKED-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34126; PREGFX10-UNPACKED-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24127; PREGFX10-UNPACKED-NEXT:    s_waitcnt lgkmcnt(0)128; PREGFX10-UNPACKED-NEXT:    s_and_b32 s4, s7, 0xffff129; PREGFX10-UNPACKED-NEXT:    s_lshr_b32 s5, s6, 16130; PREGFX10-UNPACKED-NEXT:    s_and_b32 s6, s6, 0xffff131; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v0, s6132; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v1, s5133; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v2, s4134; PREGFX10-UNPACKED-NEXT:    tbuffer_store_format_d16_xyz v[0:2], off, s[0:3], 0 format:[BUF_NUM_FORMAT_USCALED]135; PREGFX10-UNPACKED-NEXT:    s_endpgm136;137; PREGFX10-PACKED-LABEL: tbuffer_store_d16_xyz:138; PREGFX10-PACKED:       ; %bb.0: ; %main_body139; PREGFX10-PACKED-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34140; PREGFX10-PACKED-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24141; PREGFX10-PACKED-NEXT:    s_waitcnt lgkmcnt(0)142; PREGFX10-PACKED-NEXT:    s_and_b32 s4, s7, 0xffff143; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v0, s6144; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v1, s4145; PREGFX10-PACKED-NEXT:    tbuffer_store_format_d16_xyz v[0:1], off, s[0:3], 0 format:[BUF_NUM_FORMAT_USCALED]146; PREGFX10-PACKED-NEXT:    s_endpgm147;148; GFX10-PACKED-LABEL: tbuffer_store_d16_xyz:149; GFX10-PACKED:       ; %bb.0: ; %main_body150; GFX10-PACKED-NEXT:    s_clause 0x1151; GFX10-PACKED-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34152; GFX10-PACKED-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24153; GFX10-PACKED-NEXT:    s_waitcnt lgkmcnt(0)154; GFX10-PACKED-NEXT:    s_and_b32 s4, s7, 0xffff155; GFX10-PACKED-NEXT:    v_mov_b32_e32 v0, s6156; GFX10-PACKED-NEXT:    v_mov_b32_e32 v1, s4157; GFX10-PACKED-NEXT:    tbuffer_store_format_d16_xyz v[0:1], off, s[0:3], 0 format:[BUF_FMT_10_11_11_SSCALED]158; GFX10-PACKED-NEXT:    s_endpgm159;160; GFX11-PACKED-LABEL: tbuffer_store_d16_xyz:161; GFX11-PACKED:       ; %bb.0: ; %main_body162; GFX11-PACKED-NEXT:    s_clause 0x1163; GFX11-PACKED-NEXT:    s_load_b64 s[6:7], s[4:5], 0x34164; GFX11-PACKED-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24165; GFX11-PACKED-NEXT:    s_waitcnt lgkmcnt(0)166; GFX11-PACKED-NEXT:    s_and_b32 s4, s7, 0xffff167; GFX11-PACKED-NEXT:    v_mov_b32_e32 v0, s6168; GFX11-PACKED-NEXT:    v_mov_b32_e32 v1, s4169; GFX11-PACKED-NEXT:    tbuffer_store_d16_format_xyz v[0:1], off, s[0:3], 0 format:[BUF_FMT_10_10_10_2_SNORM]170; GFX11-PACKED-NEXT:    s_endpgm171;172; GFX12-PACKED-SDAG-LABEL: tbuffer_store_d16_xyz:173; GFX12-PACKED-SDAG:       ; %bb.0: ; %main_body174; GFX12-PACKED-SDAG-NEXT:    s_clause 0x1175; GFX12-PACKED-SDAG-NEXT:    s_load_b64 s[6:7], s[4:5], 0x34176; GFX12-PACKED-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24177; GFX12-PACKED-SDAG-NEXT:    s_wait_kmcnt 0x0178; GFX12-PACKED-SDAG-NEXT:    s_and_b32 s4, s7, 0xffff179; GFX12-PACKED-SDAG-NEXT:    v_mov_b32_e32 v0, s6180; GFX12-PACKED-SDAG-NEXT:    v_mov_b32_e32 v1, s4181; GFX12-PACKED-SDAG-NEXT:    tbuffer_store_d16_format_xyz v[0:1], off, s[0:3], null format:[BUF_FMT_10_10_10_2_SNORM]182; GFX12-PACKED-SDAG-NEXT:    s_endpgm183;184; GFX12-PACKED-GISEL-LABEL: tbuffer_store_d16_xyz:185; GFX12-PACKED-GISEL:       ; %bb.0: ; %main_body186; GFX12-PACKED-GISEL-NEXT:    s_clause 0x1187; GFX12-PACKED-GISEL-NEXT:    s_load_b64 s[6:7], s[4:5], 0x34188; GFX12-PACKED-GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24189; GFX12-PACKED-GISEL-NEXT:    s_wait_kmcnt 0x0190; GFX12-PACKED-GISEL-NEXT:    v_mov_b32_e32 v0, s6191; GFX12-PACKED-GISEL-NEXT:    v_mov_b32_e32 v1, s7192; GFX12-PACKED-GISEL-NEXT:    tbuffer_store_d16_format_xyz v[0:1], off, s[0:3], null format:[BUF_FMT_10_10_10_2_SNORM]193; GFX12-PACKED-GISEL-NEXT:    s_endpgm194main_body:195  %data_subvec = shufflevector <4 x half> %data, <4 x half> poison, <3 x i32> <i32 0, i32 1, i32 2>196  call void @llvm.amdgcn.raw.tbuffer.store.v3f16(<3 x half> %data_subvec, <4 x i32> %rsrc, i32 0, i32 0, i32 33, i32 0)197  ret void198}199 200define amdgpu_kernel void @tbuffer_store_d16_xyzw(<4 x i32> %rsrc, <4 x half> %data) {201; PREGFX10-UNPACKED-LABEL: tbuffer_store_d16_xyzw:202; PREGFX10-UNPACKED:       ; %bb.0: ; %main_body203; PREGFX10-UNPACKED-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34204; PREGFX10-UNPACKED-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24205; PREGFX10-UNPACKED-NEXT:    s_waitcnt lgkmcnt(0)206; PREGFX10-UNPACKED-NEXT:    s_lshr_b32 s4, s7, 16207; PREGFX10-UNPACKED-NEXT:    s_and_b32 s5, s7, 0xffff208; PREGFX10-UNPACKED-NEXT:    s_lshr_b32 s7, s6, 16209; PREGFX10-UNPACKED-NEXT:    s_and_b32 s6, s6, 0xffff210; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v0, s6211; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v1, s7212; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v2, s5213; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v3, s4214; PREGFX10-UNPACKED-NEXT:    tbuffer_store_format_d16_xyzw v[0:3], off, s[0:3], 0 format:[BUF_NUM_FORMAT_USCALED]215; PREGFX10-UNPACKED-NEXT:    s_endpgm216;217; PREGFX10-PACKED-LABEL: tbuffer_store_d16_xyzw:218; PREGFX10-PACKED:       ; %bb.0: ; %main_body219; PREGFX10-PACKED-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34220; PREGFX10-PACKED-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24221; PREGFX10-PACKED-NEXT:    s_waitcnt lgkmcnt(0)222; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v0, s6223; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v1, s7224; PREGFX10-PACKED-NEXT:    tbuffer_store_format_d16_xyzw v[0:1], off, s[0:3], 0 format:[BUF_NUM_FORMAT_USCALED]225; PREGFX10-PACKED-NEXT:    s_endpgm226;227; GFX10-PACKED-LABEL: tbuffer_store_d16_xyzw:228; GFX10-PACKED:       ; %bb.0: ; %main_body229; GFX10-PACKED-NEXT:    s_clause 0x1230; GFX10-PACKED-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34231; GFX10-PACKED-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24232; GFX10-PACKED-NEXT:    s_waitcnt lgkmcnt(0)233; GFX10-PACKED-NEXT:    v_mov_b32_e32 v0, s6234; GFX10-PACKED-NEXT:    v_mov_b32_e32 v1, s7235; GFX10-PACKED-NEXT:    tbuffer_store_format_d16_xyzw v[0:1], off, s[0:3], 0 format:[BUF_FMT_10_11_11_SSCALED]236; GFX10-PACKED-NEXT:    s_endpgm237;238; GFX11-PACKED-LABEL: tbuffer_store_d16_xyzw:239; GFX11-PACKED:       ; %bb.0: ; %main_body240; GFX11-PACKED-NEXT:    s_clause 0x1241; GFX11-PACKED-NEXT:    s_load_b64 s[6:7], s[4:5], 0x34242; GFX11-PACKED-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24243; GFX11-PACKED-NEXT:    s_waitcnt lgkmcnt(0)244; GFX11-PACKED-NEXT:    v_mov_b32_e32 v0, s6245; GFX11-PACKED-NEXT:    v_mov_b32_e32 v1, s7246; GFX11-PACKED-NEXT:    tbuffer_store_d16_format_xyzw v[0:1], off, s[0:3], 0 format:[BUF_FMT_10_10_10_2_SNORM]247; GFX11-PACKED-NEXT:    s_endpgm248;249; GFX12-PACKED-LABEL: tbuffer_store_d16_xyzw:250; GFX12-PACKED:       ; %bb.0: ; %main_body251; GFX12-PACKED-NEXT:    s_clause 0x1252; GFX12-PACKED-NEXT:    s_load_b64 s[6:7], s[4:5], 0x34253; GFX12-PACKED-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24254; GFX12-PACKED-NEXT:    s_wait_kmcnt 0x0255; GFX12-PACKED-NEXT:    v_mov_b32_e32 v0, s6256; GFX12-PACKED-NEXT:    v_mov_b32_e32 v1, s7257; GFX12-PACKED-NEXT:    tbuffer_store_d16_format_xyzw v[0:1], off, s[0:3], null format:[BUF_FMT_10_10_10_2_SNORM]258; GFX12-PACKED-NEXT:    s_endpgm259main_body:260  call void @llvm.amdgcn.raw.tbuffer.store.v4f16(<4 x half> %data, <4 x i32> %rsrc, i32 0, i32 0, i32 33, i32 0)261  ret void262}263 264declare void @llvm.amdgcn.raw.tbuffer.store.f16(half, <4 x i32>, i32, i32, i32, i32)265declare void @llvm.amdgcn.raw.tbuffer.store.v2f16(<2 x half>, <4 x i32>, i32, i32, i32, i32)266declare void @llvm.amdgcn.raw.tbuffer.store.v3f16(<3 x half>, <4 x i32>, i32, i32, i32, i32)267declare void @llvm.amdgcn.raw.tbuffer.store.v4f16(<4 x half>, <4 x i32>, i32, i32, i32, i32)268;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:269; GFX11-PACKED-FAKE16: {{.*}}270; GFX11-PACKED-TRUE16: {{.*}}271; GFX12-PACKED-GISEL-FAKE16: {{.*}}272; GFX12-PACKED-GISEL-TRUE16: {{.*}}273; GFX12-PACKED-SDAG-FAKE16: {{.*}}274; GFX12-PACKED-SDAG-TRUE16: {{.*}}275