mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-24 12:19:53 +00:00
Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change.
This update was done with the following bash script: find test/Transforms -name "*.ll" | \ while read NAME; do echo "$NAME" if ! grep -q "^; *RUN: *llc" $NAME; then TEMP=`mktemp -t temp` cp $NAME $TEMP sed -n "s/^define [^@]*@\([A-Za-z0-9_]*\)(.*$/\1/p" < $NAME | \ while read FUNC; do sed -i '' "s/;\(.*\)\([A-Za-z0-9_]*\):\( *\)@$FUNC\([( ]*\)\$/;\1\2-LABEL:\3@$FUNC(/g" $TEMP done mv $TEMP $NAME fi done git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186268 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
82e539d037
commit
39f4e8d9cc
@ -11,6 +11,6 @@ entry:
|
||||
%tobool21 = icmp ne %"struct.btSoftBody"* %n2, null
|
||||
%cond22 = zext i1 %tobool21 to i32
|
||||
ret void
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
}
|
||||
|
||||
|
@ -7,8 +7,8 @@ target triple = "x86_64-unknown-linux-gnu"
|
||||
define void @test1(double* noalias %out, double* noalias %in1, double* noalias %in2) nounwind uwtable {
|
||||
entry:
|
||||
br label %for.body
|
||||
; CHECK: @test1
|
||||
; CHECK-UNRL: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK-UNRL-LABEL: @test1(
|
||||
|
||||
for.body: ; preds = %for.body, %entry
|
||||
%indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
|
||||
|
@ -46,7 +46,7 @@ if.end10: ; preds = %entry
|
||||
|
||||
return: ; preds = %entry
|
||||
ret void
|
||||
; CHECK: @ptoa
|
||||
; CHECK-LABEL: @ptoa(
|
||||
}
|
||||
|
||||
declare noalias i8* @malloc() nounwind
|
||||
|
@ -77,7 +77,7 @@ entry:
|
||||
%and390 = shl i8 %conv3898, 6
|
||||
store i8 %and390, i8* %incdec.ptr387, align 1
|
||||
unreachable
|
||||
; CHECK: @gsm_encode
|
||||
; CHECK-LABEL: @gsm_encode(
|
||||
}
|
||||
|
||||
declare void @Gsm_Coder(%struct.gsm_state.2.8.14.15.16.17.19.22.23.25.26.28.29.31.32.33.35.36.37.38.40.41.42.44.45.47.48.50.52.53.54.56.57.58.59.60.61.62.63.66.73.83.84.89.90.91.92.93.94.95.96.99.100.101.102.103.104.106.107.114.116.121.122.129.130.135.136.137.138.139.140.141.142.143.144.147.148.149.158.159.160.161.164.165.166.167.168.169.172.179.181.182.183.188.195.200.201.202.203.204.205.208.209.210.212.213.214.215.222.223.225.226.230.231.232.233.234.235.236.237.238.239.240.241.242.243.244.352*, i16*, i16*, i16*, i16*, i16*, i16*, i16*)
|
||||
|
@ -162,7 +162,7 @@ entry:
|
||||
%conv365 = trunc i32 %or364 to i8
|
||||
store i8 %conv365, i8* %incdec.ptr350, align 1
|
||||
unreachable
|
||||
; CHECK: @gsm_encode
|
||||
; CHECK-LABEL: @gsm_encode(
|
||||
}
|
||||
|
||||
declare void @Gsm_Coder(%struct.gsm_state.2.8.39.44.45.55.56.57.58.59.62.63.64.65.74.75.76.77.80.87.92.93.94.95.96.97.110.111.112.113.114.128.130.135.136.137.138.139.140.141.142.143.144.145.148.149.150.151.152.169.170.177.178.179.184.185.186.187.188.201.208.209.219.220.221.223.224.225.230.231.232.233.235.236.237.238.245.246.248.249.272.274.279.280.281.282.283.286.293.298.299.314.315.316.317.318.319.320.321.322.323.324.325.326.327.328.329.330.331.332.333.334.335.336.337.338.339.340.341.342.343.344.345.346.347.348.349.350.351.352.353.565*, i16*, i16*, i16*, i16*, i16*, i16*, i16*)
|
||||
|
@ -18,7 +18,7 @@ define <4 x float> @test7(<4 x float> %A1, <4 x float> %B1, double %C1, double %
|
||||
|
||||
%R = fmul <4 x float> %Y1, %Y2
|
||||
ret <4 x float> %R
|
||||
; CHECK: @test7
|
||||
; CHECK-LABEL: @test7(
|
||||
; CHECK-NOT: <8 x float>
|
||||
; CHECK: ret <4 x float>
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ define double @test1(double %A1, double %A2, double %B1, double %B2, double %C1,
|
||||
%Z2 = fadd double %Y2, %B2
|
||||
%R = fmul double %Z1, %Z2
|
||||
ret double %R
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: ret double %R
|
||||
}
|
||||
|
||||
@ -30,7 +30,7 @@ define double @test1a(double %A1, double %A2, double %B1, double %B2, double %C1
|
||||
%Z2 = fadd double %Y2, %B2
|
||||
%R = fmul double %Z1, %Z2
|
||||
ret double %R
|
||||
; CHECK: @test1a
|
||||
; CHECK-LABEL: @test1a(
|
||||
; CHECK: ret double %R
|
||||
}
|
||||
|
||||
@ -44,7 +44,7 @@ define double @test2(double %A1, double %A2, double %B1, double %B2) {
|
||||
%Z2 = fadd double %Y2, %B2
|
||||
%R = fmul double %Z1, %Z2
|
||||
ret double %R
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK: ret double %R
|
||||
}
|
||||
|
||||
@ -58,7 +58,7 @@ define double @test3(double %A1, double %A2, double %B1, double %B2, i32 %P) {
|
||||
%Z2 = fadd double %Y2, %B2
|
||||
%R = fmul double %Z1, %Z2
|
||||
ret double %R
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
; CHECK: ret double %R
|
||||
}
|
||||
|
||||
@ -73,7 +73,7 @@ define double @test4(double %A1, double %A2, double %B1, double %B2, i32 %P) {
|
||||
%Z2 = fadd double %Y2, %B2
|
||||
%R = fmul double %Z1, %Z2
|
||||
ret double %R
|
||||
; CHECK: @test4
|
||||
; CHECK-LABEL: @test4(
|
||||
; CHECK: ret double %R
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,7 @@ entry:
|
||||
%arrayidx5 = getelementptr inbounds double* %c, i64 1
|
||||
store double %mul5, double* %arrayidx5, align 8
|
||||
ret void
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: %i0.v.i0 = bitcast double* %a to <2 x double>*
|
||||
; CHECK: %i1.v.i0 = bitcast double* %b to <2 x double>*
|
||||
; CHECK: %i0 = load <2 x double>* %i0.v.i0, align 8
|
||||
|
@ -11,7 +11,7 @@ define double @test1(double %A1, double %A2, double %B1, double %B2) {
|
||||
%Z2 = fadd double %Y2, %B2
|
||||
%R = fmul double %Z1, %Z2
|
||||
ret double %R
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: fsub <2 x double>
|
||||
; CHECK: fmul <2 x double>
|
||||
; CHECK: fadd <2 x double>
|
||||
@ -38,7 +38,7 @@ define double @test1a(double %A1, double %A2, double %B1, double %B2) {
|
||||
%S2 = fadd double %W2, %Q2
|
||||
%R = fmul double %S1, %S2
|
||||
ret double %R
|
||||
; CHECK: @test1a
|
||||
; CHECK-LABEL: @test1a(
|
||||
; CHECK: %X1.v.i1.1 = insertelement <2 x double> undef, double %B1, i32 0
|
||||
; CHECK: %X1.v.i1.2 = insertelement <2 x double> %X1.v.i1.1, double %B2, i32 1
|
||||
; CHECK: %X1.v.i0.1 = insertelement <2 x double> undef, double %A1, i32 0
|
||||
@ -66,7 +66,7 @@ define double @test2(double %A1, double %A2, double %B1, double %B2) {
|
||||
%Z2 = fadd double %Y1, %B2
|
||||
%R = fmul double %Z1, %Z2
|
||||
ret double %R
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK: insertelement
|
||||
; CHECK: insertelement
|
||||
; CHECK: insertelement
|
||||
@ -88,7 +88,7 @@ define double @test4(double %A1, double %A2, double %B1, double %B2) {
|
||||
%W2 = fadd double %Y1, %Z2
|
||||
%R = fmul double %Z1, %Z2
|
||||
ret double %R
|
||||
; CHECK: @test4
|
||||
; CHECK-LABEL: @test4(
|
||||
; CHECK: insertelement
|
||||
; CHECK: insertelement
|
||||
; CHECK: insertelement
|
||||
@ -113,7 +113,7 @@ define <8 x i8> @test6(<8 x i8> %A1, <8 x i8> %A2, <8 x i8> %B1, <8 x i8> %B2) {
|
||||
%Q2 = shufflevector <8 x i8> %Z2, <8 x i8> %Z2, <8 x i32> <i32 6, i32 7, i32 0, i32 1, i32 2, i32 4, i32 4, i32 1>
|
||||
%R = mul <8 x i8> %Q1, %Q2
|
||||
ret <8 x i8> %R
|
||||
; CHECK: @test6
|
||||
; CHECK-LABEL: @test6(
|
||||
; CHECK-NOT: sub <16 x i8>
|
||||
; CHECK: ret <8 x i8>
|
||||
}
|
||||
|
@ -7,6 +7,6 @@ entry:
|
||||
%0 = bitcast <2 x i64> undef to i128
|
||||
%1 = bitcast <2 x i64> undef to i128
|
||||
ret void
|
||||
; CHECK: @main
|
||||
; CHECK-LABEL: @main(
|
||||
}
|
||||
|
||||
|
@ -105,7 +105,7 @@ go:
|
||||
br i1 %or.cond, label %done, label %go
|
||||
done:
|
||||
ret void
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: go:
|
||||
; CHECK: %conv.v.i0.1 = insertelement <2 x i32> undef, i32 %n.0, i32 0
|
||||
; FIXME: When tree pruning is deterministic, include the entire output.
|
||||
|
@ -22,7 +22,7 @@ entry:
|
||||
%add15 = fadd double %mul13, %i5
|
||||
%mul16 = fmul double %add11, %add15
|
||||
ret double %mul16
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: %i0.v.i0 = bitcast double* %a to <2 x double>*
|
||||
; CHECK: %i1.v.i0 = bitcast double* %b to <2 x double>*
|
||||
; CHECK: %i2.v.i0 = bitcast double* %c to <2 x double>*
|
||||
|
@ -7,8 +7,8 @@ target triple = "x86_64-unknown-linux-gnu"
|
||||
define void @test1(double* noalias %out, double* noalias %in1, double* noalias %in2) nounwind uwtable {
|
||||
entry:
|
||||
br label %for.body
|
||||
; CHECK: @test1
|
||||
; CHECK-UNRL: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK-UNRL-LABEL: @test1(
|
||||
|
||||
for.body: ; preds = %for.body, %entry
|
||||
%indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
|
||||
|
@ -6,7 +6,7 @@ target triple = "x86_64-unknown-linux-gnu"
|
||||
@B = common global [1024 x float] zeroinitializer, align 16
|
||||
|
||||
define i32 @test1() nounwind {
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
%V1 = load float* getelementptr inbounds ([1024 x float]* @A, i64 0, i64 0), align 16
|
||||
%V2 = load float* getelementptr inbounds ([1024 x float]* @A, i64 0, i64 1), align 4
|
||||
%V3= load float* getelementptr inbounds ([1024 x float]* @A, i64 0, i64 2), align 8
|
||||
|
@ -16,7 +16,7 @@ entry:
|
||||
%arrayidx5 = getelementptr inbounds double* %c, i64 1
|
||||
store double %mul5, double* %arrayidx5, align 8
|
||||
ret void
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: !fpmath
|
||||
; CHECK: ret void
|
||||
}
|
||||
@ -36,7 +36,7 @@ entry:
|
||||
%arrayidx5 = getelementptr inbounds i64* %c, i64 1
|
||||
store i64 %mul5, i64* %arrayidx5, align 8
|
||||
ret void
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK-NOT: !range
|
||||
; CHECK: ret void
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ entry:
|
||||
store i64 %v3a, i64* %a3, align 8
|
||||
%r = add i64 %v2, %v3
|
||||
ret i64 %r
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK-NOT: getelementptr <2 x i64*>
|
||||
}
|
||||
|
||||
|
@ -9,8 +9,8 @@ define double @test1(double %A1, double %A2, double %B1, double %B2) {
|
||||
%Y2 = fmul double %X2, %A2
|
||||
%R = fmul double %Y1, %Y2
|
||||
ret double %R
|
||||
; CHECK-RD3: @test1
|
||||
; CHECK-RD2: @test1
|
||||
; CHECK-RD3-LABEL: @test1(
|
||||
; CHECK-RD2-LABEL: @test1(
|
||||
; CHECK-RD3-NOT: <2 x double>
|
||||
; CHECK-RD2: <2 x double>
|
||||
}
|
||||
|
@ -3,8 +3,8 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
|
||||
; RUN: opt < %s -bb-vectorize -bb-vectorize-req-chain-depth=3 -bb-vectorize-search-limit=4 -bb-vectorize-ignore-target-info -instcombine -gvn -S | FileCheck %s -check-prefix=CHECK-SL4
|
||||
|
||||
define double @test1(double %A1, double %A2, double %B1, double %B2) {
|
||||
; CHECK: @test1
|
||||
; CHECK-SL4: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK-SL4-LABEL: @test1(
|
||||
; CHECK-SL4-NOT: <2 x double>
|
||||
; CHECK: %X1.v.i1.1 = insertelement <2 x double> undef, double %B1, i32 0
|
||||
; CHECK: %X1.v.i1.2 = insertelement <2 x double> %X1.v.i1.1, double %B2, i32 1
|
||||
|
@ -16,7 +16,7 @@ define double @test1(double %A1, double %A2, double %B1, double %B2, double %C1,
|
||||
%Z2 = fadd double %Y2, %B2
|
||||
%R = fmul double %Z1, %Z2
|
||||
ret double %R
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: %X1.v.i1.1 = insertelement <2 x double> undef, double %B1, i32 0
|
||||
; CHECK: %X1.v.i1.2 = insertelement <2 x double> %X1.v.i1.1, double %B2, i32 1
|
||||
; CHECK: %X1.v.i0.1 = insertelement <2 x double> undef, double %A1, i32 0
|
||||
@ -42,7 +42,7 @@ define double @test1a(double %A1, double %A2, double %B1, double %B2, double %C1
|
||||
%Z2 = fadd double %Y2, %B2
|
||||
%R = fmul double %Z1, %Z2
|
||||
ret double %R
|
||||
; CHECK: @test1a
|
||||
; CHECK-LABEL: @test1a(
|
||||
; CHECK: %X1.v.i1.1 = insertelement <2 x double> undef, double %B1, i32 0
|
||||
; CHECK: %X1.v.i1.2 = insertelement <2 x double> %X1.v.i1.1, double %B2, i32 1
|
||||
; CHECK: %X1.v.i0.1 = insertelement <2 x double> undef, double %A1, i32 0
|
||||
@ -68,7 +68,7 @@ define double @test2(double %A1, double %A2, double %B1, double %B2) {
|
||||
%Z2 = fadd double %Y2, %B2
|
||||
%R = fmul double %Z1, %Z2
|
||||
ret double %R
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK: %X1.v.i1.1 = insertelement <2 x double> undef, double %B1, i32 0
|
||||
; CHECK: %X1.v.i1.2 = insertelement <2 x double> %X1.v.i1.1, double %B2, i32 1
|
||||
; CHECK: %X1.v.i0.1 = insertelement <2 x double> undef, double %A1, i32 0
|
||||
@ -93,7 +93,7 @@ define double @test3(double %A1, double %A2, double %B1, double %B2, i32 %P) {
|
||||
%Z2 = fadd double %Y2, %B2
|
||||
%R = fmul double %Z1, %Z2
|
||||
ret double %R
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
; CHECK: %X1.v.i1.1 = insertelement <2 x double> undef, double %B1, i32 0
|
||||
; CHECK: %X1.v.i1.2 = insertelement <2 x double> %X1.v.i1.1, double %B2, i32 1
|
||||
; CHECK: %X1.v.i0.1 = insertelement <2 x double> undef, double %A1, i32 0
|
||||
@ -119,7 +119,7 @@ define double @test4(double %A1, double %A2, double %B1, double %B2, i32 %P) {
|
||||
%Z2 = fadd double %Y2, %B2
|
||||
%R = fmul double %Z1, %Z2
|
||||
ret double %R
|
||||
; CHECK: @test4
|
||||
; CHECK-LABEL: @test4(
|
||||
; CHECK-NOT: <2 x double>
|
||||
; CHECK: ret double %R
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ entry:
|
||||
%arrayidx5 = getelementptr inbounds i64* %c, i64 1
|
||||
store i64 %mul5, i64* %arrayidx5, align 8
|
||||
ret double %r
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: %i0.v.i0 = bitcast i64* %a to <2 x i64>*
|
||||
; CHECK: %i1.v.i0 = bitcast i64* %b to <2 x i64>*
|
||||
; CHECK: %i0 = load <2 x i64>* %i0.v.i0, align 8
|
||||
@ -43,7 +43,7 @@ entry:
|
||||
; CHECK: %0 = bitcast i64* %c to <2 x i64>*
|
||||
; CHECK: store <2 x i64> %mul, <2 x i64>* %0, align 8
|
||||
; CHECK: ret double %r
|
||||
; CHECK-AO: @test1
|
||||
; CHECK-AO-LABEL: @test1(
|
||||
; CHECK-AO-NOT: load <2 x
|
||||
}
|
||||
|
||||
@ -64,7 +64,7 @@ entry:
|
||||
%arrayidx5 = getelementptr inbounds i64** %c, i64 1
|
||||
store i64* %ptr3, i64** %arrayidx5, align 8
|
||||
ret void
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK: %i0.v.i0 = bitcast i64** %a to <2 x i64*>*
|
||||
; CHECK: %i1 = load i64** %b, align 8
|
||||
; CHECK: %i0 = load <2 x i64*>* %i0.v.i0, align 8
|
||||
@ -78,7 +78,7 @@ entry:
|
||||
; CHECK: %0 = bitcast i64** %c to <2 x i64*>*
|
||||
; CHECK: store <2 x i64*> %ptr0, <2 x i64*>* %0, align 8
|
||||
; CHECK: ret void
|
||||
; CHECK-AO: @test2
|
||||
; CHECK-AO-LABEL: @test2(
|
||||
; CHECK-AO-NOT: <2 x
|
||||
}
|
||||
|
||||
@ -108,7 +108,7 @@ entry:
|
||||
%arrayidx5 = getelementptr inbounds <2 x i64*>* %c, i64 1
|
||||
store <2 x i64*> %rtr3, <2 x i64*>* %arrayidx5, align 8
|
||||
ret void
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
; CHECK: %i0.v.i0 = bitcast <2 x i64*>* %a to <4 x i64*>*
|
||||
; CHECK: %i1 = load <2 x i64*>* %b, align 8
|
||||
; CHECK: %i0 = load <4 x i64*>* %i0.v.i0, align 8
|
||||
@ -128,7 +128,7 @@ entry:
|
||||
; CHECK: %1 = shufflevector <2 x i64*> %rtr0, <2 x i64*> %rtr3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
|
||||
; CHECK: store <4 x i64*> %1, <4 x i64*>* %0, align 8
|
||||
; CHECK: ret void
|
||||
; CHECK-AO: @test3
|
||||
; CHECK-AO-LABEL: @test3(
|
||||
; CHECK-AO-NOT: <4 x
|
||||
}
|
||||
|
||||
|
@ -17,7 +17,7 @@ entry:
|
||||
%arrayidx5 = getelementptr inbounds double* %c, i64 1
|
||||
store double %mul5, double* %arrayidx5, align 8
|
||||
ret void
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: %i0.v.i0 = bitcast double* %a to <2 x double>*
|
||||
; CHECK: %i1.v.i0 = bitcast double* %b to <2 x double>*
|
||||
; CHECK: %i0 = load <2 x double>* %i0.v.i0, align 8
|
||||
@ -26,7 +26,7 @@ entry:
|
||||
; CHECK: %0 = bitcast double* %c to <2 x double>*
|
||||
; CHECK: store <2 x double> %mul, <2 x double>* %0, align 8
|
||||
; CHECK: ret void
|
||||
; CHECK-AO: @test1
|
||||
; CHECK-AO-LABEL: @test1(
|
||||
; CHECK-AO-NOT: <2 x double>
|
||||
}
|
||||
|
||||
@ -49,7 +49,7 @@ entry:
|
||||
%arrayidx5 = getelementptr inbounds double* %c, i64 1
|
||||
store double %mul5, double* %arrayidx5, align 8
|
||||
ret void
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK: %i0f.v.i0 = bitcast float* %a to <2 x float>*
|
||||
; CHECK: %i1f.v.i0 = bitcast float* %b to <2 x float>*
|
||||
; CHECK: %i0f = load <2 x float>* %i0f.v.i0, align 4
|
||||
@ -60,7 +60,7 @@ entry:
|
||||
; CHECK: %0 = bitcast double* %c to <2 x double>*
|
||||
; CHECK: store <2 x double> %mul, <2 x double>* %0, align 8
|
||||
; CHECK: ret void
|
||||
; CHECK-AO: @test2
|
||||
; CHECK-AO-LABEL: @test2(
|
||||
; CHECK-AO-NOT: <2 x double>
|
||||
}
|
||||
|
||||
@ -81,7 +81,7 @@ entry:
|
||||
%arrayidx5 = getelementptr inbounds float* %c, i64 1
|
||||
store float %mul5f, float* %arrayidx5, align 4
|
||||
ret void
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
; CHECK: %i0.v.i0 = bitcast double* %a to <2 x double>*
|
||||
; CHECK: %i1.v.i0 = bitcast double* %b to <2 x double>*
|
||||
; CHECK: %i0 = load <2 x double>* %i0.v.i0, align 8
|
||||
@ -91,7 +91,7 @@ entry:
|
||||
; CHECK: %0 = bitcast float* %c to <2 x float>*
|
||||
; CHECK: store <2 x float> %mulf, <2 x float>* %0, align 8
|
||||
; CHECK: ret void
|
||||
; CHECK-AO: @test3
|
||||
; CHECK-AO-LABEL: @test3(
|
||||
; CHECK-AO: %i0 = load double* %a, align 8
|
||||
; CHECK-AO: %i1 = load double* %b, align 8
|
||||
; CHECK-AO: %arrayidx3 = getelementptr inbounds double* %a, i64 1
|
||||
@ -134,9 +134,9 @@ if.then:
|
||||
|
||||
if.end:
|
||||
ret void
|
||||
; CHECK: @test4
|
||||
; CHECK-LABEL: @test4(
|
||||
; CHECK-NOT: <2 x double>
|
||||
; CHECK-AO: @test4
|
||||
; CHECK-AO-LABEL: @test4(
|
||||
; CHECK-AO-NOT: <2 x double>
|
||||
}
|
||||
|
||||
@ -155,7 +155,7 @@ entry:
|
||||
store double %mul5, double* %arrayidx5, align 8
|
||||
store double %mul, double* %c, align 4
|
||||
ret void
|
||||
; CHECK: @test5
|
||||
; CHECK-LABEL: @test5(
|
||||
; CHECK: %i0.v.i0 = bitcast double* %a to <2 x double>*
|
||||
; CHECK: %i1.v.i0 = bitcast double* %b to <2 x double>*
|
||||
; CHECK: %i0 = load <2 x double>* %i0.v.i0, align 8
|
||||
@ -164,7 +164,7 @@ entry:
|
||||
; CHECK: %0 = bitcast double* %c to <2 x double>*
|
||||
; CHECK: store <2 x double> %mul, <2 x double>* %0, align 4
|
||||
; CHECK: ret void
|
||||
; CHECK-AO: @test5
|
||||
; CHECK-AO-LABEL: @test5(
|
||||
; CHECK-AO-NOT: <2 x double>
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
|
||||
|
||||
; Basic depth-3 chain with select
|
||||
define double @test1(double %A1, double %A2, double %B1, double %B2, i1 %C1, i1 %C2) {
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: %X1.v.i1.1 = insertelement <2 x double> undef, double %B1, i32 0
|
||||
; CHECK: %X1.v.i1.2 = insertelement <2 x double> %X1.v.i1.1, double %B2, i32 1
|
||||
; CHECK: %X1.v.i0.1 = insertelement <2 x double> undef, double %A1, i32 0
|
||||
@ -30,8 +30,8 @@ define double @test1(double %A1, double %A2, double %B1, double %B2, i1 %C1, i1
|
||||
|
||||
; Basic depth-3 chain with select (and vect. compare)
|
||||
define double @test2(double %A1, double %A2, double %B1, double %B2) {
|
||||
; CHECK: @test2
|
||||
; CHECK-NB: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK-NB-LABEL: @test2(
|
||||
; CHECK: %X1.v.i1.1 = insertelement <2 x double> undef, double %B1, i32 0
|
||||
; CHECK: %X1.v.i1.2 = insertelement <2 x double> %X1.v.i1.1, double %B2, i32 1
|
||||
; CHECK: %X1.v.i0.1 = insertelement <2 x double> undef, double %A1, i32 0
|
||||
|
@ -4,7 +4,7 @@ target triple = "powerpc64-unknown-linux"
|
||||
|
||||
; Basic depth-3 chain (target-specific type should not vectorize)
|
||||
define ppc_fp128 @test7(ppc_fp128 %A1, ppc_fp128 %A2, ppc_fp128 %B1, ppc_fp128 %B2) {
|
||||
; CHECK: @test7
|
||||
; CHECK-LABEL: @test7(
|
||||
; CHECK-NOT: <2 x ppc_fp128>
|
||||
%X1 = fsub ppc_fp128 %A1, %B1
|
||||
%X2 = fsub ppc_fp128 %A2, %B2
|
||||
|
@ -3,7 +3,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
|
||||
|
||||
; Basic depth-3 chain
|
||||
define double @test1(double %A1, double %A2, double %B1, double %B2) {
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: %X1.v.i1.1 = insertelement <2 x double> undef, double %B1, i32 0
|
||||
; CHECK: %X1.v.i1.2 = insertelement <2 x double> %X1.v.i1.1, double %B2, i32 1
|
||||
; CHECK: %X1.v.i0.1 = insertelement <2 x double> undef, double %A1, i32 0
|
||||
@ -27,7 +27,7 @@ define double @test1(double %A1, double %A2, double %B1, double %B2) {
|
||||
|
||||
; Basic depth-3 chain (last pair permuted)
|
||||
define double @test2(double %A1, double %A2, double %B1, double %B2) {
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK: %X1.v.i1.1 = insertelement <2 x double> undef, double %B1, i32 0
|
||||
; CHECK: %X1.v.i1.2 = insertelement <2 x double> %X1.v.i1.1, double %B2, i32 1
|
||||
; CHECK: %X1.v.i0.1 = insertelement <2 x double> undef, double %A1, i32 0
|
||||
@ -53,7 +53,7 @@ define double @test2(double %A1, double %A2, double %B1, double %B2) {
|
||||
|
||||
; Basic depth-3 chain (last pair first splat)
|
||||
define double @test3(double %A1, double %A2, double %B1, double %B2) {
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
; CHECK: %X1.v.i1.1 = insertelement <2 x double> undef, double %B1, i32 0
|
||||
; CHECK: %X1.v.i1.2 = insertelement <2 x double> %X1.v.i1.1, double %B2, i32 1
|
||||
; CHECK: %X1.v.i0.1 = insertelement <2 x double> undef, double %A1, i32 0
|
||||
@ -78,7 +78,7 @@ define double @test3(double %A1, double %A2, double %B1, double %B2) {
|
||||
|
||||
; Basic depth-3 chain (last pair second splat)
|
||||
define double @test4(double %A1, double %A2, double %B1, double %B2) {
|
||||
; CHECK: @test4
|
||||
; CHECK-LABEL: @test4(
|
||||
; CHECK: %X1.v.i1.1 = insertelement <2 x double> undef, double %B1, i32 0
|
||||
; CHECK: %X1.v.i1.2 = insertelement <2 x double> %X1.v.i1.1, double %B2, i32 1
|
||||
; CHECK: %X1.v.i0.1 = insertelement <2 x double> undef, double %A1, i32 0
|
||||
@ -103,7 +103,7 @@ define double @test4(double %A1, double %A2, double %B1, double %B2) {
|
||||
|
||||
; Basic depth-3 chain
|
||||
define <2 x float> @test5(<2 x float> %A1, <2 x float> %A2, <2 x float> %B1, <2 x float> %B2) {
|
||||
; CHECK: @test5
|
||||
; CHECK-LABEL: @test5(
|
||||
; CHECK: %X1.v.i1 = shufflevector <2 x float> %B1, <2 x float> %B2, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
|
||||
; CHECK: %X1.v.i0 = shufflevector <2 x float> %A1, <2 x float> %A2, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
|
||||
%X1 = fsub <2 x float> %A1, %B1
|
||||
@ -125,7 +125,7 @@ define <2 x float> @test5(<2 x float> %A1, <2 x float> %A2, <2 x float> %B1, <2
|
||||
|
||||
; Basic chain with shuffles
|
||||
define <8 x i8> @test6(<8 x i8> %A1, <8 x i8> %A2, <8 x i8> %B1, <8 x i8> %B2) {
|
||||
; CHECK: @test6
|
||||
; CHECK-LABEL: @test6(
|
||||
; CHECK: %X1.v.i1 = shufflevector <8 x i8> %B1, <8 x i8> %B2, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
|
||||
; CHECK: %X1.v.i0 = shufflevector <8 x i8> %A1, <8 x i8> %A2, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
|
||||
%X1 = sub <8 x i8> %A1, %B1
|
||||
@ -151,7 +151,7 @@ define <8 x i8> @test6(<8 x i8> %A1, <8 x i8> %A2, <8 x i8> %B1, <8 x i8> %B2) {
|
||||
|
||||
; Basic depth-3 chain (flipped order)
|
||||
define double @test7(double %A1, double %A2, double %B1, double %B2) {
|
||||
; CHECK: @test7
|
||||
; CHECK-LABEL: @test7(
|
||||
; CHECK: %X1.v.i1.1 = insertelement <2 x double> undef, double %B1, i32 0
|
||||
; CHECK: %X1.v.i1.2 = insertelement <2 x double> %X1.v.i1.1, double %B2, i32 1
|
||||
; CHECK: %X1.v.i0.1 = insertelement <2 x double> undef, double %A1, i32 0
|
||||
@ -175,7 +175,7 @@ define double @test7(double %A1, double %A2, double %B1, double %B2) {
|
||||
|
||||
; Basic depth-3 chain (subclass data)
|
||||
define i64 @test8(i64 %A1, i64 %A2, i64 %B1, i64 %B2) {
|
||||
; CHECK: @test8
|
||||
; CHECK-LABEL: @test8(
|
||||
; CHECK: %X1.v.i1.1 = insertelement <2 x i64> undef, i64 %B1, i32 0
|
||||
; CHECK: %X1.v.i1.2 = insertelement <2 x i64> %X1.v.i1.1, i64 %B2, i32 1
|
||||
; CHECK: %X1.v.i0.1 = insertelement <2 x i64> undef, i64 %A1, i32 0
|
||||
|
@ -3,7 +3,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
|
||||
|
||||
; Basic depth-3 chain
|
||||
define double @test1(double %A1, double %A2, double %A3, double %B1, double %B2, double %B3) {
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: %X1.v.i1.11 = insertelement <3 x double> undef, double %B1, i32 0
|
||||
; CHECK: %X1.v.i1.22 = insertelement <3 x double> %X1.v.i1.11, double %B2, i32 1
|
||||
; CHECK: %X1.v.i1 = insertelement <3 x double> %X1.v.i1.22, double %B3, i32 2
|
||||
|
@ -3,7 +3,7 @@
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
||||
target triple = "x86_64-apple-darwin10.0.0"
|
||||
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; objectsize should fold to a constant, which causes the branch to fold to an
|
||||
; uncond branch. Next, we fold the control flow alltogether.
|
||||
; rdar://8785296
|
||||
|
@ -16,7 +16,7 @@ BB2:
|
||||
br label %BB3
|
||||
|
||||
BB3:
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: %Ret = phi i32 [ 0, %BB1 ], [ 1, %BB2 ]
|
||||
%Ret = phi i32 [ %Val, %BB1 ], [ 1, %BB2 ]
|
||||
ret i32 %Ret
|
||||
@ -31,12 +31,12 @@ entry:
|
||||
bb:
|
||||
ret i1 %V
|
||||
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK: ret i1 true
|
||||
}
|
||||
|
||||
define i1 @TNAN() {
|
||||
; CHECK: @TNAN
|
||||
; CHECK-LABEL: @TNAN(
|
||||
; CHECK: ret i1 true
|
||||
%A = fcmp uno double 0x7FF8000000000000, 1.000000e+00
|
||||
%B = fcmp uno double 1.230000e+02, 1.000000e+00
|
||||
@ -47,7 +47,7 @@ define i1 @TNAN() {
|
||||
define i128 @vector_to_int_cast() {
|
||||
%A = bitcast <4 x i32> <i32 1073741824, i32 1073741824, i32 1073741824, i32 1073741824> to i128
|
||||
ret i128 %A
|
||||
; CHECK: @vector_to_int_cast
|
||||
; CHECK-LABEL: @vector_to_int_cast(
|
||||
; CHECK: ret i128 85070591750041656499021422275829170176
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
define <1 x i64> @test1() {
|
||||
%A = bitcast i64 63 to <1 x i64>
|
||||
ret <1 x i64> %A
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: ret <1 x i64> <i64 63>
|
||||
}
|
||||
|
||||
|
@ -11,7 +11,7 @@ declare double @sqrt(double)
|
||||
declare double @exp2(double)
|
||||
|
||||
define double @T() {
|
||||
; CHECK: @T
|
||||
; CHECK-LABEL: @T(
|
||||
; CHECK-NOT: call
|
||||
; CHECK: ret
|
||||
%A = call double @cos(double 0.000000e+00)
|
||||
@ -29,7 +29,7 @@ define double @T() {
|
||||
}
|
||||
|
||||
define i1 @test_sse_cvt() nounwind readnone {
|
||||
; CHECK: @test_sse_cvt
|
||||
; CHECK-LABEL: @test_sse_cvt(
|
||||
; CHECK-NOT: call
|
||||
; CHECK: ret i1 true
|
||||
entry:
|
||||
@ -63,7 +63,7 @@ declare i64 @llvm.x86.sse2.cvttsd2si64(<2 x double>) nounwind readnone
|
||||
|
||||
define double @test_intrinsic_pow() nounwind uwtable ssp {
|
||||
entry:
|
||||
; CHECK: @test_intrinsic_pow
|
||||
; CHECK-LABEL: @test_intrinsic_pow(
|
||||
; CHECK-NOT: call
|
||||
%0 = call double @llvm.pow.f64(double 1.500000e+00, double 3.000000e+00)
|
||||
ret double %0
|
||||
@ -72,7 +72,7 @@ declare double @llvm.pow.f64(double, double) nounwind readonly
|
||||
|
||||
; Shouldn't fold because of -fno-builtin
|
||||
define double @sin_() nounwind uwtable ssp {
|
||||
; FNOBUILTIN: @sin_
|
||||
; FNOBUILTIN-LABEL: @sin_(
|
||||
; FNOBUILTIN: %1 = call double @sin(double 3.000000e+00)
|
||||
%1 = call double @sin(double 3.000000e+00)
|
||||
ret double %1
|
||||
@ -80,7 +80,7 @@ define double @sin_() nounwind uwtable ssp {
|
||||
|
||||
; Shouldn't fold because of -fno-builtin
|
||||
define double @sqrt_() nounwind uwtable ssp {
|
||||
; FNOBUILTIN: @sqrt_
|
||||
; FNOBUILTIN-LABEL: @sqrt_(
|
||||
; FNOBUILTIN: %1 = call double @sqrt(double 3.000000e+00)
|
||||
%1 = call double @sqrt(double 3.000000e+00)
|
||||
ret double %1
|
||||
@ -88,7 +88,7 @@ define double @sqrt_() nounwind uwtable ssp {
|
||||
|
||||
; Shouldn't fold because of -fno-builtin
|
||||
define float @sqrtf_() nounwind uwtable ssp {
|
||||
; FNOBUILTIN: @sqrtf_
|
||||
; FNOBUILTIN-LABEL: @sqrtf_(
|
||||
; FNOBUILTIN: %1 = call float @sqrtf(float 3.000000e+00)
|
||||
%1 = call float @sqrtf(float 3.000000e+00)
|
||||
ret float %1
|
||||
@ -97,7 +97,7 @@ declare float @sqrtf(float)
|
||||
|
||||
; Shouldn't fold because of -fno-builtin
|
||||
define float @sinf_() nounwind uwtable ssp {
|
||||
; FNOBUILTIN: @sinf_
|
||||
; FNOBUILTIN-LABEL: @sinf_(
|
||||
; FNOBUILTIN: %1 = call float @sinf(float 3.000000e+00)
|
||||
%1 = call float @sinf(float 3.000000e+00)
|
||||
ret float %1
|
||||
@ -106,7 +106,7 @@ declare float @sinf(float)
|
||||
|
||||
; Shouldn't fold because of -fno-builtin
|
||||
define double @tan_() nounwind uwtable ssp {
|
||||
; FNOBUILTIN: @tan_
|
||||
; FNOBUILTIN-LABEL: @tan_(
|
||||
; FNOBUILTIN: %1 = call double @tan(double 3.000000e+00)
|
||||
%1 = call double @tan(double 3.000000e+00)
|
||||
ret double %1
|
||||
@ -114,7 +114,7 @@ define double @tan_() nounwind uwtable ssp {
|
||||
|
||||
; Shouldn't fold because of -fno-builtin
|
||||
define double @tanh_() nounwind uwtable ssp {
|
||||
; FNOBUILTIN: @tanh_
|
||||
; FNOBUILTIN-LABEL: @tanh_(
|
||||
; FNOBUILTIN: %1 = call double @tanh(double 3.000000e+00)
|
||||
%1 = call double @tanh(double 3.000000e+00)
|
||||
ret double %1
|
||||
@ -123,7 +123,7 @@ declare double @tanh(double)
|
||||
|
||||
; Shouldn't fold because of -fno-builtin
|
||||
define double @pow_() nounwind uwtable ssp {
|
||||
; FNOBUILTIN: @pow_
|
||||
; FNOBUILTIN-LABEL: @pow_(
|
||||
; FNOBUILTIN: %1 = call double @pow(double 3.000000e+00, double 3.000000e+00)
|
||||
%1 = call double @pow(double 3.000000e+00, double 3.000000e+00)
|
||||
ret double %1
|
||||
@ -132,7 +132,7 @@ declare double @pow(double, double)
|
||||
|
||||
; Shouldn't fold because of -fno-builtin
|
||||
define double @fmod_() nounwind uwtable ssp {
|
||||
; FNOBUILTIN: @fmod_
|
||||
; FNOBUILTIN-LABEL: @fmod_(
|
||||
; FNOBUILTIN: %1 = call double @fmod(double 3.000000e+00, double 3.000000e+00)
|
||||
%1 = call double @fmod(double 3.000000e+00, double 3.000000e+00)
|
||||
ret double %1
|
||||
@ -141,7 +141,7 @@ declare double @fmod(double, double)
|
||||
|
||||
; Shouldn't fold because of -fno-builtin
|
||||
define double @atan2_() nounwind uwtable ssp {
|
||||
; FNOBUILTIN: @atan2_
|
||||
; FNOBUILTIN-LABEL: @atan2_(
|
||||
; FNOBUILTIN: %1 = call double @atan2(double 3.000000e+00, double 3.000000e+00)
|
||||
%1 = call double @atan2(double 3.000000e+00, double 3.000000e+00)
|
||||
ret double %1
|
||||
|
@ -5,21 +5,21 @@
|
||||
define i32 @test1() {
|
||||
%A = extractvalue %struct { i32 2, [4 x i8] c"foo\00" }, 0
|
||||
ret i32 %A
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: ret i32 2
|
||||
}
|
||||
|
||||
define i8 @test2() {
|
||||
%A = extractvalue %struct { i32 2, [4 x i8] c"foo\00" }, 1, 2
|
||||
ret i8 %A
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK: ret i8 111
|
||||
}
|
||||
|
||||
define i32 @test3() {
|
||||
%A = extractvalue [3 x %struct] [ %struct { i32 0, [4 x i8] c"aaaa" }, %struct { i32 1, [4 x i8] c"bbbb" }, %struct { i32 2, [4 x i8] c"cccc" } ], 1, 0
|
||||
ret i32 %A
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
; CHECK: ret i32 1
|
||||
}
|
||||
|
||||
|
@ -5,21 +5,21 @@
|
||||
define %struct @test1() {
|
||||
%A = insertvalue %struct { i32 2, [4 x i8] c"foo\00" }, i32 1, 0
|
||||
ret %struct %A
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: ret %struct { i32 1, [4 x i8] c"foo\00" }
|
||||
}
|
||||
|
||||
define %struct @test2() {
|
||||
%A = insertvalue %struct { i32 2, [4 x i8] c"foo\00" }, i8 1, 1, 2
|
||||
ret %struct %A
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK: ret %struct { i32 2, [4 x i8] c"fo\01\00" }
|
||||
}
|
||||
|
||||
define [3 x %struct] @test3() {
|
||||
%A = insertvalue [3 x %struct] [ %struct { i32 0, [4 x i8] c"aaaa" }, %struct { i32 1, [4 x i8] c"bbbb" }, %struct { i32 2, [4 x i8] c"cccc" } ], i32 -1, 1, 0
|
||||
ret [3 x %struct] %A
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
; CHECK:ret [3 x %struct] [%struct { i32 0, [4 x i8] c"aaaa" }, %struct { i32 -1, [4 x i8] c"bbbb" }, %struct { i32 2, [4 x i8] c"cccc" }]
|
||||
}
|
||||
|
||||
|
@ -13,11 +13,11 @@ define i32 @test1() {
|
||||
ret i32 %r
|
||||
|
||||
; 0xDEADBEEF
|
||||
; LE: @test1
|
||||
; LE-LABEL: @test1(
|
||||
; LE: ret i32 -559038737
|
||||
|
||||
; 0xDEADBEEF
|
||||
; BE: @test1
|
||||
; BE-LABEL: @test1(
|
||||
; BE: ret i32 -559038737
|
||||
}
|
||||
|
||||
@ -28,11 +28,11 @@ define i16 @test2() {
|
||||
ret i16 %r
|
||||
|
||||
; 0xBEEF
|
||||
; LE: @test2
|
||||
; LE-LABEL: @test2(
|
||||
; LE: ret i16 -16657
|
||||
|
||||
; 0xDEAD
|
||||
; BE: @test2
|
||||
; BE-LABEL: @test2(
|
||||
; BE: ret i16 -8531
|
||||
}
|
||||
|
||||
@ -42,11 +42,11 @@ define i16 @test3() {
|
||||
ret i16 %r
|
||||
|
||||
; 0xDEAD
|
||||
; LE: @test3
|
||||
; LE-LABEL: @test3(
|
||||
; LE: ret i16 -8531
|
||||
|
||||
; 0xBEEF
|
||||
; BE: @test3
|
||||
; BE-LABEL: @test3(
|
||||
; BE: ret i16 -16657
|
||||
}
|
||||
|
||||
@ -56,11 +56,11 @@ define i16 @test4() {
|
||||
ret i16 %r
|
||||
|
||||
; 0x00BA
|
||||
; LE: @test4
|
||||
; LE-LABEL: @test4(
|
||||
; LE: ret i16 186
|
||||
|
||||
; 0xBA00
|
||||
; BE: @test4
|
||||
; BE-LABEL: @test4(
|
||||
; BE: ret i16 -17920
|
||||
}
|
||||
|
||||
@ -70,11 +70,11 @@ define i64 @test6() {
|
||||
ret i64 %r
|
||||
|
||||
; 0x3FF_0000000000000
|
||||
; LE: @test6
|
||||
; LE-LABEL: @test6(
|
||||
; LE: ret i64 4607182418800017408
|
||||
|
||||
; 0x3FF_0000000000000
|
||||
; BE: @test6
|
||||
; BE-LABEL: @test6(
|
||||
; BE: ret i64 4607182418800017408
|
||||
}
|
||||
|
||||
@ -84,11 +84,11 @@ define i16 @test7() {
|
||||
ret i16 %r
|
||||
|
||||
; 0x0000
|
||||
; LE: @test7
|
||||
; LE-LABEL: @test7(
|
||||
; LE: ret i16 0
|
||||
|
||||
; 0x3FF0
|
||||
; BE: @test7
|
||||
; BE-LABEL: @test7(
|
||||
; BE: ret i16 16368
|
||||
}
|
||||
|
||||
@ -97,10 +97,10 @@ define double @test8() {
|
||||
%r = load double* bitcast({{i32,i8},i32}* @g1 to double*)
|
||||
ret double %r
|
||||
|
||||
; LE: @test8
|
||||
; LE-LABEL: @test8(
|
||||
; LE: ret double 0xBADEADBEEF
|
||||
|
||||
; BE: @test8
|
||||
; BE-LABEL: @test8(
|
||||
; BE: ret double 0xDEADBEEFBA000000
|
||||
}
|
||||
|
||||
@ -111,11 +111,11 @@ define i128 @test9() {
|
||||
ret i128 %r
|
||||
|
||||
; 0x00000000_06B1BFF8_00000000_0000007B
|
||||
; LE: @test9
|
||||
; LE-LABEL: @test9(
|
||||
; LE: ret i128 2071796475790618158476296315
|
||||
|
||||
; 0x00000000_0000007B_00000000_06B1BFF8
|
||||
; BE: @test9
|
||||
; BE-LABEL: @test9(
|
||||
; BE: ret i128 2268949521066387161080
|
||||
}
|
||||
|
||||
@ -124,10 +124,10 @@ define <2 x i64> @test10() {
|
||||
%r = load <2 x i64>* bitcast({i64, i64}* @g3 to <2 x i64>*)
|
||||
ret <2 x i64> %r
|
||||
|
||||
; LE: @test10
|
||||
; LE-LABEL: @test10(
|
||||
; LE: ret <2 x i64> <i64 123, i64 112312312>
|
||||
|
||||
; BE: @test10
|
||||
; BE-LABEL: @test10(
|
||||
; BE: ret <2 x i64> <i64 123, i64 112312312>
|
||||
}
|
||||
|
||||
@ -142,11 +142,11 @@ entry:
|
||||
ret i16 %a
|
||||
|
||||
; 0x08A1
|
||||
; LE: @test11
|
||||
; LE-LABEL: @test11(
|
||||
; LE: ret i16 2209
|
||||
|
||||
; 0xA108
|
||||
; BE: @test11
|
||||
; BE-LABEL: @test11(
|
||||
; BE: ret i16 -24312
|
||||
}
|
||||
|
||||
@ -159,11 +159,11 @@ define i16 @test12() {
|
||||
ret i16 %a
|
||||
|
||||
; 0x0062
|
||||
; LE: @test12
|
||||
; LE-LABEL: @test12(
|
||||
; LE: ret i16 98
|
||||
|
||||
; 0x6200
|
||||
; BE: @test12
|
||||
; BE-LABEL: @test12(
|
||||
; BE: ret i16 25088
|
||||
}
|
||||
|
||||
@ -174,10 +174,10 @@ define i1 @test13() {
|
||||
%A = load i1* bitcast (i8* @g5 to i1*)
|
||||
ret i1 %A
|
||||
|
||||
; LE: @test13
|
||||
; LE-LABEL: @test13(
|
||||
; LE: ret i1 false
|
||||
|
||||
; BE: @test13
|
||||
; BE-LABEL: @test13(
|
||||
; BE: ret i1 false
|
||||
}
|
||||
|
||||
@ -187,10 +187,10 @@ entry:
|
||||
%tmp = load i64* bitcast ([2 x i8*]* @g6 to i64*)
|
||||
ret i64 %tmp
|
||||
|
||||
; LE: @test14
|
||||
; LE-LABEL: @test14(
|
||||
; LE: ret i64 1
|
||||
|
||||
; BE: @test14
|
||||
; BE-LABEL: @test14(
|
||||
; BE: ret i64 1
|
||||
}
|
||||
|
||||
@ -199,9 +199,9 @@ entry:
|
||||
%tmp = load i64* bitcast (i8** getelementptr inbounds ([2 x i8*]* @g6, i32 0, i64 1) to i64*)
|
||||
ret i64 %tmp
|
||||
|
||||
; LE: @test15
|
||||
; LE-LABEL: @test15(
|
||||
; LE: ret i64 2
|
||||
|
||||
; BE: @test15
|
||||
; BE-LABEL: @test15(
|
||||
; BE: ret i64 2
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ entry:
|
||||
%t = call {i8, i1} @llvm.uadd.with.overflow.i8(i8 42, i8 100)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @uadd_1
|
||||
; CHECK-LABEL: @uadd_1(
|
||||
; CHECK: ret { i8, i1 } { i8 -114, i1 false }
|
||||
}
|
||||
|
||||
@ -27,7 +27,7 @@ entry:
|
||||
%t = call {i8, i1} @llvm.uadd.with.overflow.i8(i8 142, i8 120)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @uadd_2
|
||||
; CHECK-LABEL: @uadd_2(
|
||||
; CHECK: ret { i8, i1 } { i8 6, i1 true }
|
||||
}
|
||||
|
||||
@ -40,7 +40,7 @@ entry:
|
||||
%t = call {i8, i1} @llvm.usub.with.overflow.i8(i8 4, i8 2)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @usub_1
|
||||
; CHECK-LABEL: @usub_1(
|
||||
; CHECK: ret { i8, i1 } { i8 2, i1 false }
|
||||
}
|
||||
|
||||
@ -49,7 +49,7 @@ entry:
|
||||
%t = call {i8, i1} @llvm.usub.with.overflow.i8(i8 4, i8 6)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @usub_2
|
||||
; CHECK-LABEL: @usub_2(
|
||||
; CHECK: ret { i8, i1 } { i8 -2, i1 true }
|
||||
}
|
||||
|
||||
@ -62,7 +62,7 @@ entry:
|
||||
%t = call {i8, i1} @llvm.umul.with.overflow.i8(i8 100, i8 3)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @umul_1
|
||||
; CHECK-LABEL: @umul_1(
|
||||
; CHECK: ret { i8, i1 } { i8 44, i1 true }
|
||||
}
|
||||
|
||||
@ -71,7 +71,7 @@ entry:
|
||||
%t = call {i8, i1} @llvm.umul.with.overflow.i8(i8 100, i8 2)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @umul_2
|
||||
; CHECK-LABEL: @umul_2(
|
||||
; CHECK: ret { i8, i1 } { i8 -56, i1 false }
|
||||
}
|
||||
|
||||
@ -84,7 +84,7 @@ entry:
|
||||
%t = call {i8, i1} @llvm.sadd.with.overflow.i8(i8 42, i8 2)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @sadd_1
|
||||
; CHECK-LABEL: @sadd_1(
|
||||
; CHECK: ret { i8, i1 } { i8 44, i1 false }
|
||||
}
|
||||
|
||||
@ -93,7 +93,7 @@ entry:
|
||||
%t = call {i8, i1} @llvm.sadd.with.overflow.i8(i8 120, i8 10)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @sadd_2
|
||||
; CHECK-LABEL: @sadd_2(
|
||||
; CHECK: ret { i8, i1 } { i8 -126, i1 true }
|
||||
}
|
||||
|
||||
@ -102,7 +102,7 @@ entry:
|
||||
%t = call {i8, i1} @llvm.sadd.with.overflow.i8(i8 -120, i8 10)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @sadd_3
|
||||
; CHECK-LABEL: @sadd_3(
|
||||
; CHECK: ret { i8, i1 } { i8 -110, i1 false }
|
||||
}
|
||||
|
||||
@ -111,7 +111,7 @@ entry:
|
||||
%t = call {i8, i1} @llvm.sadd.with.overflow.i8(i8 -120, i8 -10)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @sadd_4
|
||||
; CHECK-LABEL: @sadd_4(
|
||||
; CHECK: ret { i8, i1 } { i8 126, i1 true }
|
||||
}
|
||||
|
||||
@ -120,7 +120,7 @@ entry:
|
||||
%t = call {i8, i1} @llvm.sadd.with.overflow.i8(i8 2, i8 -10)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @sadd_5
|
||||
; CHECK-LABEL: @sadd_5(
|
||||
; CHECK: ret { i8, i1 } { i8 -8, i1 false }
|
||||
}
|
||||
|
||||
@ -134,7 +134,7 @@ entry:
|
||||
%t = call {i8, i1} @llvm.ssub.with.overflow.i8(i8 4, i8 2)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @ssub_1
|
||||
; CHECK-LABEL: @ssub_1(
|
||||
; CHECK: ret { i8, i1 } { i8 2, i1 false }
|
||||
}
|
||||
|
||||
@ -143,7 +143,7 @@ entry:
|
||||
%t = call {i8, i1} @llvm.ssub.with.overflow.i8(i8 4, i8 6)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @ssub_2
|
||||
; CHECK-LABEL: @ssub_2(
|
||||
; CHECK: ret { i8, i1 } { i8 -2, i1 false }
|
||||
}
|
||||
|
||||
@ -152,7 +152,7 @@ entry:
|
||||
%t = call {i8, i1} @llvm.ssub.with.overflow.i8(i8 -10, i8 120)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @ssub_3
|
||||
; CHECK-LABEL: @ssub_3(
|
||||
; CHECK: ret { i8, i1 } { i8 126, i1 true }
|
||||
}
|
||||
|
||||
@ -161,7 +161,7 @@ entry:
|
||||
%t = call {i8, i1} @llvm.ssub.with.overflow.i8(i8 -10, i8 10)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @ssub_3b
|
||||
; CHECK-LABEL: @ssub_3b(
|
||||
; CHECK: ret { i8, i1 } { i8 -20, i1 false }
|
||||
}
|
||||
|
||||
@ -170,7 +170,7 @@ entry:
|
||||
%t = call {i8, i1} @llvm.ssub.with.overflow.i8(i8 120, i8 -10)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @ssub_4
|
||||
; CHECK-LABEL: @ssub_4(
|
||||
; CHECK: ret { i8, i1 } { i8 -126, i1 true }
|
||||
}
|
||||
|
||||
@ -179,7 +179,7 @@ entry:
|
||||
%t = call {i8, i1} @llvm.ssub.with.overflow.i8(i8 20, i8 -10)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @ssub_4b
|
||||
; CHECK-LABEL: @ssub_4b(
|
||||
; CHECK: ret { i8, i1 } { i8 30, i1 false }
|
||||
}
|
||||
|
||||
@ -188,7 +188,7 @@ entry:
|
||||
%t = call {i8, i1} @llvm.ssub.with.overflow.i8(i8 -20, i8 -10)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @ssub_5
|
||||
; CHECK-LABEL: @ssub_5(
|
||||
; CHECK: ret { i8, i1 } { i8 -10, i1 false }
|
||||
}
|
||||
|
||||
@ -202,6 +202,6 @@ entry:
|
||||
%t = call {i8, i1} @llvm.smul.with.overflow.i8(i8 -20, i8 -10)
|
||||
ret {i8, i1} %t
|
||||
|
||||
; CHECK: @smul_1
|
||||
; CHECK-LABEL: @smul_1(
|
||||
; CHECK: ret { i8, i1 } { i8 -56, i1 true }
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: opt -S < %s -correlated-propagation | FileCheck %s
|
||||
|
||||
; CHECK: @test
|
||||
; CHECK-LABEL: @test(
|
||||
define i16 @test(i32 %a, i1 %b) {
|
||||
entry:
|
||||
%c = icmp eq i32 %a, 0
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: opt < %s -correlated-propagation -S | FileCheck %s
|
||||
; PR2581
|
||||
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
define i32 @test1(i1 %C) nounwind {
|
||||
br i1 %C, label %exit, label %body
|
||||
|
||||
@ -18,7 +18,7 @@ exit: ; preds = %0
|
||||
|
||||
; PR4420
|
||||
declare i1 @ext()
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
define i1 @test2() {
|
||||
entry:
|
||||
%cond = tail call i1 @ext() ; <i1> [#uses=2]
|
||||
@ -42,7 +42,7 @@ bb3: ; preds = %bb1
|
||||
|
||||
; PR4855
|
||||
@gv = internal constant i8 7
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
define i8 @test3(i8* %a) nounwind {
|
||||
entry:
|
||||
%cond = icmp eq i8* %a, @gv
|
||||
@ -58,7 +58,7 @@ bb2: ; preds = %entry
|
||||
}
|
||||
|
||||
; PR1757
|
||||
; CHECK: @test4
|
||||
; CHECK-LABEL: @test4(
|
||||
define i32 @test4(i32) {
|
||||
EntryBlock:
|
||||
; CHECK: icmp sgt i32 %0, 2
|
||||
@ -83,7 +83,7 @@ LessThanOrEqualToTwo:
|
||||
|
||||
declare i32* @f(i32*)
|
||||
define void @test5(i32* %x, i32* %y) {
|
||||
; CHECK: @test5
|
||||
; CHECK-LABEL: @test5(
|
||||
entry:
|
||||
%pre = icmp eq i32* %x, null
|
||||
br i1 %pre, label %return, label %loop
|
||||
@ -102,7 +102,7 @@ return:
|
||||
}
|
||||
|
||||
define i32 @switch1(i32 %s) {
|
||||
; CHECK: @switch1
|
||||
; CHECK-LABEL: @switch1(
|
||||
entry:
|
||||
%cmp = icmp slt i32 %s, 0
|
||||
br i1 %cmp, label %negative, label %out
|
||||
@ -134,7 +134,7 @@ next:
|
||||
}
|
||||
|
||||
define i32 @switch2(i32 %s) {
|
||||
; CHECK: @switch2
|
||||
; CHECK-LABEL: @switch2(
|
||||
entry:
|
||||
%cmp = icmp sgt i32 %s, 0
|
||||
br i1 %cmp, label %positive, label %out
|
||||
@ -157,7 +157,7 @@ next:
|
||||
}
|
||||
|
||||
define i32 @switch3(i32 %s) {
|
||||
; CHECK: @switch3
|
||||
; CHECK-LABEL: @switch3(
|
||||
entry:
|
||||
%cmp = icmp sgt i32 %s, 0
|
||||
br i1 %cmp, label %positive, label %out
|
||||
@ -180,7 +180,7 @@ next:
|
||||
}
|
||||
|
||||
define void @switch4(i32 %s) {
|
||||
; CHECK: @switch4
|
||||
; CHECK-LABEL: @switch4(
|
||||
entry:
|
||||
%cmp = icmp eq i32 %s, 0
|
||||
br i1 %cmp, label %zero, label %out
|
||||
|
@ -17,7 +17,7 @@ else:
|
||||
end:
|
||||
ret i32 2
|
||||
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: then:
|
||||
; CHECK-NEXT: br i1 false, label %end, label %else
|
||||
}
|
||||
@ -37,12 +37,12 @@ else:
|
||||
end:
|
||||
ret i32 2
|
||||
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK: then:
|
||||
; CHECK-NEXT: br i1 false, label %end, label %else
|
||||
}
|
||||
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
define i32 @test3(i32 %c) nounwind {
|
||||
%cmp = icmp slt i32 %c, 2
|
||||
br i1 %cmp, label %if.then, label %if.end
|
||||
@ -71,7 +71,7 @@ if.end8:
|
||||
ret i32 4
|
||||
}
|
||||
|
||||
; CHECK: @test4
|
||||
; CHECK-LABEL: @test4(
|
||||
define i32 @test4(i32 %c) nounwind {
|
||||
switch i32 %c, label %sw.default [
|
||||
i32 1, label %sw.bb
|
||||
@ -99,7 +99,7 @@ return:
|
||||
ret i32 %retval.0
|
||||
}
|
||||
|
||||
; CHECK: @test5
|
||||
; CHECK-LABEL: @test5(
|
||||
define i1 @test5(i32 %c) nounwind {
|
||||
%cmp = icmp slt i32 %c, 5
|
||||
br i1 %cmp, label %if.then, label %if.end
|
||||
@ -121,7 +121,7 @@ if.end8:
|
||||
ret i1 %cmp2
|
||||
}
|
||||
|
||||
; CHECK: @test6
|
||||
; CHECK-LABEL: @test6(
|
||||
define i1 @test6(i32 %c) nounwind {
|
||||
%cmp = icmp ule i32 %c, 7
|
||||
br i1 %cmp, label %if.then, label %if.end
|
||||
@ -143,7 +143,7 @@ sw.bb:
|
||||
ret i1 %cmp2
|
||||
}
|
||||
|
||||
; CHECK: @test7
|
||||
; CHECK-LABEL: @test7(
|
||||
define i1 @test7(i32 %c) nounwind {
|
||||
entry:
|
||||
switch i32 %c, label %sw.default [
|
||||
|
@ -7,7 +7,7 @@ define void @test(i32) {
|
||||
define void @foo() {
|
||||
call void @test(i32 0)
|
||||
ret void
|
||||
; CHECK: @foo
|
||||
; CHECK-LABEL: @foo(
|
||||
; CHECK: i32 undef
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@ target triple = "x86_64-apple-darwin"
|
||||
|
||||
%"class.std::auto_ptr" = type { i32* }
|
||||
|
||||
; CHECK: @_Z3foov
|
||||
; CHECK-LABEL: @_Z3foov(
|
||||
define void @_Z3foov(%"class.std::auto_ptr"* noalias nocapture sret %agg.result) uwtable ssp {
|
||||
_ZNSt8auto_ptrIiED1Ev.exit:
|
||||
%temp.lvalue = alloca %"class.std::auto_ptr", align 8
|
||||
|
@ -8,7 +8,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
|
||||
@glob2 = global %struct.vec2plusi zeroinitializer, align 16
|
||||
|
||||
define void @write24to28(i32* nocapture %p) nounwind uwtable ssp {
|
||||
; CHECK: @write24to28
|
||||
; CHECK-LABEL: @write24to28(
|
||||
entry:
|
||||
%arrayidx0 = getelementptr inbounds i32* %p, i64 1
|
||||
%p3 = bitcast i32* %arrayidx0 to i8*
|
||||
@ -20,7 +20,7 @@ entry:
|
||||
}
|
||||
|
||||
define void @write28to32(i32* nocapture %p) nounwind uwtable ssp {
|
||||
; CHECK: @write28to32
|
||||
; CHECK-LABEL: @write28to32(
|
||||
entry:
|
||||
%p3 = bitcast i32* %p to i8*
|
||||
; CHECK: call void @llvm.memset.p0i8.i64(i8* %p3, i8 0, i64 28, i32 4, i1 false)
|
||||
@ -31,7 +31,7 @@ entry:
|
||||
}
|
||||
|
||||
define void @dontwrite28to32memset(i32* nocapture %p) nounwind uwtable ssp {
|
||||
; CHECK: @dontwrite28to32memset
|
||||
; CHECK-LABEL: @dontwrite28to32memset(
|
||||
entry:
|
||||
%p3 = bitcast i32* %p to i8*
|
||||
; CHECK: call void @llvm.memset.p0i8.i64(i8* %p3, i8 0, i64 32, i32 16, i1 false)
|
||||
@ -42,7 +42,7 @@ entry:
|
||||
}
|
||||
|
||||
define void @write32to36(%struct.vec2plusi* nocapture %p) nounwind uwtable ssp {
|
||||
; CHECK: @write32to36
|
||||
; CHECK-LABEL: @write32to36(
|
||||
entry:
|
||||
%0 = bitcast %struct.vec2plusi* %p to i8*
|
||||
; CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* bitcast (%struct.vec2plusi* @glob2 to i8*), i64 32, i32 16, i1 false)
|
||||
@ -53,7 +53,7 @@ entry:
|
||||
}
|
||||
|
||||
define void @write16to32(%struct.vec2* nocapture %p) nounwind uwtable ssp {
|
||||
; CHECK: @write16to32
|
||||
; CHECK-LABEL: @write16to32(
|
||||
entry:
|
||||
%0 = bitcast %struct.vec2* %p to i8*
|
||||
; CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* bitcast (%struct.vec2* @glob1 to i8*), i64 16, i32 16, i1 false)
|
||||
@ -64,7 +64,7 @@ entry:
|
||||
}
|
||||
|
||||
define void @dontwrite28to32memcpy(%struct.vec2* nocapture %p) nounwind uwtable ssp {
|
||||
; CHECK: @dontwrite28to32memcpy
|
||||
; CHECK-LABEL: @dontwrite28to32memcpy(
|
||||
entry:
|
||||
%0 = bitcast %struct.vec2* %p to i8*
|
||||
; CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* bitcast (%struct.vec2* @glob1 to i8*), i64 32, i32 16, i1 false)
|
||||
@ -80,7 +80,7 @@ declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
|
||||
%struct.trapframe = type { i64, i64, i64 }
|
||||
|
||||
; bugzilla 11455 - make sure negative GEP's don't break this optimisation
|
||||
; CHECK: @cpu_lwp_fork
|
||||
; CHECK-LABEL: @cpu_lwp_fork(
|
||||
define void @cpu_lwp_fork(%struct.trapframe* %md_regs, i64 %pcb_rsp0) nounwind uwtable noinline ssp {
|
||||
entry:
|
||||
%0 = inttoptr i64 %pcb_rsp0 to %struct.trapframe*
|
||||
|
@ -8,13 +8,13 @@ define void @test1(i32 *%V) {
|
||||
store i8 0, i8* %V2
|
||||
store i32 1234567, i32* %V
|
||||
ret void
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK-NEXT: store i32 1234567
|
||||
}
|
||||
|
||||
; Note that we could do better by merging the two stores into one.
|
||||
define void @test2(i32* %P) {
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
store i32 0, i32* %P
|
||||
; CHECK: store i32
|
||||
%Q = bitcast i32* %P to i16*
|
||||
@ -25,7 +25,7 @@ define void @test2(i32* %P) {
|
||||
|
||||
|
||||
define i32 @test3(double %__x) {
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
; CHECK: store double
|
||||
%__u = alloca { [3 x i32] }
|
||||
%tmp.1 = bitcast { [3 x i32] }* %__u to double*
|
||||
@ -39,7 +39,7 @@ define i32 @test3(double %__x) {
|
||||
|
||||
; PR6043
|
||||
define void @test4(i8* %P) {
|
||||
; CHECK: @test4
|
||||
; CHECK-LABEL: @test4(
|
||||
; CHECK-NEXT: bitcast
|
||||
; CHECK-NEXT: store double
|
||||
|
||||
@ -64,7 +64,7 @@ define void @test5(i32 %i) nounwind ssp {
|
||||
|
||||
call void @test5a(i32* %A)
|
||||
ret void
|
||||
; CHECK: @test5(
|
||||
; CHECK-LABEL: @test5(
|
||||
; CHECK-NEXT: alloca
|
||||
; CHECK-NEXT: store i32 20
|
||||
; CHECK-NEXT: call void @test5a
|
||||
|
@ -5,7 +5,7 @@ target datalayout = "e-p:64:64:64"
|
||||
declare void @free(i8* nocapture)
|
||||
declare noalias i8* @malloc(i64)
|
||||
|
||||
; CHECK: @test
|
||||
; CHECK-LABEL: @test(
|
||||
; CHECK-NEXT: bitcast
|
||||
; CHECK-NEXT: @free
|
||||
; CHECK-NEXT: ret void
|
||||
@ -17,7 +17,7 @@ define void @test(i32* %Q, i32* %P) {
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK-NEXT: bitcast
|
||||
; CHECK-NEXT: @free
|
||||
; CHECK-NEXT: ret void
|
||||
@ -29,7 +29,7 @@ define void @test2({i32, i32}* %P) {
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
; CHECK-NOT: store
|
||||
; CHECK: ret void
|
||||
define void @test3() {
|
||||
@ -42,7 +42,7 @@ define void @test3() {
|
||||
}
|
||||
|
||||
; PR11240
|
||||
; CHECK: @test4
|
||||
; CHECK-LABEL: @test4(
|
||||
; CHECK-NOT: store
|
||||
; CHECK: ret void
|
||||
define void @test4(i1 %x) nounwind {
|
||||
@ -59,7 +59,7 @@ skipinit1:
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: @test5
|
||||
; CHECK-LABEL: @test5(
|
||||
define void @test5() {
|
||||
br label %bb
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
declare i8* @strcpy(i8* %dest, i8* %src) nounwind
|
||||
define void @test1(i8* %src) {
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
%B = alloca [16 x i8]
|
||||
%dest = getelementptr inbounds [16 x i8]* %B, i64 0, i64 0
|
||||
; CHECK-NOT: @strcpy
|
||||
@ -13,7 +13,7 @@ define void @test1(i8* %src) {
|
||||
|
||||
declare i8* @strncpy(i8* %dest, i8* %src, i32 %n) nounwind
|
||||
define void @test2(i8* %src) {
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
%B = alloca [16 x i8]
|
||||
%dest = getelementptr inbounds [16 x i8]* %B, i64 0, i64 0
|
||||
; CHECK-NOT: @strncpy
|
||||
@ -24,7 +24,7 @@ define void @test2(i8* %src) {
|
||||
|
||||
declare i8* @strcat(i8* %dest, i8* %src) nounwind
|
||||
define void @test3(i8* %src) {
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
%B = alloca [16 x i8]
|
||||
%dest = getelementptr inbounds [16 x i8]* %B, i64 0, i64 0
|
||||
; CHECK-NOT: @strcat
|
||||
@ -35,7 +35,7 @@ define void @test3(i8* %src) {
|
||||
|
||||
declare i8* @strncat(i8* %dest, i8* %src, i32 %n) nounwind
|
||||
define void @test4(i8* %src) {
|
||||
; CHECK: @test4
|
||||
; CHECK-LABEL: @test4(
|
||||
%B = alloca [16 x i8]
|
||||
%dest = getelementptr inbounds [16 x i8]* %B, i64 0, i64 0
|
||||
; CHECK-NOT: @strncat
|
||||
@ -45,7 +45,7 @@ define void @test4(i8* %src) {
|
||||
}
|
||||
|
||||
define void @test5(i8* nocapture %src) {
|
||||
; CHECK: @test5
|
||||
; CHECK-LABEL: @test5(
|
||||
%dest = alloca [100 x i8], align 16
|
||||
%arraydecay = getelementptr inbounds [100 x i8]* %dest, i64 0, i64 0
|
||||
%call = call i8* @strcpy(i8* %arraydecay, i8* %src)
|
||||
@ -57,7 +57,7 @@ define void @test5(i8* nocapture %src) {
|
||||
|
||||
declare void @user(i8* %p)
|
||||
define void @test6(i8* %src) {
|
||||
; CHECK: @test6
|
||||
; CHECK-LABEL: @test6(
|
||||
%B = alloca [16 x i8]
|
||||
%dest = getelementptr inbounds [16 x i8]* %B, i64 0, i64 0
|
||||
; CHECK: @strcpy
|
||||
|
@ -7,7 +7,7 @@ declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
|
||||
declare void @llvm.memset.p0i8.i8(i8* nocapture, i8, i8, i32, i1) nounwind
|
||||
|
||||
define void @test1() {
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
%A = alloca i8
|
||||
|
||||
store i8 0, i8* %A ;; Written to by memset
|
||||
|
@ -5,7 +5,7 @@ declare void @llvm.memmove.p0i8.p0i8.i8(i8* nocapture, i8* nocapture, i8, i32, i
|
||||
declare void @llvm.memset.p0i8.i8(i8* nocapture, i8, i8, i32, i1) nounwind
|
||||
|
||||
define void @test1() {
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
%A = alloca i8
|
||||
%B = alloca i8
|
||||
|
||||
@ -19,7 +19,7 @@ define void @test1() {
|
||||
}
|
||||
|
||||
define void @test2() {
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
%A = alloca i8
|
||||
%B = alloca i8
|
||||
|
||||
@ -33,7 +33,7 @@ define void @test2() {
|
||||
}
|
||||
|
||||
define void @test3() {
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
%A = alloca i8
|
||||
%B = alloca i8
|
||||
|
||||
|
@ -10,7 +10,7 @@ define void @test1(i32* %Q, i32* %P) {
|
||||
store i32 %DEAD, i32* %P
|
||||
store i32 0, i32* %P
|
||||
ret void
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK-NEXT: store i32 0, i32* %P
|
||||
; CHECK-NEXT: ret void
|
||||
}
|
||||
@ -21,7 +21,7 @@ define void @test2(i32 *%p, i32 *%q) {
|
||||
store i32 20, i32* %q, align 4
|
||||
store i32 30, i32* %p, align 4
|
||||
ret void
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK-NEXT: store i32 20
|
||||
}
|
||||
|
||||
@ -30,7 +30,7 @@ define void @test2(i32 *%p, i32 *%q) {
|
||||
@g = global i32 1
|
||||
|
||||
define i32 @test3(i32* %g_addr) nounwind {
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
; CHECK: load i32* %g_addr
|
||||
%g_value = load i32* %g_addr, align 4
|
||||
store i32 -1, i32* @g, align 4
|
||||
@ -44,7 +44,7 @@ define void @test4(i32* %Q) {
|
||||
%a = load i32* %Q
|
||||
store volatile i32 %a, i32* %Q
|
||||
ret void
|
||||
; CHECK: @test4
|
||||
; CHECK-LABEL: @test4(
|
||||
; CHECK-NEXT: load i32
|
||||
; CHECK-NEXT: store volatile
|
||||
; CHECK-NEXT: ret void
|
||||
@ -54,7 +54,7 @@ define void @test5(i32* %Q) {
|
||||
%a = load volatile i32* %Q
|
||||
store i32 %a, i32* %Q
|
||||
ret void
|
||||
; CHECK: @test5
|
||||
; CHECK-LABEL: @test5(
|
||||
; CHECK-NEXT: load volatile
|
||||
; CHECK-NEXT: ret void
|
||||
}
|
||||
@ -66,7 +66,7 @@ define void @test6(i32 *%p, i8 *%q) {
|
||||
call void @llvm.memset.p0i8.i64(i8* %q, i8 42, i64 900, i32 1, i1 false)
|
||||
store i32 30, i32* %p, align 4
|
||||
ret void
|
||||
; CHECK: @test6
|
||||
; CHECK-LABEL: @test6(
|
||||
; CHECK-NEXT: call void @llvm.memset
|
||||
}
|
||||
|
||||
@ -77,7 +77,7 @@ define void @test7(i32 *%p, i8 *%q, i8* noalias %r) {
|
||||
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %q, i8* %r, i64 900, i32 1, i1 false)
|
||||
store i32 30, i32* %p, align 4
|
||||
ret void
|
||||
; CHECK: @test7
|
||||
; CHECK-LABEL: @test7(
|
||||
; CHECK-NEXT: call void @llvm.memcpy
|
||||
}
|
||||
|
||||
@ -90,7 +90,7 @@ define i32 @test8() {
|
||||
%X = load i32* %V
|
||||
ret i32 %X
|
||||
|
||||
; CHECK: @test8
|
||||
; CHECK-LABEL: @test8(
|
||||
; CHECK: store i32 1234567
|
||||
}
|
||||
|
||||
@ -101,7 +101,7 @@ define void @test9(%struct.x* byval %a) nounwind {
|
||||
%tmp2 = getelementptr %struct.x* %a, i32 0, i32 0
|
||||
store i32 1, i32* %tmp2, align 4
|
||||
ret void
|
||||
; CHECK: @test9
|
||||
; CHECK-LABEL: @test9(
|
||||
; CHECK-NEXT: ret void
|
||||
}
|
||||
|
||||
@ -111,7 +111,7 @@ define double @test10(i8* %X) {
|
||||
store i8* %X, i8** %X_addr
|
||||
%tmp.0 = va_arg i8** %X_addr, double
|
||||
ret double %tmp.0
|
||||
; CHECK: @test10
|
||||
; CHECK-LABEL: @test10(
|
||||
; CHECK: store
|
||||
}
|
||||
|
||||
@ -119,7 +119,7 @@ define double @test10(i8* %X) {
|
||||
; DSE should delete the dead trampoline.
|
||||
declare void @test11f()
|
||||
define void @test11() {
|
||||
; CHECK: @test11
|
||||
; CHECK-LABEL: @test11(
|
||||
%storage = alloca [10 x i8], align 16 ; <[10 x i8]*> [#uses=1]
|
||||
; CHECK-NOT: alloca
|
||||
%cast = getelementptr [10 x i8]* %storage, i32 0, i32 0 ; <i8*> [#uses=1]
|
||||
@ -140,7 +140,7 @@ define void @test12({ i32, i32 }* %x) nounwind {
|
||||
store i32 %tmp5, i32* %tmp4, align 4
|
||||
store i32 %tmp17, i32* %tmp7, align 4
|
||||
ret void
|
||||
; CHECK: @test12
|
||||
; CHECK-LABEL: @test12(
|
||||
; CHECK-NOT: tmp5
|
||||
; CHECK: ret void
|
||||
}
|
||||
@ -173,7 +173,7 @@ define void @test14(i32* %Q) {
|
||||
store i32 %DEAD, i32* %P
|
||||
ret void
|
||||
|
||||
; CHECK: @test14
|
||||
; CHECK-LABEL: @test14(
|
||||
; CHECK-NEXT: ret void
|
||||
}
|
||||
|
||||
@ -185,7 +185,7 @@ define void @test15(i8* %P, i8* %Q) nounwind ssp {
|
||||
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %P, i8* %Q, i64 12, i32 1, i1 false)
|
||||
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %P, i8* %Q, i64 12, i32 1, i1 false)
|
||||
ret void
|
||||
; CHECK: @test15
|
||||
; CHECK-LABEL: @test15(
|
||||
; CHECK-NEXT: call void @llvm.memcpy
|
||||
; CHECK-NEXT: ret
|
||||
}
|
||||
@ -195,7 +195,7 @@ define void @test16(i8* %P, i8* %Q) nounwind ssp {
|
||||
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %P, i8* %Q, i64 8, i32 1, i1 false)
|
||||
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %P, i8* %Q, i64 12, i32 1, i1 false)
|
||||
ret void
|
||||
; CHECK: @test16
|
||||
; CHECK-LABEL: @test16(
|
||||
; CHECK-NEXT: call void @llvm.memcpy
|
||||
; CHECK-NEXT: ret
|
||||
}
|
||||
@ -205,7 +205,7 @@ define void @test17(i8* %P, i8* noalias %Q) nounwind ssp {
|
||||
tail call void @llvm.memset.p0i8.i64(i8* %P, i8 42, i64 8, i32 1, i1 false)
|
||||
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %P, i8* %Q, i64 12, i32 1, i1 false)
|
||||
ret void
|
||||
; CHECK: @test17
|
||||
; CHECK-LABEL: @test17(
|
||||
; CHECK-NEXT: call void @llvm.memcpy
|
||||
; CHECK-NEXT: ret
|
||||
}
|
||||
@ -215,7 +215,7 @@ define void @test17v(i8* %P, i8* %Q) nounwind ssp {
|
||||
tail call void @llvm.memset.p0i8.i64(i8* %P, i8 42, i64 8, i32 1, i1 true)
|
||||
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %P, i8* %Q, i64 12, i32 1, i1 false)
|
||||
ret void
|
||||
; CHECK: @test17v
|
||||
; CHECK-LABEL: @test17v(
|
||||
; CHECK-NEXT: call void @llvm.memset
|
||||
; CHECK-NEXT: call void @llvm.memcpy
|
||||
; CHECK-NEXT: ret
|
||||
@ -229,7 +229,7 @@ define void @test18(i8* %P, i8* %Q, i8* %R) nounwind ssp {
|
||||
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %P, i8* %Q, i64 12, i32 1, i1 false)
|
||||
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %P, i8* %R, i64 12, i32 1, i1 false)
|
||||
ret void
|
||||
; CHECK: @test18
|
||||
; CHECK-LABEL: @test18(
|
||||
; CHECK-NEXT: call void @llvm.memcpy
|
||||
; CHECK-NEXT: call void @llvm.memcpy
|
||||
; CHECK-NEXT: ret
|
||||
@ -246,7 +246,7 @@ bb:
|
||||
call void @test19f({i32}* byval align 4 %arg5)
|
||||
ret void
|
||||
|
||||
; CHECK: @test19(
|
||||
; CHECK-LABEL: @test19(
|
||||
; CHECK: store i32 912
|
||||
; CHECK: call void @test19f
|
||||
}
|
||||
@ -256,10 +256,10 @@ define void @test20() {
|
||||
store i8 0, i8* %m
|
||||
ret void
|
||||
}
|
||||
; CHECK: @test20
|
||||
; CHECK-LABEL: @test20(
|
||||
; CHECK-NEXT: ret void
|
||||
|
||||
; CHECK: @test21
|
||||
; CHECK-LABEL: @test21(
|
||||
define void @test21() {
|
||||
%m = call i8* @calloc(i32 9, i32 7)
|
||||
store i8 0, i8* %m
|
||||
@ -267,7 +267,7 @@ define void @test21() {
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: @test22(
|
||||
; CHECK-LABEL: @test22(
|
||||
define void @test22(i1 %i, i32 %k, i32 %m) nounwind {
|
||||
%k.addr = alloca i32
|
||||
%m.addr = alloca i32
|
||||
@ -278,7 +278,7 @@ define void @test22(i1 %i, i32 %k, i32 %m) nounwind {
|
||||
}
|
||||
|
||||
; PR13547
|
||||
; CHECK: @test23
|
||||
; CHECK-LABEL: @test23(
|
||||
; CHECK: store i8 97
|
||||
; CHECK: store i8 0
|
||||
declare noalias i8* @strdup(i8* nocapture) nounwind
|
||||
@ -293,7 +293,7 @@ define noalias i8* @test23() nounwind uwtable ssp {
|
||||
}
|
||||
|
||||
; Make sure same sized store to later element is deleted
|
||||
; CHECK: @test24
|
||||
; CHECK-LABEL: @test24(
|
||||
; CHECK-NOT: store i32 0
|
||||
; CHECK-NOT: store i32 0
|
||||
; CHECK: store i32 %b
|
||||
@ -312,7 +312,7 @@ define void @test24([2 x i32]* %a, i32 %b, i32 %c) nounwind {
|
||||
}
|
||||
|
||||
; Check another case like PR13547 where strdup is not like malloc.
|
||||
; CHECK: @test25
|
||||
; CHECK-LABEL: @test25(
|
||||
; CHECK: load i8
|
||||
; CHECK: store i8 0
|
||||
; CHECK: store i8 %tmp
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: opt < %s -S -early-cse | FileCheck %s
|
||||
|
||||
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
define void @test1(i8 %V, i32 *%P) {
|
||||
%A = bitcast i64 42 to double ;; dead
|
||||
%B = add i32 4, 19 ;; constant folds
|
||||
@ -33,7 +33,7 @@ define void @test1(i8 %V, i32 *%P) {
|
||||
|
||||
|
||||
;; Simple load value numbering.
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
define i32 @test2(i32 *%P) {
|
||||
%V1 = load i32* %P
|
||||
%V2 = load i32* %P
|
||||
@ -43,7 +43,7 @@ define i32 @test2(i32 *%P) {
|
||||
}
|
||||
|
||||
;; Cross block load value numbering.
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
define i32 @test3(i32 *%P, i1 %Cond) {
|
||||
%V1 = load i32* %P
|
||||
br i1 %Cond, label %T, label %F
|
||||
@ -59,7 +59,7 @@ F:
|
||||
}
|
||||
|
||||
;; Cross block load value numbering stops when stores happen.
|
||||
; CHECK: @test4
|
||||
; CHECK-LABEL: @test4(
|
||||
define i32 @test4(i32 *%P, i1 %Cond) {
|
||||
%V1 = load i32* %P
|
||||
br i1 %Cond, label %T, label %F
|
||||
@ -79,7 +79,7 @@ F:
|
||||
declare i32 @func(i32 *%P) readonly
|
||||
|
||||
;; Simple call CSE'ing.
|
||||
; CHECK: @test5
|
||||
; CHECK-LABEL: @test5(
|
||||
define i32 @test5(i32 *%P) {
|
||||
%V1 = call i32 @func(i32* %P)
|
||||
%V2 = call i32 @func(i32* %P)
|
||||
@ -89,7 +89,7 @@ define i32 @test5(i32 *%P) {
|
||||
}
|
||||
|
||||
;; Trivial Store->load forwarding
|
||||
; CHECK: @test6
|
||||
; CHECK-LABEL: @test6(
|
||||
define i32 @test6(i32 *%P) {
|
||||
store i32 42, i32* %P
|
||||
%V1 = load i32* %P
|
||||
@ -98,7 +98,7 @@ define i32 @test6(i32 *%P) {
|
||||
}
|
||||
|
||||
;; Trivial dead store elimination.
|
||||
; CHECK: @test7
|
||||
; CHECK-LABEL: @test7(
|
||||
define void @test7(i32 *%P) {
|
||||
store i32 42, i32* %P
|
||||
store i32 45, i32* %P
|
||||
@ -108,7 +108,7 @@ define void @test7(i32 *%P) {
|
||||
}
|
||||
|
||||
;; Readnone functions aren't invalidated by stores.
|
||||
; CHECK: @test8
|
||||
; CHECK-LABEL: @test8(
|
||||
define i32 @test8(i32 *%P) {
|
||||
%V1 = call i32 @func(i32* %P) readnone
|
||||
store i32 4, i32* %P
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: opt < %s -S -early-cse | FileCheck %s
|
||||
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
define void @test1(float %A, float %B, float* %PA, float* %PB) {
|
||||
; CHECK-NEXT: fadd
|
||||
; CHECK-NEXT: store
|
||||
@ -13,7 +13,7 @@ define void @test1(float %A, float %B, float* %PA, float* %PB) {
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
define void @test2(float %A, float %B, i1* %PA, i1* %PB) {
|
||||
; CHECK-NEXT: fcmp
|
||||
; CHECK-NEXT: store
|
||||
@ -26,7 +26,7 @@ define void @test2(float %A, float %B, i1* %PA, i1* %PB) {
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
define void @test3(float %A, float %B, i1* %PA, i1* %PB) {
|
||||
; CHECK-NEXT: fcmp
|
||||
; CHECK-NEXT: store
|
||||
@ -39,7 +39,7 @@ define void @test3(float %A, float %B, i1* %PA, i1* %PB) {
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: @test4
|
||||
; CHECK-LABEL: @test4(
|
||||
define void @test4(i32 %A, i32 %B, i1* %PA, i1* %PB) {
|
||||
; CHECK-NEXT: icmp
|
||||
; CHECK-NEXT: store
|
||||
@ -52,7 +52,7 @@ define void @test4(i32 %A, i32 %B, i1* %PA, i1* %PB) {
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: @test5
|
||||
; CHECK-LABEL: @test5(
|
||||
define void @test5(i32 %A, i32 %B, i1* %PA, i1* %PB) {
|
||||
; CHECK-NEXT: icmp
|
||||
; CHECK-NEXT: store
|
||||
|
@ -7,7 +7,7 @@ entry:
|
||||
while.body:
|
||||
br label %while.body
|
||||
}
|
||||
;CHECK: @main
|
||||
;CHECK-LABEL: @main(
|
||||
;CHECK: endless_loop
|
||||
;CHECK: ret
|
||||
define i32 @main() noreturn nounwind ssp uwtable {
|
||||
|
@ -3,7 +3,7 @@
|
||||
declare i32 @foo(i32) readnone
|
||||
|
||||
define i1 @bar() {
|
||||
; CHECK: @bar
|
||||
; CHECK-LABEL: @bar(
|
||||
%a = call i32 @foo (i32 0) readnone
|
||||
%b = call i32 @foo (i32 0) readnone
|
||||
%c = and i32 %a, %b
|
||||
|
@ -7,7 +7,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
|
||||
target triple = "x86_64-apple-macosx10.7.0"
|
||||
|
||||
define i1 @rb_intern() nounwind ssp {
|
||||
; CHECK: @rb_intern
|
||||
; CHECK-LABEL: @rb_intern(
|
||||
|
||||
bb:
|
||||
%tmp = alloca i8*, align 8
|
||||
|
@ -11,7 +11,7 @@ entry:
|
||||
ret i64 %add1
|
||||
}
|
||||
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK-NOT: add1
|
||||
; CHECK: ret
|
||||
|
||||
@ -23,7 +23,7 @@ entry:
|
||||
ret i64 %sub1
|
||||
}
|
||||
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK-NOT: sub1
|
||||
; CHECK: ret
|
||||
|
||||
@ -35,7 +35,7 @@ entry:
|
||||
ret i64 %mul1
|
||||
}
|
||||
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
; CHECK-NOT: mul1
|
||||
; CHECK: ret
|
||||
|
||||
@ -47,7 +47,7 @@ entry:
|
||||
ret i64 %add1
|
||||
}
|
||||
|
||||
; CHECK: @test4
|
||||
; CHECK-LABEL: @test4(
|
||||
; CHECK-NOT: add1
|
||||
; CHECK: ret
|
||||
|
||||
@ -59,7 +59,7 @@ entry:
|
||||
ret i64 %sub1
|
||||
}
|
||||
|
||||
; CHECK: @test5
|
||||
; CHECK-LABEL: @test5(
|
||||
; CHECK-NOT: sub1
|
||||
; CHECK: ret
|
||||
|
||||
@ -71,7 +71,7 @@ entry:
|
||||
ret i64 %mul1
|
||||
}
|
||||
|
||||
; CHECK: @test6
|
||||
; CHECK-LABEL: @test6(
|
||||
; CHECK-NOT: mul1
|
||||
; CHECK: ret
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
declare void @use(i32, i32)
|
||||
|
||||
define void @foo(i32 %x, i32 %y) {
|
||||
; CHECK: @foo
|
||||
; CHECK-LABEL: @foo(
|
||||
%add1 = add i32 %x, %y
|
||||
%add2 = add i32 %y, %x
|
||||
call void @use(i32 %add1, i32 %add2)
|
||||
@ -14,7 +14,7 @@ define void @foo(i32 %x, i32 %y) {
|
||||
declare void @vse(i1, i1)
|
||||
|
||||
define void @bar(i32 %x, i32 %y) {
|
||||
; CHECK: @bar
|
||||
; CHECK-LABEL: @bar(
|
||||
%cmp1 = icmp ult i32 %x, %y
|
||||
%cmp2 = icmp ugt i32 %y, %x
|
||||
call void @vse(i1 %cmp1, i1 %cmp2)
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
@a = external global i32 ; <i32*> [#uses=7]
|
||||
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
define i32 @test1() nounwind {
|
||||
entry:
|
||||
%0 = load i32* @a, align 4
|
||||
@ -57,7 +57,7 @@ return: ; preds = %bb8
|
||||
declare void @foo(i1)
|
||||
declare void @bar(i32)
|
||||
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
define void @test3(i32 %x, i32 %y) {
|
||||
%xz = icmp eq i32 %x, 0
|
||||
%yz = icmp eq i32 %y, 0
|
||||
@ -79,7 +79,7 @@ nope:
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: @test4
|
||||
; CHECK-LABEL: @test4(
|
||||
define void @test4(i1 %b, i32 %x) {
|
||||
br i1 %b, label %sw, label %case3
|
||||
sw:
|
||||
@ -112,7 +112,7 @@ case3:
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: @test5
|
||||
; CHECK-LABEL: @test5(
|
||||
define i1 @test5(i32 %x, i32 %y) {
|
||||
%cmp = icmp eq i32 %x, %y
|
||||
br i1 %cmp, label %same, label %different
|
||||
@ -128,7 +128,7 @@ different:
|
||||
ret i1 %cmp3
|
||||
}
|
||||
|
||||
; CHECK: @test6
|
||||
; CHECK-LABEL: @test6(
|
||||
define i1 @test6(i32 %x, i32 %y) {
|
||||
%cmp2 = icmp ne i32 %x, %y
|
||||
%cmp = icmp eq i32 %x, %y
|
||||
@ -144,7 +144,7 @@ different:
|
||||
ret i1 %cmp3
|
||||
}
|
||||
|
||||
; CHECK: @test7
|
||||
; CHECK-LABEL: @test7(
|
||||
define i1 @test7(i32 %x, i32 %y) {
|
||||
%cmp = icmp sgt i32 %x, %y
|
||||
br i1 %cmp, label %same, label %different
|
||||
@ -160,7 +160,7 @@ different:
|
||||
ret i1 %cmp3
|
||||
}
|
||||
|
||||
; CHECK: @test8
|
||||
; CHECK-LABEL: @test8(
|
||||
define i1 @test8(i32 %x, i32 %y) {
|
||||
%cmp2 = icmp sle i32 %x, %y
|
||||
%cmp = icmp sgt i32 %x, %y
|
||||
@ -177,7 +177,7 @@ different:
|
||||
}
|
||||
|
||||
; PR1768
|
||||
; CHECK: @test9
|
||||
; CHECK-LABEL: @test9(
|
||||
define i32 @test9(i32 %i, i32 %j) {
|
||||
%cmp = icmp eq i32 %i, %j
|
||||
br i1 %cmp, label %cond_true, label %ret
|
||||
@ -193,7 +193,7 @@ ret:
|
||||
}
|
||||
|
||||
; PR1768
|
||||
; CHECK: @test10
|
||||
; CHECK-LABEL: @test10(
|
||||
define i32 @test10(i32 %j, i32 %i) {
|
||||
%cmp = icmp eq i32 %i, %j
|
||||
br i1 %cmp, label %cond_true, label %ret
|
||||
@ -210,7 +210,7 @@ ret:
|
||||
|
||||
declare i32 @yogibar()
|
||||
|
||||
; CHECK: @test11
|
||||
; CHECK-LABEL: @test11(
|
||||
define i32 @test11(i32 %x) {
|
||||
%v0 = call i32 @yogibar()
|
||||
%v1 = call i32 @yogibar()
|
||||
@ -233,7 +233,7 @@ next2:
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
; CHECK: @test12
|
||||
; CHECK-LABEL: @test12(
|
||||
define i32 @test12(i32 %x) {
|
||||
%cmp = icmp eq i32 %x, 0
|
||||
br i1 %cmp, label %cond_true, label %cond_false
|
||||
|
@ -5,7 +5,7 @@ target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32-
|
||||
@p = external global i32
|
||||
|
||||
define i32 @test(i32 %n) nounwind {
|
||||
; CHECK: @test
|
||||
; CHECK-LABEL: @test(
|
||||
entry:
|
||||
br label %for.cond
|
||||
|
||||
|
@ -21,11 +21,11 @@ if.then: ; preds = %entry
|
||||
if.end: ; preds = %if.then, %entry
|
||||
ret i8* %call
|
||||
|
||||
; CHECK: @test
|
||||
; CHECK-LABEL: @test(
|
||||
; CHECK-NOT: load
|
||||
; CHECK-NOT: icmp
|
||||
|
||||
; CHECK_NO_LIBCALLS: @test
|
||||
; CHECK_NO_LIBCALLS-LABEL: @test(
|
||||
; CHECK_NO_LIBCALLS: load
|
||||
; CHECK_NO_LIBCALLS: icmp
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ target datalayout = "e-p:64:64:64"
|
||||
; GVN should ignore the store to p[1] to see that the load from p[0] is
|
||||
; fully redundant.
|
||||
|
||||
; CHECK: @yes
|
||||
; CHECK-LABEL: @yes(
|
||||
; CHECK: if.then:
|
||||
; CHECK-NEXT: store i32 0, i32* %q
|
||||
; CHECK-NEXT: ret void
|
||||
@ -30,7 +30,7 @@ if.else:
|
||||
; fully redundant. However, the second load is larger, so it's not a simple
|
||||
; redundancy.
|
||||
|
||||
; CHECK: @watch_out_for_size_change
|
||||
; CHECK-LABEL: @watch_out_for_size_change(
|
||||
; CHECK: if.then:
|
||||
; CHECK-NEXT: store i32 0, i32* %q
|
||||
; CHECK-NEXT: ret void
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
target datalayout = "e-p:64:64:64"
|
||||
|
||||
; CHECK: @foo
|
||||
; CHECK-LABEL: @foo(
|
||||
; CHECK: entry.end_crit_edge:
|
||||
; CHECK: %n.pre = load i32* %q.phi.trans.insert
|
||||
; CHECK: then:
|
||||
|
@ -10,7 +10,7 @@ define <2 x i32> @test1() {
|
||||
store <2 x i8*> %v3, <2 x i8*>* %v4
|
||||
%v5 = load <2 x i32>* %v1
|
||||
ret <2 x i32> %v5
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: %v1 = alloca <2 x i32>
|
||||
; CHECK: call void @anything(<2 x i32>* %v1)
|
||||
; CHECK: %v2 = load <2 x i32>* %v1
|
||||
|
@ -2,7 +2,7 @@
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
||||
|
||||
define i32 @test1(i32* %p, i1 %C) {
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
block1:
|
||||
br i1 %C, label %block2, label %block3
|
||||
|
||||
@ -25,7 +25,7 @@ block4:
|
||||
|
||||
; This is a simple phi translation case.
|
||||
define i32 @test2(i32* %p, i32* %q, i1 %C) {
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
block1:
|
||||
br i1 %C, label %block2, label %block3
|
||||
|
||||
@ -50,7 +50,7 @@ block4:
|
||||
|
||||
; This is a PRE case that requires phi translation through a GEP.
|
||||
define i32 @test3(i32* %p, i32* %q, i32** %Hack, i1 %C) {
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
block1:
|
||||
%B = getelementptr i32* %q, i32 1
|
||||
store i32* %B, i32** %Hack
|
||||
@ -80,7 +80,7 @@ block4:
|
||||
;; Here the loaded address is available, but the computation is in 'block3'
|
||||
;; which does not dominate 'block2'.
|
||||
define i32 @test4(i32* %p, i32* %q, i32** %Hack, i1 %C) {
|
||||
; CHECK: @test4
|
||||
; CHECK-LABEL: @test4(
|
||||
block1:
|
||||
br i1 %C, label %block2, label %block3
|
||||
|
||||
@ -116,7 +116,7 @@ block4:
|
||||
;}
|
||||
|
||||
define void @test5(i32 %N, double* nocapture %G) nounwind ssp {
|
||||
; CHECK: @test5
|
||||
; CHECK-LABEL: @test5(
|
||||
entry:
|
||||
%0 = add i32 %N, -1
|
||||
%1 = icmp sgt i32 %0, 0
|
||||
@ -159,7 +159,7 @@ return:
|
||||
;}
|
||||
|
||||
define void @test6(i32 %N, double* nocapture %G) nounwind ssp {
|
||||
; CHECK: @test6
|
||||
; CHECK-LABEL: @test6(
|
||||
entry:
|
||||
%0 = add i32 %N, -1
|
||||
%1 = icmp sgt i32 %0, 0
|
||||
@ -242,7 +242,7 @@ return:
|
||||
;; Here the loaded address isn't available in 'block2' at all, requiring a new
|
||||
;; GEP to be inserted into it.
|
||||
define i32 @test8(i32* %p, i32* %q, i32** %Hack, i1 %C) {
|
||||
; CHECK: @test8
|
||||
; CHECK-LABEL: @test8(
|
||||
block1:
|
||||
br i1 %C, label %block2, label %block3
|
||||
|
||||
@ -365,7 +365,7 @@ return:
|
||||
|
||||
; Test critical edge splitting.
|
||||
define i32 @test11(i32* %p, i1 %C, i32 %N) {
|
||||
; CHECK: @test11
|
||||
; CHECK-LABEL: @test11(
|
||||
block1:
|
||||
br i1 %C, label %block2, label %block3
|
||||
|
||||
|
@ -4,7 +4,7 @@ target datalayout = "e-p:64:64:64"
|
||||
|
||||
; GVN should preserve the TBAA tag on loads when doing PRE.
|
||||
|
||||
; CHECK: @test
|
||||
; CHECK-LABEL: @test(
|
||||
; CHECK: %tmp33.pre = load i16* %P, align 2, !tbaa !0
|
||||
; CHECK: br label %for.body
|
||||
define void @test(i16 *%P, i16* %Q) nounwind {
|
||||
|
@ -4,7 +4,7 @@ target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f3
|
||||
target triple = "i386-apple-darwin7"
|
||||
|
||||
define i32 @test1(i32* %b, i32* %c) nounwind {
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
entry:
|
||||
%g = alloca i32
|
||||
%t1 = icmp eq i32* %b, null
|
||||
@ -36,7 +36,7 @@ bb2: ; preds = %bb1, %bb
|
||||
}
|
||||
|
||||
define i8 @test2(i1 %cond, i32* %b, i32* %c) nounwind {
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
entry:
|
||||
br i1 %cond, label %bb, label %bb1
|
||||
|
||||
@ -61,7 +61,7 @@ bb2:
|
||||
}
|
||||
|
||||
define i32 @test3(i1 %cond, i32* %b, i32* %c) nounwind {
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
entry:
|
||||
br i1 %cond, label %bb, label %bb1
|
||||
|
||||
@ -88,7 +88,7 @@ bb2:
|
||||
|
||||
; PR5313
|
||||
define i32 @test4(i1 %cond, i32* %b, i32* %c) nounwind {
|
||||
; CHECK: @test4
|
||||
; CHECK-LABEL: @test4(
|
||||
entry:
|
||||
br i1 %cond, label %bb, label %bb1
|
||||
|
||||
@ -121,7 +121,7 @@ bb2:
|
||||
;
|
||||
; Should compile into one load in the loop.
|
||||
define void @test5(i32 %N, double* nocapture %G) nounwind ssp {
|
||||
; CHECK: @test5
|
||||
; CHECK-LABEL: @test5(
|
||||
bb.nph:
|
||||
br label %for.body
|
||||
|
||||
|
@ -7,7 +7,7 @@ define i32 @test0(i32 %V, i32* %P) {
|
||||
|
||||
%A = load i32* %P
|
||||
ret i32 %A
|
||||
; CHECK: @test0
|
||||
; CHECK-LABEL: @test0(
|
||||
; CHECK: ret i32 %V
|
||||
}
|
||||
|
||||
@ -47,7 +47,7 @@ define float @coerce_mustalias1(i32 %V, i32* %P) {
|
||||
|
||||
%A = load float* %P2
|
||||
ret float %A
|
||||
; CHECK: @coerce_mustalias1
|
||||
; CHECK-LABEL: @coerce_mustalias1(
|
||||
; CHECK-NOT: load
|
||||
; CHECK: ret float
|
||||
}
|
||||
@ -60,7 +60,7 @@ define float @coerce_mustalias2(i32* %V, i32** %P) {
|
||||
|
||||
%A = load float* %P2
|
||||
ret float %A
|
||||
; CHECK: @coerce_mustalias2
|
||||
; CHECK-LABEL: @coerce_mustalias2(
|
||||
; CHECK-NOT: load
|
||||
; CHECK: ret float
|
||||
}
|
||||
@ -73,7 +73,7 @@ define i32* @coerce_mustalias3(float %V, float* %P) {
|
||||
|
||||
%A = load i32** %P2
|
||||
ret i32* %A
|
||||
; CHECK: @coerce_mustalias3
|
||||
; CHECK-LABEL: @coerce_mustalias3(
|
||||
; CHECK-NOT: load
|
||||
; CHECK: ret i32*
|
||||
}
|
||||
@ -92,7 +92,7 @@ F:
|
||||
%X = bitcast i32 %A to float
|
||||
ret float %X
|
||||
|
||||
; CHECK: @coerce_mustalias4
|
||||
; CHECK-LABEL: @coerce_mustalias4(
|
||||
; CHECK: %A = load i32* %P
|
||||
; CHECK-NOT: load
|
||||
; CHECK: ret float
|
||||
@ -107,7 +107,7 @@ define i8 @coerce_mustalias5(i32 %V, i32* %P) {
|
||||
|
||||
%A = load i8* %P2
|
||||
ret i8 %A
|
||||
; CHECK: @coerce_mustalias5
|
||||
; CHECK-LABEL: @coerce_mustalias5(
|
||||
; CHECK-NOT: load
|
||||
; CHECK: ret i8
|
||||
}
|
||||
@ -120,7 +120,7 @@ define float @coerce_mustalias6(i64 %V, i64* %P) {
|
||||
|
||||
%A = load float* %P2
|
||||
ret float %A
|
||||
; CHECK: @coerce_mustalias6
|
||||
; CHECK-LABEL: @coerce_mustalias6(
|
||||
; CHECK-NOT: load
|
||||
; CHECK: ret float
|
||||
}
|
||||
@ -133,7 +133,7 @@ define i8* @coerce_mustalias7(i64 %V, i64* %P) {
|
||||
|
||||
%A = load i8** %P2
|
||||
ret i8* %A
|
||||
; CHECK: @coerce_mustalias7
|
||||
; CHECK-LABEL: @coerce_mustalias7(
|
||||
; CHECK-NOT: load
|
||||
; CHECK: ret i8*
|
||||
}
|
||||
@ -146,7 +146,7 @@ entry:
|
||||
%arrayidx = getelementptr inbounds i16* %A, i64 42
|
||||
%tmp2 = load i16* %arrayidx
|
||||
ret i16 %tmp2
|
||||
; CHECK: @memset_to_i16_local
|
||||
; CHECK-LABEL: @memset_to_i16_local(
|
||||
; CHECK-NOT: load
|
||||
; CHECK: ret i16 257
|
||||
}
|
||||
@ -159,7 +159,7 @@ entry:
|
||||
%arrayidx = getelementptr inbounds float* %A, i64 42 ; <float*> [#uses=1]
|
||||
%tmp2 = load float* %arrayidx ; <float> [#uses=1]
|
||||
ret float %tmp2
|
||||
; CHECK: @memset_to_float_local
|
||||
; CHECK-LABEL: @memset_to_float_local(
|
||||
; CHECK-NOT: load
|
||||
; CHECK: zext
|
||||
; CHECK-NEXT: shl
|
||||
@ -187,7 +187,7 @@ Cont:
|
||||
%A = load i16* %P2
|
||||
ret i16 %A
|
||||
|
||||
; CHECK: @memset_to_i16_nonlocal0
|
||||
; CHECK-LABEL: @memset_to_i16_nonlocal0(
|
||||
; CHECK: Cont:
|
||||
; CHECK-NEXT: %A = phi i16 [ 514, %F ], [ 257, %T ]
|
||||
; CHECK-NOT: load
|
||||
@ -204,7 +204,7 @@ entry:
|
||||
%arrayidx = getelementptr inbounds float* %A, i64 1 ; <float*> [#uses=1]
|
||||
%tmp2 = load float* %arrayidx ; <float> [#uses=1]
|
||||
ret float %tmp2
|
||||
; CHECK: @memcpy_to_float_local
|
||||
; CHECK-LABEL: @memcpy_to_float_local(
|
||||
; CHECK-NOT: load
|
||||
; CHECK: ret float 1.400000e+01
|
||||
}
|
||||
@ -228,7 +228,7 @@ Cont:
|
||||
%A = load i8* %P3
|
||||
ret i8 %A
|
||||
|
||||
; CHECK: @coerce_mustalias_nonlocal0
|
||||
; CHECK-LABEL: @coerce_mustalias_nonlocal0(
|
||||
; CHECK: Cont:
|
||||
; CHECK: %A = phi i8 [
|
||||
; CHECK-NOT: load
|
||||
@ -254,7 +254,7 @@ Cont:
|
||||
%A = load i8* %P3
|
||||
ret i8 %A
|
||||
|
||||
; CHECK: @coerce_mustalias_nonlocal1
|
||||
; CHECK-LABEL: @coerce_mustalias_nonlocal1(
|
||||
; CHECK: Cont:
|
||||
; CHECK: %A = phi i8 [
|
||||
; CHECK-NOT: load
|
||||
@ -277,7 +277,7 @@ Cont:
|
||||
%A = load i8* %P3
|
||||
ret i8 %A
|
||||
|
||||
; CHECK: @coerce_mustalias_pre0
|
||||
; CHECK-LABEL: @coerce_mustalias_pre0(
|
||||
; CHECK: F:
|
||||
; CHECK: load i8* %P3
|
||||
; CHECK: Cont:
|
||||
@ -301,7 +301,7 @@ define i8 @coerce_offset0(i32 %V, i32* %P) {
|
||||
|
||||
%A = load i8* %P3
|
||||
ret i8 %A
|
||||
; CHECK: @coerce_offset0
|
||||
; CHECK-LABEL: @coerce_offset0(
|
||||
; CHECK-NOT: load
|
||||
; CHECK: ret i8
|
||||
}
|
||||
@ -324,7 +324,7 @@ Cont:
|
||||
%A = load i8* %P4
|
||||
ret i8 %A
|
||||
|
||||
; CHECK: @coerce_offset_nonlocal0
|
||||
; CHECK-LABEL: @coerce_offset_nonlocal0(
|
||||
; CHECK: Cont:
|
||||
; CHECK: %A = phi i8 [
|
||||
; CHECK-NOT: load
|
||||
@ -348,7 +348,7 @@ Cont:
|
||||
%A = load i8* %P4
|
||||
ret i8 %A
|
||||
|
||||
; CHECK: @coerce_offset_pre0
|
||||
; CHECK-LABEL: @coerce_offset_pre0(
|
||||
; CHECK: F:
|
||||
; CHECK: load i8* %P4
|
||||
; CHECK: Cont:
|
||||
@ -378,7 +378,7 @@ block4:
|
||||
%d = load i32* %c
|
||||
ret i32 %d
|
||||
|
||||
; CHECK: @chained_load
|
||||
; CHECK-LABEL: @chained_load(
|
||||
; CHECK: %z = load i32** %p
|
||||
; CHECK-NOT: load
|
||||
; CHECK: %d = load i32* %z
|
||||
@ -390,7 +390,7 @@ declare i1 @cond() readonly
|
||||
declare i1 @cond2() readonly
|
||||
|
||||
define i32 @phi_trans2() {
|
||||
; CHECK: @phi_trans2
|
||||
; CHECK-LABEL: @phi_trans2(
|
||||
entry:
|
||||
%P = alloca i32, i32 400
|
||||
br label %F1
|
||||
@ -428,7 +428,7 @@ TY:
|
||||
}
|
||||
|
||||
define i32 @phi_trans3(i32* %p) {
|
||||
; CHECK: @phi_trans3
|
||||
; CHECK-LABEL: @phi_trans3(
|
||||
block1:
|
||||
br i1 true, label %block2, label %block3
|
||||
|
||||
@ -469,7 +469,7 @@ exit:
|
||||
}
|
||||
|
||||
define i8 @phi_trans4(i8* %p) {
|
||||
; CHECK: @phi_trans4
|
||||
; CHECK-LABEL: @phi_trans4(
|
||||
entry:
|
||||
%X3 = getelementptr i8* %p, i32 192
|
||||
store i8 192, i8* %X3
|
||||
@ -499,7 +499,7 @@ out:
|
||||
}
|
||||
|
||||
define i8 @phi_trans5(i8* %p) {
|
||||
; CHECK: @phi_trans5
|
||||
; CHECK-LABEL: @phi_trans5(
|
||||
entry:
|
||||
|
||||
%X4 = getelementptr i8* %p, i32 2
|
||||
@ -542,7 +542,7 @@ entry:
|
||||
%arraydecay = getelementptr inbounds [256 x i32]* %x, i32 0, i32 0 ; <i32*>
|
||||
%tmp1 = load i32* %arraydecay ; <i32> [#uses=1]
|
||||
ret i32 %tmp1
|
||||
; CHECK: @memset_to_load
|
||||
; CHECK-LABEL: @memset_to_load(
|
||||
; CHECK: ret i32 0
|
||||
}
|
||||
|
||||
@ -561,7 +561,7 @@ entry:
|
||||
%add = add nsw i32 %tmp2, %conv
|
||||
ret i32 %add
|
||||
|
||||
; TEMPORARILYDISABLED: @load_load_partial_alias
|
||||
; TEMPORARILYDISABLED-LABEL: @load_load_partial_alias(
|
||||
; TEMPORARILYDISABLED: load i32*
|
||||
; TEMPORARILYDISABLED-NOT: load
|
||||
; TEMPORARILYDISABLED: lshr i32 {{.*}}, 8
|
||||
@ -588,7 +588,7 @@ land.lhs.true: ; preds = %entry
|
||||
|
||||
if.end:
|
||||
ret i32 52
|
||||
; TEMPORARILY_DISABLED: @load_load_partial_alias_cross_block
|
||||
; TEMPORARILY_DISABLED-LABEL: @load_load_partial_alias_cross_block(
|
||||
; TEMPORARILY_DISABLED: land.lhs.true:
|
||||
; TEMPORARILY_DISABLED-NOT: load i8
|
||||
; TEMPORARILY_DISABLED: ret i32 %conv6
|
||||
@ -611,7 +611,7 @@ entry:
|
||||
%conv2 = zext i8 %tmp1 to i32
|
||||
%add = add nsw i32 %conv, %conv2
|
||||
ret i32 %add
|
||||
; CHECK: @test_widening1
|
||||
; CHECK-LABEL: @test_widening1(
|
||||
; CHECK-NOT: load
|
||||
; CHECK: load i16*
|
||||
; CHECK-NOT: load
|
||||
@ -635,7 +635,7 @@ entry:
|
||||
%add3 = add nsw i32 %add2, %conv3
|
||||
|
||||
ret i32 %add3
|
||||
; CHECK: @test_widening2
|
||||
; CHECK-LABEL: @test_widening2(
|
||||
; CHECK-NOT: load
|
||||
; CHECK: load i32*
|
||||
; CHECK-NOT: load
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: opt < %s -globalopt -S | FileCheck %s
|
||||
|
||||
define internal void @f() {
|
||||
; CHECK-NOT: @f
|
||||
; CHECK-NOT-LABEL: @f(
|
||||
; CHECK: define void @a
|
||||
ret void
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
@x = internal global i8* zeroinitializer
|
||||
|
||||
define void @f() {
|
||||
; CHECK: @f
|
||||
; CHECK-LABEL: @f(
|
||||
|
||||
; Check that we don't hit an assert in Constant::IsThreadDependent()
|
||||
; when storing this blockaddress into a global.
|
||||
@ -13,7 +13,7 @@ define void @f() {
|
||||
}
|
||||
|
||||
define void @g() {
|
||||
; CHECK: @g
|
||||
; CHECK-LABEL: @g(
|
||||
|
||||
here:
|
||||
ret void
|
||||
|
@ -3,7 +3,7 @@
|
||||
@glbl = internal global i8* null
|
||||
|
||||
define void @test1a() {
|
||||
; CHECK: @test1a
|
||||
; CHECK-LABEL: @test1a(
|
||||
; CHECK-NOT: store
|
||||
; CHECK-NEXT: ret void
|
||||
store i8* null, i8** @glbl
|
||||
@ -11,7 +11,7 @@ define void @test1a() {
|
||||
}
|
||||
|
||||
define void @test1b(i8* %p) {
|
||||
; CHECK: @test1b
|
||||
; CHECK-LABEL: @test1b(
|
||||
; CHECK-NEXT: store
|
||||
; CHECK-NEXT: ret void
|
||||
store i8* %p, i8** @glbl
|
||||
@ -19,7 +19,7 @@ define void @test1b(i8* %p) {
|
||||
}
|
||||
|
||||
define void @test2() {
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK: alloca i8
|
||||
%txt = alloca i8
|
||||
call void @foo2(i8* %txt)
|
||||
@ -31,7 +31,7 @@ declare i8* @strdup(i8*)
|
||||
declare void @foo2(i8*)
|
||||
|
||||
define void @test3() uwtable {
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
; CHECK-NOT: bb1:
|
||||
; CHECK-NOT: bb2:
|
||||
; CHECK: invoke
|
||||
|
@ -20,7 +20,7 @@ entry:
|
||||
store i32* inttoptr (i64 sdiv (i64 ptrtoint (i32* @G to i64), i64 ptrtoint (i32* @H to i64)) to i32*), i32** %tmp, align 8
|
||||
ret void
|
||||
}
|
||||
; CHECK: @init1
|
||||
; CHECK-LABEL: @init1(
|
||||
; CHECK: store i32*
|
||||
|
||||
; PR11705 - ptrtoint isn't safe in general in global initializers.
|
||||
@ -30,5 +30,5 @@ entry:
|
||||
store i128 ptrtoint (i32* @G to i128), i128* %tmp, align 16
|
||||
ret void
|
||||
}
|
||||
; CHECK: @init2
|
||||
; CHECK-LABEL: @init2(
|
||||
; CHECK: store i128
|
||||
|
@ -19,7 +19,7 @@ define void @set2() {
|
||||
}
|
||||
|
||||
define i1 @get() {
|
||||
; CHECK: @get
|
||||
; CHECK-LABEL: @get(
|
||||
%A = load i32 addrspace(1) * @G
|
||||
%C = icmp slt i32 %A, 2
|
||||
ret i1 %C
|
||||
|
@ -7,14 +7,14 @@ define void @foo() {
|
||||
%V = load i32* @G ; <i32> [#uses=1]
|
||||
store i32 %V, i32* @G
|
||||
ret void
|
||||
; CHECK: @foo
|
||||
; CHECK-LABEL: @foo(
|
||||
; CHECK-NEXT: ret void
|
||||
}
|
||||
|
||||
define i32 @bar() {
|
||||
%X = load i32* @G ; <i32> [#uses=1]
|
||||
ret i32 %X
|
||||
; CHECK: @bar
|
||||
; CHECK-LABEL: @bar(
|
||||
; CHECK-NEXT: ret i32 17
|
||||
}
|
||||
|
||||
@ -31,7 +31,7 @@ define void @qux() nounwind {
|
||||
store i64* inttoptr (i64 1 to i64*), i64** @a, align 8
|
||||
%l = load i64** @a, align 8
|
||||
ret void
|
||||
; CHECK: @qux
|
||||
; CHECK-LABEL: @qux(
|
||||
; CHECK-NOT: store
|
||||
; CHECK-NOT: load
|
||||
}
|
||||
|
@ -6,7 +6,7 @@
|
||||
@G = internal global i8** null
|
||||
|
||||
define i32 @main(i32 %argc, i8** %argv) {
|
||||
; CHECK: @main
|
||||
; CHECK-LABEL: @main(
|
||||
; CHECK: %G = alloca
|
||||
store i8** %argv, i8*** @G
|
||||
ret i32 0
|
||||
|
@ -29,7 +29,7 @@ entry:
|
||||
%1 = load i32* %0, align 4
|
||||
ret i32 %1
|
||||
|
||||
; CHECK: @f
|
||||
; CHECK-LABEL: @f(
|
||||
; Make sure that the load from @ip hasn't been removed.
|
||||
; CHECK: load i32** @ip
|
||||
; CHECK: ret
|
||||
@ -46,7 +46,7 @@ entry:
|
||||
tail call void @signal() nounwind
|
||||
ret void
|
||||
|
||||
; CHECK: @g
|
||||
; CHECK-LABEL: @g(
|
||||
; Make sure that the store to @ip hasn't been removed.
|
||||
; CHECK: store {{.*}} @ip
|
||||
; CHECK: ret
|
||||
|
@ -6,6 +6,6 @@ define i32 @test1(i64 %idx) nounwind {
|
||||
%arrayidx = getelementptr inbounds [10 x i32]* @zero, i64 0, i64 %idx
|
||||
%l = load i32* %arrayidx
|
||||
ret i32 %l
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: ret i32 0
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32-S32"
|
||||
target triple = "thumbv7-apple-darwin"
|
||||
|
||||
; CHECK: @test
|
||||
; CHECK-LABEL: @test(
|
||||
; CHECK: if.end.i126:
|
||||
; CHECK: %exitcond = icmp ne i8* %incdec.ptr.i, getelementptr (i8* null, i32 undef)
|
||||
define void @test() nounwind {
|
||||
|
@ -9,7 +9,7 @@
|
||||
; SCEV. Since it's an i8*, it has unit stride so we never adjust the
|
||||
; SCEV expression in a way that would convert it to an integer type.
|
||||
|
||||
; CHECK: @testnullptrptr
|
||||
; CHECK-LABEL: @testnullptrptr(
|
||||
; CHECK: loop:
|
||||
; CHECK: icmp ne
|
||||
define i8 @testnullptrptr(i8* %buf, i8* %end) nounwind {
|
||||
@ -34,7 +34,7 @@ exit:
|
||||
ret i8 %snext
|
||||
}
|
||||
|
||||
; CHECK: @testptrptr
|
||||
; CHECK-LABEL: @testptrptr(
|
||||
; CHECK: loop:
|
||||
; CHECK: icmp ne
|
||||
define i8 @testptrptr(i8* %buf, i8* %end) nounwind {
|
||||
@ -59,7 +59,7 @@ exit:
|
||||
ret i8 %snext
|
||||
}
|
||||
|
||||
; CHECK: @testnullptrint
|
||||
; CHECK-LABEL: @testnullptrint(
|
||||
; CHECK: loop:
|
||||
; CHECK: icmp ne
|
||||
define i8 @testnullptrint(i8* %buf, i8* %end) nounwind {
|
||||
@ -89,7 +89,7 @@ exit:
|
||||
ret i8 %snext
|
||||
}
|
||||
|
||||
; CHECK: @testptrint
|
||||
; CHECK-LABEL: @testptrint(
|
||||
; CHECK: loop:
|
||||
; CHECK: icmp ne
|
||||
define i8 @testptrint(i8* %buf, i8* %end) nounwind {
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: opt < %s -indvars -S | FileCheck %s
|
||||
; PR11350: Check that SimplifyIndvar handles a cycle of useless self-phis.
|
||||
|
||||
; CHECK: @test
|
||||
; CHECK-LABEL: @test(
|
||||
; CHECK-NOT: lcssa = phi
|
||||
define void @test() nounwind {
|
||||
entry:
|
||||
|
@ -2,7 +2,7 @@
|
||||
; PR13371: indvars pass incorrectly substitutes 'undef' values
|
||||
;
|
||||
; LFTR should not user %undef as the loop counter.
|
||||
; CHECK: @test
|
||||
; CHECK-LABEL: @test(
|
||||
; CHECK-NOT: icmp{{.*}}undef
|
||||
@.str3 = private constant [6 x i8] c"%lld\0A\00", align 1
|
||||
declare i32 @printf(i8* noalias nocapture, ...) nounwind
|
||||
|
@ -19,7 +19,7 @@ for.body: ; preds = %for.body, %entry
|
||||
for.end: ; preds = %for.body
|
||||
ret void
|
||||
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK-NOT: phi i1
|
||||
; CHECK: call void @aux(i1 false, i1 false)
|
||||
}
|
||||
|
@ -21,7 +21,7 @@
|
||||
|
||||
declare void @func(i32)
|
||||
|
||||
; CHECK: @test
|
||||
; CHECK-LABEL: @test(
|
||||
define void @test(i32 %m) nounwind uwtable {
|
||||
entry:
|
||||
br label %for.body
|
||||
@ -45,7 +45,7 @@ for.end: ; preds = %for.body
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
define i32 @test2(i32 %m) nounwind uwtable {
|
||||
entry:
|
||||
br label %for.body
|
||||
|
@ -7,7 +7,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
|
||||
; Indvars should be able to simplify simple comparisons involving
|
||||
; induction variables.
|
||||
|
||||
; CHECK: @foo
|
||||
; CHECK-LABEL: @foo(
|
||||
; CHECK: %cond = and i1 %tobool.not, true
|
||||
|
||||
define void @foo(i64 %n, i32* nocapture %p) nounwind {
|
||||
@ -42,7 +42,7 @@ return:
|
||||
|
||||
; Don't eliminate an icmp that's contributing to the loop exit test though.
|
||||
|
||||
; CHECK: @_ZNK4llvm5APInt3ultERKS0_
|
||||
; CHECK-LABEL: @_ZNK4llvm5APInt3ultERKS0_(
|
||||
; CHECK: %tmp99 = icmp sgt i32 %i, -1
|
||||
|
||||
define i32 @_ZNK4llvm5APInt3ultERKS0_(i32 %tmp2.i1, i64** %tmp65, i64** %tmp73, i64** %tmp82, i64** %tmp90) {
|
||||
@ -85,7 +85,7 @@ bb20.loopexit:
|
||||
|
||||
; Indvars should eliminate the icmp here.
|
||||
|
||||
; CHECK: @func_10
|
||||
; CHECK-LABEL: @func_10(
|
||||
; CHECK-NOT: icmp
|
||||
; CHECK: ret void
|
||||
|
||||
@ -110,7 +110,7 @@ return:
|
||||
; PR14432
|
||||
; Indvars should not turn the second loop into an infinite one.
|
||||
|
||||
; CHECK: @func_11
|
||||
; CHECK-LABEL: @func_11(
|
||||
; CHECK: %tmp5 = icmp slt i32 %__key6.0, 10
|
||||
; CHECK-NOT: br i1 true, label %noassert68, label %unrolledend
|
||||
|
||||
@ -162,7 +162,7 @@ unrolledend: ; preds = %forcond38
|
||||
declare void @llvm.trap() noreturn nounwind
|
||||
|
||||
; In this case the second loop only has a single iteration, fold the header away
|
||||
; CHECK: @func_12
|
||||
; CHECK-LABEL: @func_12(
|
||||
; CHECK: %tmp5 = icmp slt i32 %__key6.0, 10
|
||||
; CHECK: br i1 true, label %noassert68, label %unrolledend
|
||||
define i32 @func_12() nounwind uwtable {
|
||||
|
@ -3,7 +3,7 @@
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
||||
|
||||
; Indvars should be able to eliminate this srem.
|
||||
; CHECK: @simple
|
||||
; CHECK-LABEL: @simple(
|
||||
; CHECK-NOT: rem
|
||||
; CHECK: ret
|
||||
|
||||
@ -32,7 +32,7 @@ bb12: ; preds = %bb11, %bb
|
||||
}
|
||||
|
||||
; Indvars should be able to eliminate the (i+1)%n.
|
||||
; CHECK: @f
|
||||
; CHECK-LABEL: @f(
|
||||
; CHECK-NOT: rem
|
||||
; CHECK: rem
|
||||
; CHECK-NOT: rem
|
||||
|
@ -12,7 +12,7 @@ bb: ; preds = %bb, %entry
|
||||
|
||||
return: ; preds = %bb
|
||||
ret void
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK: icmp
|
||||
}
|
||||
|
||||
@ -31,7 +31,7 @@ bb: ; preds = %bb, %entry
|
||||
|
||||
return: ; preds = %bb
|
||||
ret void
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK: icmp
|
||||
}
|
||||
|
||||
@ -49,7 +49,7 @@ bb: ; preds = %bb, %entry
|
||||
|
||||
return:
|
||||
ret void
|
||||
; CHECK: @test3
|
||||
; CHECK-LABEL: @test3(
|
||||
; CHECK: fcmp
|
||||
}
|
||||
|
||||
@ -66,7 +66,7 @@ bb: ; preds = %bb, %entry
|
||||
|
||||
return:
|
||||
ret void
|
||||
; CHECK: @test4
|
||||
; CHECK-LABEL: @test4(
|
||||
; CHECK-NOT: cmp
|
||||
; CHECK: br i1 false
|
||||
}
|
||||
@ -86,7 +86,7 @@ define void @test5() nounwind {
|
||||
exit:
|
||||
ret void
|
||||
|
||||
; CHECK: @test5
|
||||
; CHECK-LABEL: @test5(
|
||||
; CHECK: icmp slt i32 {{.*}}, 0
|
||||
; CHECK-NEXT: br i1
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
|
||||
|
||||
; Indvars should be able to fold IV increments into shr when low bits are zero.
|
||||
;
|
||||
; CHECK: @foldIncShr
|
||||
; CHECK-LABEL: @foldIncShr(
|
||||
; CHECK: shr.1 = lshr i32 %0, 5
|
||||
define i32 @foldIncShr(i32* %bitmap, i32 %bit_addr, i32 %nbits) nounwind {
|
||||
entry:
|
||||
@ -31,7 +31,7 @@ while.end:
|
||||
; Invdars should not fold an increment into shr unless 2^shiftBits is
|
||||
; a multiple of the recurrence step.
|
||||
;
|
||||
; CHECK: @noFoldIncShr
|
||||
; CHECK-LABEL: @noFoldIncShr(
|
||||
; CHECK: shr.1 = lshr i32 %inc.1, 5
|
||||
define i32 @noFoldIncShr(i32* %bitmap, i32 %bit_addr, i32 %nbits) nounwind {
|
||||
entry:
|
||||
|
@ -1,6 +1,6 @@
|
||||
;RUN: opt -S %s -indvars | FileCheck %s
|
||||
|
||||
; CHECK-LABEL: @foo
|
||||
; CHECK-LABEL-LABEL: @foo(
|
||||
; CHECK-NOT: %lftr.wideiv = trunc i32 %indvars.iv.next to i16
|
||||
; CHECK: %exitcond = icmp ne i32 %indvars.iv.next, 512
|
||||
define void @foo() #0 {
|
||||
@ -20,7 +20,7 @@ for.end: ; preds = %for.body
|
||||
}
|
||||
|
||||
; Check that post-incrementing the backedge taken count does not overflow.
|
||||
; CHECK-LABEL: @postinc
|
||||
; CHECK-LABEL-LABEL: @postinc(
|
||||
; CHECK: icmp eq i32 %indvars.iv.next, 256
|
||||
define i32 @postinc() #0 {
|
||||
entry:
|
||||
|
@ -165,7 +165,7 @@ entry:
|
||||
%lim = add i32 %x, %n
|
||||
%cmp.ph = icmp ult i32 %x, %lim
|
||||
br i1 %cmp.ph, label %loop, label %exit
|
||||
; CHECK: @geplftr
|
||||
; CHECK-LABEL: @geplftr(
|
||||
; CHECK: loop:
|
||||
; CHECK: phi i8*
|
||||
; DISABLE-NOT: phi // This check is currently disabled
|
||||
@ -190,7 +190,7 @@ exit:
|
||||
define void @nevertaken() nounwind uwtable ssp {
|
||||
entry:
|
||||
br label %loop
|
||||
; CHECK: @nevertaken
|
||||
; CHECK-LABEL: @nevertaken(
|
||||
; CHECK: loop:
|
||||
; CHECK-NOT: phi
|
||||
; CHECK-NOT: add
|
||||
|
@ -5,7 +5,7 @@
|
||||
; the exit value of the loop will be for some value, allowing us to substitute
|
||||
; it directly into users outside of the loop, making the loop dead.
|
||||
|
||||
; CHECK: @linear_setne
|
||||
; CHECK-LABEL: @linear_setne(
|
||||
; CHECK: ret i32 100
|
||||
|
||||
define i32 @linear_setne() {
|
||||
@ -22,7 +22,7 @@ loopexit: ; preds = %loop
|
||||
ret i32 %i
|
||||
}
|
||||
|
||||
; CHECK: @linear_setne_2
|
||||
; CHECK-LABEL: @linear_setne_2(
|
||||
; CHECK: ret i32 100
|
||||
|
||||
define i32 @linear_setne_2() {
|
||||
@ -39,7 +39,7 @@ loopexit: ; preds = %loop
|
||||
ret i32 %i
|
||||
}
|
||||
|
||||
; CHECK: @linear_setne_overflow
|
||||
; CHECK-LABEL: @linear_setne_overflow(
|
||||
; CHECK: ret i32 0
|
||||
|
||||
define i32 @linear_setne_overflow() {
|
||||
@ -56,7 +56,7 @@ loopexit: ; preds = %loop
|
||||
ret i32 %i
|
||||
}
|
||||
|
||||
; CHECK: @linear_setlt
|
||||
; CHECK-LABEL: @linear_setlt(
|
||||
; CHECK: ret i32 100
|
||||
|
||||
define i32 @linear_setlt() {
|
||||
@ -73,7 +73,7 @@ loopexit: ; preds = %loop
|
||||
ret i32 %i
|
||||
}
|
||||
|
||||
; CHECK: @quadratic_setlt
|
||||
; CHECK-LABEL: @quadratic_setlt(
|
||||
; CHECK: ret i32 34
|
||||
|
||||
define i32 @quadratic_setlt() {
|
||||
@ -91,7 +91,7 @@ loopexit: ; preds = %loop
|
||||
ret i32 %i
|
||||
}
|
||||
|
||||
; CHECK: @chained
|
||||
; CHECK-LABEL: @chained(
|
||||
; CHECK: ret i32 200
|
||||
|
||||
define i32 @chained() {
|
||||
@ -117,7 +117,7 @@ loopexit2: ; preds = %loop2
|
||||
ret i32 %j
|
||||
}
|
||||
|
||||
; CHECK: @chained4
|
||||
; CHECK-LABEL: @chained4(
|
||||
; CHECK: ret i32 400
|
||||
|
||||
define i32 @chained4() {
|
||||
|
@ -27,6 +27,6 @@ bb14:
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
; CHECK: @foo
|
||||
; CHECK-LABEL: @foo(
|
||||
; CHECK: bb8:
|
||||
; CHECK: udiv
|
||||
|
@ -8,7 +8,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
|
||||
; Indvars shouldn't emit a udiv here, because there's no udiv in the
|
||||
; original code. This comes from SingleSource/Benchmarks/Shootout/sieve.c.
|
||||
|
||||
; CHECK: @main
|
||||
; CHECK-LABEL: @main(
|
||||
; CHECK-NOT: div
|
||||
|
||||
define i32 @main(i32 %argc, i8** nocapture %argv) nounwind {
|
||||
@ -130,7 +130,7 @@ declare i32 @printf(i8* nocapture, ...) nounwind
|
||||
; IndVars shouldn't be afraid to emit a udiv here, since there's a udiv in
|
||||
; the original code.
|
||||
|
||||
; CHECK: @foo
|
||||
; CHECK-LABEL: @foo(
|
||||
; CHECK: for.body.preheader:
|
||||
; CHECK-NEXT: udiv
|
||||
|
||||
|
@ -26,7 +26,7 @@ for.body: ; preds = %entry, %for.body
|
||||
for.end: ; preds = %for.body, %entry
|
||||
ret void
|
||||
|
||||
; CHECK: @test1
|
||||
; CHECK-LABEL: @test1(
|
||||
|
||||
; First check that we move the sub into the preheader, it doesn't have to be
|
||||
; executed if %cmp4 == false
|
||||
|
@ -7,7 +7,7 @@ declare void @llvm.lifetime.start(i64 %size, i8* nocapture %ptr)
|
||||
@glbl = external global i32
|
||||
|
||||
define void @outer1() {
|
||||
; CHECK: @outer1
|
||||
; CHECK-LABEL: @outer1(
|
||||
; CHECK-NOT: call void @inner1
|
||||
%ptr = alloca i32
|
||||
call void @inner1(i32* %ptr)
|
||||
@ -26,7 +26,7 @@ define void @inner1(i32 *%ptr) {
|
||||
}
|
||||
|
||||
define void @outer2() {
|
||||
; CHECK: @outer2
|
||||
; CHECK-LABEL: @outer2(
|
||||
; CHECK: call void @inner2
|
||||
%ptr = alloca i32
|
||||
call void @inner2(i32* %ptr)
|
||||
@ -46,7 +46,7 @@ define void @inner2(i32 *%ptr) {
|
||||
}
|
||||
|
||||
define void @outer3() {
|
||||
; CHECK: @outer3
|
||||
; CHECK-LABEL: @outer3(
|
||||
; CHECK-NOT: call void @inner3
|
||||
%ptr = alloca i32
|
||||
call void @inner3(i32* %ptr, i1 undef)
|
||||
@ -85,7 +85,7 @@ bb.false:
|
||||
}
|
||||
|
||||
define void @outer4(i32 %A) {
|
||||
; CHECK: @outer4
|
||||
; CHECK-LABEL: @outer4(
|
||||
; CHECK-NOT: call void @inner4
|
||||
%ptr = alloca i32
|
||||
call void @inner4(i32* %ptr, i32 %A)
|
||||
@ -126,7 +126,7 @@ bb.false:
|
||||
}
|
||||
|
||||
define void @outer5() {
|
||||
; CHECK: @outer5
|
||||
; CHECK-LABEL: @outer5(
|
||||
; CHECK-NOT: call void @inner5
|
||||
%ptr = alloca i32
|
||||
call void @inner5(i1 false, i32* %ptr)
|
||||
|
@ -8,7 +8,7 @@ define i32 @inner1() alwaysinline {
|
||||
ret i32 1
|
||||
}
|
||||
define i32 @outer1() {
|
||||
; CHECK: @outer1
|
||||
; CHECK-LABEL: @outer1(
|
||||
; CHECK-NOT: call
|
||||
; CHECK: ret
|
||||
|
||||
@ -17,7 +17,7 @@ define i32 @outer1() {
|
||||
}
|
||||
|
||||
; The always inliner can't DCE internal functions. PR2945
|
||||
; CHECK: @pr2945
|
||||
; CHECK-LABEL: @pr2945(
|
||||
define internal i32 @pr2945() nounwind {
|
||||
ret i32 0
|
||||
}
|
||||
@ -31,7 +31,7 @@ define void @outer2(i32 %N) {
|
||||
; a function with a dynamic alloca into one without a dynamic alloca.
|
||||
; rdar://6655932
|
||||
;
|
||||
; CHECK: @outer2
|
||||
; CHECK-LABEL: @outer2(
|
||||
; CHECK-NOT: call void @inner2
|
||||
; CHECK-NOT: call void @inner2
|
||||
; CHECK: ret void
|
||||
@ -51,7 +51,7 @@ entry:
|
||||
}
|
||||
define i32 @outer3() {
|
||||
entry:
|
||||
; CHECK: @outer3
|
||||
; CHECK-LABEL: @outer3(
|
||||
; CHECK-NOT: call i32 @a
|
||||
; CHECK: ret
|
||||
|
||||
@ -69,7 +69,7 @@ entry:
|
||||
|
||||
define i32 @outer4() {
|
||||
entry:
|
||||
; CHECK: @outer4
|
||||
; CHECK-LABEL: @outer4(
|
||||
; CHECK: call i32 @b()
|
||||
; CHECK: ret
|
||||
|
||||
@ -89,7 +89,7 @@ two:
|
||||
ret i32 44
|
||||
}
|
||||
define i32 @outer5(i32 %x) {
|
||||
; CHECK: @outer5
|
||||
; CHECK-LABEL: @outer5(
|
||||
; CHECK: call i32 @inner5
|
||||
; CHECK: ret
|
||||
|
||||
@ -113,7 +113,7 @@ return:
|
||||
ret void
|
||||
}
|
||||
define void @outer6() {
|
||||
; CHECK: @outer6
|
||||
; CHECK-LABEL: @outer6(
|
||||
; CHECK: call void @inner6(i32 42)
|
||||
; CHECK: ret
|
||||
|
||||
|
@ -9,7 +9,7 @@ define i32 @test1(i32 %W) {
|
||||
%X = call i32 @test1f(i32 7)
|
||||
%Y = add i32 %X, %W
|
||||
ret i32 %Y
|
||||
; CHECK: @test1(
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK-NEXT: %Y = add i32 7, %W
|
||||
; CHECK-NEXT: ret i32 %Y
|
||||
}
|
||||
@ -20,7 +20,7 @@ define i32 @test1(i32 %W) {
|
||||
|
||||
%T = type { i32, i32 }
|
||||
|
||||
; CHECK-NOT: @test2f
|
||||
; CHECK-NOT-LABEL: @test2f(
|
||||
define internal %T* @test2f(i1 %cond, %T* %P) {
|
||||
br i1 %cond, label %T, label %F
|
||||
|
||||
@ -41,7 +41,7 @@ define i32 @test2(i1 %cond) {
|
||||
%D = load i32* %C
|
||||
ret i32 %D
|
||||
|
||||
; CHECK: @test2(
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK-NOT: = alloca
|
||||
; CHECK: ret i32
|
||||
}
|
||||
@ -75,7 +75,7 @@ define i32 @test3() {
|
||||
;
|
||||
; The call to @h *can* be inlined.
|
||||
|
||||
; CHECK: @test
|
||||
; CHECK-LABEL: @test(
|
||||
define i32 @test() {
|
||||
; CHECK: call i32 @f()
|
||||
%a = call i32 @f()
|
||||
|
@ -40,5 +40,5 @@ define i32 @test2(i8* %this) ssp align 2 {
|
||||
ret i32 %X
|
||||
}
|
||||
|
||||
; CHECK: @test2
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK-NEXT: ret i32 41
|
||||
|
@ -14,7 +14,7 @@ entry:
|
||||
%X = add i32 %call, 4
|
||||
ret i32 %X
|
||||
|
||||
; CHECK: @foo
|
||||
; CHECK-LABEL: @foo(
|
||||
; CHECK-NEXT: entry:
|
||||
; CHECK-NEXT: store
|
||||
; CHECK-NEXT: store
|
||||
|
@ -19,7 +19,7 @@ define internal void @callee(i32 %N) {
|
||||
}
|
||||
|
||||
define void @foo(i32 %N) {
|
||||
; CHECK: @foo
|
||||
; CHECK-LABEL: @foo(
|
||||
; CHECK: alloca i32, i32 %{{.*}}
|
||||
; CHECK: call i8* @llvm.stacksave()
|
||||
; CHECK: alloca i32, i32 %{{.*}}
|
||||
|
@ -12,9 +12,9 @@ entry:
|
||||
%call = tail call i32 %tmp3() nounwind ; <i32> [#uses=1]
|
||||
ret i32 %call
|
||||
}
|
||||
; CHECK: @foo
|
||||
; CHECK-LABEL: @foo(
|
||||
; CHECK: ret i32 7
|
||||
; CHECK: @bar
|
||||
; CHECK-LABEL: @bar(
|
||||
; CHECK: ret i32 7
|
||||
|
||||
define internal i32 @bar() nounwind readnone ssp {
|
||||
|
@ -21,7 +21,7 @@ define i32 @caller(%struct.sphere* %i) {
|
||||
%call = call i32 @ray_sphere(%struct.sphere* %i, %struct.ray* byval align 8 %shadow_ray, %struct.spoint* null)
|
||||
ret i32 %call
|
||||
|
||||
; CHECK: @caller
|
||||
; CHECK-LABEL: @caller(
|
||||
; CHECK-NOT: call i32 @ray_sphere
|
||||
; CHECK: ret i32
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ UnifiedReturnBlock: ; preds = %cond_next13
|
||||
declare void @ext(i32*)
|
||||
|
||||
define void @test() {
|
||||
; CHECK: @test
|
||||
; CHECK-LABEL: @test(
|
||||
; CHECK-NOT: ret
|
||||
;
|
||||
; FIXME: This should be a CHECK-NOT, but currently we have a bug that causes us
|
||||
@ -202,7 +202,7 @@ for.cond12.for.inc26_crit_edge.2:
|
||||
}
|
||||
|
||||
define void @crasher_outer() {
|
||||
; CHECK: @crasher_outer
|
||||
; CHECK-LABEL: @crasher_outer(
|
||||
; CHECK-NOT: call
|
||||
; CHECK: ret void
|
||||
; CHECK-NOT: ret
|
||||
|
@ -21,7 +21,7 @@ define i32 @caller2() {
|
||||
; inline and be cheap. We should eventually do that and lower the threshold here
|
||||
; to 1.
|
||||
;
|
||||
; CHECK: @caller2
|
||||
; CHECK-LABEL: @caller2(
|
||||
; CHECK-NOT: call void @callee2
|
||||
; CHECK: ret
|
||||
|
||||
@ -61,7 +61,7 @@ define i32 @caller3() {
|
||||
; it doesn't count toward the inline cost when constant-prop proves those paths
|
||||
; dead.
|
||||
;
|
||||
; CHECK: @caller3
|
||||
; CHECK-LABEL: @caller3(
|
||||
; CHECK-NOT: call
|
||||
; CHECK: ret i32 6
|
||||
|
||||
@ -119,7 +119,7 @@ define i8 @caller4(i8 %z) {
|
||||
; as they are used heavily in standard library code and generic C++ code where
|
||||
; the arguments are oftent constant but complete generality is required.
|
||||
;
|
||||
; CHECK: @caller4
|
||||
; CHECK-LABEL: @caller4(
|
||||
; CHECK-NOT: call
|
||||
; CHECK: ret i8 -1
|
||||
|
||||
@ -153,7 +153,7 @@ define i64 @caller5(i64 %y) {
|
||||
; Check that we can round trip constants through various kinds of casts etc w/o
|
||||
; losing track of the constant prop in the inline cost analysis.
|
||||
;
|
||||
; CHECK: @caller5
|
||||
; CHECK-LABEL: @caller5(
|
||||
; CHECK-NOT: call
|
||||
; CHECK: ret i64 -1
|
||||
|
||||
|
@ -200,7 +200,7 @@ for.end21: ; preds = %for.cond14
|
||||
|
||||
define i32 @fct3(i32 %c) nounwind uwtable ssp {
|
||||
entry:
|
||||
;CHECK: @fct3
|
||||
;CHECK-LABEL: @fct3(
|
||||
;CHECK: call i32 @fct1
|
||||
; The inline keyword gives a sufficient benefits to inline fct2
|
||||
;CHECK-NOT: call i32 @fct2
|
||||
@ -216,7 +216,7 @@ entry:
|
||||
|
||||
define i32 @fct4(i32 %c) minsize nounwind uwtable ssp {
|
||||
entry:
|
||||
;CHECK: @fct4
|
||||
;CHECK-LABEL: @fct4(
|
||||
;CHECK: call i32 @fct1
|
||||
; With Oz (minsize attribute), the benefit of inlining fct2
|
||||
; is the same as fct1, thus no inlining for fct2
|
||||
|
@ -10,7 +10,7 @@ define void @helper() {
|
||||
|
||||
; Size in llvm.lifetime.X should be -1 (unknown).
|
||||
define void @test() {
|
||||
; CHECK: @test
|
||||
; CHECK-LABEL: @test(
|
||||
; CHECK-NOT: lifetime
|
||||
; CHECK: llvm.lifetime.start(i64 -1
|
||||
; CHECK-NOT: lifetime
|
||||
|
@ -14,7 +14,7 @@ define void @helper_both_markers() {
|
||||
}
|
||||
|
||||
define void @test_both_markers() {
|
||||
; CHECK: @test_both_markers
|
||||
; CHECK-LABEL: @test_both_markers(
|
||||
; CHECK: llvm.lifetime.start(i64 2
|
||||
; CHECK-NEXT: llvm.lifetime.end(i64 2
|
||||
call void @helper_both_markers()
|
||||
@ -38,7 +38,7 @@ define void @helper_no_markers() {
|
||||
;; We can't use CHECK-NEXT because there's an extra call void @use in between.
|
||||
;; Instead, we use CHECK-NOT to verify that there are no other lifetime calls.
|
||||
define void @test_no_marker() {
|
||||
; CHECK: @test_no_marker
|
||||
; CHECK-LABEL: @test_no_marker(
|
||||
; CHECK-NOT: lifetime
|
||||
; CHECK: llvm.lifetime.start(i64 1
|
||||
; CHECK-NOT: lifetime
|
||||
@ -64,7 +64,7 @@ define void @helper_two_casts() {
|
||||
}
|
||||
|
||||
define void @test_two_casts() {
|
||||
; CHECK: @test_two_casts
|
||||
; CHECK-LABEL: @test_two_casts(
|
||||
; CHECK-NOT: lifetime
|
||||
; CHECK: llvm.lifetime.start(i64 4
|
||||
; CHECK-NOT: lifetime
|
||||
@ -88,7 +88,7 @@ define void @helper_arrays_alloca() {
|
||||
}
|
||||
|
||||
define void @test_arrays_alloca() {
|
||||
; CHECK: @test_arrays_alloca
|
||||
; CHECK-LABEL: @test_arrays_alloca(
|
||||
; CHECK-NOT: lifetime
|
||||
; CHECK: llvm.lifetime.start(i64 40,
|
||||
; CHECK-NOT: lifetime
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user