brintos

brintos / llvm-project-archived public Read only

0
0
Text · 17.6 KiB · b311525 Raw
339 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2;RUN: llc < %s -mtriple=amdgcn -mcpu=verde | FileCheck -check-prefix=PREGFX10 %s3;RUN: llc < %s -mtriple=amdgcn -mcpu=tonga | FileCheck -check-prefix=PREGFX10 %s4;RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1010 | FileCheck -check-prefix=GFX10 %s5;RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1100 | FileCheck -check-prefix=GFX11 %s6 7define amdgpu_vs {<4 x float>, <4 x float>, <4 x float>, <4 x float>} @tbuffer_load(ptr addrspace(8) inreg) {8; PREGFX10-LABEL: tbuffer_load:9; PREGFX10:       ; %bb.0: ; %main_body10; PREGFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], off, s[0:3], 0 format:[BUF_DATA_FORMAT_32_32_32_32,BUF_NUM_FORMAT_UINT]11; PREGFX10-NEXT:    tbuffer_load_format_xyzw v[4:7], off, s[0:3], 0 format:[BUF_DATA_FORMAT_RESERVED_15,BUF_NUM_FORMAT_SSCALED] glc12; PREGFX10-NEXT:    tbuffer_load_format_xyzw v[8:11], off, s[0:3], 0 format:[BUF_DATA_FORMAT_10_11_11,BUF_NUM_FORMAT_SNORM] slc13; PREGFX10-NEXT:    tbuffer_load_format_xyzw v[12:15], off, s[0:3], 0 format:[BUF_DATA_FORMAT_10_11_11,BUF_NUM_FORMAT_SNORM] glc14; PREGFX10-NEXT:    s_waitcnt vmcnt(0)15; PREGFX10-NEXT:    ; return to shader part epilog16;17; GFX10-LABEL: tbuffer_load:18; GFX10:       ; %bb.0: ; %main_body19; GFX10-NEXT:    s_clause 0x320; GFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], off, s[0:3], 0 format:7821; GFX10-NEXT:    tbuffer_load_format_xyzw v[4:7], off, s[0:3], 0 format:[BUF_FMT_32_32_SINT] glc22; GFX10-NEXT:    tbuffer_load_format_xyzw v[8:11], off, s[0:3], 0 format:[BUF_FMT_32_FLOAT] slc23; GFX10-NEXT:    tbuffer_load_format_xyzw v[12:15], off, s[0:3], 0 format:[BUF_FMT_32_FLOAT] glc dlc24; GFX10-NEXT:    s_waitcnt vmcnt(0)25; GFX10-NEXT:    ; return to shader part epilog26;27; GFX11-LABEL: tbuffer_load:28; GFX11:       ; %bb.0: ; %main_body29; GFX11-NEXT:    s_clause 0x330; GFX11-NEXT:    tbuffer_load_format_xyzw v[0:3], off, s[0:3], 0 format:7831; GFX11-NEXT:    tbuffer_load_format_xyzw v[4:7], off, s[0:3], 0 format:[BUF_FMT_32_32_32_32_FLOAT] glc32; GFX11-NEXT:    tbuffer_load_format_xyzw v[8:11], off, s[0:3], 0 format:[BUF_FMT_32_FLOAT] slc33; GFX11-NEXT:    tbuffer_load_format_xyzw v[12:15], off, s[0:3], 0 format:[BUF_FMT_32_FLOAT] glc dlc34; GFX11-NEXT:    s_waitcnt vmcnt(0)35; GFX11-NEXT:    ; return to shader part epilog36main_body:37    %vdata     = call <4 x i32> @llvm.amdgcn.raw.ptr.tbuffer.load.v4i32(ptr addrspace(8) %0, i32 0, i32 0, i32 78, i32 0)38    %vdata_glc = call <4 x i32> @llvm.amdgcn.raw.ptr.tbuffer.load.v4i32(ptr addrspace(8) %0, i32 0, i32 0, i32 63, i32 1)39    %vdata_slc = call <4 x i32> @llvm.amdgcn.raw.ptr.tbuffer.load.v4i32(ptr addrspace(8) %0, i32 0, i32 0, i32 22, i32 2)40    %vdata_f32 = call <4 x float> @llvm.amdgcn.raw.ptr.tbuffer.load.v4f32(ptr addrspace(8) %0, i32 0, i32 0, i32 22, i32 5)41    %vdata.f     = bitcast <4 x i32> %vdata to <4 x float>42    %vdata_glc.f = bitcast <4 x i32> %vdata_glc to <4 x float>43    %vdata_slc.f = bitcast <4 x i32> %vdata_slc to <4 x float>44    %r0 = insertvalue {<4 x float>, <4 x float>, <4 x float>, <4 x float>} poison, <4 x float> %vdata.f, 045    %r1 = insertvalue {<4 x float>, <4 x float>, <4 x float>, <4 x float>} %r0, <4 x float> %vdata_glc.f, 146    %r2 = insertvalue {<4 x float>, <4 x float>, <4 x float>, <4 x float>} %r1, <4 x float> %vdata_slc.f, 247    %r3 = insertvalue {<4 x float>, <4 x float>, <4 x float>, <4 x float>} %r2, <4 x float> %vdata_f32, 348    ret {<4 x float>, <4 x float>, <4 x float>, <4 x float>} %r349}50 51define amdgpu_vs <4 x float> @tbuffer_load_immoffs(ptr addrspace(8) inreg) {52; PREGFX10-LABEL: tbuffer_load_immoffs:53; PREGFX10:       ; %bb.0: ; %main_body54; PREGFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], off, s[0:3], 0 format:[BUF_DATA_FORMAT_32_32_32_32,BUF_NUM_FORMAT_UINT] offset:4255; PREGFX10-NEXT:    s_waitcnt vmcnt(0)56; PREGFX10-NEXT:    ; return to shader part epilog57;58; GFX10-LABEL: tbuffer_load_immoffs:59; GFX10:       ; %bb.0: ; %main_body60; GFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], off, s[0:3], 0 format:78 offset:4261; GFX10-NEXT:    s_waitcnt vmcnt(0)62; GFX10-NEXT:    ; return to shader part epilog63;64; GFX11-LABEL: tbuffer_load_immoffs:65; GFX11:       ; %bb.0: ; %main_body66; GFX11-NEXT:    tbuffer_load_format_xyzw v[0:3], off, s[0:3], 0 format:78 offset:4267; GFX11-NEXT:    s_waitcnt vmcnt(0)68; GFX11-NEXT:    ; return to shader part epilog69main_body:70    %vdata   = call <4 x i32> @llvm.amdgcn.raw.ptr.tbuffer.load.v4i32(ptr addrspace(8) %0, i32 42, i32 0, i32 78, i32 0)71    %vdata.f = bitcast <4 x i32> %vdata to <4 x float>72    ret <4 x float> %vdata.f73}74 75define amdgpu_ps <4 x float> @buffer_load_voffset_large_12bit(ptr addrspace(8) inreg) {76; PREGFX10-LABEL: buffer_load_voffset_large_12bit:77; PREGFX10:       ; %bb.0: ; %main_body78; PREGFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], off, s[0:3], 0 format:[BUF_DATA_FORMAT_RESERVED_15,BUF_NUM_FORMAT_SSCALED] offset:409279; PREGFX10-NEXT:    s_waitcnt vmcnt(0)80; PREGFX10-NEXT:    ; return to shader part epilog81;82; GFX10-LABEL: buffer_load_voffset_large_12bit:83; GFX10:       ; %bb.0: ; %main_body84; GFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], off, s[0:3], 0 format:[BUF_FMT_32_32_SINT] offset:409285; GFX10-NEXT:    s_waitcnt vmcnt(0)86; GFX10-NEXT:    ; return to shader part epilog87;88; GFX11-LABEL: buffer_load_voffset_large_12bit:89; GFX11:       ; %bb.0: ; %main_body90; GFX11-NEXT:    tbuffer_load_format_xyzw v[0:3], off, s[0:3], 0 format:[BUF_FMT_32_32_32_32_FLOAT] offset:409291; GFX11-NEXT:    s_waitcnt vmcnt(0)92; GFX11-NEXT:    ; return to shader part epilog93main_body:94  %data = call <4 x float> @llvm.amdgcn.raw.ptr.tbuffer.load.v4f32(ptr addrspace(8) %0, i32 4092, i32 0, i32 63, i32 0)95  ret <4 x float> %data96}97 98define amdgpu_ps <4 x float> @tbuffer_load_voffset_large_13bit(ptr addrspace(8) inreg) {99; PREGFX10-LABEL: tbuffer_load_voffset_large_13bit:100; PREGFX10:       ; %bb.0: ; %main_body101; PREGFX10-NEXT:    v_mov_b32_e32 v0, 0x1000102; PREGFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], v0, s[0:3], 0 format:[BUF_DATA_FORMAT_RESERVED_15,BUF_NUM_FORMAT_SSCALED] offen offset:4092103; PREGFX10-NEXT:    s_waitcnt vmcnt(0)104; PREGFX10-NEXT:    ; return to shader part epilog105;106; GFX10-LABEL: tbuffer_load_voffset_large_13bit:107; GFX10:       ; %bb.0: ; %main_body108; GFX10-NEXT:    v_mov_b32_e32 v0, 0x1000109; GFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], v0, s[0:3], 0 format:[BUF_FMT_32_32_SINT] offen offset:4092110; GFX10-NEXT:    s_waitcnt vmcnt(0)111; GFX10-NEXT:    ; return to shader part epilog112;113; GFX11-LABEL: tbuffer_load_voffset_large_13bit:114; GFX11:       ; %bb.0: ; %main_body115; GFX11-NEXT:    v_mov_b32_e32 v0, 0x1000116; GFX11-NEXT:    tbuffer_load_format_xyzw v[0:3], v0, s[0:3], 0 format:[BUF_FMT_32_32_32_32_FLOAT] offen offset:4092117; GFX11-NEXT:    s_waitcnt vmcnt(0)118; GFX11-NEXT:    ; return to shader part epilog119main_body:120  %data = call <4 x float> @llvm.amdgcn.raw.ptr.tbuffer.load.v4f32(ptr addrspace(8) %0, i32 8188, i32 0, i32 63, i32 0)121  ret <4 x float> %data122}123 124define amdgpu_ps <4 x float> @tbuffer_load_voffset_large_16bit(ptr addrspace(8) inreg) {125; PREGFX10-LABEL: tbuffer_load_voffset_large_16bit:126; PREGFX10:       ; %bb.0: ; %main_body127; PREGFX10-NEXT:    v_mov_b32_e32 v0, 0xf000128; PREGFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], v0, s[0:3], 0 format:[BUF_DATA_FORMAT_RESERVED_15,BUF_NUM_FORMAT_SSCALED] offen offset:4092129; PREGFX10-NEXT:    s_waitcnt vmcnt(0)130; PREGFX10-NEXT:    ; return to shader part epilog131;132; GFX10-LABEL: tbuffer_load_voffset_large_16bit:133; GFX10:       ; %bb.0: ; %main_body134; GFX10-NEXT:    v_mov_b32_e32 v0, 0xf000135; GFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], v0, s[0:3], 0 format:[BUF_FMT_32_32_SINT] offen offset:4092136; GFX10-NEXT:    s_waitcnt vmcnt(0)137; GFX10-NEXT:    ; return to shader part epilog138;139; GFX11-LABEL: tbuffer_load_voffset_large_16bit:140; GFX11:       ; %bb.0: ; %main_body141; GFX11-NEXT:    v_mov_b32_e32 v0, 0xf000142; GFX11-NEXT:    tbuffer_load_format_xyzw v[0:3], v0, s[0:3], 0 format:[BUF_FMT_32_32_32_32_FLOAT] offen offset:4092143; GFX11-NEXT:    s_waitcnt vmcnt(0)144; GFX11-NEXT:    ; return to shader part epilog145main_body:146  %data = call <4 x float> @llvm.amdgcn.raw.ptr.tbuffer.load.v4f32(ptr addrspace(8) %0, i32 65532, i32 0, i32 63, i32 0)147  ret <4 x float> %data148}149 150define amdgpu_ps <4 x float> @tbuffer_load_voffset_large_23bit(ptr addrspace(8) inreg) {151; PREGFX10-LABEL: tbuffer_load_voffset_large_23bit:152; PREGFX10:       ; %bb.0: ; %main_body153; PREGFX10-NEXT:    v_mov_b32_e32 v0, 0x7ff000154; PREGFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], v0, s[0:3], 0 format:[BUF_DATA_FORMAT_RESERVED_15,BUF_NUM_FORMAT_SSCALED] offen offset:4092155; PREGFX10-NEXT:    s_waitcnt vmcnt(0)156; PREGFX10-NEXT:    ; return to shader part epilog157;158; GFX10-LABEL: tbuffer_load_voffset_large_23bit:159; GFX10:       ; %bb.0: ; %main_body160; GFX10-NEXT:    v_mov_b32_e32 v0, 0x7ff000161; GFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], v0, s[0:3], 0 format:[BUF_FMT_32_32_SINT] offen offset:4092162; GFX10-NEXT:    s_waitcnt vmcnt(0)163; GFX10-NEXT:    ; return to shader part epilog164;165; GFX11-LABEL: tbuffer_load_voffset_large_23bit:166; GFX11:       ; %bb.0: ; %main_body167; GFX11-NEXT:    v_mov_b32_e32 v0, 0x7ff000168; GFX11-NEXT:    tbuffer_load_format_xyzw v[0:3], v0, s[0:3], 0 format:[BUF_FMT_32_32_32_32_FLOAT] offen offset:4092169; GFX11-NEXT:    s_waitcnt vmcnt(0)170; GFX11-NEXT:    ; return to shader part epilog171main_body:172  %data = call <4 x float> @llvm.amdgcn.raw.ptr.tbuffer.load.v4f32(ptr addrspace(8) %0, i32 8388604, i32 0, i32 63, i32 0)173  ret <4 x float> %data174}175 176define amdgpu_ps <4 x float> @tbuffer_load_voffset_large_24bit(ptr addrspace(8) inreg) {177; PREGFX10-LABEL: tbuffer_load_voffset_large_24bit:178; PREGFX10:       ; %bb.0: ; %main_body179; PREGFX10-NEXT:    v_mov_b32_e32 v0, 0xfff000180; PREGFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], v0, s[0:3], 0 format:[BUF_DATA_FORMAT_RESERVED_15,BUF_NUM_FORMAT_SSCALED] offen offset:4092181; PREGFX10-NEXT:    s_waitcnt vmcnt(0)182; PREGFX10-NEXT:    ; return to shader part epilog183;184; GFX10-LABEL: tbuffer_load_voffset_large_24bit:185; GFX10:       ; %bb.0: ; %main_body186; GFX10-NEXT:    v_mov_b32_e32 v0, 0xfff000187; GFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], v0, s[0:3], 0 format:[BUF_FMT_32_32_SINT] offen offset:4092188; GFX10-NEXT:    s_waitcnt vmcnt(0)189; GFX10-NEXT:    ; return to shader part epilog190;191; GFX11-LABEL: tbuffer_load_voffset_large_24bit:192; GFX11:       ; %bb.0: ; %main_body193; GFX11-NEXT:    v_mov_b32_e32 v0, 0xfff000194; GFX11-NEXT:    tbuffer_load_format_xyzw v[0:3], v0, s[0:3], 0 format:[BUF_FMT_32_32_32_32_FLOAT] offen offset:4092195; GFX11-NEXT:    s_waitcnt vmcnt(0)196; GFX11-NEXT:    ; return to shader part epilog197main_body:198  %data = call <4 x float> @llvm.amdgcn.raw.ptr.tbuffer.load.v4f32(ptr addrspace(8) %0, i32 16777212, i32 0, i32 63, i32 0)199  ret <4 x float> %data200}201 202define amdgpu_vs {<4 x float>, <4 x float>, <4 x float>} @tbuffer_load_immoffs_large(ptr addrspace(8) inreg, i32 inreg %soffs) {203; PREGFX10-LABEL: tbuffer_load_immoffs_large:204; PREGFX10:       ; %bb.0:205; PREGFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], off, s[0:3], 61 format:[BUF_DATA_FORMAT_RESERVED_15,BUF_NUM_FORMAT_USCALED] offset:4095206; PREGFX10-NEXT:    tbuffer_load_format_xyzw v[4:7], off, s[0:3], s4 format:[BUF_DATA_FORMAT_32_32_32_32,BUF_NUM_FORMAT_SSCALED] offset:73207; PREGFX10-NEXT:    tbuffer_load_format_xyzw v[8:11], off, s[0:3], s4 format:[BUF_DATA_FORMAT_32_32_32,BUF_NUM_FORMAT_UINT] offset:1208; PREGFX10-NEXT:    s_waitcnt vmcnt(0)209; PREGFX10-NEXT:    ; return to shader part epilog210;211; GFX10-LABEL: tbuffer_load_immoffs_large:212; GFX10:       ; %bb.0:213; GFX10-NEXT:    s_clause 0x2214; GFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], off, s[0:3], 61 format:[BUF_FMT_10_10_10_2_SSCALED] offset:4095215; GFX10-NEXT:    tbuffer_load_format_xyzw v[4:7], off, s[0:3], s4 format:[BUF_FMT_32_32_UINT] offset:73216; GFX10-NEXT:    tbuffer_load_format_xyzw v[8:11], off, s[0:3], s4 format:[BUF_FMT_32_32_32_32_FLOAT] offset:1217; GFX10-NEXT:    s_waitcnt vmcnt(0)218; GFX10-NEXT:    ; return to shader part epilog219;220; GFX11-LABEL: tbuffer_load_immoffs_large:221; GFX11:       ; %bb.0:222; GFX11-NEXT:    s_clause 0x2223; GFX11-NEXT:    tbuffer_load_format_xyzw v[0:3], off, s[0:3], 61 format:[BUF_FMT_8_8_8_8_SINT] offset:4095224; GFX11-NEXT:    tbuffer_load_format_xyzw v[4:7], off, s[0:3], s4 format:[BUF_FMT_32_32_32_32_SINT] offset:73225; GFX11-NEXT:    tbuffer_load_format_xyzw v[8:11], off, s[0:3], s4 format:77 offset:1226; GFX11-NEXT:    s_waitcnt vmcnt(0)227; GFX11-NEXT:    ; return to shader part epilog228    %vdata     = call <4 x i32> @llvm.amdgcn.raw.ptr.tbuffer.load.v4i32(ptr addrspace(8) %0, i32 4095, i32 61, i32 47, i32 0)229    %vdata_glc = call <4 x i32> @llvm.amdgcn.raw.ptr.tbuffer.load.v4i32(ptr addrspace(8) %0, i32 73, i32 %soffs, i32 62, i32 0)230    %vdata_slc = call <4 x i32> @llvm.amdgcn.raw.ptr.tbuffer.load.v4i32(ptr addrspace(8) %0, i32 1, i32 %soffs, i32 77, i32 0)231    %vdata.f     = bitcast <4 x i32> %vdata to <4 x float>232    %vdata_glc.f = bitcast <4 x i32> %vdata_glc to <4 x float>233    %vdata_slc.f = bitcast <4 x i32> %vdata_slc to <4 x float>234    %r0 = insertvalue {<4 x float>, <4 x float>, <4 x float>} poison, <4 x float> %vdata.f, 0235    %r1 = insertvalue {<4 x float>, <4 x float>, <4 x float>} %r0, <4 x float> %vdata_glc.f, 1236    %r2 = insertvalue {<4 x float>, <4 x float>, <4 x float>} %r1, <4 x float> %vdata_slc.f, 2237    ret {<4 x float>, <4 x float>, <4 x float>} %r2238}239 240define amdgpu_vs <4 x float> @tbuffer_load_ofs(ptr addrspace(8) inreg, i32 %voffs) {241; PREGFX10-LABEL: tbuffer_load_ofs:242; PREGFX10:       ; %bb.0: ; %main_body243; PREGFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], v0, s[0:3], 0 format:[BUF_DATA_FORMAT_32_32_32_32,BUF_NUM_FORMAT_UINT] offen244; PREGFX10-NEXT:    s_waitcnt vmcnt(0)245; PREGFX10-NEXT:    ; return to shader part epilog246;247; GFX10-LABEL: tbuffer_load_ofs:248; GFX10:       ; %bb.0: ; %main_body249; GFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], v0, s[0:3], 0 format:78 offen250; GFX10-NEXT:    s_waitcnt vmcnt(0)251; GFX10-NEXT:    ; return to shader part epilog252;253; GFX11-LABEL: tbuffer_load_ofs:254; GFX11:       ; %bb.0: ; %main_body255; GFX11-NEXT:    tbuffer_load_format_xyzw v[0:3], v0, s[0:3], 0 format:78 offen256; GFX11-NEXT:    s_waitcnt vmcnt(0)257; GFX11-NEXT:    ; return to shader part epilog258main_body:259    %vdata   = call <4 x i32> @llvm.amdgcn.raw.ptr.tbuffer.load.v4i32(ptr addrspace(8) %0, i32 %voffs, i32 0, i32 78, i32 0)260    %vdata.f = bitcast <4 x i32> %vdata to <4 x float>261    ret <4 x float> %vdata.f262}263 264define amdgpu_vs <4 x float> @tbuffer_load_ofs_imm(ptr addrspace(8) inreg, i32 %voffs) {265; PREGFX10-LABEL: tbuffer_load_ofs_imm:266; PREGFX10:       ; %bb.0: ; %main_body267; PREGFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], v0, s[0:3], 0 format:[BUF_DATA_FORMAT_32_32_32_32,BUF_NUM_FORMAT_UINT] offen offset:52268; PREGFX10-NEXT:    s_waitcnt vmcnt(0)269; PREGFX10-NEXT:    ; return to shader part epilog270;271; GFX10-LABEL: tbuffer_load_ofs_imm:272; GFX10:       ; %bb.0: ; %main_body273; GFX10-NEXT:    tbuffer_load_format_xyzw v[0:3], v0, s[0:3], 0 format:78 offen offset:52274; GFX10-NEXT:    s_waitcnt vmcnt(0)275; GFX10-NEXT:    ; return to shader part epilog276;277; GFX11-LABEL: tbuffer_load_ofs_imm:278; GFX11:       ; %bb.0: ; %main_body279; GFX11-NEXT:    tbuffer_load_format_xyzw v[0:3], v0, s[0:3], 0 format:78 offen offset:52280; GFX11-NEXT:    s_waitcnt vmcnt(0)281; GFX11-NEXT:    ; return to shader part epilog282main_body:283    %ofs = add i32 %voffs, 52284    %vdata   = call <4 x i32> @llvm.amdgcn.raw.ptr.tbuffer.load.v4i32(ptr addrspace(8) %0, i32 %ofs, i32 0, i32 78, i32 0)285    %vdata.f = bitcast <4 x i32> %vdata to <4 x float>286    ret <4 x float> %vdata.f287}288 289define amdgpu_vs <2 x float> @buffer_load_xy(ptr addrspace(8) inreg %rsrc) {290; PREGFX10-LABEL: buffer_load_xy:291; PREGFX10:       ; %bb.0:292; PREGFX10-NEXT:    tbuffer_load_format_xy v[0:1], off, s[0:3], 0 format:[BUF_DATA_FORMAT_32_32_32,BUF_NUM_FORMAT_UINT]293; PREGFX10-NEXT:    s_waitcnt vmcnt(0)294; PREGFX10-NEXT:    ; return to shader part epilog295;296; GFX10-LABEL: buffer_load_xy:297; GFX10:       ; %bb.0:298; GFX10-NEXT:    tbuffer_load_format_xy v[0:1], off, s[0:3], 0 format:[BUF_FMT_32_32_32_32_FLOAT]299; GFX10-NEXT:    s_waitcnt vmcnt(0)300; GFX10-NEXT:    ; return to shader part epilog301;302; GFX11-LABEL: buffer_load_xy:303; GFX11:       ; %bb.0:304; GFX11-NEXT:    tbuffer_load_format_xy v[0:1], off, s[0:3], 0 format:77305; GFX11-NEXT:    s_waitcnt vmcnt(0)306; GFX11-NEXT:    ; return to shader part epilog307    %vdata = call <2 x i32> @llvm.amdgcn.raw.ptr.tbuffer.load.v2i32(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 77, i32 0)308    %vdata.f = bitcast <2 x i32> %vdata to <2 x float>309    ret <2 x float> %vdata.f310}311 312define amdgpu_vs float @buffer_load_x(ptr addrspace(8) inreg %rsrc) {313; PREGFX10-LABEL: buffer_load_x:314; PREGFX10:       ; %bb.0:315; PREGFX10-NEXT:    tbuffer_load_format_x v0, off, s[0:3], 0 format:[BUF_DATA_FORMAT_32_32_32,BUF_NUM_FORMAT_UINT]316; PREGFX10-NEXT:    s_waitcnt vmcnt(0)317; PREGFX10-NEXT:    ; return to shader part epilog318;319; GFX10-LABEL: buffer_load_x:320; GFX10:       ; %bb.0:321; GFX10-NEXT:    tbuffer_load_format_x v0, off, s[0:3], 0 format:[BUF_FMT_32_32_32_32_FLOAT]322; GFX10-NEXT:    s_waitcnt vmcnt(0)323; GFX10-NEXT:    ; return to shader part epilog324;325; GFX11-LABEL: buffer_load_x:326; GFX11:       ; %bb.0:327; GFX11-NEXT:    tbuffer_load_format_x v0, off, s[0:3], 0 format:77328; GFX11-NEXT:    s_waitcnt vmcnt(0)329; GFX11-NEXT:    ; return to shader part epilog330    %vdata = call i32 @llvm.amdgcn.raw.ptr.tbuffer.load.i32(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 77, i32 0)331    %vdata.f = bitcast i32 %vdata to float332    ret float %vdata.f333}334 335declare i32 @llvm.amdgcn.raw.ptr.tbuffer.load.i32(ptr addrspace(8), i32, i32, i32, i32)336declare <2 x i32> @llvm.amdgcn.raw.ptr.tbuffer.load.v2i32(ptr addrspace(8), i32, i32, i32, i32)337declare <4 x i32> @llvm.amdgcn.raw.ptr.tbuffer.load.v4i32(ptr addrspace(8), i32, i32, i32, i32)338declare <4 x float> @llvm.amdgcn.raw.ptr.tbuffer.load.v4f32(ptr addrspace(8), i32, i32, i32, i32)339