475 lines · plain
1; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -mattr=-xnack < %s | FileCheck --check-prefixes=GCN,GFX9 %s2; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr=-xnack < %s | FileCheck --check-prefixes=GCN,GFX10,GFX10W32,GFX1010,GFX1010W32 %s3; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr=-xnack -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX10,GFX10W64,GFX1010,GFX1010W64 %s4; RUN: llc -mtriple=amdgcn -mcpu=gfx1030 < %s | FileCheck --check-prefixes=GCN,GFX10,GFX10W32,GFX1030,GFX1030W32 %s5; RUN: llc -mtriple=amdgcn -mcpu=gfx1030 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX10,GFX10W64,GFX1030,GFX1030W64 %s6; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W32 %s7; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W64 %s8; RUN: llc -mtriple=amdgcn -mcpu=gfx1101 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W32 %s9; RUN: llc -mtriple=amdgcn -mcpu=gfx1101 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W64 %s10; RUN: llc -mtriple=amdgcn -mcpu=gfx1102 < %s | FileCheck --check-prefixes=GCN,GFX10,GFX10W32,GFX1030,GFX1030W32 %s11; RUN: llc -mtriple=amdgcn -mcpu=gfx1102 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX10,GFX10W64,GFX1030,GFX1030W64 %s12; RUN: llc -mtriple=amdgcn -mcpu=gfx1150 < %s | FileCheck --check-prefixes=GCN,GFX10,GFX10W32,GFX1030,GFX1030W32 %s13; RUN: llc -mtriple=amdgcn -mcpu=gfx1150 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX10,GFX10W64,GFX1030,GFX1030W64 %s14; RUN: llc -mtriple=amdgcn -mcpu=gfx1151 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W32 %s15; RUN: llc -mtriple=amdgcn -mcpu=gfx1151 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W64 %s16; RUN: llc -mtriple=amdgcn -mcpu=gfx1152 < %s | FileCheck --check-prefixes=GCN,GFX1030,GFX1030W32 %s17; RUN: llc -mtriple=amdgcn -mcpu=gfx1152 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX1030,GFX1030W64 %s18; RUN: llc -mtriple=amdgcn -mcpu=gfx1153 < %s | FileCheck --check-prefixes=GCN,GFX1030,GFX1030W32 %s19; RUN: llc -mtriple=amdgcn -mcpu=gfx1153 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX1030,GFX1030W64 %s20; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W32 %s21; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W64 %s22 23; GCN-LABEL: {{^}}max_occupancy:24; GFX9: ; Occupancy: 1025; GFX1010: ; Occupancy: 2026; GFX1030: ; Occupancy: 1627; GFX1100: ; Occupancy: 1628define amdgpu_kernel void @max_occupancy() #10 {29 ret void30}31 32; GCN-LABEL: {{^}}limited_occupancy_3:33; GFX9: ; Occupancy: 334; GFX10W64: ; Occupancy: 335; GFX10W32: ; Occupancy: 436; GFX1100W64: ; Occupancy: 337; GFX1100W32: ; Occupancy: 538define amdgpu_kernel void @limited_occupancy_3() #0 {39 ret void40}41 42; GCN-LABEL: {{^}}limited_occupancy_18:43; GFX9: ; Occupancy: 1044; GFX1010: ; Occupancy: 1845; GFX1030: ; Occupancy: 1646; GFX1100: ; Occupancy: 1647define amdgpu_kernel void @limited_occupancy_18() #1 {48 ret void49}50 51; GCN-LABEL: {{^}}limited_occupancy_19:52; GFX9: ; Occupancy: 1053; GFX1010: ; Occupancy: 2054; GFX1030: ; Occupancy: 1655; GFX1100: ; Occupancy: 1656define amdgpu_kernel void @limited_occupancy_19() #2 {57 ret void58}59 60; GCN-LABEL: {{^}}used_24_vgprs:61; GFX9: ; Occupancy: 1062; GFX1010: ; Occupancy: 2063; GFX1030: ; Occupancy: 1664; GFX1100: ; Occupancy: 1665define amdgpu_kernel void @used_24_vgprs() #10 {66 call void asm sideeffect "", "~{v23}" ()67 ret void68}69 70; GCN-LABEL: {{^}}used_28_vgprs:71; GFX9: ; Occupancy: 972; GFX1010W64: ; Occupancy: 1873; GFX1010W32: ; Occupancy: 2074; GFX1030: ; Occupancy: 1675; GFX1100: ; Occupancy: 1676define amdgpu_kernel void @used_28_vgprs() #10 {77 call void asm sideeffect "", "~{v27}" ()78 ret void79}80 81; GCN-LABEL: {{^}}used_32_vgprs:82; GFX9: ; Occupancy: 883; GFX10W64: ; Occupancy: 1684; GFX1010W32: ; Occupancy: 2085; GFX1030W32: ; Occupancy: 1686; GFX1100: ; Occupancy: 1687define amdgpu_kernel void @used_32_vgprs() #10 {88 call void asm sideeffect "", "~{v31}" ()89 ret void90}91 92; GCN-LABEL: {{^}}used_36_vgprs:93; GFX9: ; Occupancy: 794; GFX1010W64: ; Occupancy: 1495; GFX1010W32: ; Occupancy: 2096; GFX1030W64: ; Occupancy: 1297; GFX1030W32: ; Occupancy: 1698; GFX1100: ; Occupancy: 1699define amdgpu_kernel void @used_36_vgprs() #10 {100 call void asm sideeffect "", "~{v35}" ()101 ret void102}103 104; GCN-LABEL: {{^}}used_40_vgprs:105; GFX9: ; Occupancy: 6106; GFX10W64: ; Occupancy: 12107; GFX1010W32: ; Occupancy: 20108; GFX1030W32: ; Occupancy: 16109; GFX1100: ; Occupancy: 16110define amdgpu_kernel void @used_40_vgprs() #10 {111 call void asm sideeffect "", "~{v39}" ()112 ret void113}114 115; GCN-LABEL: {{^}}used_44_vgprs:116; GFX9: ; Occupancy: 5117; GFX1010W64: ; Occupancy: 11118; GFX1010W32: ; Occupancy: 20119; GFX1030W64: ; Occupancy: 10120; GFX1030W32: ; Occupancy: 16121; GFX1100: ; Occupancy: 16122define amdgpu_kernel void @used_44_vgprs() #10 {123 call void asm sideeffect "", "~{v43}" ()124 ret void125}126 127; GCN-LABEL: {{^}}used_48_vgprs:128; GFX9: ; Occupancy: 5129; GFX10W64: ; Occupancy: 10130; GFX1010W32: ; Occupancy: 20131; GFX1030W32: ; Occupancy: 16132; GFX1100: ; Occupancy: 16133define amdgpu_kernel void @used_48_vgprs() #10 {134 call void asm sideeffect "", "~{v47}" ()135 ret void136}137 138; GCN-LABEL: {{^}}used_56_vgprs:139; GFX9: ; Occupancy: 4140; GFX10W64: ; Occupancy: 9141; GFX1010W32: ; Occupancy: 18142; GFX1030W32: ; Occupancy: 16143; GFX1100W64: ; Occupancy: 12144; GFX1100W32: ; Occupancy: 16145define amdgpu_kernel void @used_56_vgprs() #10 {146 call void asm sideeffect "", "~{v55}" ()147 ret void148}149 150; GCN-LABEL: {{^}}used_64_vgprs:151; GFX9: ; Occupancy: 4152; GFX10W64: ; Occupancy: 8153; GFX10W32: ; Occupancy: 16154; GFX1100W64: ; Occupancy: 10155; GFX1100W32: ; Occupancy: 16156define amdgpu_kernel void @used_64_vgprs() #10 {157 call void asm sideeffect "", "~{v63}" ()158 ret void159}160 161; GCN-LABEL: {{^}}used_72_vgprs:162; GFX9: ; Occupancy: 3163; GFX10W64: ; Occupancy: 7164; GFX1010W32: ; Occupancy: 14165; GFX1030W32: ; Occupancy: 12166; GFX1100W64: ; Occupancy: 10167; GFX1100W32: ; Occupancy: 16168define amdgpu_kernel void @used_72_vgprs() #10 {169 call void asm sideeffect "", "~{v71}" ()170 ret void171}172 173; GCN-LABEL: {{^}}used_80_vgprs:174; GFX9: ; Occupancy: 3175; GFX10W64: ; Occupancy: 6176; GFX10W32: ; Occupancy: 12177; GFX1100W64: ; Occupancy: 9178; GFX1100W32: ; Occupancy: 16179define amdgpu_kernel void @used_80_vgprs() #10 {180 call void asm sideeffect "", "~{v79}" ()181 ret void182}183 184; GCN-LABEL: {{^}}used_84_vgprs:185; GFX9: ; Occupancy: 3186; GFX1010W64: ; Occupancy: 6187; GFX1010W32: ; Occupancy: 11188; GFX1030W64: ; Occupancy: 5189; GFX1030W32: ; Occupancy: 10190; GFX1100W64: ; Occupancy: 9191; GFX1100W32: ; Occupancy: 16192define amdgpu_kernel void @used_84_vgprs() #10 {193 call void asm sideeffect "", "~{v83}" ()194 ret void195}196 197; GCN-LABEL: {{^}}used_88_vgprs:198; GFX9: ; Occupancy: 2199; GFX10W64: ; Occupancy: 5200; GFX1010W32: ; Occupancy: 11201; GFX1030W32: ; Occupancy: 10202; GFX1100W64: ; Occupancy: 8203; GFX1100W32: ; Occupancy: 16204define amdgpu_kernel void @used_88_vgprs() #10 {205 call void asm sideeffect "", "~{v87}" ()206 ret void207}208 209; GCN-LABEL: {{^}}used_96_vgprs:210; GFX9: ; Occupancy: 2211; GFX10W64: ; Occupancy: 5212; GFX10W32: ; Occupancy: 10213; GFX1100W64: ; Occupancy: 8214; GFX1100W32: ; Occupancy: 16215define amdgpu_kernel void @used_96_vgprs() #10 {216 call void asm sideeffect "", "~{v95}" ()217 ret void218}219 220; GCN-LABEL: {{^}}used_100_vgprs:221; GFX9: ; Occupancy: 2222; GFX1010W64: ; Occupancy: 5223; GFX1030W64: ; Occupancy: 4224; GFX10W32: ; Occupancy: 9225; GFX1100W64: ; Occupancy: 7226; GFX1100W32: ; Occupancy: 12227define amdgpu_kernel void @used_100_vgprs() #10 {228 call void asm sideeffect "", "~{v99}" ()229 ret void230}231 232; GCN-LABEL: {{^}}used_112_vgprs:233; GFX9: ; Occupancy: 2234; GFX10W64: ; Occupancy: 4235; GFX10W32: ; Occupancy: 9236; GFX1100W64: ; Occupancy: 6237; GFX1100W32: ; Occupancy: 12238define amdgpu_kernel void @used_112_vgprs() #10 {239 call void asm sideeffect "", "~{v111}" ()240 ret void241}242 243; GCN-LABEL: {{^}}used_128_vgprs:244; GFX9: ; Occupancy: 2245; GFX10W64: ; Occupancy: 4246; GFX10W32: ; Occupancy: 8247; GFX1100W64: ; Occupancy: 5248; GFX1100W32: ; Occupancy: 10249define amdgpu_kernel void @used_128_vgprs() #10 {250 call void asm sideeffect "", "~{v127}" ()251 ret void252}253 254; GCN-LABEL: {{^}}used_144_vgprs:255; GFX9: ; Occupancy: 1256; GFX10W64: ; Occupancy: 3257; GFX10W32: ; Occupancy: 7258; GFX1100W64: ; Occupancy: 5259; GFX1100W32: ; Occupancy: 10260define amdgpu_kernel void @used_144_vgprs() #10 {261 call void asm sideeffect "", "~{v143}" ()262 ret void263}264 265; GCN-LABEL: {{^}}used_168_vgprs:266; GFX9: ; Occupancy: 1267; GFX10W64: ; Occupancy: 3268; GFX1010W32: ; Occupancy: 6269; GFX1030W32: ; Occupancy: 5270; GFX1100W64: ; Occupancy: 4271; GFX1100W32: ; Occupancy: 9272define amdgpu_kernel void @used_168_vgprs() #10 {273 call void asm sideeffect "", "~{v167}" ()274 ret void275}276 277; GCN-LABEL: {{^}}used_200_vgprs:278; GFX9: ; Occupancy: 1279; GFX10W64: ; Occupancy: 2280; GFX1010W32: ; Occupancy: 5281; GFX1030W32: ; Occupancy: 4282; GFX1100W64: ; Occupancy: 3283; GFX1100W32: ; Occupancy: 7284define amdgpu_kernel void @used_200_vgprs() #10 {285 call void asm sideeffect "", "~{v199}" ()286 ret void287}288 289; GCN-LABEL: {{^}}used_256_vgprs:290; GFX9: ; Occupancy: 1291; GFX10W64: ; Occupancy: 2292; GFX10W32: ; Occupancy: 4293; GFX1100W64: ; Occupancy: 2294; GFX1100W32: ; Occupancy: 5295define amdgpu_kernel void @used_256_vgprs() #10 {296 call void asm sideeffect "", "~{v255}" ()297 ret void298}299 300; GCN-LABEL: {{^}}used_80_sgprs:301; GFX9: ; Occupancy: 10302; GFX1010: ; Occupancy: 20303; GFX1030: ; Occupancy: 16304; GFX1100: ; Occupancy: 16305define amdgpu_kernel void @used_80_sgprs() #10 {306 call void asm sideeffect "", "~{s79}" ()307 ret void308}309 310; GCN-LABEL: {{^}}used_88_sgprs:311; GFX9: ; Occupancy: 9312; GFX1010: ; Occupancy: 20313; GFX1030: ; Occupancy: 16314; GFX1100: ; Occupancy: 16315define amdgpu_kernel void @used_88_sgprs() #10 {316 call void asm sideeffect "", "~{s87}" ()317 ret void318}319 320; GCN-LABEL: {{^}}used_100_sgprs:321; GFX9: ; Occupancy: 8322; GFX1010: ; Occupancy: 20323; GFX1030: ; Occupancy: 16324; GFX1100: ; Occupancy: 16325define amdgpu_kernel void @used_100_sgprs() #10 {326 call void asm sideeffect "", "~{s99}" ()327 ret void328}329 330; GCN-LABEL: {{^}}used_101_sgprs:331; GFX9: ; Occupancy: 7332; GFX1010: ; Occupancy: 20333; GFX1030: ; Occupancy: 16334; GFX1100: ; Occupancy: 16335define amdgpu_kernel void @used_101_sgprs() #10 {336 call void asm sideeffect "", "~{s100}" ()337 ret void338}339 340; GCN-LABEL: {{^}}used_lds_6552:341; GFX9: ; Occupancy: 8342; GFX1010W64: ; Occupancy: 20343; GFX1030W64: ; Occupancy: 16344; GFX10W32: ; Occupancy: 16345; GFX1100: ; Occupancy: 16346@lds6552 = internal addrspace(3) global [6552 x i8] poison, align 4347define amdgpu_kernel void @used_lds_6552() {348 store volatile i8 1, ptr addrspace(3) @lds6552349 ret void350}351 352; GCN-LABEL: {{^}}used_lds_6556:353; GFX9: ; Occupancy: 8354; GFX1010W64: ; Occupancy: 20355; GFX1030W64: ; Occupancy: 16356; GFX10W32: ; Occupancy: 16357; GFX1100: ; Occupancy: 16358@lds6556 = internal addrspace(3) global [6556 x i8] poison, align 4359define amdgpu_kernel void @used_lds_6556() {360 store volatile i8 1, ptr addrspace(3) @lds6556361 ret void362}363 364; GCN-LABEL: {{^}}used_lds_13112:365; GFX9: ; Occupancy: 8366; GFX1010W64: ; Occupancy: 20367; GFX1030W64: ; Occupancy: 16368; GFX10W32: ; Occupancy: 16369; GFX1100: ; Occupancy: 16370@lds13112 = internal addrspace(3) global [13112 x i8] poison, align 4371define amdgpu_kernel void @used_lds_13112() {372 store volatile i8 1, ptr addrspace(3) @lds13112373 ret void374}375 376; GCN-LABEL: {{^}}used_lds_8252_max_group_size_64:377; GFX9: ; Occupancy: 2{{$}}378; GFX10W64: ; Occupancy: 4{{$}}379; GFX10W32: ; Occupancy: 8{{$}}380; GFX1100W64: ; Occupancy: 4{{$}}381; GFX1100W32: ; Occupancy: 8{{$}}382@lds8252 = internal addrspace(3) global [8252 x i8] poison, align 4383define amdgpu_kernel void @used_lds_8252_max_group_size_64() #3 {384 store volatile i8 1, ptr addrspace(3) @lds8252385 ret void386}387 388; GCN-LABEL: {{^}}used_lds_8252_max_group_size_96:389; GFX9: ; Occupancy: 4{{$}}390; GFX10W64: ; Occupancy: 8{{$}}391; GFX10W32: ; Occupancy: 12{{$}}392; GFX1100W64: ; Occupancy: 8{{$}}393; GFX1100W32: ; Occupancy: 12{{$}}394define amdgpu_kernel void @used_lds_8252_max_group_size_96() #4 {395 store volatile i8 1, ptr addrspace(3) @lds8252396 ret void397}398 399; GCN-LABEL: {{^}}used_lds_8252_max_group_size_128:400; GFX9: ; Occupancy: 4{{$}}401; GFX10W64: ; Occupancy: 8{{$}}402; GFX10W32: ; Occupancy: 15{{$}}403; GFX1100W64: ; Occupancy: 8{{$}}404; GFX1100W32: ; Occupancy: 15{{$}}405define amdgpu_kernel void @used_lds_8252_max_group_size_128() #5 {406 store volatile i8 1, ptr addrspace(3) @lds8252407 ret void408}409 410; GCN-LABEL: {{^}}used_lds_8252_max_group_size_192:411; GFX9: ; Occupancy: 6{{$}}412; GFX10W64: ; Occupancy: 12{{$}}413; GFX1010W32: ; Occupancy: 20{{$}}414; GFX1030W32: ; Occupancy: 15{{$}}415; GFX1100W64: ; Occupancy: 12{{$}}416; GFX1100W32: ; Occupancy: 15{{$}}417define amdgpu_kernel void @used_lds_8252_max_group_size_192() #6 {418 store volatile i8 1, ptr addrspace(3) @lds8252419 ret void420}421 422; GCN-LABEL: {{^}}used_lds_8252_max_group_size_256:423; GFX9: ; Occupancy: 7{{$}}424; GFX10W64: ; Occupancy: 15{{$}}425; GFX1010W32: ; Occupancy: 20{{$}}426; GFX1030W32: ; Occupancy: 16{{$}}427; GFX1100W64: ; Occupancy: 15{{$}}428; GFX1100W32: ; Occupancy: 16{{$}}429define amdgpu_kernel void @used_lds_8252_max_group_size_256() #7 {430 store volatile i8 1, ptr addrspace(3) @lds8252431 ret void432}433 434; GCN-LABEL: {{^}}used_lds_8252_max_group_size_512:435; GFX9: ; Occupancy: 10{{$}}436; GFX1010: ; Occupancy: 20{{$}}437; GFX1030: ; Occupancy: 16{{$}}438; GFX1100: ; Occupancy: 16{{$}}439define amdgpu_kernel void @used_lds_8252_max_group_size_512() #8 {440 store volatile i8 1, ptr addrspace(3) @lds8252441 ret void442}443 444; GCN-LABEL: {{^}}used_lds_8252_max_group_size_1024:445; GFX9: ; Occupancy: 8{{$}}446; GFX1010W32: ; Occupancy: 16{{$}}447; GFX1010W64: ; Occupancy: 20{{$}}448; GFX1030: ; Occupancy: 16{{$}}449; GFX1100: ; Occupancy: 16{{$}}450define amdgpu_kernel void @used_lds_8252_max_group_size_1024() #9 {451 store volatile i8 1, ptr addrspace(3) @lds8252452 ret void453}454 455; GCN-LABEL: {{^}}used_lds_8252_max_group_size_32:456; GFX9: ; Occupancy: 2{{$}}457; GFX10: ; Occupancy: 4{{$}}458; GFX1100: ; Occupancy: 4{{$}}459define amdgpu_kernel void @used_lds_8252_max_group_size_32() #10 {460 store volatile i8 1, ptr addrspace(3) @lds8252461 ret void462}463 464attributes #0 = { "amdgpu-waves-per-eu"="2,3" "amdgpu-flat-work-group-size"="1,64" }465attributes #1 = { "amdgpu-waves-per-eu"="18,18" "amdgpu-flat-work-group-size"="1,32" }466attributes #2 = { "amdgpu-waves-per-eu"="19,19" "amdgpu-flat-work-group-size"="1,32" }467attributes #3 = { "amdgpu-flat-work-group-size"="1,64" }468attributes #4 = { "amdgpu-flat-work-group-size"="1,96" }469attributes #5 = { "amdgpu-flat-work-group-size"="1,128" }470attributes #6 = { "amdgpu-flat-work-group-size"="1,192" }471attributes #7 = { "amdgpu-flat-work-group-size"="1,256" }472attributes #8 = { "amdgpu-flat-work-group-size"="1,512" }473attributes #9 = { "amdgpu-flat-work-group-size"="1,1024" }474attributes #10 = { "amdgpu-flat-work-group-size"="1,32" }475