mini-llvm 0.1.0
Loading...
Searching...
No Matches
I8Constant.h
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2
3#pragma once
4
5#include <cstdint>
6#include <memory>
7#include <string>
8#include <typeinfo>
9
14#include "mini-llvm/ir/Type.h"
16#include "mini-llvm/ir/Value.h"
17
18namespace mini_llvm::ir {
19
20class I8Constant final : public IntegerConstant {
21public:
22 explicit I8Constant(int8_t value) : value_(value) {}
23
24 int8_t value() const {
25 return value_;
26 }
27
28 int64_t signExtendedValue() const override {
29 return ops::SExt<int64_t>()(value());
30 }
31
32 int64_t zeroExtendedValue() const override {
33 return ops::ZExt<int64_t>()(value());
34 }
35
36 void accept(ConstantVisitor &visitor) override {
37 visitor.visitI8Constant(*this);
38 }
39
40 void accept(ConstantVisitor &visitor) const override {
41 visitor.visitI8Constant(*this);
42 }
43
44 std::unique_ptr<Type> type() const override {
45 return std::make_unique<I8>();
46 }
47
48 std::string format() const override {
49 return std::to_string(value());
50 }
51
52 std::unique_ptr<Value> clone() const override {
53 return std::make_unique<I8Constant>(value());
54 }
55
56protected:
57 bool equals(const Constant &other) const override {
58 return typeid(*this) == typeid(other) && value() == static_cast<const I8Constant &>(other).value();
59 }
60
61private:
62 int8_t value_;
63};
64
65} // namespace mini_llvm::ir
Definition ConstantVisitor.h:26
virtual void visitI8Constant(I8Constant &C)
Definition ConstantVisitor.h:47
Definition Constant.h:13
void accept(ConstantVisitor &visitor) const override
Definition I8Constant.h:40
bool equals(const Constant &other) const override
Definition I8Constant.h:57
int64_t signExtendedValue() const override
Definition I8Constant.h:28
std::string format() const override
Definition I8Constant.h:48
int8_t value() const
Definition I8Constant.h:24
std::unique_ptr< Type > type() const override
Definition I8Constant.h:44
int64_t zeroExtendedValue() const override
Definition I8Constant.h:32
std::unique_ptr< Value > clone() const override
Definition I8Constant.h:52
void accept(ConstantVisitor &visitor) override
Definition I8Constant.h:36
I8Constant(int8_t value)
Definition I8Constant.h:22
Definition IntegerConstant.h:13
Definition Argument.h:13
Definition SExt.h:14
Definition ZExt.h:14