1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -verify-machineinstrs | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -verify-machineinstrs -fast-isel | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; ModuleID = 'test/dot_s/indirect-import.c' 5*9880d681SAndroid Build Coastguard Workersource_filename = "test/dot_s/indirect-import.c" 6*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128" 7*9880d681SAndroid Build Coastguard Workertarget triple = "wasm32" 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Worker%struct.big = type { float, double, i32 } 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 12*9880d681SAndroid Build Coastguard Worker; CHECK: bar: 13*9880d681SAndroid Build Coastguard Workerdefine hidden i32 @bar() #0 { 14*9880d681SAndroid Build Coastguard Workerentry: 15*9880d681SAndroid Build Coastguard Worker %fd = alloca float (double)*, align 4 16*9880d681SAndroid Build Coastguard Worker %vj = alloca void (i64)*, align 4 17*9880d681SAndroid Build Coastguard Worker %v = alloca void ()*, align 4 18*9880d681SAndroid Build Coastguard Worker %ijidf = alloca i32 (i64, i32, double, float)*, align 4 19*9880d681SAndroid Build Coastguard Worker %vs = alloca void (%struct.big*)*, align 4 20*9880d681SAndroid Build Coastguard Worker %s = alloca void (%struct.big*)*, align 4 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Worker; CHECK: i32.const {{.+}}=, extern_fd@FUNCTION 23*9880d681SAndroid Build Coastguard Worker store float (double)* @extern_fd, float (double)** %fd, align 4 24*9880d681SAndroid Build Coastguard Worker; CHECK: i32.const {{.+}}=, extern_vj@FUNCTION 25*9880d681SAndroid Build Coastguard Worker store void (i64)* @extern_vj, void (i64)** %vj, align 4 26*9880d681SAndroid Build Coastguard Worker %0 = load void (i64)*, void (i64)** %vj, align 4 27*9880d681SAndroid Build Coastguard Worker call void %0(i64 1) 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker; CHECK: i32.const {{.+}}=, extern_v@FUNCTION 30*9880d681SAndroid Build Coastguard Worker store void ()* @extern_v, void ()** %v, align 4 31*9880d681SAndroid Build Coastguard Worker %1 = load void ()*, void ()** %v, align 4 32*9880d681SAndroid Build Coastguard Worker call void %1() 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Worker; CHECK: i32.const {{.+}}=, extern_ijidf@FUNCTION 35*9880d681SAndroid Build Coastguard Worker store i32 (i64, i32, double, float)* @extern_ijidf, i32 (i64, i32, double, float)** %ijidf, align 4 36*9880d681SAndroid Build Coastguard Worker %2 = load i32 (i64, i32, double, float)*, i32 (i64, i32, double, float)** %ijidf, align 4 37*9880d681SAndroid Build Coastguard Worker %call = call i32 %2(i64 1, i32 2, double 3.000000e+00, float 4.000000e+00) 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Worker; CHECK: i32.const {{.+}}=, extern_struct@FUNCTION 40*9880d681SAndroid Build Coastguard Worker store void (%struct.big*)* @extern_struct, void (%struct.big*)** %vs, align 4 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker; CHECK: i32.const {{.+}}=, extern_sret@FUNCTION 43*9880d681SAndroid Build Coastguard Worker store void (%struct.big*)* @extern_sret, void (%struct.big*)** %s, align 4 44*9880d681SAndroid Build Coastguard Worker %3 = load float (double)*, float (double)** %fd, align 4 45*9880d681SAndroid Build Coastguard Worker %4 = ptrtoint float (double)* %3 to i32 46*9880d681SAndroid Build Coastguard Worker ret i32 %4 47*9880d681SAndroid Build Coastguard Worker} 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Workerdeclare float @extern_fd(double) #1 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Workerdeclare void @extern_vj(i64) #1 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Workerdeclare void @extern_v() #1 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Workerdeclare i32 @extern_ijidf(i64, i32, double, float) #1 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Workerdeclare void @extern_struct(%struct.big* byval align 8) #1 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Workerdeclare void @extern_sret(%struct.big* sret) #1 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Workerdeclare i128 @extern_i128ret(i64) #1 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="generic" "unsafe-fp-math"="false" "use-soft-float"="false" } 64*9880d681SAndroid Build Coastguard Workerattributes #1 = { "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="generic" "unsafe-fp-math"="false" "use-soft-float"="false" } 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Worker 67*9880d681SAndroid Build Coastguard Worker; CHECK: .functype extern_fd, f32, f64 68*9880d681SAndroid Build Coastguard Worker; CHECK: .functype extern_vj, void, i64 69*9880d681SAndroid Build Coastguard Worker; CHECK: .functype extern_v, void 70*9880d681SAndroid Build Coastguard Worker; CHECK: .functype extern_ijidf, i32, i64, i32, f64, f32 71*9880d681SAndroid Build Coastguard Worker; CHECK: .functype extern_struct, void, i32 72*9880d681SAndroid Build Coastguard Worker; CHECK: .functype extern_sret, void, i32 73*9880d681SAndroid Build Coastguard Worker; CHECK: .functype extern_i128ret, void, i32, i64 74