Added builder support for zext, sext and trunc IR instructions
authorJan Vrany <jan.vrany@fit.cvut.cz>
Fri, 05 Aug 2016 17:12:05 +0100
changeset 72 2c876bd46960
parent 71 ab03b0a6d037
child 73 466c492b0062
Added builder support for zext, sext and trunc IR instructions
LLVMIRBuilder.st
--- a/LLVMIRBuilder.st	Wed Jul 06 22:40:59 2016 +0100
+++ b/LLVMIRBuilder.st	Fri Aug 05 17:12:05 2016 +0100
@@ -395,6 +395,69 @@
 
     "Created: / 11-02-2016 / 20:40:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 12-02-2016 / 11:55:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+sext: value toInt: type
+    ^ self sext: value toInt: type as: ''.
+
+    "Created: / 05-08-2016 / 11:50:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+sext: value toInt: type as: name
+    | valueType |
+
+    self assertIsIntegerValue: value.
+    valueType := value type.
+    self assertIsType: type.
+    self assert: type isIntegerType description: 'Type is not an integer type'.
+    self assertIsString: name.      
+    self assert: valueType sizeInBits < type sizeInBits description: 'Bit size of value is not smaller than bitsize of integer type'.
+
+    ^ LLVM BuildSExt: self  _: value _: type _: name.
+
+    "Created: / 05-08-2016 / 13:41:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+trunc: value toInt: type
+    ^ self trunc: value toInt: type as: ''.
+
+    "Created: / 05-08-2016 / 17:10:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+trunc: value toInt: type as: name
+    | valueType |
+
+    self assertIsIntegerValue: value.
+    valueType := value type.
+    self assertIsType: type.
+    self assert: type isIntegerType description: 'Type is not an integer type'.
+    self assertIsString: name.      
+    self assert: valueType sizeInBits > type sizeInBits description: 'Bit size of value is not greater than bitsize of integer type'.
+
+    ^ LLVM BuildTrunc: self  _: value _: type _: name.
+
+    "Created: / 05-08-2016 / 17:10:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+zext: value toInt: type
+    ^ self zext: value toInt: type as: ''.
+
+    "Created: / 05-08-2016 / 13:42:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+zext: value toInt: type as: name
+    | valueType |
+
+    self assertIsIntegerValue: value.
+    valueType := value type.
+    self assertIsType: type.
+    self assert: type isIntegerType description: 'Type is not an integer type'.
+    self assertIsString: name.      
+    self assert: valueType sizeInBits < type sizeInBits description: 'Bit size of value is not smaller than bitsize of integer type'.
+
+    ^ LLVM BuildZExt: self  _: value _: type _: name.
+
+    "Created: / 05-08-2016 / 13:42:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !LLVMIRBuilder methodsFor:'instructions - intrinsics'!