xref: /aosp_15_r20/external/llvm/test/CodeGen/Mips/mips64-f128-call.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mips64el -mcpu=mips64r2 < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker@gld0 = external global fp128
4*9880d681SAndroid Build Coastguard Worker@gld1 = external global fp128
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker; CHECK: foo0
7*9880d681SAndroid Build Coastguard Worker; CHECK: sdc1  $f13, 8(${{[0-9]+}})
8*9880d681SAndroid Build Coastguard Worker; CHECK: sdc1  $f12, 0(${{[0-9]+}})
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Workerdefine void @foo0(fp128 %a0) {
11*9880d681SAndroid Build Coastguard Workerentry:
12*9880d681SAndroid Build Coastguard Worker  store fp128 %a0, fp128* @gld0, align 16
13*9880d681SAndroid Build Coastguard Worker  ret void
14*9880d681SAndroid Build Coastguard Worker}
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Worker; CHECK: foo1
17*9880d681SAndroid Build Coastguard Worker; CHECK: ldc1  $f13, 8(${{[0-9]+}})
18*9880d681SAndroid Build Coastguard Worker; CHECK: ldc1  $f12, 0(${{[0-9]+}})
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Workerdefine void @foo1() {
21*9880d681SAndroid Build Coastguard Workerentry:
22*9880d681SAndroid Build Coastguard Worker  %0 = load fp128, fp128* @gld0, align 16
23*9880d681SAndroid Build Coastguard Worker  tail call void @foo2(fp128 %0)
24*9880d681SAndroid Build Coastguard Worker  ret void
25*9880d681SAndroid Build Coastguard Worker}
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Workerdeclare void @foo2(fp128)
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Worker; CHECK: foo3
30*9880d681SAndroid Build Coastguard Worker; CHECK: ld   $[[R0:[0-9]+]], %got_disp(gld0)
31*9880d681SAndroid Build Coastguard Worker; CHECK: sdc1 $f2, 8($[[R0]])
32*9880d681SAndroid Build Coastguard Worker; CHECK: sdc1 $f0, 0($[[R0]])
33*9880d681SAndroid Build Coastguard Worker; CHECK: ld   $[[R1:[0-9]+]], %got_disp(gld1)
34*9880d681SAndroid Build Coastguard Worker; CHECK: ldc1 $f0, 0($[[R1]])
35*9880d681SAndroid Build Coastguard Worker; CHECK: ldc1 $f2, 8($[[R1]])
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Workerdefine fp128 @foo3() {
38*9880d681SAndroid Build Coastguard Workerentry:
39*9880d681SAndroid Build Coastguard Worker  %call = tail call fp128 @foo4()
40*9880d681SAndroid Build Coastguard Worker  store fp128 %call, fp128* @gld0, align 16
41*9880d681SAndroid Build Coastguard Worker  %0 = load fp128, fp128* @gld1, align 16
42*9880d681SAndroid Build Coastguard Worker  ret fp128 %0
43*9880d681SAndroid Build Coastguard Worker}
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Workerdeclare fp128 @foo4()
46