63 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes=instcombine < %s | FileCheck %s3target datalayout = "E-m:e-i64:64-n32:64"4target triple = "powerpc64-unknown-linux-gnu"5 6@f.a = private unnamed_addr constant [1 x i32] [i32 12], align 47@f.b = private unnamed_addr constant [1 x i32] [i32 55], align 48@f.c = linkonce unnamed_addr alias [1 x i32], ptr @f.b9 10define signext i32 @test1(i32 signext %x) #0 {11; CHECK-LABEL: @test1(12; CHECK-NEXT: ret i32 1213;14 %idxprom = sext i32 %x to i6415 %arrayidx = getelementptr inbounds [1 x i32], ptr @f.a, i64 0, i64 %idxprom16 %r = load i32, ptr %arrayidx, align 417 ret i32 %r18}19 20declare void @foo(ptr %p)21define void @test2(i32 signext %x, i64 %v) #0 {22; CHECK-LABEL: @test2(23; CHECK-NEXT: [[P:%.*]] = alloca i64, align 824; CHECK-NEXT: store i64 [[V:%.*]], ptr [[P]], align 825; CHECK-NEXT: call void @foo(ptr nonnull [[P]]) #[[ATTR1:[0-9]+]]26; CHECK-NEXT: ret void27;28 %p = alloca i6429 %idxprom = sext i32 %x to i6430 %arrayidx = getelementptr inbounds i64, ptr %p, i64 %idxprom31 store i64 %v, ptr %arrayidx32 call void @foo(ptr %p)33 ret void34}35 36define signext i32 @test3(i32 signext %x, i1 %y) #0 {37; CHECK-LABEL: @test3(38; CHECK-NEXT: [[R:%.*]] = select i1 [[Y:%.*]], i32 12, i32 5539; CHECK-NEXT: ret i32 [[R]]40;41 %idxprom = sext i32 %x to i6442 %p = select i1 %y, ptr @f.a, ptr @f.b43 %arrayidx = getelementptr inbounds [1 x i32], ptr %p, i64 0, i64 %idxprom44 %r = load i32, ptr %arrayidx, align 445 ret i32 %r46}47 48define signext i32 @test4(i32 signext %x, i1 %y) #0 {49; CHECK-LABEL: @test4(50; CHECK-NEXT: [[IDXPROM:%.*]] = sext i32 [[X:%.*]] to i6451; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr @f.c, i64 [[IDXPROM]]52; CHECK-NEXT: [[R:%.*]] = load i32, ptr [[ARRAYIDX]], align 453; CHECK-NEXT: ret i32 [[R]]54;55 %idxprom = sext i32 %x to i6456 %arrayidx = getelementptr inbounds [1 x i32], ptr @f.c, i64 0, i64 %idxprom57 %r = load i32, ptr %arrayidx, align 458 ret i32 %r59}60 61attributes #0 = { nounwind readnone }62 63