summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2023-07-05 13:23:14 -0400
committerGitHub <noreply@github.com>2023-07-05 13:23:14 -0400
commit69450a2be7575aa4f984b9ae2824da0e5634c9f0 (patch)
treed554404f441af7fd113737cae8e1bde4897a814e /source/slang/slang-ir.cpp
parentf9b73eab7edcedc9dc2c7825fcd4171631d14ac7 (diff)
Initial sizeof/alignof implementation. (#2954)
* Initial sizeof implementation. * Small macro improvement. * Fix some typos. * Refactor NaturalSize. Add more sizeof tests. * Use _makeParseExpr to add sizeof support. * Add size-of.slang diagnostic result. * Fix typo in folding with macro change. * Add a sizeof test of This. * Some more NaturalSize coverage. * Simple alignof support. * Testing for alignof. * Added 8 bit enum to check enums values are correctly sized. * Add alignof to completion. * Lower sizeof/alignof to IR. sizeof/alignof IR pass. Tests for simple generic scenarios. * Make append handle invalid properly. Improve comments. --------- Co-authored-by: Theresa Foley <10618364+tangent-vector@users.noreply.github.com>
Diffstat (limited to 'source/slang/slang-ir.cpp')
-rw-r--r--source/slang/slang-ir.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/source/slang/slang-ir.cpp b/source/slang/slang-ir.cpp
index 789349b4c..74679de96 100644
--- a/source/slang/slang-ir.cpp
+++ b/source/slang/slang-ir.cpp
@@ -5268,6 +5268,31 @@ namespace Slang
return inst;
}
+
+ IRInst* IRBuilder::emitSizeOf(
+ IRInst* sizedType)
+ {
+ auto inst = createInst<IRInst>(
+ this,
+ kIROp_SizeOf,
+ getUIntType(),
+ sizedType);
+ addInst(inst);
+ return inst;
+ }
+
+ IRInst* IRBuilder::emitAlignOf(
+ IRInst* sizedType)
+ {
+ auto inst = createInst<IRInst>(
+ this,
+ kIROp_AlignOf,
+ getUIntType(),
+ sizedType);
+ addInst(inst);
+ return inst;
+ }
+
IRInst* IRBuilder::emitBitCast(
IRType* type,
IRInst* val)