mini-llvm 0.1.0
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
13#include "mini-llvm/ir/Type.h"
17
18namespace mini_llvm::ir {
19
20class MINI_LLVM_EXPORT Double final : public FloatingType {
21public:
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
59protected:
60 bool equals(const Type &other) const override {
61 return typeid(*this) == typeid(other);
62 }
63};
64
65} // namespace mini_llvm::ir
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
Definition Double.h:20
std::unique_ptr< Type > promoted() const override
Definition Double.h:37
Precision precision() const override
Definition Double.h:22
void accept(TypeVisitor &visitor) override
Definition Double.h:51
void accept(TypeVisitor &visitor) const override
Definition Double.h:55
std::unique_ptr< Type > clone() const override
Definition Double.h:47
int size() const override
Definition Double.h:26
std::unique_ptr< Constant > zeroValue() const override
std::unique_ptr< Constant > constant(int64_t value) const override
std::string format() const override
Definition Double.h:43
std::unique_ptr< Type > demoted() const override
bool equals(const Type &other) const override
Definition Double.h:60
int alignment() const override
Definition Double.h:30
Definition FloatingType.h:11
Definition TypeVisitor.h:25
virtual void visitDouble(Double &type)
Definition TypeVisitor.h:39
Definition Type.h:18
Definition Argument.h:13
Precision
Definition Precision.h:7
@ kDouble
Definition Precision.h:9