mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-15 00:13:43 +00:00
compiler: add instrinsic for crypto/internal/constanttime.boolToUint8
This commit is contained in:
@@ -873,6 +873,10 @@ func (c *compilerContext) createPackage(irbuilder llvm.Builder, pkg *ssa.Package
|
|||||||
// with a LLVM intrinsic.
|
// with a LLVM intrinsic.
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
if ok := b.defineCryptoIntrinsic(); ok {
|
||||||
|
// Body of this function was replaced
|
||||||
|
continue
|
||||||
|
}
|
||||||
if member.Blocks == nil {
|
if member.Blocks == nil {
|
||||||
// Try to define this as an intrinsic function.
|
// Try to define this as an intrinsic function.
|
||||||
b.defineIntrinsicFunction()
|
b.defineIntrinsicFunction()
|
||||||
|
|||||||
@@ -208,6 +208,23 @@ func (b *builder) defineMathOp() {
|
|||||||
b.CreateRet(result)
|
b.CreateRet(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *builder) defineCryptoIntrinsic() bool {
|
||||||
|
if b.fn.Pkg.Pkg.Path() != "crypto/internal/constanttime" {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
switch b.fn.Name() {
|
||||||
|
case "boolToUint8":
|
||||||
|
b.createFunctionStart(true)
|
||||||
|
param := b.getValue(b.fn.Params[0], b.fn.Pos())
|
||||||
|
result := b.CreateZExt(param, b.ctx.Int8Type(), "")
|
||||||
|
b.CreateRet(result)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// Implement most math/bits functions.
|
// Implement most math/bits functions.
|
||||||
//
|
//
|
||||||
// This implements all the functions that operate on bits. It does not yet
|
// This implements all the functions that operate on bits. It does not yet
|
||||||
|
|||||||
Reference in New Issue
Block a user