brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.2 KiB · 51e17f2 Raw
337 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9 %s3; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10 %s4; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck -check-prefixes=GFX11 %s5; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 < %s | FileCheck -check-prefixes=GFX12 %s6 7define amdgpu_ps void @store_f32_1d(<8 x i32> inreg %rsrc, <2 x i16> %coords, <4 x float> %val) {8; GFX9-LABEL: store_f32_1d:9; GFX9:       ; %bb.0: ; %main_body10; GFX9-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x1 unorm a1611; GFX9-NEXT:    s_endpgm12;13; GFX10-LABEL: store_f32_1d:14; GFX10:       ; %bb.0: ; %main_body15; GFX10-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm a1616; GFX10-NEXT:    s_endpgm17;18; GFX11-LABEL: store_f32_1d:19; GFX11:       ; %bb.0: ; %main_body20; GFX11-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm a1621; GFX11-NEXT:    s_endpgm22;23; GFX12-LABEL: store_f32_1d:24; GFX12:       ; %bb.0: ; %main_body25; GFX12-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D a1626; GFX12-NEXT:    s_endpgm27main_body:28  %x = extractelement <2 x i16> %coords, i32 029  call void @llvm.amdgcn.image.store.1d.v4f32.i16(<4 x float> %val, i32 1, i16 %x, <8 x i32> %rsrc, i32 0, i32 0)30  ret void31}32 33define amdgpu_ps void @store_v2f32_1d(<8 x i32> inreg %rsrc, <2 x i16> %coords, <4 x float> %val) {34; GFX9-LABEL: store_v2f32_1d:35; GFX9:       ; %bb.0: ; %main_body36; GFX9-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x3 unorm a1637; GFX9-NEXT:    s_endpgm38;39; GFX10-LABEL: store_v2f32_1d:40; GFX10:       ; %bb.0: ; %main_body41; GFX10-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_1D unorm a1642; GFX10-NEXT:    s_endpgm43;44; GFX11-LABEL: store_v2f32_1d:45; GFX11:       ; %bb.0: ; %main_body46; GFX11-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_1D unorm a1647; GFX11-NEXT:    s_endpgm48;49; GFX12-LABEL: store_v2f32_1d:50; GFX12:       ; %bb.0: ; %main_body51; GFX12-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_1D a1652; GFX12-NEXT:    s_endpgm53main_body:54  %x = extractelement <2 x i16> %coords, i32 055  call void @llvm.amdgcn.image.store.1d.v4f32.i16(<4 x float> %val, i32 3, i16 %x, <8 x i32> %rsrc, i32 0, i32 0)56  ret void57}58 59define amdgpu_ps void @store_v3f32_1d(<8 x i32> inreg %rsrc, <2 x i16> %coords, <4 x float> %val) {60; GFX9-LABEL: store_v3f32_1d:61; GFX9:       ; %bb.0: ; %main_body62; GFX9-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x7 unorm a1663; GFX9-NEXT:    s_endpgm64;65; GFX10-LABEL: store_v3f32_1d:66; GFX10:       ; %bb.0: ; %main_body67; GFX10-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D unorm a1668; GFX10-NEXT:    s_endpgm69;70; GFX11-LABEL: store_v3f32_1d:71; GFX11:       ; %bb.0: ; %main_body72; GFX11-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D unorm a1673; GFX11-NEXT:    s_endpgm74;75; GFX12-LABEL: store_v3f32_1d:76; GFX12:       ; %bb.0: ; %main_body77; GFX12-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D a1678; GFX12-NEXT:    s_endpgm79main_body:80  %x = extractelement <2 x i16> %coords, i32 081  call void @llvm.amdgcn.image.store.1d.v4f32.i16(<4 x float> %val, i32 7, i16 %x, <8 x i32> %rsrc, i32 0, i32 0)82  ret void83}84 85define amdgpu_ps void @store_v4f32_1d(<8 x i32> inreg %rsrc, <2 x i16> %coords, <4 x float> %val) {86; GFX9-LABEL: store_v4f32_1d:87; GFX9:       ; %bb.0: ; %main_body88; GFX9-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0xf unorm a1689; GFX9-NEXT:    s_endpgm90;91; GFX10-LABEL: store_v4f32_1d:92; GFX10:       ; %bb.0: ; %main_body93; GFX10-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a1694; GFX10-NEXT:    s_endpgm95;96; GFX11-LABEL: store_v4f32_1d:97; GFX11:       ; %bb.0: ; %main_body98; GFX11-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm a1699; GFX11-NEXT:    s_endpgm100;101; GFX12-LABEL: store_v4f32_1d:102; GFX12:       ; %bb.0: ; %main_body103; GFX12-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D a16104; GFX12-NEXT:    s_endpgm105main_body:106  %x = extractelement <2 x i16> %coords, i32 0107  call void @llvm.amdgcn.image.store.1d.v4f32.i16(<4 x float> %val, i32 15, i16 %x, <8 x i32> %rsrc, i32 0, i32 0)108  ret void109}110 111define amdgpu_ps void @store_f32_2d(<8 x i32> inreg %rsrc, <2 x i16> %coords, <4 x float> %val) {112; GFX9-LABEL: store_f32_2d:113; GFX9:       ; %bb.0: ; %main_body114; GFX9-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x1 unorm a16115; GFX9-NEXT:    s_endpgm116;117; GFX10-LABEL: store_f32_2d:118; GFX10:       ; %bb.0: ; %main_body119; GFX10-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_2D unorm a16120; GFX10-NEXT:    s_endpgm121;122; GFX11-LABEL: store_f32_2d:123; GFX11:       ; %bb.0: ; %main_body124; GFX11-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_2D unorm a16125; GFX11-NEXT:    s_endpgm126;127; GFX12-LABEL: store_f32_2d:128; GFX12:       ; %bb.0: ; %main_body129; GFX12-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_2D a16130; GFX12-NEXT:    s_endpgm131main_body:132  %x = extractelement <2 x i16> %coords, i32 0133  %y = extractelement <2 x i16> %coords, i32 1134  call void @llvm.amdgcn.image.store.2d.v4f32.i16(<4 x float> %val, i32 1, i16 %x, i16 %y, <8 x i32> %rsrc, i32 0, i32 0)135  ret void136}137 138define amdgpu_ps void @store_v2f32_2d(<8 x i32> inreg %rsrc, <2 x i16> %coords, <4 x float> %val) {139; GFX9-LABEL: store_v2f32_2d:140; GFX9:       ; %bb.0: ; %main_body141; GFX9-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x3 unorm a16142; GFX9-NEXT:    s_endpgm143;144; GFX10-LABEL: store_v2f32_2d:145; GFX10:       ; %bb.0: ; %main_body146; GFX10-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_2D unorm a16147; GFX10-NEXT:    s_endpgm148;149; GFX11-LABEL: store_v2f32_2d:150; GFX11:       ; %bb.0: ; %main_body151; GFX11-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_2D unorm a16152; GFX11-NEXT:    s_endpgm153;154; GFX12-LABEL: store_v2f32_2d:155; GFX12:       ; %bb.0: ; %main_body156; GFX12-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_2D a16157; GFX12-NEXT:    s_endpgm158main_body:159  %x = extractelement <2 x i16> %coords, i32 0160  %y = extractelement <2 x i16> %coords, i32 1161  call void @llvm.amdgcn.image.store.2d.v4f32.i16(<4 x float> %val, i32 3, i16 %x, i16 %y, <8 x i32> %rsrc, i32 0, i32 0)162  ret void163}164 165define amdgpu_ps void @store_v3f32_2d(<8 x i32> inreg %rsrc, <2 x i16> %coords, <4 x float> %val) {166; GFX9-LABEL: store_v3f32_2d:167; GFX9:       ; %bb.0: ; %main_body168; GFX9-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x7 unorm a16169; GFX9-NEXT:    s_endpgm170;171; GFX10-LABEL: store_v3f32_2d:172; GFX10:       ; %bb.0: ; %main_body173; GFX10-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_2D unorm a16174; GFX10-NEXT:    s_endpgm175;176; GFX11-LABEL: store_v3f32_2d:177; GFX11:       ; %bb.0: ; %main_body178; GFX11-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_2D unorm a16179; GFX11-NEXT:    s_endpgm180;181; GFX12-LABEL: store_v3f32_2d:182; GFX12:       ; %bb.0: ; %main_body183; GFX12-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_2D a16184; GFX12-NEXT:    s_endpgm185main_body:186  %x = extractelement <2 x i16> %coords, i32 0187  %y = extractelement <2 x i16> %coords, i32 1188  call void @llvm.amdgcn.image.store.2d.v4f32.i16(<4 x float> %val, i32 7, i16 %x, i16 %y, <8 x i32> %rsrc, i32 0, i32 0)189  ret void190}191 192define amdgpu_ps void @store_v4f32_2d(<8 x i32> inreg %rsrc, <2 x i16> %coords, <4 x float> %val) {193; GFX9-LABEL: store_v4f32_2d:194; GFX9:       ; %bb.0: ; %main_body195; GFX9-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0xf unorm a16196; GFX9-NEXT:    s_endpgm197;198; GFX10-LABEL: store_v4f32_2d:199; GFX10:       ; %bb.0: ; %main_body200; GFX10-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16201; GFX10-NEXT:    s_endpgm202;203; GFX11-LABEL: store_v4f32_2d:204; GFX11:       ; %bb.0: ; %main_body205; GFX11-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm a16206; GFX11-NEXT:    s_endpgm207;208; GFX12-LABEL: store_v4f32_2d:209; GFX12:       ; %bb.0: ; %main_body210; GFX12-NEXT:    image_store v[1:4], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D a16211; GFX12-NEXT:    s_endpgm212main_body:213  %x = extractelement <2 x i16> %coords, i32 0214  %y = extractelement <2 x i16> %coords, i32 1215  call void @llvm.amdgcn.image.store.2d.v4f32.i16(<4 x float> %val, i32 15, i16 %x, i16 %y, <8 x i32> %rsrc, i32 0, i32 0)216  ret void217}218 219define amdgpu_ps void @store_f32_3d(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi, <4 x float> %val) {220; GFX9-LABEL: store_f32_3d:221; GFX9:       ; %bb.0: ; %main_body222; GFX9-NEXT:    image_store v[2:5], v[0:1], s[0:7] dmask:0x1 unorm a16223; GFX9-NEXT:    s_endpgm224;225; GFX10-LABEL: store_f32_3d:226; GFX10:       ; %bb.0: ; %main_body227; GFX10-NEXT:    image_store v[2:5], v[0:1], s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_3D unorm a16228; GFX10-NEXT:    s_endpgm229;230; GFX11-LABEL: store_f32_3d:231; GFX11:       ; %bb.0: ; %main_body232; GFX11-NEXT:    image_store v[2:5], v[0:1], s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_3D unorm a16233; GFX11-NEXT:    s_endpgm234;235; GFX12-LABEL: store_f32_3d:236; GFX12:       ; %bb.0: ; %main_body237; GFX12-NEXT:    image_store v[2:5], [v0, v1], s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_3D a16238; GFX12-NEXT:    s_endpgm239main_body:240  %x = extractelement <2 x i16> %coords_lo, i32 0241  %y = extractelement <2 x i16> %coords_lo, i32 1242  %z = extractelement <2 x i16> %coords_hi, i32 0243  call void @llvm.amdgcn.image.store.3d.v4f32.i16(<4 x float> %val, i32 1, i16 %x, i16 %y, i16 %z, <8 x i32> %rsrc, i32 0, i32 0)244  ret void245}246 247define amdgpu_ps void @store_v2f32_3d(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi, <4 x float> %val) {248; GFX9-LABEL: store_v2f32_3d:249; GFX9:       ; %bb.0: ; %main_body250; GFX9-NEXT:    image_store v[2:5], v[0:1], s[0:7] dmask:0x3 unorm a16251; GFX9-NEXT:    s_endpgm252;253; GFX10-LABEL: store_v2f32_3d:254; GFX10:       ; %bb.0: ; %main_body255; GFX10-NEXT:    image_store v[2:5], v[0:1], s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_3D unorm a16256; GFX10-NEXT:    s_endpgm257;258; GFX11-LABEL: store_v2f32_3d:259; GFX11:       ; %bb.0: ; %main_body260; GFX11-NEXT:    image_store v[2:5], v[0:1], s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_3D unorm a16261; GFX11-NEXT:    s_endpgm262;263; GFX12-LABEL: store_v2f32_3d:264; GFX12:       ; %bb.0: ; %main_body265; GFX12-NEXT:    image_store v[2:5], [v0, v1], s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_3D a16266; GFX12-NEXT:    s_endpgm267main_body:268  %x = extractelement <2 x i16> %coords_lo, i32 0269  %y = extractelement <2 x i16> %coords_lo, i32 1270  %z = extractelement <2 x i16> %coords_hi, i32 0271  call void @llvm.amdgcn.image.store.3d.v4f32.i16(<4 x float> %val, i32 3, i16 %x, i16 %y, i16 %z, <8 x i32> %rsrc, i32 0, i32 0)272  ret void273}274 275define amdgpu_ps void @store_v3f32_3d(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi, <4 x float> %val) {276; GFX9-LABEL: store_v3f32_3d:277; GFX9:       ; %bb.0: ; %main_body278; GFX9-NEXT:    image_store v[2:5], v[0:1], s[0:7] dmask:0x7 unorm a16279; GFX9-NEXT:    s_endpgm280;281; GFX10-LABEL: store_v3f32_3d:282; GFX10:       ; %bb.0: ; %main_body283; GFX10-NEXT:    image_store v[2:5], v[0:1], s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_3D unorm a16284; GFX10-NEXT:    s_endpgm285;286; GFX11-LABEL: store_v3f32_3d:287; GFX11:       ; %bb.0: ; %main_body288; GFX11-NEXT:    image_store v[2:5], v[0:1], s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_3D unorm a16289; GFX11-NEXT:    s_endpgm290;291; GFX12-LABEL: store_v3f32_3d:292; GFX12:       ; %bb.0: ; %main_body293; GFX12-NEXT:    image_store v[2:5], [v0, v1], s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_3D a16294; GFX12-NEXT:    s_endpgm295main_body:296  %x = extractelement <2 x i16> %coords_lo, i32 0297  %y = extractelement <2 x i16> %coords_lo, i32 1298  %z = extractelement <2 x i16> %coords_hi, i32 0299  call void @llvm.amdgcn.image.store.3d.v4f32.i16(<4 x float> %val, i32 7, i16 %x, i16 %y, i16 %z, <8 x i32> %rsrc, i32 0, i32 0)300  ret void301}302 303define amdgpu_ps void @store_v4f32_3d(<8 x i32> inreg %rsrc, <2 x i16> %coords_lo, <2 x i16> %coords_hi, <4 x float> %val) {304; GFX9-LABEL: store_v4f32_3d:305; GFX9:       ; %bb.0: ; %main_body306; GFX9-NEXT:    image_store v[2:5], v[0:1], s[0:7] dmask:0xf unorm a16307; GFX9-NEXT:    s_endpgm308;309; GFX10-LABEL: store_v4f32_3d:310; GFX10:       ; %bb.0: ; %main_body311; GFX10-NEXT:    image_store v[2:5], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16312; GFX10-NEXT:    s_endpgm313;314; GFX11-LABEL: store_v4f32_3d:315; GFX11:       ; %bb.0: ; %main_body316; GFX11-NEXT:    image_store v[2:5], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm a16317; GFX11-NEXT:    s_endpgm318;319; GFX12-LABEL: store_v4f32_3d:320; GFX12:       ; %bb.0: ; %main_body321; GFX12-NEXT:    image_store v[2:5], [v0, v1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D a16322; GFX12-NEXT:    s_endpgm323main_body:324  %x = extractelement <2 x i16> %coords_lo, i32 0325  %y = extractelement <2 x i16> %coords_lo, i32 1326  %z = extractelement <2 x i16> %coords_hi, i32 0327  call void @llvm.amdgcn.image.store.3d.v4f32.i16(<4 x float> %val, i32 15, i16 %x, i16 %y, i16 %z, <8 x i32> %rsrc, i32 0, i32 0)328  ret void329}330 331declare void @llvm.amdgcn.image.store.1d.v4f32.i16(<4 x float>, i32, i16, <8 x i32>, i32, i32) #2332declare void @llvm.amdgcn.image.store.2d.v4f32.i16(<4 x float>, i32, i16, i16, <8 x i32>, i32, i32) #2333declare void @llvm.amdgcn.image.store.3d.v4f32.i16(<4 x float>, i32, i16, i16, i16, <8 x i32>, i32, i32) #2334 335attributes #0 = { nounwind }336attributes #1 = { nounwind readonly }337