xref: /aosp_15_r20/external/llvm/test/CodeGen/PowerPC/ppcf128sf.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc  -mtriple=powerpc-unknown-linux-gnu -O0 < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker@ld = common global ppc_fp128 0xM00000000000000000000000000000000, align 16
4*9880d681SAndroid Build Coastguard Worker@ld2 = common global ppc_fp128 0xM00000000000000000000000000000000, align 16
5*9880d681SAndroid Build Coastguard Worker@d = common global double 0.000000e+00, align 8
6*9880d681SAndroid Build Coastguard Worker@f = common global float 0.000000e+00, align 4
7*9880d681SAndroid Build Coastguard Worker@i = common global i32 0, align 4
8*9880d681SAndroid Build Coastguard Worker@ui = common global i32 0, align 4
9*9880d681SAndroid Build Coastguard Worker@var = common global i8 0, align 1
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Workerdefine void @foo() #0 {
12*9880d681SAndroid Build Coastguard Workerentry:
13*9880d681SAndroid Build Coastguard Worker  %c = alloca ppc_fp128, align 16
14*9880d681SAndroid Build Coastguard Worker  %0 = load ppc_fp128, ppc_fp128* @ld, align 16
15*9880d681SAndroid Build Coastguard Worker  %1 = load ppc_fp128, ppc_fp128* @ld2, align 16
16*9880d681SAndroid Build Coastguard Worker  %add = fadd ppc_fp128 %0, %1
17*9880d681SAndroid Build Coastguard Worker  store ppc_fp128 %add, ppc_fp128* %c, align 16
18*9880d681SAndroid Build Coastguard Worker  %2 = load ppc_fp128, ppc_fp128* @ld, align 16
19*9880d681SAndroid Build Coastguard Worker  %3 = load ppc_fp128, ppc_fp128* @ld2, align 16
20*9880d681SAndroid Build Coastguard Worker  %sub = fsub ppc_fp128 %2, %3
21*9880d681SAndroid Build Coastguard Worker  store ppc_fp128 %sub, ppc_fp128* %c, align 16
22*9880d681SAndroid Build Coastguard Worker  %4 = load ppc_fp128, ppc_fp128* @ld, align 16
23*9880d681SAndroid Build Coastguard Worker  %5 = load ppc_fp128, ppc_fp128* @ld2, align 16
24*9880d681SAndroid Build Coastguard Worker  %mul = fmul ppc_fp128 %4, %5
25*9880d681SAndroid Build Coastguard Worker  store ppc_fp128 %mul, ppc_fp128* %c, align 16
26*9880d681SAndroid Build Coastguard Worker  %6 = load ppc_fp128, ppc_fp128* @ld, align 16
27*9880d681SAndroid Build Coastguard Worker  %7 = load ppc_fp128, ppc_fp128* @ld2, align 16
28*9880d681SAndroid Build Coastguard Worker  %div = fdiv ppc_fp128 %6, %7
29*9880d681SAndroid Build Coastguard Worker  store ppc_fp128 %div, ppc_fp128* %c, align 16
30*9880d681SAndroid Build Coastguard Worker  ret void
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL:    __gcc_qadd
33*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL:    __gcc_qsub
34*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL:    __gcc_qmul
35*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL:    __gcc_qdiv
36*9880d681SAndroid Build Coastguard Worker}
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Workerdefine void @foo1() #0 {
39*9880d681SAndroid Build Coastguard Workerentry:
40*9880d681SAndroid Build Coastguard Worker  %0 = load double, double* @d, align 8
41*9880d681SAndroid Build Coastguard Worker  %conv = fpext double %0 to ppc_fp128
42*9880d681SAndroid Build Coastguard Worker  store ppc_fp128 %conv, ppc_fp128* @ld, align 16
43*9880d681SAndroid Build Coastguard Worker  ret void
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL:    __gcc_dtoq
46*9880d681SAndroid Build Coastguard Worker}
47*9880d681SAndroid Build Coastguard Worker
48*9880d681SAndroid Build Coastguard Workerdefine void @foo2() #0 {
49*9880d681SAndroid Build Coastguard Workerentry:
50*9880d681SAndroid Build Coastguard Worker  %0 = load ppc_fp128, ppc_fp128* @ld, align 16
51*9880d681SAndroid Build Coastguard Worker  %conv = fptrunc ppc_fp128 %0 to double
52*9880d681SAndroid Build Coastguard Worker  store double %conv, double* @d, align 8
53*9880d681SAndroid Build Coastguard Worker  ret void
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL:    __gcc_qtod
56*9880d681SAndroid Build Coastguard Worker}
57*9880d681SAndroid Build Coastguard Worker
58*9880d681SAndroid Build Coastguard Workerdefine void @foo3() #0 {
59*9880d681SAndroid Build Coastguard Workerentry:
60*9880d681SAndroid Build Coastguard Worker  %0 = load ppc_fp128, ppc_fp128* @ld, align 16
61*9880d681SAndroid Build Coastguard Worker  %conv = fptrunc ppc_fp128 %0 to float
62*9880d681SAndroid Build Coastguard Worker  store float %conv, float* @f, align 4
63*9880d681SAndroid Build Coastguard Worker  ret void
64*9880d681SAndroid Build Coastguard Worker
65*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL:    __gcc_qtos
66*9880d681SAndroid Build Coastguard Worker}
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Workerdefine void @foo4() #0 {
69*9880d681SAndroid Build Coastguard Workerentry:
70*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* @i, align 4
71*9880d681SAndroid Build Coastguard Worker  %conv = sitofp i32 %0 to ppc_fp128
72*9880d681SAndroid Build Coastguard Worker  store ppc_fp128 %conv, ppc_fp128* @ld, align 16
73*9880d681SAndroid Build Coastguard Worker  ret void
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL:    __gcc_itoq
76*9880d681SAndroid Build Coastguard Worker}
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard Workerdefine void @foo5() #0 {
79*9880d681SAndroid Build Coastguard Workerentry:
80*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* @ui, align 4
81*9880d681SAndroid Build Coastguard Worker  %conv = uitofp i32 %0 to ppc_fp128
82*9880d681SAndroid Build Coastguard Worker  store ppc_fp128 %conv, ppc_fp128* @ld, align 16
83*9880d681SAndroid Build Coastguard Worker  ret void
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL:    __gcc_utoq
86*9880d681SAndroid Build Coastguard Worker}
87*9880d681SAndroid Build Coastguard Worker
88*9880d681SAndroid Build Coastguard Workerdefine void @foo6() #0 {
89*9880d681SAndroid Build Coastguard Workerentry:
90*9880d681SAndroid Build Coastguard Worker  %0 = load ppc_fp128, ppc_fp128* @ld, align 16
91*9880d681SAndroid Build Coastguard Worker  %1 = load ppc_fp128, ppc_fp128* @ld2, align 16
92*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp oeq ppc_fp128 %0, %1
93*9880d681SAndroid Build Coastguard Worker  %conv = zext i1 %cmp to i32
94*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %conv to i8
95*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* @var, align 1
96*9880d681SAndroid Build Coastguard Worker  ret void
97*9880d681SAndroid Build Coastguard Worker
98*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL:    __gcc_qeq
99*9880d681SAndroid Build Coastguard Worker}
100*9880d681SAndroid Build Coastguard Worker
101*9880d681SAndroid Build Coastguard Workerdefine void @foo7() #0 {
102*9880d681SAndroid Build Coastguard Workerentry:
103*9880d681SAndroid Build Coastguard Worker  %0 = load ppc_fp128, ppc_fp128* @ld, align 16
104*9880d681SAndroid Build Coastguard Worker  %1 = load ppc_fp128, ppc_fp128* @ld2, align 16
105*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp une ppc_fp128 %0, %1
106*9880d681SAndroid Build Coastguard Worker  %conv = zext i1 %cmp to i32
107*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %conv to i8
108*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* @var, align 1
109*9880d681SAndroid Build Coastguard Worker  ret void
110*9880d681SAndroid Build Coastguard Worker
111*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL:    __gcc_qne
112*9880d681SAndroid Build Coastguard Worker}
113*9880d681SAndroid Build Coastguard Worker
114*9880d681SAndroid Build Coastguard Workerdefine void @foo8() #0 {
115*9880d681SAndroid Build Coastguard Workerentry:
116*9880d681SAndroid Build Coastguard Worker  %0 = load ppc_fp128, ppc_fp128* @ld, align 16
117*9880d681SAndroid Build Coastguard Worker  %1 = load ppc_fp128, ppc_fp128* @ld2, align 16
118*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ogt ppc_fp128 %0, %1
119*9880d681SAndroid Build Coastguard Worker  %conv = zext i1 %cmp to i32
120*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %conv to i8
121*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* @var, align 1
122*9880d681SAndroid Build Coastguard Worker  ret void
123*9880d681SAndroid Build Coastguard Worker
124*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL:    __gcc_qgt
125*9880d681SAndroid Build Coastguard Worker}
126*9880d681SAndroid Build Coastguard Worker
127*9880d681SAndroid Build Coastguard Workerdefine void @foo9() #0 {
128*9880d681SAndroid Build Coastguard Workerentry:
129*9880d681SAndroid Build Coastguard Worker  %0 = load ppc_fp128, ppc_fp128* @ld, align 16
130*9880d681SAndroid Build Coastguard Worker  %1 = load ppc_fp128, ppc_fp128* @ld2, align 16
131*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp olt ppc_fp128 %0, %1
132*9880d681SAndroid Build Coastguard Worker  %conv = zext i1 %cmp to i32
133*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %conv to i8
134*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* @var, align 1
135*9880d681SAndroid Build Coastguard Worker  ret void
136*9880d681SAndroid Build Coastguard Worker
137*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL:    __gcc_qlt
138*9880d681SAndroid Build Coastguard Worker}
139*9880d681SAndroid Build Coastguard Worker
140*9880d681SAndroid Build Coastguard Workerdefine void @foo10() #0 {
141*9880d681SAndroid Build Coastguard Workerentry:
142*9880d681SAndroid Build Coastguard Worker  %0 = load ppc_fp128, ppc_fp128* @ld, align 16
143*9880d681SAndroid Build Coastguard Worker  %1 = load ppc_fp128, ppc_fp128* @ld2, align 16
144*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ole ppc_fp128 %0, %1
145*9880d681SAndroid Build Coastguard Worker  %conv = zext i1 %cmp to i32
146*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %conv to i8
147*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* @var, align 1
148*9880d681SAndroid Build Coastguard Worker  ret void
149*9880d681SAndroid Build Coastguard Worker
150*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL:    __gcc_qle
151*9880d681SAndroid Build Coastguard Worker}
152*9880d681SAndroid Build Coastguard Worker
153*9880d681SAndroid Build Coastguard Workerdefine void @foo11() #0 {
154*9880d681SAndroid Build Coastguard Workerentry:
155*9880d681SAndroid Build Coastguard Worker  %0 = load ppc_fp128, ppc_fp128* @ld, align 16
156*9880d681SAndroid Build Coastguard Worker  %1 = load ppc_fp128, ppc_fp128* @ld, align 16
157*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp une ppc_fp128 %0, %1
158*9880d681SAndroid Build Coastguard Worker  %conv = zext i1 %cmp to i32
159*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %conv to i8
160*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* @var, align 1
161*9880d681SAndroid Build Coastguard Worker  ret void
162*9880d681SAndroid Build Coastguard Worker
163*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL:    __gcc_qunord
164*9880d681SAndroid Build Coastguard Worker}
165*9880d681SAndroid Build Coastguard Worker
166*9880d681SAndroid Build Coastguard Workerdefine void @foo12() #0 {
167*9880d681SAndroid Build Coastguard Workerentry:
168*9880d681SAndroid Build Coastguard Worker  %0 = load ppc_fp128, ppc_fp128* @ld, align 16
169*9880d681SAndroid Build Coastguard Worker  %1 = load ppc_fp128, ppc_fp128* @ld2, align 16
170*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp oge ppc_fp128 %0, %1
171*9880d681SAndroid Build Coastguard Worker  %conv = zext i1 %cmp to i32
172*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %conv to i8
173*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* @var, align 1
174*9880d681SAndroid Build Coastguard Worker  ret void
175*9880d681SAndroid Build Coastguard Worker
176*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL:    __gcc_qge
177*9880d681SAndroid Build Coastguard Worker}
178*9880d681SAndroid Build Coastguard Worker
179*9880d681SAndroid Build Coastguard Workerattributes #0 = { "use-soft-float"="true" }
180