You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.207
Former-commit-id: 3b152f462918d427ce18620a2cbe4f8b79650449
This commit is contained in:
parent
8e12397d70
commit
eb85e2fc17
@ -1,194 +0,0 @@
|
||||
; RUN: opt -S -inline -inline-threshold=275 < %s | FileCheck %s
|
||||
; RUN: opt -S -passes='cgscc(inline)' -inline-threshold=275 < %s | FileCheck %s
|
||||
; PR13095
|
||||
|
||||
; The performance of the c-ray benchmark largely depends on the inlining of a
|
||||
; specific call to @ray_sphere. This test case is designed to verify that it's
|
||||
; inlined at -O3.
|
||||
|
||||
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-S128"
|
||||
target triple = "x86_64-apple-macosx10.8.0"
|
||||
|
||||
%struct.sphere = type { %struct.vec3, double, %struct.material, %struct.sphere* }
|
||||
%struct.vec3 = type { double, double, double }
|
||||
%struct.material = type { %struct.vec3, double, double }
|
||||
%struct.ray = type { %struct.vec3, %struct.vec3 }
|
||||
%struct.spoint = type { %struct.vec3, %struct.vec3, %struct.vec3, double }
|
||||
|
||||
define i32 @caller(%struct.sphere* %i) {
|
||||
%shadow_ray = alloca %struct.ray, align 8
|
||||
call void @fix(%struct.ray* %shadow_ray)
|
||||
|
||||
%call = call i32 @ray_sphere(%struct.sphere* %i, %struct.ray* byval align 8 %shadow_ray, %struct.spoint* null)
|
||||
ret i32 %call
|
||||
|
||||
; CHECK-LABEL: @caller(
|
||||
; CHECK-NOT: call i32 @ray_sphere
|
||||
; CHECK: ret i32
|
||||
}
|
||||
|
||||
declare void @fix(%struct.ray*)
|
||||
|
||||
define i32 @ray_sphere(%struct.sphere* nocapture %sph, %struct.ray* nocapture byval align 8 %ray, %struct.spoint* %sp) nounwind uwtable ssp {
|
||||
%1 = getelementptr inbounds %struct.ray, %struct.ray* %ray, i64 0, i32 1, i32 0
|
||||
%2 = load double, double* %1, align 8
|
||||
%3 = fmul double %2, %2
|
||||
%4 = getelementptr inbounds %struct.ray, %struct.ray* %ray, i64 0, i32 1, i32 1
|
||||
%5 = load double, double* %4, align 8
|
||||
%6 = fmul double %5, %5
|
||||
%7 = fadd double %3, %6
|
||||
%8 = getelementptr inbounds %struct.ray, %struct.ray* %ray, i64 0, i32 1, i32 2
|
||||
%9 = load double, double* %8, align 8
|
||||
%10 = fmul double %9, %9
|
||||
%11 = fadd double %7, %10
|
||||
%12 = fmul double %2, 2.000000e+00
|
||||
%13 = getelementptr inbounds %struct.ray, %struct.ray* %ray, i64 0, i32 0, i32 0
|
||||
%14 = load double, double* %13, align 8
|
||||
%15 = getelementptr inbounds %struct.sphere, %struct.sphere* %sph, i64 0, i32 0, i32 0
|
||||
%16 = load double, double* %15, align 8
|
||||
%17 = fsub double %14, %16
|
||||
%18 = fmul double %12, %17
|
||||
%19 = fmul double %5, 2.000000e+00
|
||||
%20 = getelementptr inbounds %struct.ray, %struct.ray* %ray, i64 0, i32 0, i32 1
|
||||
%21 = load double, double* %20, align 8
|
||||
%22 = getelementptr inbounds %struct.sphere, %struct.sphere* %sph, i64 0, i32 0, i32 1
|
||||
%23 = load double, double* %22, align 8
|
||||
%24 = fsub double %21, %23
|
||||
%25 = fmul double %19, %24
|
||||
%26 = fadd double %18, %25
|
||||
%27 = fmul double %9, 2.000000e+00
|
||||
%28 = getelementptr inbounds %struct.ray, %struct.ray* %ray, i64 0, i32 0, i32 2
|
||||
%29 = load double, double* %28, align 8
|
||||
%30 = getelementptr inbounds %struct.sphere, %struct.sphere* %sph, i64 0, i32 0, i32 2
|
||||
%31 = load double, double* %30, align 8
|
||||
%32 = fsub double %29, %31
|
||||
%33 = fmul double %27, %32
|
||||
%34 = fadd double %26, %33
|
||||
%35 = fmul double %16, %16
|
||||
%36 = fmul double %23, %23
|
||||
%37 = fadd double %35, %36
|
||||
%38 = fmul double %31, %31
|
||||
%39 = fadd double %37, %38
|
||||
%40 = fmul double %14, %14
|
||||
%41 = fadd double %40, %39
|
||||
%42 = fmul double %21, %21
|
||||
%43 = fadd double %42, %41
|
||||
%44 = fmul double %29, %29
|
||||
%45 = fadd double %44, %43
|
||||
%46 = fsub double -0.000000e+00, %16
|
||||
%47 = fmul double %14, %46
|
||||
%48 = fmul double %21, %23
|
||||
%49 = fsub double %47, %48
|
||||
%50 = fmul double %29, %31
|
||||
%51 = fsub double %49, %50
|
||||
%52 = fmul double %51, 2.000000e+00
|
||||
%53 = fadd double %52, %45
|
||||
%54 = getelementptr inbounds %struct.sphere, %struct.sphere* %sph, i64 0, i32 1
|
||||
%55 = load double, double* %54, align 8
|
||||
%56 = fmul double %55, %55
|
||||
%57 = fsub double %53, %56
|
||||
%58 = fmul double %34, %34
|
||||
%59 = fmul double %11, 4.000000e+00
|
||||
%60 = fmul double %59, %57
|
||||
%61 = fsub double %58, %60
|
||||
%62 = fcmp olt double %61, 0.000000e+00
|
||||
br i1 %62, label %130, label %63
|
||||
|
||||
; <label>:63 ; preds = %0
|
||||
%64 = tail call double @sqrt(double %61) nounwind readnone
|
||||
%65 = fsub double -0.000000e+00, %34
|
||||
%66 = fsub double %64, %34
|
||||
%67 = fmul double %11, 2.000000e+00
|
||||
%68 = fdiv double %66, %67
|
||||
%69 = fsub double %65, %64
|
||||
%70 = fdiv double %69, %67
|
||||
%71 = fcmp olt double %68, 1.000000e-06
|
||||
%72 = fcmp olt double %70, 1.000000e-06
|
||||
%or.cond = and i1 %71, %72
|
||||
br i1 %or.cond, label %130, label %73
|
||||
|
||||
; <label>:73 ; preds = %63
|
||||
%74 = fcmp ogt double %68, 1.000000e+00
|
||||
%75 = fcmp ogt double %70, 1.000000e+00
|
||||
%or.cond1 = and i1 %74, %75
|
||||
br i1 %or.cond1, label %130, label %76
|
||||
|
||||
; <label>:76 ; preds = %73
|
||||
%77 = icmp eq %struct.spoint* %sp, null
|
||||
br i1 %77, label %130, label %78
|
||||
|
||||
; <label>:78 ; preds = %76
|
||||
%t1.0 = select i1 %71, double %70, double %68
|
||||
%t2.0 = select i1 %72, double %t1.0, double %70
|
||||
%79 = fcmp olt double %t1.0, %t2.0
|
||||
%80 = select i1 %79, double %t1.0, double %t2.0
|
||||
%81 = getelementptr inbounds %struct.spoint, %struct.spoint* %sp, i64 0, i32 3
|
||||
store double %80, double* %81, align 8
|
||||
%82 = fmul double %80, %2
|
||||
%83 = fadd double %14, %82
|
||||
%84 = getelementptr inbounds %struct.spoint, %struct.spoint* %sp, i64 0, i32 0, i32 0
|
||||
store double %83, double* %84, align 8
|
||||
%85 = fmul double %5, %80
|
||||
%86 = fadd double %21, %85
|
||||
%87 = getelementptr inbounds %struct.spoint, %struct.spoint* %sp, i64 0, i32 0, i32 1
|
||||
store double %86, double* %87, align 8
|
||||
%88 = fmul double %9, %80
|
||||
%89 = fadd double %29, %88
|
||||
%90 = getelementptr inbounds %struct.spoint, %struct.spoint* %sp, i64 0, i32 0, i32 2
|
||||
store double %89, double* %90, align 8
|
||||
%91 = load double, double* %15, align 8
|
||||
%92 = fsub double %83, %91
|
||||
%93 = load double, double* %54, align 8
|
||||
%94 = fdiv double %92, %93
|
||||
%95 = getelementptr inbounds %struct.spoint, %struct.spoint* %sp, i64 0, i32 1, i32 0
|
||||
store double %94, double* %95, align 8
|
||||
%96 = load double, double* %22, align 8
|
||||
%97 = fsub double %86, %96
|
||||
%98 = load double, double* %54, align 8
|
||||
%99 = fdiv double %97, %98
|
||||
%100 = getelementptr inbounds %struct.spoint, %struct.spoint* %sp, i64 0, i32 1, i32 1
|
||||
store double %99, double* %100, align 8
|
||||
%101 = load double, double* %30, align 8
|
||||
%102 = fsub double %89, %101
|
||||
%103 = load double, double* %54, align 8
|
||||
%104 = fdiv double %102, %103
|
||||
%105 = getelementptr inbounds %struct.spoint, %struct.spoint* %sp, i64 0, i32 1, i32 2
|
||||
store double %104, double* %105, align 8
|
||||
%106 = fmul double %2, %94
|
||||
%107 = fmul double %5, %99
|
||||
%108 = fadd double %106, %107
|
||||
%109 = fmul double %9, %104
|
||||
%110 = fadd double %108, %109
|
||||
%111 = fmul double %110, 2.000000e+00
|
||||
%112 = fmul double %94, %111
|
||||
%113 = fsub double %112, %2
|
||||
%114 = fsub double -0.000000e+00, %113
|
||||
%115 = fmul double %99, %111
|
||||
%116 = fsub double %115, %5
|
||||
%117 = fsub double -0.000000e+00, %116
|
||||
%118 = fmul double %104, %111
|
||||
%119 = fsub double %118, %9
|
||||
%120 = fsub double -0.000000e+00, %119
|
||||
%.06 = getelementptr inbounds %struct.spoint, %struct.spoint* %sp, i64 0, i32 2, i32 0
|
||||
%.18 = getelementptr inbounds %struct.spoint, %struct.spoint* %sp, i64 0, i32 2, i32 1
|
||||
%.210 = getelementptr inbounds %struct.spoint, %struct.spoint* %sp, i64 0, i32 2, i32 2
|
||||
%121 = fmul double %113, %113
|
||||
%122 = fmul double %116, %116
|
||||
%123 = fadd double %121, %122
|
||||
%124 = fmul double %119, %119
|
||||
%125 = fadd double %123, %124
|
||||
%126 = tail call double @sqrt(double %125) nounwind readnone
|
||||
%127 = fdiv double %114, %126
|
||||
store double %127, double* %.06, align 8
|
||||
%128 = fdiv double %117, %126
|
||||
store double %128, double* %.18, align 8
|
||||
%129 = fdiv double %120, %126
|
||||
store double %129, double* %.210, align 8
|
||||
br label %130
|
||||
|
||||
; <label>:130 ; preds = %78, %76, %73, %63, %0
|
||||
%.0 = phi i32 [ 0, %0 ], [ 0, %73 ], [ 0, %63 ], [ 1, %76 ], [ 1, %78 ]
|
||||
ret i32 %.0
|
||||
}
|
||||
|
||||
declare double @sqrt(double) nounwind readnone
|
Reference in New Issue
Block a user