File: float_ops.ll

package info (click to toggle)
llvm-toolchain-19 1%3A19.1.7-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, trixie
  • size: 1,998,520 kB
  • sloc: cpp: 6,951,680; ansic: 1,486,157; asm: 913,598; python: 232,024; f90: 80,126; objc: 75,281; lisp: 37,276; pascal: 16,990; sh: 10,009; ml: 5,058; perl: 4,724; awk: 3,523; makefile: 3,167; javascript: 2,504; xml: 892; fortran: 664; cs: 573
file content (156 lines) | stat: -rw-r--r-- 3,907 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
; RUN: llvm-as < %s | llvm-dis > %t.orig
; RUN: llvm-as < %s | llvm-c-test --echo > %t.echo
; RUN: diff -w %t.orig %t.echo
;
source_filename = "/test/Bindings/float_ops.ll"
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"


define float @float_ops_f32(float %a, float %b) {
  %1 = fneg float %a

  %2 = fadd float %a, %b
  %3 = fsub float %a, %b
  %4 = fmul float %a, %b
  %5 = fdiv float %a, %b
  %6 = frem float %a, %b

  ret float %1
}

define double @float_ops_f64(double %a, double %b) {
  %1 = fneg double %a

  %2 = fadd double %a, %b
  %3 = fsub double %a, %b
  %4 = fmul double %a, %b
  %5 = fdiv double %a, %b
  %6 = frem double %a, %b

  ret double %1
}

define void @float_cmp_f32(float %a, float %b) {
  %1  = fcmp oeq float %a, %b
  %2  = fcmp ogt float %a, %b
  %3  = fcmp olt float %a, %b
  %4  = fcmp ole float %a, %b
  %5  = fcmp one float %a, %b

  %6  = fcmp ueq float %a, %b
  %7  = fcmp ugt float %a, %b
  %8  = fcmp ult float %a, %b
  %9  = fcmp ule float %a, %b
  %10 = fcmp une float %a, %b

  %11 = fcmp ord float %a, %b
  %12 = fcmp false float %a, %b
  %13 = fcmp true float %a, %b

  ret void
}

define void @float_cmp_f64(double %a, double %b) {
  %1  = fcmp oeq double %a, %b
  %2  = fcmp ogt double %a, %b
  %3  = fcmp olt double %a, %b
  %4  = fcmp ole double %a, %b
  %5  = fcmp one double %a, %b

  %6  = fcmp ueq double %a, %b
  %7  = fcmp ugt double %a, %b
  %8  = fcmp ult double %a, %b
  %9  = fcmp ule double %a, %b
  %10 = fcmp une double %a, %b

  %11 = fcmp ord double %a, %b
  %12 = fcmp false double %a, %b
  %13 = fcmp true double %a, %b

  ret void
}

define void @float_cmp_fast_f32(float %a, float %b) {
  %1  = fcmp fast oeq float %a, %b
  %2  = fcmp nsz ogt float %a, %b
  %3  = fcmp nsz nnan olt float %a, %b
  %4  = fcmp contract ole float %a, %b
  %5  = fcmp nnan one float %a, %b

  %6  = fcmp nnan ninf nsz ueq float %a, %b
  %7  = fcmp arcp ugt float %a, %b
  %8  = fcmp fast ult float %a, %b
  %9  = fcmp fast ule float %a, %b
  %10 = fcmp fast une float %a, %b

  %11 = fcmp fast ord float %a, %b
  %12 = fcmp nnan ninf false float %a, %b
  %13 = fcmp nnan ninf true float %a, %b

  ret void
}

define void @float_cmp_fast_f64(double %a, double %b) {
  %1  = fcmp fast oeq double %a, %b
  %2  = fcmp nsz ogt double %a, %b
  %3  = fcmp nsz nnan olt double %a, %b
  %4  = fcmp contract ole double %a, %b
  %5  = fcmp nnan one double %a, %b

  %6  = fcmp nnan ninf nsz ueq double %a, %b
  %7  = fcmp arcp ugt double %a, %b
  %8  = fcmp fast ult double %a, %b
  %9  = fcmp fast ule double %a, %b
  %10 = fcmp fast une double %a, %b

  %11 = fcmp fast ord double %a, %b
  %12 = fcmp nnan ninf false double %a, %b
  %13 = fcmp nnan ninf true double %a, %b

  ret void
}

define float @float_ops_fast_f32(float %a, float %b) {
  %1 = fneg nnan float %a

  %2 = fadd ninf float %a, %b
  %3 = fsub nsz float %a, %b
  %4 = fmul arcp float %a, %b
  %5 = fdiv contract float %a, %b
  %6 = frem afn float %a, %b

  %7 = fadd reassoc float %a, %b
  %8 = fadd reassoc float %7, %b

  %9  = fadd fast float %a, %b
  %10 = fadd nnan nsz float %a, %b
  %11 = frem nnan nsz float %a, %b
  %12 = fdiv nnan nsz arcp float %a, %b
  %13 = fmul nnan nsz ninf contract float %a, %b
  %14 = fmul nnan nsz ninf arcp contract afn reassoc float %a, %b

  ret float %1
}

define double @float_ops_fast_f64(double %a, double %b) {
  %1 = fneg nnan double %a

  %2 = fadd ninf double %a, %b
  %3 = fsub nsz double %a, %b
  %4 = fmul arcp double %a, %b
  %5 = fdiv contract double %a, %b
  %6 = frem afn double %a, %b

  %7 = fadd reassoc double %a, %b
  %8 = fadd reassoc double %7, %b

  %9  = fadd fast double %a, %b
  %10 = fadd nnan nsz double %a, %b
  %11 = frem nnan nsz double %a, %b
  %12 = fdiv nnan nsz arcp double %a, %b
  %13 = fmul nnan nsz ninf contract double %a, %b
  %14 = fmul nnan nsz ninf arcp contract afn reassoc double %a, %b

  ret double %1
}