brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.6 KiB · dc08377 Raw
193 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=amdgcn -mcpu=tonga -show-mc-encoding | FileCheck -enable-var-scope -check-prefixes=PREGFX10-UNPACKED %s3; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx810 | FileCheck -enable-var-scope -check-prefixes=PREGFX10-PACKED %s4; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx900 | FileCheck -enable-var-scope -check-prefixes=PREGFX10-PACKED %s5; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1010 | FileCheck -enable-var-scope -check-prefixes=GFX10-PACKED %s6; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 | FileCheck -enable-var-scope -check-prefixes=GFX11-PACKED %s7; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 | FileCheck -enable-var-scope -check-prefixes=GFX11-PACKED %s8; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 | FileCheck -enable-var-scope -check-prefixes=GFX12-PACKED %s9; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 | FileCheck -enable-var-scope -check-prefixes=GFX12-PACKED %s10 11define amdgpu_ps half @tbuffer_load_d16_x(<4 x i32> inreg %rsrc) {12; PREGFX10-UNPACKED-LABEL: tbuffer_load_d16_x:13; PREGFX10-UNPACKED:       ; %bb.0: ; %main_body14; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v0, 0 ; encoding: [0x80,0x02,0x00,0x7e]15; PREGFX10-UNPACKED-NEXT:    tbuffer_load_format_d16_x v0, v0, s[0:3], 0 format:[BUF_DATA_FORMAT_10_11_11,BUF_NUM_FORMAT_SNORM] idxen ; encoding: [0x00,0x20,0xb4,0xe8,0x00,0x00,0x00,0x80]16; PREGFX10-UNPACKED-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]17; PREGFX10-UNPACKED-NEXT:    ; return to shader part epilog18;19; PREGFX10-PACKED-LABEL: tbuffer_load_d16_x:20; PREGFX10-PACKED:       ; %bb.0: ; %main_body21; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v0, 022; PREGFX10-PACKED-NEXT:    tbuffer_load_format_d16_x v0, v0, s[0:3], 0 format:[BUF_DATA_FORMAT_10_11_11,BUF_NUM_FORMAT_SNORM] idxen23; PREGFX10-PACKED-NEXT:    s_waitcnt vmcnt(0)24; PREGFX10-PACKED-NEXT:    ; return to shader part epilog25;26; GFX10-PACKED-LABEL: tbuffer_load_d16_x:27; GFX10-PACKED:       ; %bb.0: ; %main_body28; GFX10-PACKED-NEXT:    v_mov_b32_e32 v0, 029; GFX10-PACKED-NEXT:    tbuffer_load_format_d16_x v0, v0, s[0:3], 0 format:[BUF_FMT_32_FLOAT] idxen30; GFX10-PACKED-NEXT:    s_waitcnt vmcnt(0)31; GFX10-PACKED-NEXT:    ; return to shader part epilog32;33; GFX11-PACKED-LABEL: tbuffer_load_d16_x:34; GFX11-PACKED:       ; %bb.0: ; %main_body35; GFX11-PACKED-NEXT:    v_mov_b32_e32 v0, 036; GFX11-PACKED-NEXT:    tbuffer_load_d16_format_x v0, v0, s[0:3], 0 format:[BUF_FMT_32_FLOAT] idxen37; GFX11-PACKED-NEXT:    s_waitcnt vmcnt(0)38; GFX11-PACKED-NEXT:    ; return to shader part epilog39;40; GFX12-PACKED-LABEL: tbuffer_load_d16_x:41; GFX12-PACKED:       ; %bb.0: ; %main_body42; GFX12-PACKED-NEXT:    v_mov_b32_e32 v0, 043; GFX12-PACKED-NEXT:    tbuffer_load_d16_format_x v0, v0, s[0:3], null format:[BUF_FMT_32_FLOAT] idxen44; GFX12-PACKED-NEXT:    s_wait_loadcnt 0x045; GFX12-PACKED-NEXT:    ; return to shader part epilog46main_body:47  %data = call half @llvm.amdgcn.struct.tbuffer.load.f16(<4 x i32> %rsrc, i32 0, i32 0, i32 0, i32 22, i32 0)48  ret half %data49}50 51define amdgpu_ps half @tbuffer_load_d16_xy(<4 x i32> inreg %rsrc) {52; PREGFX10-UNPACKED-LABEL: tbuffer_load_d16_xy:53; PREGFX10-UNPACKED:       ; %bb.0: ; %main_body54; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v0, 0 ; encoding: [0x80,0x02,0x00,0x7e]55; PREGFX10-UNPACKED-NEXT:    tbuffer_load_format_d16_xy v[0:1], v0, s[0:3], 0 format:[BUF_DATA_FORMAT_10_11_11,BUF_NUM_FORMAT_SNORM] idxen ; encoding: [0x00,0xa0,0xb4,0xe8,0x00,0x00,0x00,0x80]56; PREGFX10-UNPACKED-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]57; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v0, v1 ; encoding: [0x01,0x03,0x00,0x7e]58; PREGFX10-UNPACKED-NEXT:    ; return to shader part epilog59;60; PREGFX10-PACKED-LABEL: tbuffer_load_d16_xy:61; PREGFX10-PACKED:       ; %bb.0: ; %main_body62; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v0, 063; PREGFX10-PACKED-NEXT:    tbuffer_load_format_d16_xy v0, v0, s[0:3], 0 format:[BUF_DATA_FORMAT_10_11_11,BUF_NUM_FORMAT_SNORM] idxen64; PREGFX10-PACKED-NEXT:    s_waitcnt vmcnt(0)65; PREGFX10-PACKED-NEXT:    v_lshrrev_b32_e32 v0, 16, v066; PREGFX10-PACKED-NEXT:    ; return to shader part epilog67;68; GFX10-PACKED-LABEL: tbuffer_load_d16_xy:69; GFX10-PACKED:       ; %bb.0: ; %main_body70; GFX10-PACKED-NEXT:    v_mov_b32_e32 v0, 071; GFX10-PACKED-NEXT:    tbuffer_load_format_d16_xy v0, v0, s[0:3], 0 format:[BUF_FMT_32_FLOAT] idxen72; GFX10-PACKED-NEXT:    s_waitcnt vmcnt(0)73; GFX10-PACKED-NEXT:    v_lshrrev_b32_e32 v0, 16, v074; GFX10-PACKED-NEXT:    ; return to shader part epilog75;76; GFX11-PACKED-LABEL: tbuffer_load_d16_xy:77; GFX11-PACKED:       ; %bb.0: ; %main_body78; GFX11-PACKED-NEXT:    v_mov_b32_e32 v0, 079; GFX11-PACKED-NEXT:    tbuffer_load_d16_format_xy v0, v0, s[0:3], 0 format:[BUF_FMT_32_FLOAT] idxen80; GFX11-PACKED-NEXT:    s_waitcnt vmcnt(0)81; GFX11-PACKED-NEXT:    v_lshrrev_b32_e32 v0, 16, v082; GFX11-PACKED-NEXT:    ; return to shader part epilog83;84; GFX12-PACKED-LABEL: tbuffer_load_d16_xy:85; GFX12-PACKED:       ; %bb.0: ; %main_body86; GFX12-PACKED-NEXT:    v_mov_b32_e32 v0, 087; GFX12-PACKED-NEXT:    tbuffer_load_d16_format_xy v0, v0, s[0:3], null format:[BUF_FMT_32_FLOAT] idxen88; GFX12-PACKED-NEXT:    s_wait_loadcnt 0x089; GFX12-PACKED-NEXT:    v_lshrrev_b32_e32 v0, 16, v090; GFX12-PACKED-NEXT:    ; return to shader part epilog91main_body:92  %data = call <2 x half> @llvm.amdgcn.struct.tbuffer.load.v2f16(<4 x i32> %rsrc, i32 0, i32 0, i32 0, i32 22, i32 0)93  %elt = extractelement <2 x half> %data, i32 194  ret half %elt95}96 97define amdgpu_ps half @tbuffer_load_d16_xyz(<4 x i32> inreg %rsrc) {98; PREGFX10-UNPACKED-LABEL: tbuffer_load_d16_xyz:99; PREGFX10-UNPACKED:       ; %bb.0: ; %main_body100; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v0, 0 ; encoding: [0x80,0x02,0x00,0x7e]101; PREGFX10-UNPACKED-NEXT:    tbuffer_load_format_d16_xyz v[0:2], v0, s[0:3], 0 format:[BUF_DATA_FORMAT_10_11_11,BUF_NUM_FORMAT_SNORM] idxen ; encoding: [0x00,0x20,0xb5,0xe8,0x00,0x00,0x00,0x80]102; PREGFX10-UNPACKED-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]103; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v0, v2 ; encoding: [0x02,0x03,0x00,0x7e]104; PREGFX10-UNPACKED-NEXT:    ; return to shader part epilog105;106; PREGFX10-PACKED-LABEL: tbuffer_load_d16_xyz:107; PREGFX10-PACKED:       ; %bb.0: ; %main_body108; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v0, 0109; PREGFX10-PACKED-NEXT:    tbuffer_load_format_d16_xyz v[0:1], v0, s[0:3], 0 format:[BUF_DATA_FORMAT_10_11_11,BUF_NUM_FORMAT_SNORM] idxen110; PREGFX10-PACKED-NEXT:    s_waitcnt vmcnt(0)111; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v0, v1112; PREGFX10-PACKED-NEXT:    ; return to shader part epilog113;114; GFX10-PACKED-LABEL: tbuffer_load_d16_xyz:115; GFX10-PACKED:       ; %bb.0: ; %main_body116; GFX10-PACKED-NEXT:    v_mov_b32_e32 v0, 0117; GFX10-PACKED-NEXT:    tbuffer_load_format_d16_xyz v[0:1], v0, s[0:3], 0 format:[BUF_FMT_32_FLOAT] idxen118; GFX10-PACKED-NEXT:    s_waitcnt vmcnt(0)119; GFX10-PACKED-NEXT:    v_mov_b32_e32 v0, v1120; GFX10-PACKED-NEXT:    ; return to shader part epilog121;122; GFX11-PACKED-LABEL: tbuffer_load_d16_xyz:123; GFX11-PACKED:       ; %bb.0: ; %main_body124; GFX11-PACKED-NEXT:    v_mov_b32_e32 v0, 0125; GFX11-PACKED-NEXT:    tbuffer_load_d16_format_xyz v[0:1], v0, s[0:3], 0 format:[BUF_FMT_32_FLOAT] idxen126; GFX11-PACKED-NEXT:    s_waitcnt vmcnt(0)127; GFX11-PACKED-NEXT:    v_mov_b32_e32 v0, v1128; GFX11-PACKED-NEXT:    ; return to shader part epilog129;130; GFX12-PACKED-LABEL: tbuffer_load_d16_xyz:131; GFX12-PACKED:       ; %bb.0: ; %main_body132; GFX12-PACKED-NEXT:    v_mov_b32_e32 v0, 0133; GFX12-PACKED-NEXT:    tbuffer_load_d16_format_xyz v[0:1], v0, s[0:3], null format:[BUF_FMT_32_FLOAT] idxen134; GFX12-PACKED-NEXT:    s_wait_loadcnt 0x0135; GFX12-PACKED-NEXT:    v_mov_b32_e32 v0, v1136; GFX12-PACKED-NEXT:    ; return to shader part epilog137main_body:138  %data = call <3 x half> @llvm.amdgcn.struct.tbuffer.load.v3f16(<4 x i32> %rsrc, i32 0, i32 0, i32 0, i32 22, i32 0)139  %elt = extractelement <3 x half> %data, i32 2140  ret half %elt141}142 143define amdgpu_ps half @tbuffer_load_d16_xyzw(<4 x i32> inreg %rsrc) {144; PREGFX10-UNPACKED-LABEL: tbuffer_load_d16_xyzw:145; PREGFX10-UNPACKED:       ; %bb.0: ; %main_body146; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v0, 0 ; encoding: [0x80,0x02,0x00,0x7e]147; PREGFX10-UNPACKED-NEXT:    tbuffer_load_format_d16_xyzw v[0:3], v0, s[0:3], 0 format:[BUF_DATA_FORMAT_10_11_11,BUF_NUM_FORMAT_SNORM] idxen ; encoding: [0x00,0xa0,0xb5,0xe8,0x00,0x00,0x00,0x80]148; PREGFX10-UNPACKED-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf]149; PREGFX10-UNPACKED-NEXT:    v_mov_b32_e32 v0, v3 ; encoding: [0x03,0x03,0x00,0x7e]150; PREGFX10-UNPACKED-NEXT:    ; return to shader part epilog151;152; PREGFX10-PACKED-LABEL: tbuffer_load_d16_xyzw:153; PREGFX10-PACKED:       ; %bb.0: ; %main_body154; PREGFX10-PACKED-NEXT:    v_mov_b32_e32 v0, 0155; PREGFX10-PACKED-NEXT:    tbuffer_load_format_d16_xyzw v[0:1], v0, s[0:3], 0 format:[BUF_DATA_FORMAT_10_11_11,BUF_NUM_FORMAT_SNORM] idxen156; PREGFX10-PACKED-NEXT:    s_waitcnt vmcnt(0)157; PREGFX10-PACKED-NEXT:    v_lshrrev_b32_e32 v0, 16, v1158; PREGFX10-PACKED-NEXT:    ; return to shader part epilog159;160; GFX10-PACKED-LABEL: tbuffer_load_d16_xyzw:161; GFX10-PACKED:       ; %bb.0: ; %main_body162; GFX10-PACKED-NEXT:    v_mov_b32_e32 v0, 0163; GFX10-PACKED-NEXT:    tbuffer_load_format_d16_xyzw v[0:1], v0, s[0:3], 0 format:[BUF_FMT_32_FLOAT] idxen164; GFX10-PACKED-NEXT:    s_waitcnt vmcnt(0)165; GFX10-PACKED-NEXT:    v_lshrrev_b32_e32 v0, 16, v1166; GFX10-PACKED-NEXT:    ; return to shader part epilog167;168; GFX11-PACKED-LABEL: tbuffer_load_d16_xyzw:169; GFX11-PACKED:       ; %bb.0: ; %main_body170; GFX11-PACKED-NEXT:    v_mov_b32_e32 v0, 0171; GFX11-PACKED-NEXT:    tbuffer_load_d16_format_xyzw v[0:1], v0, s[0:3], 0 format:[BUF_FMT_32_FLOAT] idxen172; GFX11-PACKED-NEXT:    s_waitcnt vmcnt(0)173; GFX11-PACKED-NEXT:    v_lshrrev_b32_e32 v0, 16, v1174; GFX11-PACKED-NEXT:    ; return to shader part epilog175;176; GFX12-PACKED-LABEL: tbuffer_load_d16_xyzw:177; GFX12-PACKED:       ; %bb.0: ; %main_body178; GFX12-PACKED-NEXT:    v_mov_b32_e32 v0, 0179; GFX12-PACKED-NEXT:    tbuffer_load_d16_format_xyzw v[0:1], v0, s[0:3], null format:[BUF_FMT_32_FLOAT] idxen180; GFX12-PACKED-NEXT:    s_wait_loadcnt 0x0181; GFX12-PACKED-NEXT:    v_lshrrev_b32_e32 v0, 16, v1182; GFX12-PACKED-NEXT:    ; return to shader part epilog183main_body:184  %data = call <4 x half> @llvm.amdgcn.struct.tbuffer.load.v4f16(<4 x i32> %rsrc, i32 0, i32 0, i32 0, i32 22, i32 0)185  %elt = extractelement <4 x half> %data, i32 3186  ret half %elt187}188 189declare half @llvm.amdgcn.struct.tbuffer.load.f16(<4 x i32>, i32, i32, i32, i32, i32)190declare <2 x half> @llvm.amdgcn.struct.tbuffer.load.v2f16(<4 x i32>, i32, i32, i32, i32, i32)191declare <3 x half> @llvm.amdgcn.struct.tbuffer.load.v3f16(<4 x i32>, i32, i32, i32, i32, i32)192declare <4 x half> @llvm.amdgcn.struct.tbuffer.load.v4f16(<4 x i32>, i32, i32, i32, i32, i32)193