brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.1 KiB · 30ad3be Raw
333 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=GCN,GFX9 %s3; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GCN,GFX10 %s4 5declare i64 @llvm.ctlz.i64(i64, i1) nounwind readnone6declare i64 @llvm.cttz.i64(i64, i1) nounwind readnone7 8define amdgpu_kernel void @ctlz_i64_poison(ptr addrspace(1) noalias %out, ptr addrspace(1) nocapture readonly %arrayidx) nounwind {9; GFX9-LABEL: ctlz_i64_poison:10; GFX9:       ; %bb.0:11; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2412; GFX9-NEXT:    v_mov_b32_e32 v1, 013; GFX9-NEXT:    s_waitcnt lgkmcnt(0)14; GFX9-NEXT:    global_load_ubyte v0, v1, s[2:3] offset:515; GFX9-NEXT:    global_load_ubyte v2, v1, s[2:3] offset:616; GFX9-NEXT:    global_load_ubyte v3, v1, s[2:3] offset:717; GFX9-NEXT:    global_load_ubyte v4, v1, s[2:3] offset:118; GFX9-NEXT:    global_load_ubyte v5, v1, s[2:3] offset:319; GFX9-NEXT:    global_load_ubyte v6, v1, s[2:3] offset:420; GFX9-NEXT:    global_load_ubyte v7, v1, s[2:3]21; GFX9-NEXT:    global_load_ubyte v8, v1, s[2:3] offset:222; GFX9-NEXT:    s_waitcnt vmcnt(7)23; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 8, v024; GFX9-NEXT:    s_waitcnt vmcnt(5)25; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 8, v326; GFX9-NEXT:    s_waitcnt vmcnt(4)27; GFX9-NEXT:    v_lshlrev_b32_e32 v4, 8, v428; GFX9-NEXT:    s_waitcnt vmcnt(3)29; GFX9-NEXT:    v_lshlrev_b32_e32 v5, 8, v530; GFX9-NEXT:    s_waitcnt vmcnt(2)31; GFX9-NEXT:    v_or_b32_e32 v0, v0, v632; GFX9-NEXT:    v_or_b32_sdwa v2, v3, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD33; GFX9-NEXT:    s_waitcnt vmcnt(1)34; GFX9-NEXT:    v_or_b32_e32 v3, v4, v735; GFX9-NEXT:    s_waitcnt vmcnt(0)36; GFX9-NEXT:    v_or_b32_sdwa v4, v5, v8 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD37; GFX9-NEXT:    v_or_b32_e32 v0, v2, v038; GFX9-NEXT:    v_or_b32_e32 v2, v4, v339; GFX9-NEXT:    v_ffbh_u32_e32 v2, v240; GFX9-NEXT:    v_ffbh_u32_e32 v0, v041; GFX9-NEXT:    v_add_u32_e64 v2, v2, 32 clamp42; GFX9-NEXT:    v_min_u32_e32 v0, v2, v043; GFX9-NEXT:    global_store_dwordx2 v1, v[0:1], s[0:1]44; GFX9-NEXT:    s_endpgm45;46; GFX10-LABEL: ctlz_i64_poison:47; GFX10:       ; %bb.0:48; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2449; GFX10-NEXT:    v_mov_b32_e32 v1, 050; GFX10-NEXT:    s_waitcnt lgkmcnt(0)51; GFX10-NEXT:    s_clause 0x752; GFX10-NEXT:    global_load_ubyte v0, v1, s[2:3] offset:553; GFX10-NEXT:    global_load_ubyte v2, v1, s[2:3] offset:654; GFX10-NEXT:    global_load_ubyte v3, v1, s[2:3] offset:755; GFX10-NEXT:    global_load_ubyte v4, v1, s[2:3] offset:156; GFX10-NEXT:    global_load_ubyte v5, v1, s[2:3] offset:357; GFX10-NEXT:    global_load_ubyte v6, v1, s[2:3]58; GFX10-NEXT:    global_load_ubyte v7, v1, s[2:3] offset:259; GFX10-NEXT:    global_load_ubyte v8, v1, s[2:3] offset:460; GFX10-NEXT:    s_waitcnt vmcnt(7)61; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 8, v062; GFX10-NEXT:    s_waitcnt vmcnt(5)63; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 8, v364; GFX10-NEXT:    s_waitcnt vmcnt(4)65; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 8, v466; GFX10-NEXT:    s_waitcnt vmcnt(3)67; GFX10-NEXT:    v_lshlrev_b32_e32 v5, 8, v568; GFX10-NEXT:    s_waitcnt vmcnt(0)69; GFX10-NEXT:    v_or_b32_e32 v0, v0, v870; GFX10-NEXT:    v_or_b32_e32 v4, v4, v671; GFX10-NEXT:    v_or_b32_sdwa v5, v5, v7 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD72; GFX10-NEXT:    v_or_b32_sdwa v2, v3, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD73; GFX10-NEXT:    v_or_b32_e32 v3, v5, v474; GFX10-NEXT:    v_or_b32_e32 v0, v2, v075; GFX10-NEXT:    v_ffbh_u32_e32 v2, v376; GFX10-NEXT:    v_ffbh_u32_e32 v0, v077; GFX10-NEXT:    v_add_nc_u32_e64 v2, v2, 32 clamp78; GFX10-NEXT:    v_min_u32_e32 v0, v2, v079; GFX10-NEXT:    global_store_dwordx2 v1, v[0:1], s[0:1]80; GFX10-NEXT:    s_endpgm81  %val = load i64, ptr addrspace(1) %arrayidx, align 182  %ctlz = tail call i64 @llvm.ctlz.i64(i64 %val, i1 true) nounwind readnone83  store i64 %ctlz, ptr addrspace(1) %out, align 884  ret void85}86 87define amdgpu_kernel void @ctlz_i64(ptr addrspace(1) noalias %out, ptr addrspace(1) nocapture readonly %arrayidx) nounwind {88; GFX9-LABEL: ctlz_i64:89; GFX9:       ; %bb.0:90; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2491; GFX9-NEXT:    v_mov_b32_e32 v1, 092; GFX9-NEXT:    s_waitcnt lgkmcnt(0)93; GFX9-NEXT:    global_load_ubyte v0, v1, s[2:3] offset:594; GFX9-NEXT:    global_load_ubyte v2, v1, s[2:3] offset:695; GFX9-NEXT:    global_load_ubyte v3, v1, s[2:3] offset:796; GFX9-NEXT:    global_load_ubyte v4, v1, s[2:3] offset:197; GFX9-NEXT:    global_load_ubyte v5, v1, s[2:3] offset:398; GFX9-NEXT:    global_load_ubyte v6, v1, s[2:3] offset:499; GFX9-NEXT:    global_load_ubyte v7, v1, s[2:3]100; GFX9-NEXT:    global_load_ubyte v8, v1, s[2:3] offset:2101; GFX9-NEXT:    s_waitcnt vmcnt(7)102; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 8, v0103; GFX9-NEXT:    s_waitcnt vmcnt(5)104; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 8, v3105; GFX9-NEXT:    s_waitcnt vmcnt(4)106; GFX9-NEXT:    v_lshlrev_b32_e32 v4, 8, v4107; GFX9-NEXT:    s_waitcnt vmcnt(3)108; GFX9-NEXT:    v_lshlrev_b32_e32 v5, 8, v5109; GFX9-NEXT:    s_waitcnt vmcnt(2)110; GFX9-NEXT:    v_or_b32_e32 v0, v0, v6111; GFX9-NEXT:    v_or_b32_sdwa v2, v3, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD112; GFX9-NEXT:    s_waitcnt vmcnt(1)113; GFX9-NEXT:    v_or_b32_e32 v3, v4, v7114; GFX9-NEXT:    s_waitcnt vmcnt(0)115; GFX9-NEXT:    v_or_b32_sdwa v4, v5, v8 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD116; GFX9-NEXT:    v_or_b32_e32 v0, v2, v0117; GFX9-NEXT:    v_or_b32_e32 v2, v4, v3118; GFX9-NEXT:    v_ffbh_u32_e32 v2, v2119; GFX9-NEXT:    v_ffbh_u32_e32 v0, v0120; GFX9-NEXT:    v_add_u32_e64 v2, v2, 32 clamp121; GFX9-NEXT:    v_min_u32_e32 v0, v2, v0122; GFX9-NEXT:    v_min_u32_e32 v0, 64, v0123; GFX9-NEXT:    global_store_dwordx2 v1, v[0:1], s[0:1]124; GFX9-NEXT:    s_endpgm125;126; GFX10-LABEL: ctlz_i64:127; GFX10:       ; %bb.0:128; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24129; GFX10-NEXT:    v_mov_b32_e32 v1, 0130; GFX10-NEXT:    s_waitcnt lgkmcnt(0)131; GFX10-NEXT:    s_clause 0x7132; GFX10-NEXT:    global_load_ubyte v0, v1, s[2:3] offset:5133; GFX10-NEXT:    global_load_ubyte v2, v1, s[2:3] offset:6134; GFX10-NEXT:    global_load_ubyte v3, v1, s[2:3] offset:7135; GFX10-NEXT:    global_load_ubyte v4, v1, s[2:3] offset:1136; GFX10-NEXT:    global_load_ubyte v5, v1, s[2:3] offset:3137; GFX10-NEXT:    global_load_ubyte v6, v1, s[2:3]138; GFX10-NEXT:    global_load_ubyte v7, v1, s[2:3] offset:2139; GFX10-NEXT:    global_load_ubyte v8, v1, s[2:3] offset:4140; GFX10-NEXT:    s_waitcnt vmcnt(7)141; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 8, v0142; GFX10-NEXT:    s_waitcnt vmcnt(5)143; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 8, v3144; GFX10-NEXT:    s_waitcnt vmcnt(4)145; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 8, v4146; GFX10-NEXT:    s_waitcnt vmcnt(3)147; GFX10-NEXT:    v_lshlrev_b32_e32 v5, 8, v5148; GFX10-NEXT:    s_waitcnt vmcnt(0)149; GFX10-NEXT:    v_or_b32_e32 v0, v0, v8150; GFX10-NEXT:    v_or_b32_e32 v4, v4, v6151; GFX10-NEXT:    v_or_b32_sdwa v5, v5, v7 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD152; GFX10-NEXT:    v_or_b32_sdwa v2, v3, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD153; GFX10-NEXT:    v_or_b32_e32 v3, v5, v4154; GFX10-NEXT:    v_or_b32_e32 v0, v2, v0155; GFX10-NEXT:    v_ffbh_u32_e32 v2, v3156; GFX10-NEXT:    v_ffbh_u32_e32 v0, v0157; GFX10-NEXT:    v_add_nc_u32_e64 v2, v2, 32 clamp158; GFX10-NEXT:    v_min_u32_e32 v0, v2, v0159; GFX10-NEXT:    v_min_u32_e32 v0, 64, v0160; GFX10-NEXT:    global_store_dwordx2 v1, v[0:1], s[0:1]161; GFX10-NEXT:    s_endpgm162  %val = load i64, ptr addrspace(1) %arrayidx, align 1163  %ctlz = tail call i64 @llvm.ctlz.i64(i64 %val, i1 false) nounwind readnone164  store i64 %ctlz, ptr addrspace(1) %out, align 8165  ret void166}167 168define amdgpu_kernel void @cttz_i64_poison(ptr addrspace(1) noalias %out, ptr addrspace(1) nocapture readonly %arrayidx) nounwind {169; GFX9-LABEL: cttz_i64_poison:170; GFX9:       ; %bb.0:171; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24172; GFX9-NEXT:    v_mov_b32_e32 v1, 0173; GFX9-NEXT:    s_waitcnt lgkmcnt(0)174; GFX9-NEXT:    global_load_ubyte v0, v1, s[2:3] offset:5175; GFX9-NEXT:    global_load_ubyte v2, v1, s[2:3] offset:6176; GFX9-NEXT:    global_load_ubyte v3, v1, s[2:3] offset:7177; GFX9-NEXT:    global_load_ubyte v4, v1, s[2:3] offset:1178; GFX9-NEXT:    global_load_ubyte v5, v1, s[2:3] offset:3179; GFX9-NEXT:    global_load_ubyte v6, v1, s[2:3] offset:4180; GFX9-NEXT:    global_load_ubyte v7, v1, s[2:3]181; GFX9-NEXT:    global_load_ubyte v8, v1, s[2:3] offset:2182; GFX9-NEXT:    s_waitcnt vmcnt(7)183; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 8, v0184; GFX9-NEXT:    s_waitcnt vmcnt(5)185; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 8, v3186; GFX9-NEXT:    s_waitcnt vmcnt(4)187; GFX9-NEXT:    v_lshlrev_b32_e32 v4, 8, v4188; GFX9-NEXT:    s_waitcnt vmcnt(3)189; GFX9-NEXT:    v_lshlrev_b32_e32 v5, 8, v5190; GFX9-NEXT:    s_waitcnt vmcnt(2)191; GFX9-NEXT:    v_or_b32_e32 v0, v0, v6192; GFX9-NEXT:    v_or_b32_sdwa v2, v3, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD193; GFX9-NEXT:    s_waitcnt vmcnt(1)194; GFX9-NEXT:    v_or_b32_e32 v3, v4, v7195; GFX9-NEXT:    s_waitcnt vmcnt(0)196; GFX9-NEXT:    v_or_b32_sdwa v4, v5, v8 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD197; GFX9-NEXT:    v_or_b32_e32 v0, v2, v0198; GFX9-NEXT:    v_or_b32_e32 v2, v4, v3199; GFX9-NEXT:    v_ffbl_b32_e32 v0, v0200; GFX9-NEXT:    v_ffbl_b32_e32 v2, v2201; GFX9-NEXT:    v_add_u32_e64 v0, v0, 32 clamp202; GFX9-NEXT:    v_min_u32_e32 v0, v0, v2203; GFX9-NEXT:    global_store_dwordx2 v1, v[0:1], s[0:1]204; GFX9-NEXT:    s_endpgm205;206; GFX10-LABEL: cttz_i64_poison:207; GFX10:       ; %bb.0:208; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24209; GFX10-NEXT:    v_mov_b32_e32 v1, 0210; GFX10-NEXT:    s_waitcnt lgkmcnt(0)211; GFX10-NEXT:    s_clause 0x7212; GFX10-NEXT:    global_load_ubyte v0, v1, s[2:3] offset:5213; GFX10-NEXT:    global_load_ubyte v2, v1, s[2:3] offset:7214; GFX10-NEXT:    global_load_ubyte v3, v1, s[2:3] offset:6215; GFX10-NEXT:    global_load_ubyte v4, v1, s[2:3] offset:1216; GFX10-NEXT:    global_load_ubyte v5, v1, s[2:3] offset:3217; GFX10-NEXT:    global_load_ubyte v6, v1, s[2:3] offset:4218; GFX10-NEXT:    global_load_ubyte v7, v1, s[2:3]219; GFX10-NEXT:    global_load_ubyte v8, v1, s[2:3] offset:2220; GFX10-NEXT:    s_waitcnt vmcnt(7)221; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 8, v0222; GFX10-NEXT:    s_waitcnt vmcnt(6)223; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 8, v2224; GFX10-NEXT:    s_waitcnt vmcnt(4)225; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 8, v4226; GFX10-NEXT:    s_waitcnt vmcnt(3)227; GFX10-NEXT:    v_lshlrev_b32_e32 v5, 8, v5228; GFX10-NEXT:    s_waitcnt vmcnt(2)229; GFX10-NEXT:    v_or_b32_e32 v0, v0, v6230; GFX10-NEXT:    v_or_b32_sdwa v2, v2, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD231; GFX10-NEXT:    s_waitcnt vmcnt(1)232; GFX10-NEXT:    v_or_b32_e32 v3, v4, v7233; GFX10-NEXT:    s_waitcnt vmcnt(0)234; GFX10-NEXT:    v_or_b32_sdwa v4, v5, v8 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD235; GFX10-NEXT:    v_or_b32_e32 v0, v2, v0236; GFX10-NEXT:    v_or_b32_e32 v2, v4, v3237; GFX10-NEXT:    v_ffbl_b32_e32 v0, v0238; GFX10-NEXT:    v_ffbl_b32_e32 v2, v2239; GFX10-NEXT:    v_add_nc_u32_e64 v0, v0, 32 clamp240; GFX10-NEXT:    v_min_u32_e32 v0, v0, v2241; GFX10-NEXT:    global_store_dwordx2 v1, v[0:1], s[0:1]242; GFX10-NEXT:    s_endpgm243  %val = load i64, ptr addrspace(1) %arrayidx, align 1244  %cttz = tail call i64 @llvm.cttz.i64(i64 %val, i1 true) nounwind readnone245  store i64 %cttz, ptr addrspace(1) %out, align 8246  ret void247}248 249define amdgpu_kernel void @cttz_i64(ptr addrspace(1) noalias %out, ptr addrspace(1) nocapture readonly %arrayidx) nounwind {250; GFX9-LABEL: cttz_i64:251; GFX9:       ; %bb.0:252; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24253; GFX9-NEXT:    v_mov_b32_e32 v1, 0254; GFX9-NEXT:    s_waitcnt lgkmcnt(0)255; GFX9-NEXT:    global_load_ubyte v0, v1, s[2:3] offset:5256; GFX9-NEXT:    global_load_ubyte v2, v1, s[2:3] offset:6257; GFX9-NEXT:    global_load_ubyte v3, v1, s[2:3] offset:7258; GFX9-NEXT:    global_load_ubyte v4, v1, s[2:3] offset:1259; GFX9-NEXT:    global_load_ubyte v5, v1, s[2:3] offset:3260; GFX9-NEXT:    global_load_ubyte v6, v1, s[2:3] offset:4261; GFX9-NEXT:    global_load_ubyte v7, v1, s[2:3]262; GFX9-NEXT:    global_load_ubyte v8, v1, s[2:3] offset:2263; GFX9-NEXT:    s_waitcnt vmcnt(7)264; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 8, v0265; GFX9-NEXT:    s_waitcnt vmcnt(5)266; GFX9-NEXT:    v_lshlrev_b32_e32 v3, 8, v3267; GFX9-NEXT:    s_waitcnt vmcnt(4)268; GFX9-NEXT:    v_lshlrev_b32_e32 v4, 8, v4269; GFX9-NEXT:    s_waitcnt vmcnt(3)270; GFX9-NEXT:    v_lshlrev_b32_e32 v5, 8, v5271; GFX9-NEXT:    s_waitcnt vmcnt(2)272; GFX9-NEXT:    v_or_b32_e32 v0, v0, v6273; GFX9-NEXT:    v_or_b32_sdwa v2, v3, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD274; GFX9-NEXT:    s_waitcnt vmcnt(1)275; GFX9-NEXT:    v_or_b32_e32 v3, v4, v7276; GFX9-NEXT:    s_waitcnt vmcnt(0)277; GFX9-NEXT:    v_or_b32_sdwa v4, v5, v8 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD278; GFX9-NEXT:    v_or_b32_e32 v0, v2, v0279; GFX9-NEXT:    v_or_b32_e32 v2, v4, v3280; GFX9-NEXT:    v_ffbl_b32_e32 v0, v0281; GFX9-NEXT:    v_ffbl_b32_e32 v2, v2282; GFX9-NEXT:    v_add_u32_e64 v0, v0, 32 clamp283; GFX9-NEXT:    v_min_u32_e32 v0, v0, v2284; GFX9-NEXT:    v_min_u32_e32 v0, 64, v0285; GFX9-NEXT:    global_store_dwordx2 v1, v[0:1], s[0:1]286; GFX9-NEXT:    s_endpgm287;288; GFX10-LABEL: cttz_i64:289; GFX10:       ; %bb.0:290; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24291; GFX10-NEXT:    v_mov_b32_e32 v1, 0292; GFX10-NEXT:    s_waitcnt lgkmcnt(0)293; GFX10-NEXT:    s_clause 0x7294; GFX10-NEXT:    global_load_ubyte v0, v1, s[2:3] offset:5295; GFX10-NEXT:    global_load_ubyte v2, v1, s[2:3] offset:7296; GFX10-NEXT:    global_load_ubyte v3, v1, s[2:3] offset:6297; GFX10-NEXT:    global_load_ubyte v4, v1, s[2:3] offset:1298; GFX10-NEXT:    global_load_ubyte v5, v1, s[2:3] offset:3299; GFX10-NEXT:    global_load_ubyte v6, v1, s[2:3] offset:4300; GFX10-NEXT:    global_load_ubyte v7, v1, s[2:3]301; GFX10-NEXT:    global_load_ubyte v8, v1, s[2:3] offset:2302; GFX10-NEXT:    s_waitcnt vmcnt(7)303; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 8, v0304; GFX10-NEXT:    s_waitcnt vmcnt(6)305; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 8, v2306; GFX10-NEXT:    s_waitcnt vmcnt(4)307; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 8, v4308; GFX10-NEXT:    s_waitcnt vmcnt(3)309; GFX10-NEXT:    v_lshlrev_b32_e32 v5, 8, v5310; GFX10-NEXT:    s_waitcnt vmcnt(2)311; GFX10-NEXT:    v_or_b32_e32 v0, v0, v6312; GFX10-NEXT:    v_or_b32_sdwa v2, v2, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD313; GFX10-NEXT:    s_waitcnt vmcnt(1)314; GFX10-NEXT:    v_or_b32_e32 v3, v4, v7315; GFX10-NEXT:    s_waitcnt vmcnt(0)316; GFX10-NEXT:    v_or_b32_sdwa v4, v5, v8 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD317; GFX10-NEXT:    v_or_b32_e32 v0, v2, v0318; GFX10-NEXT:    v_or_b32_e32 v2, v4, v3319; GFX10-NEXT:    v_ffbl_b32_e32 v0, v0320; GFX10-NEXT:    v_ffbl_b32_e32 v2, v2321; GFX10-NEXT:    v_add_nc_u32_e64 v0, v0, 32 clamp322; GFX10-NEXT:    v_min_u32_e32 v0, v0, v2323; GFX10-NEXT:    v_min_u32_e32 v0, 64, v0324; GFX10-NEXT:    global_store_dwordx2 v1, v[0:1], s[0:1]325; GFX10-NEXT:    s_endpgm326  %val = load i64, ptr addrspace(1) %arrayidx, align 1327  %cttz = tail call i64 @llvm.cttz.i64(i64 %val, i1 false) nounwind readnone328  store i64 %cttz, ptr addrspace(1) %out, align 8329  ret void330}331;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:332; GCN: {{.*}}333