mini-llvm
0.1.0
Toggle main menu visibility
Loading...
Searching...
No Matches
Double.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: MIT
2
3
#pragma once
4
5
#include <cstdint>
6
#include <cstdlib>
7
#include <memory>
8
#include <string>
9
#include <typeinfo>
10
11
#include "
mini-llvm/common/Precision.h
"
12
#include "
mini-llvm/ir/Constant.h
"
13
#include "
mini-llvm/ir/Type.h
"
14
#include "
mini-llvm/ir/Type/FloatingType.h
"
15
#include "
mini-llvm/ir/TypeVisitor.h
"
16
#include "
mini-llvm/utils/Compiler.h
"
17
18
namespace
mini_llvm::ir
{
19
20
class
MINI_LLVM_EXPORT
Double
final :
public
FloatingType
{
21
public
:
22
Precision
precision
()
const override
{
23
return
Precision::kDouble
;
24
}
25
26
int
size
()
const override
{
27
return
8;
28
}
29
30
int
alignment
()
const override
{
31
return
8;
32
}
33
34
std::unique_ptr<Constant>
zeroValue
()
const override
;
35
std::unique_ptr<Constant>
constant
(int64_t value)
const override
;
36
37
std::unique_ptr<Type>
promoted
()
const override
{
38
abort();
39
}
40
41
std::unique_ptr<Type>
demoted
()
const override
;
42
43
std::string
format
()
const override
{
44
return
"double"
;
45
}
46
47
std::unique_ptr<Type>
clone
()
const override
{
48
return
std::make_unique<Double>();
49
}
50
51
void
accept
(
TypeVisitor
&visitor)
override
{
52
visitor.
visitDouble
(*
this
);
53
}
54
55
void
accept
(
TypeVisitor
&visitor)
const override
{
56
visitor.
visitDouble
(*
this
);
57
}
58
59
protected
:
60
bool
equals
(
const
Type
&other)
const override
{
61
return
typeid
(*this) ==
typeid
(other);
62
}
63
};
64
65
}
// namespace mini_llvm::ir
Compiler.h
MINI_LLVM_EXPORT
#define MINI_LLVM_EXPORT
Definition
Compiler.h:17
FloatingType.h
Precision.h
TypeVisitor.h
Type.h
mini_llvm::ir::Double
Definition
Double.h:20
mini_llvm::ir::Double::promoted
std::unique_ptr< Type > promoted() const override
Definition
Double.h:37
mini_llvm::ir::Double::precision
Precision precision() const override
Definition
Double.h:22
mini_llvm::ir::Double::accept
void accept(TypeVisitor &visitor) override
Definition
Double.h:51
mini_llvm::ir::Double::accept
void accept(TypeVisitor &visitor) const override
Definition
Double.h:55
mini_llvm::ir::Double::clone
std::unique_ptr< Type > clone() const override
Definition
Double.h:47
mini_llvm::ir::Double::size
int size() const override
Definition
Double.h:26
mini_llvm::ir::Double::zeroValue
std::unique_ptr< Constant > zeroValue() const override
mini_llvm::ir::Double::constant
std::unique_ptr< Constant > constant(int64_t value) const override
mini_llvm::ir::Double::format
std::string format() const override
Definition
Double.h:43
mini_llvm::ir::Double::demoted
std::unique_ptr< Type > demoted() const override
mini_llvm::ir::Double::equals
bool equals(const Type &other) const override
Definition
Double.h:60
mini_llvm::ir::Double::alignment
int alignment() const override
Definition
Double.h:30
mini_llvm::ir::FloatingType
Definition
FloatingType.h:11
mini_llvm::ir::TypeVisitor
Definition
TypeVisitor.h:25
mini_llvm::ir::TypeVisitor::visitDouble
virtual void visitDouble(Double &type)
Definition
TypeVisitor.h:39
mini_llvm::ir::Type
Definition
Type.h:18
Constant.h
mini_llvm::ir
Definition
Argument.h:13
mini_llvm::Precision
Precision
Definition
Precision.h:7
mini_llvm::Precision::kDouble
@ kDouble
Definition
Precision.h:9
include
mini-llvm
ir
Type
Double.h
Generated by
1.17.0