brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.2 KiB · 33eb8c1 Raw
219 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -o - %s | FileCheck %s3; RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -o - %s | FileCheck %s -check-prefix=GISEL4 5; Check for optimizing the passed implicit workitem ID based on the6; required group size. This should avoid a few bit packing operations.7 8declare hidden void @callee() #09 10define amdgpu_kernel void @known_x_0(ptr addrspace(1) %out) !reqd_work_group_size !0 {11; CHECK-LABEL: known_x_0:12; CHECK:       ; %bb.0:13; CHECK-NEXT:    s_add_u32 flat_scratch_lo, s12, s1714; CHECK-NEXT:    s_addc_u32 flat_scratch_hi, s13, 015; CHECK-NEXT:    s_add_u32 s0, s0, s1716; CHECK-NEXT:    s_addc_u32 s1, s1, 017; CHECK-NEXT:    v_lshlrev_b32_e32 v0, 20, v218; CHECK-NEXT:    s_getpc_b64 s[4:5]19; CHECK-NEXT:    s_add_u32 s4, s4, callee@rel32@lo+420; CHECK-NEXT:    s_addc_u32 s5, s5, callee@rel32@hi+1221; CHECK-NEXT:    v_lshl_or_b32 v31, v1, 10, v022; CHECK-NEXT:    s_mov_b32 s32, 023; CHECK-NEXT:    s_swappc_b64 s[30:31], s[4:5]24; CHECK-NEXT:    s_endpgm25;26; GISEL-LABEL: known_x_0:27; GISEL:       ; %bb.0:28; GISEL-NEXT:    s_add_u32 flat_scratch_lo, s12, s1729; GISEL-NEXT:    s_addc_u32 flat_scratch_hi, s13, 030; GISEL-NEXT:    s_add_u32 s0, s0, s1731; GISEL-NEXT:    s_addc_u32 s1, s1, 032; GISEL-NEXT:    v_lshlrev_b32_e32 v0, 20, v233; GISEL-NEXT:    v_lshl_or_b32 v31, v1, 10, v034; GISEL-NEXT:    s_getpc_b64 s[4:5]35; GISEL-NEXT:    s_add_u32 s4, s4, callee@rel32@lo+436; GISEL-NEXT:    s_addc_u32 s5, s5, callee@rel32@hi+1237; GISEL-NEXT:    s_mov_b32 s32, 038; GISEL-NEXT:    s_swappc_b64 s[30:31], s[4:5]39; GISEL-NEXT:    s_endpgm40  call void @callee()41  ret void42}43; CHECK: .amdhsa_system_vgpr_workitem_id 244 45define amdgpu_kernel void @known_y_0(ptr addrspace(1) %out) !reqd_work_group_size !1 {46; CHECK-LABEL: known_y_0:47; CHECK:       ; %bb.0:48; CHECK-NEXT:    s_add_u32 flat_scratch_lo, s12, s1749; CHECK-NEXT:    s_addc_u32 flat_scratch_hi, s13, 050; CHECK-NEXT:    s_add_u32 s0, s0, s1751; CHECK-NEXT:    s_addc_u32 s1, s1, 052; CHECK-NEXT:    s_getpc_b64 s[4:5]53; CHECK-NEXT:    s_add_u32 s4, s4, callee@rel32@lo+454; CHECK-NEXT:    s_addc_u32 s5, s5, callee@rel32@hi+1255; CHECK-NEXT:    v_lshl_or_b32 v31, v2, 20, v056; CHECK-NEXT:    s_mov_b32 s32, 057; CHECK-NEXT:    s_swappc_b64 s[30:31], s[4:5]58; CHECK-NEXT:    s_endpgm59;60; GISEL-LABEL: known_y_0:61; GISEL:       ; %bb.0:62; GISEL-NEXT:    s_add_u32 flat_scratch_lo, s12, s1763; GISEL-NEXT:    s_addc_u32 flat_scratch_hi, s13, 064; GISEL-NEXT:    s_add_u32 s0, s0, s1765; GISEL-NEXT:    s_addc_u32 s1, s1, 066; GISEL-NEXT:    v_lshl_or_b32 v31, v2, 20, v067; GISEL-NEXT:    s_getpc_b64 s[4:5]68; GISEL-NEXT:    s_add_u32 s4, s4, callee@rel32@lo+469; GISEL-NEXT:    s_addc_u32 s5, s5, callee@rel32@hi+1270; GISEL-NEXT:    s_mov_b32 s32, 071; GISEL-NEXT:    s_swappc_b64 s[30:31], s[4:5]72; GISEL-NEXT:    s_endpgm73  call void @callee()74  ret void75}76; CHECK: .amdhsa_system_vgpr_workitem_id 277 78define amdgpu_kernel void @known_z_0(ptr addrspace(1) %out) !reqd_work_group_size !2 {79; CHECK-LABEL: known_z_0:80; CHECK:       ; %bb.0:81; CHECK-NEXT:    s_add_u32 flat_scratch_lo, s12, s1782; CHECK-NEXT:    s_addc_u32 flat_scratch_hi, s13, 083; CHECK-NEXT:    s_add_u32 s0, s0, s1784; CHECK-NEXT:    s_addc_u32 s1, s1, 085; CHECK-NEXT:    s_getpc_b64 s[4:5]86; CHECK-NEXT:    s_add_u32 s4, s4, callee@rel32@lo+487; CHECK-NEXT:    s_addc_u32 s5, s5, callee@rel32@hi+1288; CHECK-NEXT:    v_lshl_or_b32 v31, v1, 10, v089; CHECK-NEXT:    s_mov_b32 s32, 090; CHECK-NEXT:    s_swappc_b64 s[30:31], s[4:5]91; CHECK-NEXT:    s_endpgm92;93; GISEL-LABEL: known_z_0:94; GISEL:       ; %bb.0:95; GISEL-NEXT:    s_add_u32 flat_scratch_lo, s12, s1796; GISEL-NEXT:    s_addc_u32 flat_scratch_hi, s13, 097; GISEL-NEXT:    s_add_u32 s0, s0, s1798; GISEL-NEXT:    s_addc_u32 s1, s1, 099; GISEL-NEXT:    v_lshl_or_b32 v31, v1, 10, v0100; GISEL-NEXT:    s_getpc_b64 s[4:5]101; GISEL-NEXT:    s_add_u32 s4, s4, callee@rel32@lo+4102; GISEL-NEXT:    s_addc_u32 s5, s5, callee@rel32@hi+12103; GISEL-NEXT:    s_mov_b32 s32, 0104; GISEL-NEXT:    s_swappc_b64 s[30:31], s[4:5]105; GISEL-NEXT:    s_endpgm106  call void @callee()107  ret void108}109; CHECK: .amdhsa_system_vgpr_workitem_id 1110 111define amdgpu_kernel void @known_yz_0(ptr addrspace(1) %out) !reqd_work_group_size !3 {112; CHECK-LABEL: known_yz_0:113; CHECK:       ; %bb.0:114; CHECK-NEXT:    s_add_u32 flat_scratch_lo, s12, s17115; CHECK-NEXT:    s_addc_u32 flat_scratch_hi, s13, 0116; CHECK-NEXT:    s_add_u32 s0, s0, s17117; CHECK-NEXT:    s_addc_u32 s1, s1, 0118; CHECK-NEXT:    s_getpc_b64 s[4:5]119; CHECK-NEXT:    s_add_u32 s4, s4, callee@rel32@lo+4120; CHECK-NEXT:    s_addc_u32 s5, s5, callee@rel32@hi+12121; CHECK-NEXT:    v_mov_b32_e32 v31, v0122; CHECK-NEXT:    s_mov_b32 s32, 0123; CHECK-NEXT:    s_swappc_b64 s[30:31], s[4:5]124; CHECK-NEXT:    s_endpgm125;126; GISEL-LABEL: known_yz_0:127; GISEL:       ; %bb.0:128; GISEL-NEXT:    s_add_u32 flat_scratch_lo, s12, s17129; GISEL-NEXT:    s_addc_u32 flat_scratch_hi, s13, 0130; GISEL-NEXT:    s_add_u32 s0, s0, s17131; GISEL-NEXT:    s_addc_u32 s1, s1, 0132; GISEL-NEXT:    s_getpc_b64 s[4:5]133; GISEL-NEXT:    s_add_u32 s4, s4, callee@rel32@lo+4134; GISEL-NEXT:    s_addc_u32 s5, s5, callee@rel32@hi+12135; GISEL-NEXT:    v_mov_b32_e32 v31, v0136; GISEL-NEXT:    s_mov_b32 s32, 0137; GISEL-NEXT:    s_swappc_b64 s[30:31], s[4:5]138; GISEL-NEXT:    s_endpgm139  call void @callee()140  ret void141}142; CHECK: .amdhsa_system_vgpr_workitem_id 0143 144define amdgpu_kernel void @known_xz_0(ptr addrspace(1) %out) !reqd_work_group_size !4 {145; CHECK-LABEL: known_xz_0:146; CHECK:       ; %bb.0:147; CHECK-NEXT:    s_add_u32 flat_scratch_lo, s12, s17148; CHECK-NEXT:    s_addc_u32 flat_scratch_hi, s13, 0149; CHECK-NEXT:    s_add_u32 s0, s0, s17150; CHECK-NEXT:    s_addc_u32 s1, s1, 0151; CHECK-NEXT:    s_getpc_b64 s[4:5]152; CHECK-NEXT:    s_add_u32 s4, s4, callee@rel32@lo+4153; CHECK-NEXT:    s_addc_u32 s5, s5, callee@rel32@hi+12154; CHECK-NEXT:    v_lshlrev_b32_e32 v31, 10, v1155; CHECK-NEXT:    s_mov_b32 s32, 0156; CHECK-NEXT:    s_swappc_b64 s[30:31], s[4:5]157; CHECK-NEXT:    s_endpgm158;159; GISEL-LABEL: known_xz_0:160; GISEL:       ; %bb.0:161; GISEL-NEXT:    s_add_u32 flat_scratch_lo, s12, s17162; GISEL-NEXT:    s_addc_u32 flat_scratch_hi, s13, 0163; GISEL-NEXT:    s_add_u32 s0, s0, s17164; GISEL-NEXT:    s_addc_u32 s1, s1, 0165; GISEL-NEXT:    v_lshlrev_b32_e32 v31, 10, v1166; GISEL-NEXT:    s_getpc_b64 s[4:5]167; GISEL-NEXT:    s_add_u32 s4, s4, callee@rel32@lo+4168; GISEL-NEXT:    s_addc_u32 s5, s5, callee@rel32@hi+12169; GISEL-NEXT:    s_mov_b32 s32, 0170; GISEL-NEXT:    s_swappc_b64 s[30:31], s[4:5]171; GISEL-NEXT:    s_endpgm172  call void @callee()173  ret void174}175; CHECK: .amdhsa_system_vgpr_workitem_id 1176 177 178define amdgpu_kernel void @known_xyz_0(ptr addrspace(1) %out) !reqd_work_group_size !5 {179; CHECK-LABEL: known_xyz_0:180; CHECK:       ; %bb.0:181; CHECK-NEXT:    s_add_u32 flat_scratch_lo, s12, s17182; CHECK-NEXT:    s_addc_u32 flat_scratch_hi, s13, 0183; CHECK-NEXT:    s_add_u32 s0, s0, s17184; CHECK-NEXT:    s_addc_u32 s1, s1, 0185; CHECK-NEXT:    s_getpc_b64 s[4:5]186; CHECK-NEXT:    s_add_u32 s4, s4, callee@rel32@lo+4187; CHECK-NEXT:    s_addc_u32 s5, s5, callee@rel32@hi+12188; CHECK-NEXT:    v_mov_b32_e32 v31, 0189; CHECK-NEXT:    s_mov_b32 s32, 0190; CHECK-NEXT:    s_swappc_b64 s[30:31], s[4:5]191; CHECK-NEXT:    s_endpgm192;193; GISEL-LABEL: known_xyz_0:194; GISEL:       ; %bb.0:195; GISEL-NEXT:    s_add_u32 flat_scratch_lo, s12, s17196; GISEL-NEXT:    s_addc_u32 flat_scratch_hi, s13, 0197; GISEL-NEXT:    s_add_u32 s0, s0, s17198; GISEL-NEXT:    s_addc_u32 s1, s1, 0199; GISEL-NEXT:    s_getpc_b64 s[4:5]200; GISEL-NEXT:    s_add_u32 s4, s4, callee@rel32@lo+4201; GISEL-NEXT:    s_addc_u32 s5, s5, callee@rel32@hi+12202; GISEL-NEXT:    v_mov_b32_e32 v31, 0203; GISEL-NEXT:    s_mov_b32 s32, 0204; GISEL-NEXT:    s_swappc_b64 s[30:31], s[4:5]205; GISEL-NEXT:    s_endpgm206  call void @callee()207  ret void208}209; CHECK: .amdhsa_system_vgpr_workitem_id 0210 211attributes #0 = { "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-cluster-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-cluster-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-cluster-id-z" }212 213!0 = !{i32 1, i32 64, i32 64}214!1 = !{i32 64, i32 1, i32 64}215!2 = !{i32 64, i32 64, i32 1}216!3 = !{i32 64, i32 1, i32 1}217!4 = !{i32 1, i32 64, i32 1}218!5 = !{i32 1, i32 1, i32 1}219