Thanks for using Compiler Explorer
Sponsors
Jakt
C++
Ada
Analysis
Android Java
Android Kotlin
Assembly
C
C3
Carbon
C++ (Circle)
CIRCT
Clean
CMake
CMakeScript
COBOL
C++ for OpenCL
MLIR
Cppx
Cppx-Blue
Cppx-Gold
Cpp2-cppfront
Crystal
C#
CUDA C++
D
Dart
Elixir
Erlang
Fortran
F#
GLSL
Go
Haskell
HLSL
Hook
Hylo
IL
ispc
Java
Julia
Kotlin
LLVM IR
LLVM MIR
Modula-2
Nim
Objective-C
Objective-C++
OCaml
OpenCL C
Pascal
Pony
Python
Racket
Ruby
Rust
Snowball
Scala
Solidity
Spice
SPIR-V
Swift
LLVM TableGen
Toit
TypeScript Native
V
Vala
Visual Basic
WASM
Zig
Javascript
GIMPLE
Ygen
c source #1
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
6502 cc65 2.17
6502 cc65 2.18
6502 cc65 2.19
6502 cc65 trunk
ARM GCC 10.2.0 (linux)
ARM GCC 10.2.1 (none)
ARM GCC 10.3.0 (linux)
ARM GCC 10.3.1 (2021.07 none)
ARM GCC 10.3.1 (2021.10 none)
ARM GCC 10.5.0
ARM GCC 11.1.0 (linux)
ARM GCC 11.2.0 (linux)
ARM GCC 11.2.1 (none)
ARM GCC 11.3.0 (linux)
ARM GCC 11.4.0
ARM GCC 12.1.0 (linux)
ARM GCC 12.2.0 (linux)
ARM GCC 12.3.0
ARM GCC 12.4.0
ARM GCC 13.1.0 (linux)
ARM GCC 13.2.0
ARM GCC 13.2.0 (unknown-eabi)
ARM GCC 13.3.0
ARM GCC 13.3.0 (unknown-eabi)
ARM GCC 14.1.0
ARM GCC 14.1.0 (unknown-eabi)
ARM GCC 14.2.0
ARM GCC 14.2.0 (unknown-eabi)
ARM GCC 4.5.4 (linux)
ARM GCC 4.6.4 (linux)
ARM GCC 5.4 (linux)
ARM GCC 5.4.1 (none)
ARM GCC 6.3.0 (linux)
ARM GCC 6.4.0 (linux)
ARM GCC 7.2.1 (none)
ARM GCC 7.3.0 (linux)
ARM GCC 7.5.0 (linux)
ARM GCC 8.2.0 (WinCE)
ARM GCC 8.2.0 (linux)
ARM GCC 8.3.1 (none)
ARM GCC 8.5.0 (linux)
ARM GCC 9.2.1 (none)
ARM GCC 9.3.0 (linux)
ARM GCC trunk (linux)
ARM msvc v19.0 (WINE)
ARM msvc v19.10 (WINE)
ARM msvc v19.14 (WINE)
ARM64 GCC 10.2.0
ARM64 GCC 10.3.0
ARM64 GCC 10.4.0
ARM64 GCC 10.5.0
ARM64 GCC 11.1.0
ARM64 GCC 11.2.0
ARM64 GCC 11.3.0
ARM64 GCC 11.4.0
ARM64 GCC 12.1.0
ARM64 GCC 12.2.0
ARM64 GCC 12.3.0
ARM64 GCC 12.4.0
ARM64 GCC 13.1.0
ARM64 GCC 13.2.0
ARM64 GCC 13.3.0
ARM64 GCC 14.1.0
ARM64 GCC 14.2.0
ARM64 GCC 4.9.4
ARM64 GCC 5.4
ARM64 GCC 5.5.0
ARM64 GCC 6.3
ARM64 GCC 6.4.0
ARM64 GCC 7.3.0
ARM64 GCC 7.5.0
ARM64 GCC 8.2.0
ARM64 GCC 8.5.0
ARM64 GCC 9.3.0
ARM64 GCC 9.4.0
ARM64 GCC 9.5.0
ARM64 GCC trunk
ARM64 Morello GCC 10.1.0 Alpha 1
ARM64 Morello GCC 10.1.2 Alpha 2
ARM64 msvc v19.14 (WINE)
AVR gcc 10.3.0
AVR gcc 11.1.0
AVR gcc 12.1.0
AVR gcc 12.2.0
AVR gcc 12.3.0
AVR gcc 12.4.0
AVR gcc 13.1.0
AVR gcc 13.2.0
AVR gcc 13.3.0
AVR gcc 14.1.0
AVR gcc 14.2.0
AVR gcc 4.5.4
AVR gcc 4.6.4
AVR gcc 5.4.0
AVR gcc 9.2.0
AVR gcc 9.3.0
Arduino Mega (1.8.9)
Arduino Uno (1.8.9)
BPF clang (trunk)
BPF clang 13.0.0
BPF clang 14.0.0
BPF clang 15.0.0
BPF clang 16.0.0
BPF clang 17.0.1
BPF clang 18.1.0
BPF gcc 13.1.0
BPF gcc 13.2.0
BPF gcc 13.3.0
BPF gcc 14.1.0
BPF gcc 14.2.0
BPF gcc trunk
Chibicc 2020-12-07
FRC 2019
FRC 2020
FRC 2023
HPPA gcc 14.2.0
K1C gcc 7.4
K1C gcc 7.5
KVX ACB 4.1.0 (GCC 7.5.0)
KVX ACB 4.1.0-cd1 (GCC 7.5.0)
KVX ACB 4.10.0 (GCC 10.3.1)
KVX ACB 4.11.1 (GCC 10.3.1)
KVX ACB 4.12.0 (GCC 11.3.0)
KVX ACB 4.2.0 (GCC 7.5.0)
KVX ACB 4.3.0 (GCC 7.5.0)
KVX ACB 4.4.0 (GCC 7.5.0)
KVX ACB 4.6.0 (GCC 9.4.1)
KVX ACB 4.8.0 (GCC 9.4.1)
KVX ACB 4.9.0 (GCC 9.4.1)
KVX ACB 5.0.0 (GCC 12.2.1)
KVX ACB 5.2.0 (GCC 13.2.1)
LC3 (trunk)
M68K clang (trunk)
M68K gcc 13.1.0
M68K gcc 13.2.0
M68K gcc 13.3.0
M68K gcc 14.1.0
M68K gcc 14.2.0
MRISC32 gcc (trunk)
MSP430 gcc 12.1.0
MSP430 gcc 12.2.0
MSP430 gcc 12.3.0
MSP430 gcc 12.4.0
MSP430 gcc 13.1.0
MSP430 gcc 13.2.0
MSP430 gcc 13.3.0
MSP430 gcc 14.1.0
MSP430 gcc 14.2.0
MSP430 gcc 4.5.3
MSP430 gcc 5.3.0
MSP430 gcc 6.2.1
MinGW clang 14.0.3
MinGW clang 14.0.6
MinGW clang 15.0.7
MinGW clang 16.0.0
MinGW clang 16.0.2
MinGW gcc 11.3.0
MinGW gcc 12.1.0
MinGW gcc 12.2.0
MinGW gcc 13.1.0
POWER64 gcc 11.2.0
POWER64 gcc 12.1.0
POWER64 gcc 12.2.0
POWER64 gcc 12.3.0
POWER64 gcc 12.4.0
POWER64 gcc 13.1.0
POWER64 gcc 13.2.0
POWER64 gcc 13.3.0
POWER64 gcc 14.1.0
POWER64 gcc 14.2.0
POWER64 gcc trunk
RISC-V (32-bits) gcc (trunk)
RISC-V (32-bits) gcc 10.2.0
RISC-V (32-bits) gcc 10.3.0
RISC-V (32-bits) gcc 11.2.0
RISC-V (32-bits) gcc 11.3.0
RISC-V (32-bits) gcc 11.4.0
RISC-V (32-bits) gcc 12.1.0
RISC-V (32-bits) gcc 12.2.0
RISC-V (32-bits) gcc 12.3.0
RISC-V (32-bits) gcc 12.4.0
RISC-V (32-bits) gcc 13.1.0
RISC-V (32-bits) gcc 13.2.0
RISC-V (32-bits) gcc 13.3.0
RISC-V (32-bits) gcc 14.1.0
RISC-V (32-bits) gcc 14.2.0
RISC-V (32-bits) gcc 8.2.0
RISC-V (32-bits) gcc 8.5.0
RISC-V (32-bits) gcc 9.4.0
RISC-V (64-bits) gcc (trunk)
RISC-V (64-bits) gcc 10.2.0
RISC-V (64-bits) gcc 10.3.0
RISC-V (64-bits) gcc 11.2.0
RISC-V (64-bits) gcc 11.3.0
RISC-V (64-bits) gcc 11.4.0
RISC-V (64-bits) gcc 12.1.0
RISC-V (64-bits) gcc 12.2.0
RISC-V (64-bits) gcc 12.3.0
RISC-V (64-bits) gcc 12.4.0
RISC-V (64-bits) gcc 13.1.0
RISC-V (64-bits) gcc 13.2.0
RISC-V (64-bits) gcc 13.3.0
RISC-V (64-bits) gcc 14.1.0
RISC-V (64-bits) gcc 14.2.0
RISC-V (64-bits) gcc 8.2.0
RISC-V (64-bits) gcc 8.5.0
RISC-V (64-bits) gcc 9.4.0
RISC-V rv32gc clang (trunk)
RISC-V rv32gc clang 10.0.0
RISC-V rv32gc clang 10.0.1
RISC-V rv32gc clang 11.0.0
RISC-V rv32gc clang 11.0.1
RISC-V rv32gc clang 12.0.0
RISC-V rv32gc clang 12.0.1
RISC-V rv32gc clang 13.0.0
RISC-V rv32gc clang 13.0.1
RISC-V rv32gc clang 14.0.0
RISC-V rv32gc clang 15.0.0
RISC-V rv32gc clang 16.0.0
RISC-V rv32gc clang 17.0.1
RISC-V rv32gc clang 18.1.0
RISC-V rv32gc clang 9.0.0
RISC-V rv32gc clang 9.0.1
RISC-V rv64gc clang (trunk)
RISC-V rv64gc clang 10.0.0
RISC-V rv64gc clang 10.0.1
RISC-V rv64gc clang 11.0.0
RISC-V rv64gc clang 11.0.1
RISC-V rv64gc clang 12.0.0
RISC-V rv64gc clang 12.0.1
RISC-V rv64gc clang 13.0.0
RISC-V rv64gc clang 13.0.1
RISC-V rv64gc clang 14.0.0
RISC-V rv64gc clang 15.0.0
RISC-V rv64gc clang 16.0.0
RISC-V rv64gc clang 17.0.1
RISC-V rv64gc clang 18.1.0
RISC-V rv64gc clang 9.0.0
RISC-V rv64gc clang 9.0.1
Raspbian Buster
Raspbian Stretch
SDCC 4.0.0
SDCC 4.1.0
SDCC 4.2.0
SDCC 4.3.0
SDCC 4.4.0
SPARC LEON gcc 12.2.0
SPARC LEON gcc 12.3.0
SPARC LEON gcc 12.4.0
SPARC LEON gcc 13.1.0
SPARC LEON gcc 13.2.0
SPARC LEON gcc 13.3.0
SPARC LEON gcc 14.1.0
SPARC LEON gcc 14.2.0
SPARC gcc 12.2.0
SPARC gcc 12.3.0
SPARC gcc 12.4.0
SPARC gcc 13.1.0
SPARC gcc 13.2.0
SPARC gcc 13.3.0
SPARC gcc 14.1.0
SPARC gcc 14.2.0
SPARC64 gcc 12.2.0
SPARC64 gcc 12.3.0
SPARC64 gcc 12.4.0
SPARC64 gcc 13.1.0
SPARC64 gcc 13.2.0
SPARC64 gcc 13.3.0
SPARC64 gcc 14.1.0
SPARC64 gcc 14.2.0
TCC (trunk)
TCC 0.9.27
TI C6x gcc 12.2.0
TI C6x gcc 12.3.0
TI C6x gcc 12.4.0
TI C6x gcc 13.1.0
TI C6x gcc 13.2.0
TI C6x gcc 13.3.0
TI C6x gcc 14.1.0
TI C6x gcc 14.2.0
TI CL430 21.6.1
VAX gcc NetBSDELF 10.4.0
VAX gcc NetBSDELF 10.5.0 (Nov 15 03:50:22 2023)
WebAssembly clang (trunk)
Xtensa ESP32 gcc 11.2.0 (2022r1)
Xtensa ESP32 gcc 12.2.0 (20230208)
Xtensa ESP32 gcc 8.2.0 (2019r2)
Xtensa ESP32 gcc 8.2.0 (2020r1)
Xtensa ESP32 gcc 8.2.0 (2020r2)
Xtensa ESP32 gcc 8.4.0 (2020r3)
Xtensa ESP32 gcc 8.4.0 (2021r1)
Xtensa ESP32 gcc 8.4.0 (2021r2)
Xtensa ESP32-S2 gcc 11.2.0 (2022r1)
Xtensa ESP32-S2 gcc 12.2.0 (20230208)
Xtensa ESP32-S2 gcc 8.2.0 (2019r2)
Xtensa ESP32-S2 gcc 8.2.0 (2020r1)
Xtensa ESP32-S2 gcc 8.2.0 (2020r2)
Xtensa ESP32-S2 gcc 8.4.0 (2020r3)
Xtensa ESP32-S2 gcc 8.4.0 (2021r1)
Xtensa ESP32-S2 gcc 8.4.0 (2021r2)
Xtensa ESP32-S3 gcc 11.2.0 (2022r1)
Xtensa ESP32-S3 gcc 12.2.0 (20230208)
Xtensa ESP32-S3 gcc 8.4.0 (2020r3)
Xtensa ESP32-S3 gcc 8.4.0 (2021r1)
Xtensa ESP32-S3 gcc 8.4.0 (2021r2)
arm64 msvc v19.20 VS16.0
arm64 msvc v19.21 VS16.1
arm64 msvc v19.22 VS16.2
arm64 msvc v19.23 VS16.3
arm64 msvc v19.24 VS16.4
arm64 msvc v19.25 VS16.5
arm64 msvc v19.27 VS16.7
arm64 msvc v19.28 VS16.8
arm64 msvc v19.28 VS16.9
arm64 msvc v19.29 VS16.10
arm64 msvc v19.29 VS16.11
arm64 msvc v19.30 VS17.0
arm64 msvc v19.31 VS17.1
arm64 msvc v19.32 VS17.2
arm64 msvc v19.33 VS17.3
arm64 msvc v19.34 VS17.4
arm64 msvc v19.35 VS17.5
arm64 msvc v19.36 VS17.6
arm64 msvc v19.37 VS17.7
arm64 msvc v19.38 VS17.8
arm64 msvc v19.39 VS17.9
arm64 msvc v19.40 VS17.10
arm64 msvc v19.latest
armv7-a clang (trunk)
armv7-a clang 10.0.0
armv7-a clang 10.0.1
armv7-a clang 11.0.0
armv7-a clang 11.0.1
armv7-a clang 12.0.0
armv7-a clang 12.0.1
armv7-a clang 13.0.0
armv7-a clang 13.0.1
armv7-a clang 14.0.0
armv7-a clang 15.0.0
armv7-a clang 16.0.0
armv7-a clang 17.0.1
armv7-a clang 18.1.0
armv7-a clang 9.0.0
armv7-a clang 9.0.1
armv8-a clang (all architectural features, trunk)
armv8-a clang (trunk)
armv8-a clang 10.0.0
armv8-a clang 10.0.1
armv8-a clang 11.0.0
armv8-a clang 11.0.1
armv8-a clang 12.0.0
armv8-a clang 12.0.1
armv8-a clang 13.0.0
armv8-a clang 13.0.1
armv8-a clang 14.0.0
armv8-a clang 15.0.0
armv8-a clang 16.0.0
armv8-a clang 17.0.1
armv8-a clang 18.1.0
armv8-a clang 9.0.0
armv8-a clang 9.0.1
clang 12 for DPU (rel 2023.2.0)
cproc-master
llvm-mos commander X16
llvm-mos commodore 64
llvm-mos mega65
llvm-mos nes-cnrom
llvm-mos nes-mmc1
llvm-mos nes-mmc3
llvm-mos nes-nrom
llvm-mos osi-c1p
loongarch64 gcc 12.2.0
loongarch64 gcc 12.3.0
loongarch64 gcc 12.4.0
loongarch64 gcc 13.1.0
loongarch64 gcc 13.2.0
loongarch64 gcc 13.3.0
loongarch64 gcc 14.1.0
loongarch64 gcc 14.2.0
mips (el) gcc 12.1.0
mips (el) gcc 12.2.0
mips (el) gcc 12.3.0
mips (el) gcc 12.4.0
mips (el) gcc 13.1.0
mips (el) gcc 13.2.0
mips (el) gcc 13.3.0
mips (el) gcc 14.1.0
mips (el) gcc 14.2.0
mips (el) gcc 4.9.4
mips (el) gcc 5.4
mips (el) gcc 5.5.0
mips (el) gcc 9.5.0
mips clang 13.0.0
mips clang 14.0.0
mips clang 15.0.0
mips clang 16.0.0
mips clang 17.0.1
mips clang 18.1.0
mips gcc 11.2.0
mips gcc 12.1.0
mips gcc 12.2.0
mips gcc 12.3.0
mips gcc 12.4.0
mips gcc 13.1.0
mips gcc 13.2.0
mips gcc 13.3.0
mips gcc 14.1.0
mips gcc 14.2.0
mips gcc 4.9.4
mips gcc 5.4
mips gcc 5.5.0
mips gcc 9.3.0 (codescape)
mips gcc 9.5.0
mips64 (el) gcc 12.1.0
mips64 (el) gcc 12.2.0
mips64 (el) gcc 12.3.0
mips64 (el) gcc 12.4.0
mips64 (el) gcc 13.1.0
mips64 (el) gcc 13.2.0
mips64 (el) gcc 13.3.0
mips64 (el) gcc 14.1.0
mips64 (el) gcc 14.2.0
mips64 (el) gcc 4.9.4
mips64 (el) gcc 5.4.0
mips64 (el) gcc 5.5.0
mips64 (el) gcc 9.5.0
mips64 clang 13.0.0
mips64 clang 14.0.0
mips64 clang 15.0.0
mips64 clang 16.0.0
mips64 clang 17.0.1
mips64 clang 18.1.0
mips64 gcc 11.2.0
mips64 gcc 12.1.0
mips64 gcc 12.2.0
mips64 gcc 12.3.0
mips64 gcc 12.4.0
mips64 gcc 13.1.0
mips64 gcc 13.2.0
mips64 gcc 13.3.0
mips64 gcc 14.1.0
mips64 gcc 14.2.0
mips64 gcc 4.9.4
mips64 gcc 5.4
mips64 gcc 5.5.0
mips64 gcc 9.5.0
mips64el clang 13.0.0
mips64el clang 14.0.0
mips64el clang 15.0.0
mips64el clang 16.0.0
mips64el clang 17.0.1
mips64el clang 18.1.0
mipsel clang 13.0.0
mipsel clang 14.0.0
mipsel clang 15.0.0
mipsel clang 16.0.0
mipsel clang 17.0.1
mipsel clang 18.1.0
movfuscator (trunk)
nanoMIPS gcc 6.3.0
power gcc 11.2.0
power gcc 12.1.0
power gcc 12.2.0
power gcc 12.3.0
power gcc 12.4.0
power gcc 13.1.0
power gcc 13.2.0
power gcc 13.3.0
power gcc 14.1.0
power gcc 14.2.0
power gcc 4.8.5
power64 AT12.0 (gcc8)
power64 AT13.0 (gcc9)
power64le AT12.0 (gcc8)
power64le AT13.0 (gcc9)
power64le clang (trunk)
power64le gcc 11.2.0
power64le gcc 12.1.0
power64le gcc 12.2.0
power64le gcc 12.3.0
power64le gcc 12.4.0
power64le gcc 13.1.0
power64le gcc 13.2.0
power64le gcc 13.3.0
power64le gcc 14.1.0
power64le gcc 14.2.0
power64le gcc 6.3.0
power64le gcc trunk
powerpc64 clang (trunk)
ppci 0.5.5
s390x gcc 11.2.0
s390x gcc 12.1.0
s390x gcc 12.2.0
s390x gcc 12.3.0
s390x gcc 12.4.0
s390x gcc 13.1.0
s390x gcc 13.2.0
s390x gcc 13.3.0
s390x gcc 14.1.0
s390x gcc 14.2.0
sh gcc 12.2.0
sh gcc 12.3.0
sh gcc 12.4.0
sh gcc 13.1.0
sh gcc 13.2.0
sh gcc 13.3.0
sh gcc 14.1.0
sh gcc 14.2.0
sh gcc 4.9.4
sh gcc 9.5.0
vast (trunk)
x64 msvc v19.0 (WINE)
x64 msvc v19.10 (WINE)
x64 msvc v19.14 (WINE)
x64 msvc v19.20 VS16.0
x64 msvc v19.21 VS16.1
x64 msvc v19.22 VS16.2
x64 msvc v19.23 VS16.3
x64 msvc v19.24 VS16.4
x64 msvc v19.25 VS16.5
x64 msvc v19.27 VS16.7
x64 msvc v19.28 VS16.8
x64 msvc v19.28 VS16.9
x64 msvc v19.29 VS16.10
x64 msvc v19.29 VS16.11
x64 msvc v19.30 VS17.0
x64 msvc v19.31 VS17.1
x64 msvc v19.32 VS17.2
x64 msvc v19.33 VS17.3
x64 msvc v19.34 VS17.4
x64 msvc v19.35 VS17.5
x64 msvc v19.36 VS17.6
x64 msvc v19.37 VS17.7
x64 msvc v19.38 VS17.8
x64 msvc v19.39 VS17.9
x64 msvc v19.40 VS17.10
x64 msvc v19.latest
x86 CompCert 3.10
x86 CompCert 3.11
x86 CompCert 3.12
x86 CompCert 3.9
x86 gcc 1.27
x86 msvc v19.0 (WINE)
x86 msvc v19.10 (WINE)
x86 msvc v19.14 (WINE)
x86 msvc v19.20 VS16.0
x86 msvc v19.21 VS16.1
x86 msvc v19.22 VS16.2
x86 msvc v19.23 VS16.3
x86 msvc v19.24 VS16.4
x86 msvc v19.25 VS16.5
x86 msvc v19.27 VS16.7
x86 msvc v19.28 VS16.8
x86 msvc v19.28 VS16.9
x86 msvc v19.29 VS16.10
x86 msvc v19.29 VS16.11
x86 msvc v19.30 VS17.0
x86 msvc v19.31 VS17.1
x86 msvc v19.32 VS17.2
x86 msvc v19.33 VS17.3
x86 msvc v19.34 VS17.4
x86 msvc v19.35 VS17.5
x86 msvc v19.36 VS17.6
x86 msvc v19.37 VS17.7
x86 msvc v19.38 VS17.8
x86 msvc v19.39 VS17.9
x86 msvc v19.40 VS17.10
x86 msvc v19.latest
x86 nvc 24.9
x86 tendra (trunk)
x86-64 clang (assertions trunk)
x86-64 clang (thephd.dev)
x86-64 clang (trunk)
x86-64 clang (widberg)
x86-64 clang 10.0.0
x86-64 clang 10.0.1
x86-64 clang 11.0.0
x86-64 clang 11.0.1
x86-64 clang 12.0.0
x86-64 clang 12.0.1
x86-64 clang 13.0.0
x86-64 clang 13.0.1
x86-64 clang 14.0.0
x86-64 clang 15.0.0
x86-64 clang 16.0.0
x86-64 clang 17.0.1
x86-64 clang 18.1.0
x86-64 clang 19.1.0
x86-64 clang 3.0.0
x86-64 clang 3.1
x86-64 clang 3.2
x86-64 clang 3.3
x86-64 clang 3.4.1
x86-64 clang 3.5
x86-64 clang 3.5.1
x86-64 clang 3.5.2
x86-64 clang 3.6
x86-64 clang 3.7
x86-64 clang 3.7.1
x86-64 clang 3.8
x86-64 clang 3.8.1
x86-64 clang 3.9.0
x86-64 clang 3.9.1
x86-64 clang 4.0.0
x86-64 clang 4.0.1
x86-64 clang 5.0.0
x86-64 clang 5.0.1
x86-64 clang 5.0.2
x86-64 clang 6.0.0
x86-64 clang 6.0.1
x86-64 clang 7.0.0
x86-64 clang 7.0.1
x86-64 clang 7.1.0
x86-64 clang 8.0.0
x86-64 clang 8.0.1
x86-64 clang 9.0.0
x86-64 clang 9.0.1
x86-64 gcc (trunk)
x86-64 gcc 10.1
x86-64 gcc 10.2
x86-64 gcc 10.3
x86-64 gcc 10.4
x86-64 gcc 10.5
x86-64 gcc 11.1
x86-64 gcc 11.2
x86-64 gcc 11.3
x86-64 gcc 11.4
x86-64 gcc 12.1
x86-64 gcc 12.2
x86-64 gcc 12.3
x86-64 gcc 12.4
x86-64 gcc 13.1
x86-64 gcc 13.2
x86-64 gcc 13.3
x86-64 gcc 14.1
x86-64 gcc 14.2
x86-64 gcc 3.4.6
x86-64 gcc 4.0.4
x86-64 gcc 4.1.2
x86-64 gcc 4.4.7
x86-64 gcc 4.5.3
x86-64 gcc 4.6.4
x86-64 gcc 4.7.1
x86-64 gcc 4.7.2
x86-64 gcc 4.7.3
x86-64 gcc 4.7.4
x86-64 gcc 4.8.1
x86-64 gcc 4.8.2
x86-64 gcc 4.8.3
x86-64 gcc 4.8.4
x86-64 gcc 4.8.5
x86-64 gcc 4.9.0
x86-64 gcc 4.9.1
x86-64 gcc 4.9.2
x86-64 gcc 4.9.3
x86-64 gcc 4.9.4
x86-64 gcc 5.1
x86-64 gcc 5.2
x86-64 gcc 5.3
x86-64 gcc 5.4
x86-64 gcc 6.1
x86-64 gcc 6.2
x86-64 gcc 6.3
x86-64 gcc 6.5
x86-64 gcc 7.1
x86-64 gcc 7.2
x86-64 gcc 7.3
x86-64 gcc 7.4
x86-64 gcc 7.5
x86-64 gcc 8.1
x86-64 gcc 8.2
x86-64 gcc 8.3
x86-64 gcc 8.4
x86-64 gcc 8.5
x86-64 gcc 9.1
x86-64 gcc 9.2
x86-64 gcc 9.3
x86-64 gcc 9.4
x86-64 gcc 9.5
x86-64 icc 13.0.1
x86-64 icc 16.0.3
x86-64 icc 17.0.0
x86-64 icc 18.0.0
x86-64 icc 19.0.0
x86-64 icc 19.0.1
x86-64 icc 2021.1.2
x86-64 icc 2021.10.0
x86-64 icc 2021.2.0
x86-64 icc 2021.3.0
x86-64 icc 2021.4.0
x86-64 icc 2021.5.0
x86-64 icc 2021.6.0
x86-64 icc 2021.7.0
x86-64 icc 2021.7.1
x86-64 icc 2021.8.0
x86-64 icc 2021.9.0
x86-64 icx (latest)
x86-64 icx 2021.1.2
x86-64 icx 2021.2.0
x86-64 icx 2021.3.0
x86-64 icx 2021.4.0
x86-64 icx 2022.0.0
x86-64 icx 2022.1.0
x86-64 icx 2022.2.0
x86-64 icx 2022.2.1
x86-64 icx 2023.0.0
x86-64 icx 2023.1.0
x86-64 icx 2024.0.0
x86_64 CompCert 3.10
x86_64 CompCert 3.11
x86_64 CompCert 3.12
x86_64 CompCert 3.9
z88dk 2.2
zig cc 0.10.0
zig cc 0.11.0
zig cc 0.12.0
zig cc 0.12.1
zig cc 0.13.0
zig cc 0.6.0
zig cc 0.7.0
zig cc 0.7.1
zig cc 0.8.0
zig cc 0.9.0
zig cc trunk
Options
Source code
typedef int int32_t; struct bw_fixed { long long value; } bw_min2(struct bw_fixed , struct bw_fixed ); struct bw_fixed bw_max2(struct bw_fixed arg1, struct bw_fixed arg2) { return arg1.value ? arg1 : arg2; } bw_max3(struct bw_fixed v1, struct bw_fixed v2, struct bw_fixed v3) { } struct bw_fixed bw_int_to_fixed_nonconst(void); struct bw_fixed bw_add_res; long bw_add_res_0; struct bw_fixed bw_add(struct bw_fixed arg1, struct bw_fixed arg2) { bw_add_res_0 = arg1.value; return bw_add_res; } struct bw_fixed __trans_tmp_1; bw_mod(struct bw_fixed arg1) { } struct bw_fixed bw_floor2(struct bw_fixed); bw_neq(struct bw_fixed arg2) { } bw_meq(struct bw_fixed arg2) { } bw_ltn(struct bw_fixed arg1, struct bw_fixed arg2) { return arg1.value; } bw_mtn(struct bw_fixed arg1, struct bw_fixed arg2) { return arg1.value; } enum bw_defines { bw_def_graphicsbw_def_linear }; struct bw_calcs_dceip { _Bool large_cursor; struct bw_fixed underlay_vscaler_efficiency6_bit_per_component; struct bw_fixed underlay_vscaler_efficiency8_bit_per_component; struct bw_fixed underlay_vscaler_efficiency10_bit_per_component; struct bw_fixed underlay_vscaler_efficiency12_bit_per_component; struct bw_fixed graphics_vscaler_efficiency6_bit_per_component; struct bw_fixed graphics_vscaler_efficiency8_bit_per_component; struct bw_fixed graphics_vscaler_efficiency10_bit_per_component; struct bw_fixed lb_write_pixels_per_dispclk; struct bw_fixed stutter_and_dram_clock_state_change_gated_before_cursor; struct bw_fixed cursor_dcp_buffer_lines; struct bw_fixed minimum_outstanding_pte_request_limit; struct bw_fixed maximum_total_outstanding_pte_requests_allowed_by_saw; struct bw_fixed linear_mode_line_request_alternation_slice; struct bw_fixed display_pipe_throughput_factor; }; struct bw_calcs_vbios { struct bw_fixed low_yclk; struct bw_fixed mid_yclk; struct bw_fixed low_sclk; struct bw_fixed mid1_sclk; struct bw_fixed mid2_sclk; struct bw_fixed mid3_sclk; struct bw_fixed mid4_sclk; struct bw_fixed mid5_sclk; struct bw_fixed mid6_sclk; struct bw_fixed high_sclk; struct bw_fixed low_voltage_max_dispclk; struct bw_fixed mid_voltage_max_dispclk; struct bw_fixed high_voltage_max_dispclk; struct bw_fixed low_voltage_max_phyclk; struct bw_fixed mid_voltage_max_phyclk; struct bw_fixed high_voltage_max_phyclk; struct bw_fixed data_return_bus_width; struct bw_fixed trc; struct bw_fixed nbp_state_change_latency; struct bw_fixed mcifwrmc_urgent_latency; struct bw_fixed down_spread_percentage; struct bw_fixed blackout_duration; struct bw_fixed maximum_blackout_recovery_time; }; struct bw_calcs_data { int y_clk_level; int sclk_level; struct bw_fixed max_phyclk; struct bw_fixed dram_efficiency; struct bw_fixed min_dmif_size_in_time; struct bw_fixed total_requests_for_dmif_size; struct bw_fixed peak_pte_request_to_eviction_ratio_limiting; struct bw_fixed scatter_gather_row_height; struct bw_fixed inefficient_linear_pitch_in_bytes; struct bw_fixed cursor_total_data; struct bw_fixed cursor_total_request_groups; struct bw_fixed scatter_gather_total_pte_requests; struct bw_fixed scatter_gather_total_pte_request_groups; struct bw_fixed tile_width_in_pixels; struct bw_fixed mcifwr_total_number_of_data_request_page_close_open; struct bw_fixed bytes_per_page_close_open; struct bw_fixed mcifwr_total_page_close_open_time; struct bw_fixed total_requests_for_adjusted_dmif_size; struct bw_fixed total_dmifmc_urgent_trips; struct bw_fixed total_dmifmc_urgent_latency; struct bw_fixed total_display_reads_required_data; struct bw_fixed total_display_reads_required_dram_access_data; struct bw_fixed total_display_writes_required_data; struct bw_fixed total_display_writes_required_dram_access_data; struct bw_fixed display_reads_required_data; struct bw_fixed display_reads_required_dram_access_data; struct bw_fixed dmif_total_page_close_open_time; struct bw_fixed min_read_buffer_size_in_time; struct bw_fixed required_dram_bandwidth_gbyte_per_second; struct bw_fixed dram_bandwidth; struct bw_fixed dmif_required_sclk; struct bw_fixed mcifwr_required_sclk; struct bw_fixed required_sclk; struct bw_fixed downspread_factor; struct bw_fixed v_scaler_efficiency; struct bw_fixed scaler_limits_factor; struct bw_fixed display_pipe_pixel_throughput; struct bw_fixed total_read_request_bandwidth; struct bw_fixed total_dispclk_required_with_ramping_with_request_bandwidth; struct bw_fixed total_dispclk_required_without_ramping_with_request_bandwidth; struct bw_fixed dispclk; struct bw_fixed blackout_recovery_time; struct bw_fixed min_pixels_per_data_fifo_entry; struct bw_fixed sclk_deep_sleep; struct bw_fixed chunk_request_time; struct bw_fixed cursor_request_time; struct bw_fixed line_source_pixels_transfer_time; struct bw_fixed total_average_bandwidth_no_compression; struct bw_fixed total_stutter_cycle_duration; struct bw_fixed stutter_burst_time; struct bw_fixed time_in_self_refresh; struct bw_fixed stutter_efficiency; struct bw_fixed worst_number_of_trips_to_memory; struct bw_fixed display_reads_time_for_data_transfer_and_urgent_latency; struct bw_fixed dram_speed_change_margin; struct bw_fixed min_vblank_dram_speed_change_margin; struct bw_fixed min_stutter_refresh_duration; struct bw_fixed dmif_buffer_transfer_time[2]; struct bw_fixed displays_with_same_mode[12]; struct bw_fixed stutter_dmif_buffer_size[2]; struct bw_fixed stutter_refresh_duration[2]; struct bw_fixed stutter_exit_watermark[2]; struct bw_fixed h_total[2]; struct bw_fixed v_total[2]; struct bw_fixed pixel_rate[2]; struct bw_fixed pitch_in_pixels_after_surface_type[2]; struct bw_fixed h_taps[12]; struct bw_fixed rotation_angle[2]; struct bw_fixed compression_rate[2]; struct bw_fixed hsr[2]; struct bw_fixed vsr[2]; struct bw_fixed source_width_rounded_up_to_chunks[2]; struct bw_fixed display_bandwidth[2]; struct bw_fixed bytes_per_request[2]; struct bw_fixed useful_bytes_per_request[12]; struct bw_fixed lines_interleaved_in_mem_access[2]; struct bw_fixed latency_hiding_lines[2]; struct bw_fixed lb_partitions[12]; struct bw_fixed dispclk_required_with_ramping[12]; struct bw_fixed dispclk_required_without_ramping[12]; struct bw_fixed data_buffer_size[12]; struct bw_fixed v_filter_init[12]; struct bw_fixed average_bandwidth_no_compression[12]; struct bw_fixed scatter_gather_pte_request_limit[12]; struct bw_fixed memory_chunk_size_in_bytes[2]; struct bw_fixed pipe_chunk_size_in_bytes[12]; struct bw_fixed adjusted_data_buffer_size[2]; struct bw_fixed adjusted_data_buffer_size_in_memory[2]; struct bw_fixed pixels_per_data_fifo_entry[12]; struct bw_fixed scatter_gather_pte_requests_in_row[2]; struct bw_fixed pte_request_per_chunk[2]; struct bw_fixed scatter_gather_page_width[2]; struct bw_fixed lb_lines_in_per_line_out_in_beginning_of_frame[2]; struct bw_fixed lb_lines_in_per_line_out_in_middle_of_frame[2]; struct bw_fixed cursor_width_pixels[2]; struct bw_fixed minimum_latency_hiding[2]; struct bw_fixed maximum_latency_hiding[2]; struct bw_fixed maximum_latency_hiding_with_cursor[2]; struct bw_fixed src_pixels_for_first_output_pixel[2]; struct bw_fixed src_pixels_for_last_output_pixel[2]; struct bw_fixed src_data_for_last_output_pixel[2]; struct bw_fixed active_time[2]; struct bw_fixed horizontal_blank_and_chunk_granularity_factor[28]; struct bw_fixed dmif_burst_time[3][8]; struct bw_fixed mcifwr_burst_time[33][8]; struct bw_fixed min_dram_speed_change_margin[3][8]; struct bw_fixed dispclk_required_for_dram_speed_change[3][8]; struct bw_fixed dispclk_required_for_dram_speed_change_pipe[3][8]; struct bw_fixed blackout_duration_margin[3][8]; struct bw_fixed dispclk_required_for_blackout_duration[3][8]; struct bw_fixed dispclk_required_for_blackout_recovery[3][8]; struct bw_fixed dmif_required_sclk_for_urgent_latency[]; }; struct bw_fixed __trans_tmp_9; struct bw_fixed __trans_tmp_11; struct bw_fixed __trans_tmp_12; struct bw_fixed __trans_tmp_16; struct bw_fixed __trans_tmp_17; struct bw_fixed __trans_tmp_18; struct bw_fixed __trans_tmp_19; struct bw_fixed __trans_tmp_22; struct bw_fixed __trans_tmp_24; struct bw_fixed __trans_tmp_27; struct bw_fixed __trans_tmp_30; struct bw_fixed __trans_tmp_32; struct bw_fixed __trans_tmp_38; struct bw_fixed __trans_tmp_41 ; struct bw_fixed __trans_tmp_47; struct bw_fixed __trans_tmp_48; struct bw_fixed __trans_tmp_49; struct bw_fixed __trans_tmp_52; struct bw_fixed __trans_tmp_53; struct bw_fixed __trans_tmp_54; struct bw_fixed __trans_tmp_55; struct bw_fixed __trans_tmp_56; struct bw_fixed __trans_tmp_58; struct bw_fixed __trans_tmp_59; struct bw_fixed __trans_tmp_71; int32_t calculate_bandwidth_k; struct bw_fixed __trans_tmp_351 ; struct bw_fixed calculate_bandwidth___trans_tmp_300; _Bool calculate_bandwidth___trans_tmp_299; _Bool calculate_bandwidth___trans_tmp_295; struct bw_fixed calculate_bandwidth___trans_tmp_267 ; struct bw_fixed calculate_bandwidth___trans_tmp_246; struct bw_fixed calculate_bandwidth___trans_tmp_241; struct bw_fixed calculate_bandwidth___trans_tmp_238; struct bw_fixed calculate_bandwidth___trans_tmp_237; struct bw_fixed calculate_bandwidth___trans_tmp_236; struct bw_fixed calculate_bandwidth___trans_tmp_235; struct bw_fixed calculate_bandwidth___trans_tmp_233; struct bw_fixed calculate_bandwidth___trans_tmp_222; struct bw_fixed calculate_bandwidth___trans_tmp_221; struct bw_fixed calculate_bandwidth___trans_tmp_220; struct bw_fixed calculate_bandwidth___trans_tmp_217; struct bw_fixed calculate_bandwidth___trans_tmp_216; struct bw_fixed calculate_bandwidth___trans_tmp_211; struct bw_fixed calculate_bandwidth___trans_tmp_210; struct bw_fixed calculate_bandwidth___trans_tmp_209; struct bw_fixed calculate_bandwidth___trans_tmp_206; struct bw_fixed calculate_bandwidth___trans_tmp_205 ; struct bw_fixed calculate_bandwidth___trans_tmp_201; struct bw_fixed calculate_bandwidth___trans_tmp_199; struct bw_fixed calculate_bandwidth___trans_tmp_198; struct bw_fixed calculate_bandwidth___trans_tmp_197; struct bw_fixed calculate_bandwidth___trans_tmp_196; struct bw_fixed calculate_bandwidth___trans_tmp_195; struct bw_fixed calculate_bandwidth___trans_tmp_194; struct bw_fixed calculate_bandwidth___trans_tmp_193; struct bw_fixed calculate_bandwidth___trans_tmp_192; struct bw_fixed calculate_bandwidth___trans_tmp_191; struct bw_fixed calculate_bandwidth___trans_tmp_190; struct bw_fixed calculate_bandwidth___trans_tmp_189; struct bw_fixed calculate_bandwidth___trans_tmp_188; struct bw_fixed calculate_bandwidth___trans_tmp_187; struct bw_fixed calculate_bandwidth___trans_tmp_186; struct bw_fixed calculate_bandwidth___trans_tmp_185; struct bw_fixed calculate_bandwidth___trans_tmp_184; struct bw_fixed calculate_bandwidth___trans_tmp_179; struct bw_fixed calculate_bandwidth___trans_tmp_164; struct bw_fixed calculate_bandwidth___trans_tmp_160; struct bw_fixed calculate_bandwidth___trans_tmp_159; struct bw_fixed calculate_bandwidth___trans_tmp_149; struct bw_fixed calculate_bandwidth___trans_tmp_145; struct bw_fixed calculate_bandwidth___trans_tmp_144; struct bw_fixed calculate_bandwidth___trans_tmp_137; struct bw_fixed calculate_bandwidth___trans_tmp_122; struct bw_fixed calculate_bandwidth___trans_tmp_120; struct bw_fixed calculate_bandwidth___trans_tmp_117; struct bw_fixed calculate_bandwidth___trans_tmp_109; struct bw_fixed calculate_bandwidth___trans_tmp_107; struct bw_fixed calculate_bandwidth___trans_tmp_98; struct bw_fixed calculate_bandwidth___trans_tmp_97; struct bw_fixed calculate_bandwidth___trans_tmp_95; struct bw_fixed calculate_bandwidth___trans_tmp_92; struct bw_fixed calculate_bandwidth___trans_tmp_90; struct bw_fixed calculate_bandwidth___trans_tmp_88; struct bw_fixed calculate_bandwidth___trans_tmp_83; struct bw_fixed calculate_bandwidth___trans_tmp_82; struct bw_fixed calculate_bandwidth___trans_tmp_80; struct bw_fixed calculate_bandwidth___trans_tmp_72; struct bw_fixed calculate_bandwidth_res; calculate_bandwidth(struct bw_calcs_dceip *dceip, struct bw_calcs_vbios *vbios, struct bw_calcs_data *data) { ; int32_t i, j; struct bw_fixed yclk[3]; struct bw_fixed sclk[8]; enum bw_defines tiling_mode[12]; enum bw_defines surface_type[12]; i = 0; for (; i <= 1; i++) { { bw_min2( bw_min2(bw_int_to_fixed_nonconst(), bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst()); bw_min2( calculate_bandwidth___trans_tmp_72, bw_min2(bw_int_to_fixed_nonconst(), bw_int_to_fixed_nonconst())); bw_min2(bw_min2(bw_min2(bw_int_to_fixed_nonconst(), bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst()); } } bw_min2(bw_min2(bw_int_to_fixed_nonconst(), data->lines_interleaved_in_mem_access[i]), bw_int_to_fixed_nonconst()); data->pipe_chunk_size_in_bytes[i] = bw_min2(bw_min2(bw_int_to_fixed_nonconst(), bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst()); i = 0; for (; i <= 1; i++) bw_min2(bw_min2(data->data_buffer_size[i], data->bytes_per_request[i]), data->useful_bytes_per_request[i]); bw_min2(bw_min2(data->data_buffer_size[i], data->bytes_per_request[i]), data->useful_bytes_per_request[i]); data->total_requests_for_dmif_size = __trans_tmp_9; i = 0; for (; i <= 1; i++) if (surface_type[i]) data->adjusted_data_buffer_size[i] = bw_min2(data->data_buffer_size[i], bw_min2(bw_min2(data->min_dmif_size_in_time, data->display_bandwidth[i]), data->memory_chunk_size_in_bytes[i])); i = bw_neq(bw_int_to_fixed_nonconst()) && 0; bw_min2(bw_int_to_fixed_nonconst(), bw_int_to_fixed_nonconst()); ((data->rotation_angle[i]).value == bw_int_to_fixed_nonconst().value || bw_int_to_fixed_nonconst().value); bw_min2(bw_int_to_fixed_nonconst(), data->scatter_gather_page_width[i]); bw_min2(data->source_width_rounded_up_to_chunks[i], bw_int_to_fixed_nonconst()); data->scatter_gather_pte_requests_in_row[i] = bw_min2(bw_min2(bw_min2(bw_min2(calculate_bandwidth___trans_tmp_80, data->pte_request_per_chunk[i]), bw_int_to_fixed_nonconst()), data->scatter_gather_row_height), bw_int_to_fixed_nonconst()); bw_min2(bw_min2(data->adjusted_data_buffer_size[i], data->memory_chunk_size_in_bytes[i]), bw_min2(bw_min2(bw_min2(calculate_bandwidth___trans_tmp_82, data->pte_request_per_chunk[i]), data->peak_pte_request_to_eviction_ratio_limiting), bw_int_to_fixed_nonconst())); struct bw_fixed arg1 = dceip->minimum_outstanding_pte_request_limit; data->scatter_gather_pte_request_limit[i] = data->inefficient_linear_pitch_in_bytes = bw_min2(bw_min2(bw_int_to_fixed_nonconst(), bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst()); for (; i <= 1; i++) bw_add(data->cursor_total_data, bw_min2(bw_min2(bw_int_to_fixed_nonconst(), data->cursor_width_pixels[i]), bw_int_to_fixed_nonconst())); bw_add(data->cursor_total_request_groups, bw_int_to_fixed_nonconst()); bw_add(data->cursor_total_request_groups, bw_min2(__trans_tmp_11, bw_int_to_fixed_nonconst())); bw_min2(data->scatter_gather_pte_request_limit[i], bw_min2(data->pte_request_per_chunk[i], bw_int_to_fixed_nonconst())); bw_add( data->scatter_gather_total_pte_request_groups, bw_min2(calculate_bandwidth___trans_tmp_83, bw_int_to_fixed_nonconst())); { bw_max2(bw_min2(bw_min2(bw_min2(bw_int_to_fixed_nonconst(), data->tile_width_in_pixels), bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst()), bw_min2(bw_int_to_fixed_nonconst(), data->scatter_gather_page_width[i])); bw_mod(bw_min2(data->pitch_in_pixels_after_surface_type[i], bw_int_to_fixed_nonconst())); tiling_mode[i] && (bw_int_to_fixed_nonconst().value); data->bytes_per_page_close_open = dceip->linear_mode_line_request_alternation_slice; bw_min2(bw_min2(data->adjusted_data_buffer_size[i], data->memory_chunk_size_in_bytes[i]), data->bytes_per_page_close_open); bw_min2(bw_min2(data->adjusted_data_buffer_size[i], data->memory_chunk_size_in_bytes[i]), data->bytes_per_page_close_open); } data->dmif_total_page_close_open_time = bw_min2(bw_min2(__trans_tmp_12, vbios->trc), bw_int_to_fixed_nonconst()); data->mcifwr_total_page_close_open_time = bw_min2(bw_min2(data->mcifwr_total_number_of_data_request_page_close_open, vbios->trc), bw_int_to_fixed_nonconst()); for (; i <= 12; i++) data->adjusted_data_buffer_size_in_memory[i] = data->total_requests_for_adjusted_dmif_size; data->display_reads_required_data = data->display_reads_required_dram_access_data = bw_min2(data->adjusted_data_buffer_size_in_memory[i], bw_min2(__trans_tmp_16, __trans_tmp_17)); bw_min2(bw_int_to_fixed_nonconst(), bw_min2(data->adjusted_data_buffer_size_in_memory[i], bw_min2(calculate_bandwidth___trans_tmp_88, bw_int_to_fixed_nonconst()))); bw_add(__trans_tmp_18, bw_min2(data->scatter_gather_total_pte_requests, bw_int_to_fixed_nonconst())); bw_add(__trans_tmp_19, bw_min2(data->scatter_gather_total_pte_requests, bw_int_to_fixed_nonconst())); i = 0; bw_mtn(data->v_filter_init[i], bw_int_to_fixed_nonconst()); bw_min2(bw_min2(bw_min2(data->src_pixels_for_first_output_pixel[i], bw_int_to_fixed_nonconst()), data->bytes_per_request[i]), data->useful_bytes_per_request[i]); bw_max2(bw_min2(data->v_filter_init[i], bw_int_to_fixed_nonconst()), bw_min2(bw_min2(data->vsr[i], bw_int_to_fixed_nonconst()), data->horizontal_blank_and_chunk_granularity_factor[i])); data->src_pixels_for_last_output_pixel[i] = bw_max2(bw_min2(data->v_filter_init[i], __trans_tmp_351), data->lines_interleaved_in_mem_access[i]); data->src_data_for_last_output_pixel[i] = bw_min2( bw_min2(bw_min2(bw_min2(data->source_width_rounded_up_to_chunks[i], calculate_bandwidth___trans_tmp_90), bw_int_to_fixed_nonconst()), data->bytes_per_request[i]), data->useful_bytes_per_request[i]); for (; i <= 2; i++) j = 0; for (; j <= 7; j++) bw_min2(bw_min2(bw_min2(data->dram_efficiency, yclk[0]), bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst()); bw_min2( data->total_display_reads_required_dram_access_data, bw_min2(calculate_bandwidth___trans_tmp_92, bw_int_to_fixed_nonconst())); bw_min2(data->total_display_reads_required_data, bw_min2(bw_min2(sclk[0], vbios->data_return_bus_width), bw_int_to_fixed_nonconst())); bw_min2(bw_min2(bw_min2(data->dram_efficiency, yclk[i]), bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst()); bw_min2( data->total_display_writes_required_dram_access_data, bw_min2(calculate_bandwidth___trans_tmp_95, bw_int_to_fixed_nonconst())); bw_min2(data->total_display_writes_required_data, bw_min2(sclk[j], vbios->data_return_bus_width)); for (; i <= 12; i++) j = 0; bw_add(bw_min2(__trans_tmp_24, bw_floor2(bw_int_to_fixed_nonconst())), data->dmif_buffer_transfer_time[i]); bw_max2(bw_min2(__trans_tmp_22, bw_floor2(bw_int_to_fixed_nonconst())), (data->active_time[i])); dceip->graphics_vscaler_efficiency6_bit_per_component = dceip->graphics_vscaler_efficiency8_bit_per_component = dceip->graphics_vscaler_efficiency10_bit_per_component; data->v_scaler_efficiency = dceip->underlay_vscaler_efficiency6_bit_per_component; dceip &&bw_mtn(data->hsr[i], bw_int_to_fixed_nonconst()); bw_min2(data->h_taps[i], bw_int_to_fixed_nonconst()); bw_max2(__trans_tmp_27, bw_int_to_fixed_nonconst()); bw_max3( bw_int_to_fixed_nonconst(), bw_min2(calculate_bandwidth___trans_tmp_97, bw_int_to_fixed_nonconst()), bw_min2(data->hsr[i], calculate_bandwidth___trans_tmp_98)); bw_min2(bw_min2(bw_min2(data->bytes_per_request[i], data->pixel_rate[i]), data->scaler_limits_factor), bw_int_to_fixed_nonconst()); bw_min2(bw_min2(data->bytes_per_request[i], sclk[calculate_bandwidth_k]), bw_min2(data->dmif_burst_time[j][calculate_bandwidth_k], bw_floor2(bw_int_to_fixed_nonconst()))); bw_min2(bw_min2(bw_min2(data->bytes_per_request[i], data->pixel_rate[i]), data->scaler_limits_factor), bw_int_to_fixed_nonconst()); bw_min2(bw_min2(data->bytes_per_request[i], sclk[calculate_bandwidth_k]), calculate_bandwidth___trans_tmp_107); bw_min2(bw_min2(data->dmif_burst_time[j][calculate_bandwidth_k], bw_floor2(bw_int_to_fixed_nonconst())), data->active_time[i]); bw_min2(bw_int_to_fixed_nonconst(), calculate_bandwidth___trans_tmp_267); bw_min2(bw_min2(__trans_tmp_32, bw_floor2(bw_int_to_fixed_nonconst())), data->active_time[i]); bw_max2(bw_min2(__trans_tmp_30, bw_floor2(bw_int_to_fixed_nonconst())), calculate_bandwidth___trans_tmp_109); bw_min2(bw_min2(data->bytes_per_request[i], vbios->low_voltage_max_dispclk), bw_int_to_fixed_nonconst()); bw_min2(bw_min2(data->bytes_per_request[i], sclk[calculate_bandwidth_k]), bw_min2(data->mcifwr_burst_time[j][calculate_bandwidth_k], bw_floor2(bw_int_to_fixed_nonconst()))); bw_min2(bw_min2(data->bytes_per_request[i], vbios->low_voltage_max_dispclk), bw_int_to_fixed_nonconst()); bw_min2(bw_min2(data->bytes_per_request[i], sclk[calculate_bandwidth_k]), calculate_bandwidth___trans_tmp_117); bw_min2(bw_min2(data->mcifwr_burst_time[j][calculate_bandwidth_k], bw_floor2(bw_int_to_fixed_nonconst())), data->active_time[i]); if (((dceip->stutter_and_dram_clock_state_change_gated_before_cursor).value == bw_int_to_fixed_nonconst().value) && bw_mtn(data->cursor_width_pixels[i], bw_int_to_fixed_nonconst())) bw_ltn(data->vsr[i], bw_int_to_fixed_nonconst()); bw_min2(dceip->cursor_dcp_buffer_lines, bw_int_to_fixed_nonconst()); bw_min2(bw_min2(calculate_bandwidth___trans_tmp_120, data->h_total[i]), bw_int_to_fixed_nonconst()); bw_min2(bw_min2(calculate_bandwidth___trans_tmp_122, data->h_total[i]), data->vsr[i]); i = 0; for (; i <= 1; i++) ((data->vsr[i]).value == bw_int_to_fixed_nonconst().value || bw_int_to_fixed_nonconst().value && bw_int_to_fixed_nonconst().value); bw_min2(data->lb_partitions[i], bw_int_to_fixed_nonconst()); bw_min2(data->data_buffer_size[i], bw_int_to_fixed_nonconst()); bw_min2(bw_min2(__trans_tmp_1, data->h_total[i]), data->pixel_rate[i]); bw_min2(data->lb_partitions[i], bw_int_to_fixed_nonconst()); bw_min2(data->data_buffer_size[i], bw_int_to_fixed_nonconst()); bw_min2(bw_min2(__trans_tmp_1, data->h_total[i]), data->pixel_rate[i]); bw_min2(data->data_buffer_size[i], bw_int_to_fixed_nonconst()); bw_add(bw_int_to_fixed_nonconst(), calculate_bandwidth___trans_tmp_137); bw_min2(bw_min2(__trans_tmp_1, data->h_total[i]), data->pixel_rate[i]); i = 0; for (; j <= 7; j++) bw_mtn(vbios->blackout_duration, bw_int_to_fixed_nonconst()); bw_min2( bw_min2(data->src_pixels_for_first_output_pixel[calculate_bandwidth_k], dceip->display_pipe_throughput_factor), dceip->lb_write_pixels_per_dispclk); bw_min2(bw_min2(data->src_pixels_for_last_output_pixel[calculate_bandwidth_k], dceip->display_pipe_throughput_factor), dceip->lb_write_pixels_per_dispclk); bw_add(bw_min2(bw_int_to_fixed_nonconst(), data->total_dmifmc_urgent_latency), data->dmif_burst_time[i][j]); bw_add( bw_min2(bw_int_to_fixed_nonconst(), data->total_dmifmc_urgent_latency), data->dmif_burst_time[i][j]); bw_min2(bw_min2(data->display_bandwidth[calculate_bandwidth_k], data->useful_bytes_per_request[calculate_bandwidth_k]), bw_min2(calculate_bandwidth___trans_tmp_144, calculate_bandwidth___trans_tmp_145)); bw_min2(bw_min2(data->display_bandwidth[calculate_bandwidth_k], data->useful_bytes_per_request[calculate_bandwidth_k]), data->bytes_per_request[calculate_bandwidth_k]); bw_min2(bw_min2(calculate_bandwidth___trans_tmp_149, __trans_tmp_38), bw_int_to_fixed_nonconst()); bw_min2( bw_min2(bw_int_to_fixed_nonconst(), data->total_dmifmc_urgent_latency), data->dmif_burst_time[i][j]); bw_min2( bw_min2(__trans_tmp_1, data->latency_hiding_lines[calculate_bandwidth_k]), data->lines_interleaved_in_mem_access[calculate_bandwidth_k]); bw_min2( bw_min2(data->src_pixels_for_first_output_pixel[calculate_bandwidth_k], dceip->display_pipe_throughput_factor), dceip->lb_write_pixels_per_dispclk); bw_min2(bw_min2(data->src_pixels_for_last_output_pixel[calculate_bandwidth_k], dceip->display_pipe_throughput_factor), dceip->lb_write_pixels_per_dispclk); bw_add(bw_min2(bw_int_to_fixed_nonconst(), vbios->mcifwrmc_urgent_latency), data->dmif_burst_time[i][j]); { struct bw_fixed arg1 = vbios->maximum_blackout_recovery_time; calculate_bandwidth___trans_tmp_295 = arg1.value; } { bw_add( bw_min2(bw_int_to_fixed_nonconst(), data->total_dmifmc_urgent_latency), data->dmif_burst_time[i][j]); bw_min2(bw_min2(data->display_bandwidth[calculate_bandwidth_k], data->useful_bytes_per_request[calculate_bandwidth_k]), bw_min2(calculate_bandwidth___trans_tmp_159, calculate_bandwidth___trans_tmp_160)); bw_min2(bw_min2(data->display_bandwidth[calculate_bandwidth_k], data->useful_bytes_per_request[calculate_bandwidth_k]), data->bytes_per_request[calculate_bandwidth_k]); bw_min2(bw_min2(calculate_bandwidth___trans_tmp_164, __trans_tmp_41), bw_int_to_fixed_nonconst()); bw_add( bw_min2(bw_int_to_fixed_nonconst(), data->total_dmifmc_urgent_latency), data->dmif_burst_time[i][j]); bw_min2(bw_min2(__trans_tmp_1, data->latency_hiding_lines[calculate_bandwidth_k]), data->lines_interleaved_in_mem_access[calculate_bandwidth_k]); struct bw_fixed arg1 = data->dispclk_required_for_blackout_duration[2][7]; calculate_bandwidth___trans_tmp_299 = arg1.value; } if (bw_mtn(data->blackout_duration_margin[2][7], bw_int_to_fixed_nonconst()) ) bw_add( data->minimum_latency_hiding[i], bw_min2(bw_int_to_fixed_nonconst(), data->total_dmifmc_urgent_latency)); data->maximum_latency_hiding[i] = bw_add( data->minimum_latency_hiding[i], bw_min2(bw_int_to_fixed_nonconst(), data->total_dmifmc_urgent_latency)); data->maximum_latency_hiding_with_cursor[i] = calculate_bandwidth___trans_tmp_300; bw_mtn(data->dram_speed_change_margin, bw_int_to_fixed_nonconst()) && bw_ltn(data->dram_speed_change_margin, bw_int_to_fixed_nonconst()); bw_min2( bw_min2(data->src_pixels_for_first_output_pixel[calculate_bandwidth_k], dceip->display_pipe_throughput_factor), dceip->lb_write_pixels_per_dispclk); bw_min2(bw_min2(data->src_pixels_for_last_output_pixel[calculate_bandwidth_k], dceip->display_pipe_throughput_factor), dceip->lb_write_pixels_per_dispclk); bw_mtn(data->dram_speed_change_margin, bw_int_to_fixed_nonconst()) && bw_ltn(data->dram_speed_change_margin, bw_int_to_fixed_nonconst()); bw_min2( bw_min2(data->src_pixels_for_first_output_pixel[calculate_bandwidth_k], dceip->display_pipe_throughput_factor), dceip->lb_write_pixels_per_dispclk); bw_min2(bw_min2(data->src_pixels_for_last_output_pixel[calculate_bandwidth_k], dceip->display_pipe_throughput_factor), dceip->lb_write_pixels_per_dispclk); data->dispclk_required_for_dram_speed_change_pipe[i][j] = data->min_vblank_dram_speed_change_margin ; { { bw_min2(__trans_tmp_47, bw_int_to_fixed_nonconst()); bw_min2(bw_min2(calculate_bandwidth___trans_tmp_179, data->h_total[calculate_bandwidth_k]), data->pixel_rate[calculate_bandwidth_k]); { bw_min2(__trans_tmp_48, bw_int_to_fixed_nonconst()); bw_min2(bw_min2(calculate_bandwidth___trans_tmp_184, data->h_total[calculate_bandwidth_k]), data->pixel_rate[calculate_bandwidth_k]); { vbios->nbp_state_change_latency= calculate_bandwidth_res; } data->dmif_burst_time[0][0]= calculate_bandwidth_res; } struct bw_fixed arg2 = data->mcifwr_burst_time[0][0]; calculate_bandwidth_res.value = arg1.value - arg2.value; } } for (; i <= 12; i++) { calculate_bandwidth___trans_tmp_185 = bw_max2(bw_int_to_fixed_nonconst(), data->displays_with_same_mode[i]); } bw_mtn(data->min_dram_speed_change_margin[2][7], bw_int_to_fixed_nonconst()) && bw_ltn(data->min_dram_speed_change_margin[2][7], bw_int_to_fixed_nonconst()) ; i = 0; for (; i <= 1; i++) data->average_bandwidth_no_compression[i] = __trans_tmp_49; struct bw_fixed arg2 = bw_min2(bw_min2(__trans_tmp_52, __trans_tmp_53), bw_int_to_fixed_nonconst()); bw_min2(calculate_bandwidth___trans_tmp_186, bw_int_to_fixed_nonconst()); bw_min2(__trans_tmp_54, bw_int_to_fixed_nonconst()); bw_min2(bw_int_to_fixed_nonconst(), bw_int_to_fixed_nonconst()); bw_min2(bw_min2(bw_min2(data->dram_efficiency, yclk[0]), bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst()); { data->dispclk_required_for_blackout_recovery[0][7]= data->dispclk_required_for_dram_speed_change[0][7]; } bw_ltn(data->total_average_bandwidth_no_compression, bw_min2(bw_min2(bw_min2(bw_int_to_fixed_nonconst(), yclk[0]), calculate_bandwidth___trans_tmp_187), bw_int_to_fixed_nonconst())) && bw_ltn(bw_min2(data->required_dram_bandwidth_gbyte_per_second, bw_int_to_fixed_nonconst()), bw_min2(calculate_bandwidth___trans_tmp_188, bw_int_to_fixed_nonconst())) && bw_mtn(data->blackout_duration_margin[0][7], bw_int_to_fixed_nonconst()) || bw_mtn(data->blackout_duration_margin[0][7], bw_int_to_fixed_nonconst()) || bw_mtn(data->min_dram_speed_change_margin[0][7], bw_int_to_fixed_nonconst()) && bw_ltn(data->min_dram_speed_change_margin[0][7], bw_int_to_fixed_nonconst()) ; bw_min2(bw_min2(bw_min2(data->dram_efficiency, yclk[0]), bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst()); bw_min2(calculate_bandwidth___trans_tmp_189, bw_int_to_fixed_nonconst()); bw_min2(bw_int_to_fixed_nonconst(), bw_int_to_fixed_nonconst()); bw_min2(bw_min2(bw_min2(data->dram_efficiency, yclk[1]), bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst()); { data->dispclk_required_for_blackout_duration[1][7]= data->dispclk_required_for_blackout_recovery[1][7]= data->dispclk_required_for_dram_speed_change[1][7]= vbios->high_voltage_max_dispclk; } bw_ltn(data->total_average_bandwidth_no_compression, bw_min2(bw_min2(bw_min2(bw_int_to_fixed_nonconst(), yclk[1]), calculate_bandwidth___trans_tmp_190), bw_int_to_fixed_nonconst())) && bw_ltn(bw_min2(data->required_dram_bandwidth_gbyte_per_second, bw_int_to_fixed_nonconst()), bw_min2(calculate_bandwidth___trans_tmp_191, bw_int_to_fixed_nonconst())) && bw_mtn(data->blackout_duration_margin[1][7], bw_int_to_fixed_nonconst()) || bw_mtn(data->blackout_duration_margin[1][7], bw_int_to_fixed_nonconst()) || bw_mtn(data->min_dram_speed_change_margin[1][7], bw_int_to_fixed_nonconst()) && bw_ltn(data->min_dram_speed_change_margin[1][7], bw_int_to_fixed_nonconst()) ; bw_min2(bw_min2(bw_min2(data->dram_efficiency, yclk[1]), bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst()); bw_min2(calculate_bandwidth___trans_tmp_192, bw_int_to_fixed_nonconst()); bw_min2(bw_int_to_fixed_nonconst(), bw_int_to_fixed_nonconst()); bw_min2(bw_min2(bw_min2(data->dram_efficiency, yclk[2]), bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst()); bw_ltn(data->total_average_bandwidth_no_compression, bw_min2(bw_min2(bw_min2(bw_int_to_fixed_nonconst(), yclk[2]), calculate_bandwidth___trans_tmp_193), bw_int_to_fixed_nonconst())) && bw_ltn(bw_min2(data->required_dram_bandwidth_gbyte_per_second, bw_int_to_fixed_nonconst()), bw_min2(calculate_bandwidth___trans_tmp_194, bw_int_to_fixed_nonconst())); bw_min2(bw_min2(bw_min2(data->dram_efficiency, yclk[2]), bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst()); bw_min2(calculate_bandwidth___trans_tmp_195, bw_int_to_fixed_nonconst()); bw_min2(bw_min2(bw_min2(data->dram_efficiency, yclk[2]), bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst()); data->dram_bandwidth = bw_min2(calculate_bandwidth___trans_tmp_196, bw_int_to_fixed_nonconst()); data->dmif_required_sclk = bw_min2(__trans_tmp_55, bw_min2(vbios->data_return_bus_width, bw_int_to_fixed_nonconst())); data->mcifwr_required_sclk = __trans_tmp_56; { arg2 = dceip->maximum_total_outstanding_pte_requests_allowed_by_saw; } bw_ltn(data->total_average_bandwidth_no_compression, bw_min2(bw_min2(bw_int_to_fixed_nonconst(), sclk[0]), vbios->data_return_bus_width)) && bw_mtn(data->blackout_duration_margin[data->y_clk_level][0], bw_int_to_fixed_nonconst()) || bw_mtn(data->blackout_duration_margin[data->y_clk_level][0], bw_int_to_fixed_nonconst()) || bw_mtn(data->min_dram_speed_change_margin[data->y_clk_level][0], bw_int_to_fixed_nonconst()) && bw_ltn(data->min_dram_speed_change_margin[data->y_clk_level][0], bw_int_to_fixed_nonconst()); data->required_sclk = vbios->low_sclk; bw_ltn(data->total_average_bandwidth_no_compression, bw_min2(bw_min2(bw_int_to_fixed_nonconst(), sclk[1]), vbios->data_return_bus_width)) && bw_mtn(data->blackout_duration_margin[data->y_clk_level][1], bw_int_to_fixed_nonconst()) || bw_mtn(data->blackout_duration_margin[data->y_clk_level][1], bw_int_to_fixed_nonconst()) || bw_mtn(data->min_dram_speed_change_margin[data->y_clk_level][1], bw_int_to_fixed_nonconst()) && bw_ltn(data->min_dram_speed_change_margin[data->y_clk_level][1], bw_int_to_fixed_nonconst()); data->required_sclk = vbios->mid1_sclk; bw_ltn(data->total_average_bandwidth_no_compression, bw_min2(bw_min2(bw_int_to_fixed_nonconst(), sclk[2]), vbios->data_return_bus_width)) && bw_mtn(data->blackout_duration_margin[data->y_clk_level][2], bw_int_to_fixed_nonconst()) || bw_mtn(data->blackout_duration_margin[data->y_clk_level][2], bw_int_to_fixed_nonconst()) || bw_mtn(data->min_dram_speed_change_margin[data->y_clk_level][2], bw_int_to_fixed_nonconst()) && bw_ltn(data->min_dram_speed_change_margin[data->y_clk_level][2], bw_int_to_fixed_nonconst()); data->required_sclk = vbios->mid2_sclk; bw_ltn(data->total_average_bandwidth_no_compression, bw_min2(bw_min2(bw_int_to_fixed_nonconst(), sclk[3]), vbios->data_return_bus_width)) && bw_mtn(data->blackout_duration_margin[data->y_clk_level][3], bw_int_to_fixed_nonconst()) || bw_mtn(data->blackout_duration_margin[data->y_clk_level][3], bw_int_to_fixed_nonconst()) || bw_mtn(data->min_dram_speed_change_margin[data->y_clk_level][3], bw_int_to_fixed_nonconst()) && bw_ltn(data->min_dram_speed_change_margin[data->y_clk_level][3], bw_int_to_fixed_nonconst()); data->required_sclk = vbios->mid3_sclk; bw_ltn(data->total_average_bandwidth_no_compression, bw_min2(bw_min2(bw_int_to_fixed_nonconst(), sclk[4]), vbios->data_return_bus_width)) && bw_mtn(data->blackout_duration_margin[data->y_clk_level][4], bw_int_to_fixed_nonconst()) || bw_mtn(data->blackout_duration_margin[data->y_clk_level][4], bw_int_to_fixed_nonconst()) || bw_mtn(data->min_dram_speed_change_margin[data->y_clk_level][4], bw_int_to_fixed_nonconst()) && bw_ltn(data->min_dram_speed_change_margin[data->y_clk_level][4], bw_int_to_fixed_nonconst()); data->required_sclk = vbios->mid4_sclk; bw_ltn(data->total_average_bandwidth_no_compression, bw_min2(bw_min2(bw_int_to_fixed_nonconst(), sclk[5]), vbios->data_return_bus_width)) && bw_mtn(data->blackout_duration_margin[data->y_clk_level][5], bw_int_to_fixed_nonconst()) || bw_mtn(data->blackout_duration_margin[data->y_clk_level][5], bw_int_to_fixed_nonconst()) || bw_mtn(data->min_dram_speed_change_margin[data->y_clk_level][5], bw_int_to_fixed_nonconst()) && bw_ltn(data->min_dram_speed_change_margin[data->y_clk_level][5], bw_int_to_fixed_nonconst()); data->required_sclk = vbios->mid5_sclk; bw_ltn(data->total_average_bandwidth_no_compression, bw_min2(bw_min2(bw_int_to_fixed_nonconst(), sclk[6]), vbios->data_return_bus_width)) && bw_mtn(data->blackout_duration_margin[data->y_clk_level][6], bw_int_to_fixed_nonconst()) || bw_mtn(data->blackout_duration_margin[data->y_clk_level][6], bw_int_to_fixed_nonconst()) || bw_mtn(data->min_dram_speed_change_margin[data->y_clk_level][6], bw_int_to_fixed_nonconst()) && bw_ltn(data->min_dram_speed_change_margin[data->y_clk_level][6], bw_int_to_fixed_nonconst()); data->required_sclk = vbios->mid6_sclk; bw_ltn(data->total_average_bandwidth_no_compression, bw_min2(bw_min2(bw_int_to_fixed_nonconst(), sclk[7]), vbios->data_return_bus_width)); data->required_sclk = vbios->high_sclk; bw_meq(bw_min2(bw_min2(bw_int_to_fixed_nonconst(), sclk[7]), vbios->data_return_bus_width)); bw_min2(vbios->down_spread_percentage, bw_int_to_fixed_nonconst()); data->downspread_factor = bw_add(bw_int_to_fixed_nonconst(), calculate_bandwidth___trans_tmp_197); for (; i - 1; i++) { dceip->underlay_vscaler_efficiency8_bit_per_component = dceip->underlay_vscaler_efficiency10_bit_per_component = dceip->underlay_vscaler_efficiency12_bit_per_component; } bw_min2(data->h_taps[i], bw_int_to_fixed_nonconst()); bw_max2(__trans_tmp_58, bw_int_to_fixed_nonconst()); bw_max3( bw_int_to_fixed_nonconst(), bw_min2(calculate_bandwidth___trans_tmp_198, bw_int_to_fixed_nonconst()), bw_min2(data->hsr[i], calculate_bandwidth___trans_tmp_199)); calculate_bandwidth___trans_tmp_201 = bw_max2(data->lb_lines_in_per_line_out_in_beginning_of_frame[i], bw_min2(data->lb_lines_in_per_line_out_in_middle_of_frame[i], data->horizontal_blank_and_chunk_granularity_factor[i])); bw_min2(bw_min2(calculate_bandwidth___trans_tmp_201, data->source_width_rounded_up_to_chunks[i]), __trans_tmp_59); bw_max2(bw_min2(data->pixel_rate[i], data->scaler_limits_factor), bw_min2(dceip->display_pipe_throughput_factor, data->display_pipe_pixel_throughput)); data->dispclk_required_without_ramping[i] = bw_max2(bw_min2(data->pixel_rate[i], data->scaler_limits_factor), data->display_pipe_pixel_throughput); data->dispclk_required_with_ramping[i] = data->total_dispclk_required_with_ramping_with_request_bandwidth = data->total_dispclk_required_without_ramping_with_request_bandwidth; ((bw_int_to_fixed_nonconst()).value); { arg2 = vbios->mid_voltage_max_dispclk; } ((bw_int_to_fixed_nonconst()).value == (bw_int_to_fixed_nonconst()).value == (bw_int_to_fixed_nonconst()).value == (vbios->low_yclk).value) || ((bw_int_to_fixed_nonconst()).value == (vbios->mid_yclk).value) || ((bw_int_to_fixed_nonconst()).value); vbios->low_voltage_max_phyclk = vbios->mid_voltage_max_phyclk; data->max_phyclk = vbios->high_voltage_max_phyclk; bw_mtn(vbios->blackout_duration, bw_int_to_fixed_nonconst()); bw_add( bw_min2(bw_int_to_fixed_nonconst(), data->total_dmifmc_urgent_latency), data->dmif_burst_time[data->y_clk_level][data->sclk_level]); data->blackout_recovery_time = bw_add( bw_min2(bw_int_to_fixed_nonconst(), data->total_dmifmc_urgent_latency), data->dmif_burst_time[data->y_clk_level][data->sclk_level]); bw_min2(bw_min2(data->display_bandwidth[calculate_bandwidth_k], data->useful_bytes_per_request[calculate_bandwidth_k]), bw_min2(calculate_bandwidth___trans_tmp_205, calculate_bandwidth___trans_tmp_206)); bw_min2(bw_min2(data->display_bandwidth[calculate_bandwidth_k], data->useful_bytes_per_request[calculate_bandwidth_k]), data->bytes_per_request[calculate_bandwidth_k]); bw_add(bw_min2(bw_int_to_fixed_nonconst(), data->total_dmifmc_urgent_latency), data->dmif_burst_time[data->y_clk_level][data->sclk_level]); bw_min2(bw_min2(bw_min2(bw_min2(calculate_bandwidth___trans_tmp_211, data->dispclk), bw_int_to_fixed_nonconst()), data->lines_interleaved_in_mem_access[calculate_bandwidth_k]), data->latency_hiding_lines[calculate_bandwidth_k]); bw_add(bw_min2(calculate_bandwidth___trans_tmp_209, vbios->blackout_duration), calculate_bandwidth___trans_tmp_210); bw_min2(bw_min2(bw_min2(data->dispclk, bw_int_to_fixed_nonconst()), data->lines_interleaved_in_mem_access[calculate_bandwidth_k]), data->latency_hiding_lines[calculate_bandwidth_k]); bw_min2(bw_min2(data->display_bandwidth[calculate_bandwidth_k], data->useful_bytes_per_request[calculate_bandwidth_k]), data->bytes_per_request[calculate_bandwidth_k]); bw_add(bw_min2(bw_int_to_fixed_nonconst(), vbios->mcifwrmc_urgent_latency), data->mcifwr_burst_time[data->y_clk_level][data->sclk_level]); bw_add( bw_min2(bw_int_to_fixed_nonconst(), vbios->mcifwrmc_urgent_latency), data->mcifwr_burst_time[data->y_clk_level][data->sclk_level]); bw_min2(bw_min2(data->display_bandwidth[calculate_bandwidth_k], data->useful_bytes_per_request[calculate_bandwidth_k]), bw_min2(calculate_bandwidth___trans_tmp_216, calculate_bandwidth___trans_tmp_217)); bw_min2(bw_min2(data->display_bandwidth[calculate_bandwidth_k], data->useful_bytes_per_request[calculate_bandwidth_k]), data->bytes_per_request[calculate_bandwidth_k]); bw_add(bw_min2(bw_int_to_fixed_nonconst(), vbios->mcifwrmc_urgent_latency), data->dmif_burst_time[data->y_clk_level][data->sclk_level]); bw_min2(bw_min2(bw_min2(bw_min2(calculate_bandwidth___trans_tmp_222, data->dispclk), bw_int_to_fixed_nonconst()), data->lines_interleaved_in_mem_access[calculate_bandwidth_k]), data->latency_hiding_lines[calculate_bandwidth_k]); bw_add(bw_min2(calculate_bandwidth___trans_tmp_220, vbios->blackout_duration), calculate_bandwidth___trans_tmp_221); bw_min2(bw_min2(bw_min2(data->dispclk, bw_int_to_fixed_nonconst()), data->lines_interleaved_in_mem_access[calculate_bandwidth_k]), data->latency_hiding_lines[calculate_bandwidth_k]); bw_min2(bw_min2(data->display_bandwidth[calculate_bandwidth_k], data->useful_bytes_per_request[calculate_bandwidth_k]), data->bytes_per_request[calculate_bandwidth_k]); for (; i <= 12; i++) if (surface_type[0]) data->pixels_per_data_fifo_entry[i] = bw_min2(bw_int_to_fixed_nonconst(), bw_int_to_fixed_nonconst()); else data->pixels_per_data_fifo_entry[i] = bw_min2(bw_int_to_fixed_nonconst(), bw_int_to_fixed_nonconst()); data->min_pixels_per_data_fifo_entry = data->pixels_per_data_fifo_entry[i]; bw_min2(bw_min2(data->dispclk, bw_int_to_fixed_nonconst()), data->min_pixels_per_data_fifo_entry); data->sclk_deep_sleep = data->total_read_request_bandwidth; bw_min2(bw_int_to_fixed_nonconst(), data->useful_bytes_per_request[i]); bw_min2(data->dispclk, bw_int_to_fixed_nonconst()); data->chunk_request_time = data->cursor_request_time = bw_min2(data->cursor_total_data, bw_min2(bw_int_to_fixed_nonconst(), sclk[data->sclk_level])); i = 0; for (; i <= 12 - 1; i++) { { arg2 = data->active_time[i]; calculate_bandwidth_res.value = arg2.value; } } data->line_source_pixels_transfer_time = bw_min2(data->adjusted_data_buffer_size[i], bw_int_to_fixed_nonconst()); bw_min2(bw_min2(calculate_bandwidth___trans_tmp_233, data->h_total[i]), data->vsr[i]); bw_min2(data->lb_partitions[i], bw_int_to_fixed_nonconst()); bw_min2( data->stutter_exit_watermark[i], bw_min2(bw_min2(calculate_bandwidth___trans_tmp_237, data->h_total[i]), data->pixel_rate[i])); bw_max2(bw_int_to_fixed_nonconst(), calculate_bandwidth___trans_tmp_236); bw_min2(bw_min2(__trans_tmp_1, data->compression_rate[i]), calculate_bandwidth___trans_tmp_235); bw_min2(bw_min2(bw_min2(data->stutter_refresh_duration[i], bw_int_to_fixed_nonconst()), data->source_width_rounded_up_to_chunks[i]), data->h_total[i]); bw_min2(bw_min2(bw_min2(calculate_bandwidth___trans_tmp_238, data->vsr[i]), data->pixel_rate[i]), data->compression_rate[i]); i = 0; for (; i <= 12; i++) bw_add(data->stutter_dmif_buffer_size[i], bw_int_to_fixed_nonconst()); data->stutter_burst_time = bw_min2(bw_int_to_fixed_nonconst(), bw_min2(sclk[data->sclk_level], vbios->data_return_bus_width)); data->total_stutter_cycle_duration = data->time_in_self_refresh = data->min_stutter_refresh_duration; bw_min2(bw_int_to_fixed_nonconst(), bw_min2(bw_min2(bw_add_res, bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst())); data->stutter_efficiency = bw_max2( bw_int_to_fixed_nonconst(), bw_min2(calculate_bandwidth___trans_tmp_241, bw_int_to_fixed_nonconst())); data->worst_number_of_trips_to_memory = bw_min2(data->v_total[i], bw_int_to_fixed_nonconst()); bw_min2(bw_min2(calculate_bandwidth___trans_tmp_246, data->h_total[i]), data->pixel_rate[i]); data->display_reads_time_for_data_transfer_and_urgent_latency = bw_min2( data->min_read_buffer_size_in_time, bw_min2(data->total_dmifmc_urgent_trips, bw_int_to_fixed_nonconst())); data->dmif_required_sclk_for_urgent_latency[i] = __trans_tmp_71; bw_min2(bw_int_to_fixed_nonconst(), bw_int_to_fixed_nonconst()) .value; bw_meq(bw_int_to_fixed_nonconst()); bw_min2(bw_min2(bw_int_to_fixed_nonconst(), bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst()) .value; bw_min2(bw_min2(bw_int_to_fixed_nonconst(), bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst()) .value; bw_meq(bw_int_to_fixed_nonconst()); bw_min2(bw_min2(bw_int_to_fixed_nonconst(), bw_int_to_fixed_nonconst()), bw_int_to_fixed_nonconst()) .value; }
Become a Patron
Sponsor on GitHub
Donate via PayPal
Source on GitHub
Mailing list
Installed libraries
Wiki
Report an issue
How it works
Contact the author
CE on Mastodon
About the author
Statistics
Changelog
Version tree