// Test AArch64 ABI rewrite of struct passed by value (BIND(C), VALUE derived types). // RUN: fir-opt --target-rewrite="target=aarch64-unknown-linux-gnu" %s | FileCheck %s // CHECK-LABEL: func.func private @small_i32(!fir.array<2xi64>) func.func private @small_i32(!fir.type) // CHECK-LABEL: func.func private @small_i64(!fir.array<2xi64>) func.func private @small_i64(!fir.type) // CHECK-LABEL: func.func private @small_mixed(!fir.array<2xi64>) func.func private @small_mixed(!fir.type) // CHECK-LABEL: func.func private @small_non_hfa(!fir.array<2xi64>) func.func private @small_non_hfa(!fir.type) // CHECK-LABEL: func.func private @hfa_f16(!fir.type) func.func private @hfa_f16(!fir.type) // CHECK-LABEL: func.func private @hfa_bf16(!fir.type) func.func private @hfa_bf16(!fir.type) // CHECK-LABEL: func.func private @hfa_f32(!fir.type) func.func private @hfa_f32(!fir.type) // CHECK-LABEL: func.func private @hfa_f64(!fir.type) func.func private @hfa_f64(!fir.type) // CHECK-LABEL: func.func private @hfa_f128(!fir.type) func.func private @hfa_f128(!fir.type) // CHECK-LABEL: func.func private @multi_small_integer(!fir.array<2xi64>, !fir.array<2xi64>) func.func private @multi_small_integer(!fir.type, !fir.type) // CHECK-LABEL: func.func private @multi_hfas(!fir.type, !fir.type) func.func private @multi_hfas(!fir.type, !fir.type) // CHECK-LABEL: func.func private @multi_mixed(!fir.type, !fir.array<2xi64>, !fir.type, !fir.array<2xi64>) func.func private @multi_mixed(!fir.type,!fir.type,!fir.type,!fir.type) // CHECK-LABEL: func.func private @int_max(!fir.array<2xi64>, // CHECK-SAME: !fir.array<2xi64>, // CHECK-SAME: !fir.array<2xi64>, // CHECK-SAME: !fir.array<2xi64>) func.func private @int_max(!fir.type, !fir.type, !fir.type, !fir.type) // CHECK-LABEL: func.func private @hfa_max(!fir.type, !fir.type) func.func private @hfa_max(!fir.type, !fir.type) // CHECK-LABEL: func.func private @max(!fir.type, // CHECK-SAME: !fir.type, // CHECK-SAME: !fir.array<2xi64>, // CHECK-SAME: !fir.array<2xi64>, // CHECK-SAME: !fir.array<2xi64>, // CHECK-SAME: !fir.array<2xi64>) func.func private @max(!fir.type, !fir.type, !fir.type, !fir.type, !fir.type, !fir.type) // CHECK-LABEL: func.func private @too_many_int(!fir.array<2xi64>, // CHECK-SAME: !fir.array<2xi64>, // CHECK-SAME: !fir.array<2xi64>, // CHECK-SAME: !fir.array<2xi64>, // CHECK-SAME: !fir.ref> {{{.*}}, llvm.byval = !fir.type}) func.func private @too_many_int(!fir.type, !fir.type, !fir.type, !fir.type, !fir.type) // CHECK-LABEL: func.func private @too_many_hfa(!fir.type, // CHECK-SAME: !fir.type, // CHECK-SAME: !fir.ref> {{{.*}}, llvm.byval = !fir.type}) func.func private @too_many_hfa(!fir.type, !fir.type, !fir.type) // CHECK-LABEL: func.func private @too_big(!fir.ref}>> {{{.*}}, llvm.byval = !fir.type}>}) func.func private @too_big(!fir.type}>) // CHECK-LABEL: func.func private @pointer_type(!fir.ref, !fir.array<1xi64>) func.func private @pointer_type(!fir.ref, !fir.type) // CHECK-LABEL: func.func private @pointer_type_too_many_int(!fir.ref, // CHECK-SAME: !fir.array<2xi64>, // CHECK-SAME: !fir.array<2xi64>, // CHECK-SAME: !fir.array<2xi64>, // CHECK-SAME: !fir.ref> {{{.*}}, llvm.byval = !fir.type}) func.func private @pointer_type_too_many_int(!fir.ref, !fir.type, !fir.type, !fir.type, !fir.type)