CPU | ops/µs | TDP (w) | Core | TDP/Core | ghz | hz/op | op/µs/TDPc | op/µs*core |
---|---|---|---|---|---|---|---|---|
Apple M1 | 1,241 | 20 | 4 | 5 | 2.8 | 2.25 | 310.25 | 4,964 |
Apple A12z | 895 | 16 | 4 | 4 | 2.6 | 2.90 | 223.75 | 3,580 |
Ryzen 3950x | 1,094 | 105 | 16 | 6.5 | 4.0 | 3.65 | 168.30 | 17,504 |
Intel i7-10700k | 1,251 | 125 | 8 | 15.625 | 5.0 | 3.99 | 80.06 | 10,008 |
Below is the handwritten LLVM IR for SP_2SWAP and SP_ROT
SP_2SWAP:
kernel.SP_2SWAP:
; swap top two pairs of elements on the stack
; pop %eax
; pop %ebx
; pop %ecx
; pop %edx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; clouddrift:experiments wbrown$ lli-3.3 test.ll | |
; 10 --> @140734656409551 | |
; 11 --> @140734656409550 | |
; 12 --> @140734656409549 | |
; @140734656409549 --> 12 | |
; @140734656409550 --> 0 | |
; @140734656409551 --> 0 | |
%cell = type i64 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%pntr = type i64* | |
%int = type i64 | |
%cell = type i64 | |
%WORD = type void ()* | |
; ***************************************************************************** | |
; stdlib functions | |
; ***************************************************************************** | |
declare i32 @puts(i8*) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; ModuleID = 'bugpoint-reduced-simplified.bc' | |
target triple = "x86_64-apple-darwin13.0.0" | |
@valueString = internal constant [7 x i8] c"%llu\0D\0A\00" | |
@stackString = internal constant [13 x i8] c"%llu: %llu\0D\0A\00" | |
@heapPtr = weak global i64* null | |
@heapSize = weak global i64 0 | |
@execIdx = weak global i64 0 | |
@stackIdx = weak global i64 0 | |
@currIns = weak global i64 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; ModuleID = 'forth.ll' | |
@stackString = internal constant [13 x i8] c"%llu: %llu\0D\0A\00" | |
@heapPtr = internal unnamed_addr global i64* null | |
@heapSize = internal unnamed_addr global i1 false | |
@execIdx = internal unnamed_addr global i64 0 | |
@stackIdx = internal unnamed_addr global i64 0 | |
; Function Attrs: nounwind | |
declare i32 @printf(i8* nocapture, ...) #0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; constants to help with multiplatform stuff | |
%pntr = type i64* | |
%cell = type i64 | |
; for ease of debugging, allows us to print a value to stdout | |
@valueString = internal constant [7 x i8] c"%llu\0D\0A\00" | |
declare i32 @printf(i8*, ... ) | |
define void @printValue32(i32 %value) { |