brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · 2471b64 Raw
89 lines · plain
1; RUN: opt -mtriple=amdgcn-amd-amdhsa -passes=load-store-vectorizer,dce -S -o - %s | FileCheck %s2 3define void @base_case(i1 %cnd, ptr addrspace(1) %a, ptr addrspace(1) %b, ptr addrspace(1) %out) {4; CHECK-LABEL: @base_case5; CHECK: load <3 x i32>6entry:7  %gep1 = getelementptr inbounds i32, ptr addrspace(1) %a, i64 18  %gep2 = getelementptr inbounds i32, ptr addrspace(1) %a, i64 29  %gep4 = getelementptr inbounds i32, ptr addrspace(1) %b, i64 110  %gep5 = getelementptr inbounds i32, ptr addrspace(1) %b, i64 211  %selected = select i1 %cnd, ptr addrspace(1) %a, ptr addrspace(1) %b12  %selected14 = select i1 %cnd, ptr addrspace(1) %gep1, ptr addrspace(1) %gep413  %selected25 = select i1 %cnd, ptr addrspace(1) %gep2, ptr addrspace(1) %gep514  %val0 = load i32, ptr addrspace(1) %selected, align 415  %val1 = load i32, ptr addrspace(1) %selected14, align 416  %val2 = load i32, ptr addrspace(1) %selected25, align 417  %t0 = insertelement <3 x i32> undef, i32 %val0, i32 018  %t1 = insertelement <3 x i32> %t0, i32 %val1, i32 119  %t2 = insertelement <3 x i32> %t1, i32 %val2, i32 220  store <3 x i32> %t2, ptr addrspace(1) %out21  ret void22}23 24define void @scev_targeting_complex_case(i1 %cnd, ptr addrspace(1) %a, ptr addrspace(1) %b, i32 %base, ptr addrspace(1) %out) {25; CHECK-LABEL: @scev_targeting_complex_case26; CHECK: load <2 x i32>27entry:28  %base.x4 = shl i32 %base, 229  %base.x4.p1 = add i32 %base.x4, 130  %base.x4.p2 = add i32 %base.x4, 231  %base.x4.p3 = add i32 %base.x4, 332  %zext.x4 = zext i32 %base.x4 to i6433  %zext.x4.p1 = zext i32 %base.x4.p1 to i6434  %zext.x4.p2 = zext i32 %base.x4.p2 to i6435  %zext.x4.p3 = zext i32 %base.x4.p3 to i6436  %base.x16 = mul i64 %zext.x4, 437  %base.x16.p4 = shl i64 %zext.x4.p1, 238  %base.x16.p8 = shl i64 %zext.x4.p2, 239  %base.x16.p12 = mul i64 %zext.x4.p3, 440  %gep.a.base.x16 = getelementptr inbounds i8, ptr addrspace(1) %a, i64 %base.x1641  %gep.b.base.x16.p4 = getelementptr inbounds i8, ptr addrspace(1) %b, i64 %base.x16.p442  %gep.a.base.x16.p8 = getelementptr inbounds i8, ptr addrspace(1) %a, i64 %base.x16.p843  %gep.b.base.x16.p12 = getelementptr inbounds i8, ptr addrspace(1) %b, i64 %base.x16.p1244  %selected.base.x16.p0.or.4 = select i1 %cnd, ptr addrspace(1) %gep.a.base.x16, ptr addrspace(1) %gep.b.base.x16.p445  %gep.selected.base.x16.p8.or.12 = select i1 %cnd, ptr addrspace(1) %gep.a.base.x16.p8, ptr addrspace(1) %gep.b.base.x16.p1246  %selected.base.x16.p40.or.44 = getelementptr inbounds i32, ptr addrspace(1) %selected.base.x16.p0.or.4, i64 1047  %selected.base.x16.p44.or.48 = getelementptr inbounds i32, ptr addrspace(1) %gep.selected.base.x16.p8.or.12, i64 948  %val0 = load i32, ptr addrspace(1) %selected.base.x16.p40.or.44, align 449  %val1 = load i32, ptr addrspace(1) %selected.base.x16.p44.or.48, align 450  %t0 = insertelement <2 x i32> undef, i32 %val0, i32 051  %t1 = insertelement <2 x i32> %t0, i32 %val1, i32 152  store <2 x i32> %t1, ptr addrspace(1) %out53  ret void54}55 56define void @nested_selects(i1 %cnd0, i1 %cnd1, ptr addrspace(1) %a, ptr addrspace(1) %b, i32 %base, ptr addrspace(1) %out) {57; CHECK-LABEL: @nested_selects58; CHECK: load <2 x i32>59entry:60  %base.p1 = add nsw i32 %base, 161  %base.p2 = add i32 %base, 262  %base.p3 = add nsw i32 %base, 363  %base.x4 = mul i32 %base, 464  %base.x4.p5 = add i32 %base.x4, 565  %base.x4.p6 = add i32 %base.x4, 666  %sext = sext i32 %base to i6467  %sext.p1 = sext i32 %base.p1 to i6468  %sext.p2 = sext i32 %base.p2 to i6469  %sext.p3 = sext i32 %base.p3 to i6470  %sext.x4.p5 = sext i32 %base.x4.p5 to i6471  %sext.x4.p6 = sext i32 %base.x4.p6 to i6472  %gep.a.base = getelementptr inbounds i32, ptr addrspace(1) %a, i64 %sext73  %gep.a.base.p1 = getelementptr inbounds i32, ptr addrspace(1) %a, i64 %sext.p174  %gep.a.base.p2 = getelementptr inbounds i32, ptr addrspace(1) %a, i64 %sext.p275  %gep.a.base.p3 = getelementptr inbounds i32, ptr addrspace(1) %a, i64 %sext.p376  %gep.b.base.x4.p5 = getelementptr inbounds i32, ptr addrspace(1) %a, i64 %sext.x4.p577  %gep.b.base.x4.p6 = getelementptr inbounds i32, ptr addrspace(1) %a, i64 %sext.x4.p678  %selected.1.L = select i1 %cnd1, ptr addrspace(1) %gep.a.base.p2, ptr addrspace(1) %gep.b.base.x4.p579  %selected.1.R = select i1 %cnd1, ptr addrspace(1) %gep.a.base.p3, ptr addrspace(1) %gep.b.base.x4.p680  %selected.0.L = select i1 %cnd0, ptr addrspace(1) %gep.a.base, ptr addrspace(1) %selected.1.L81  %selected.0.R = select i1 %cnd0, ptr addrspace(1) %gep.a.base.p1, ptr addrspace(1) %selected.1.R82  %val0 = load i32, ptr addrspace(1) %selected.0.L, align 483  %val1 = load i32, ptr addrspace(1) %selected.0.R, align 484  %t0 = insertelement <2 x i32> undef, i32 %val0, i32 085  %t1 = insertelement <2 x i32> %t0, i32 %val1, i32 186  store <2 x i32> %t1, ptr addrspace(1) %out87  ret void88}89