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#
Go
Haskell
HLSL
Hook
Hylo
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
Swift
LLVM TableGen
Toit
TypeScript Native
V
Vala
Visual Basic
Zig
Javascript
GIMPLE
assembly 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
AArch64 binutils 2.28
AArch64 binutils 2.31.1
AArch64 binutils 2.33.1
AArch64 binutils 2.35.1
AArch64 binutils 2.38
ARM binutils 2.25
ARM binutils 2.28
ARM binutils 2.31.1
ARM gcc 10.2 (linux)
ARM gcc 9.3 (linux)
ARMhf binutils 2.28
BeebAsm 1.09
NASM 2.12.02
NASM 2.13.02
NASM 2.13.03
NASM 2.14.02
NASM 2.16.01
PTX Assembler 10.0.130
PTX Assembler 10.1.105
PTX Assembler 10.1.168
PTX Assembler 10.1.243
PTX Assembler 10.2.89
PTX Assembler 11.0.2
PTX Assembler 11.0.3
PTX Assembler 11.1.0
PTX Assembler 11.1.1
PTX Assembler 11.2.0
PTX Assembler 11.2.1
PTX Assembler 11.2.2
PTX Assembler 11.3.0
PTX Assembler 11.3.1
PTX Assembler 11.4.0
PTX Assembler 11.4.1
PTX Assembler 11.5.0
PTX Assembler 9.1.85
PTX Assembler 9.2.88
RISC-V binutils 2.31.1
RISC-V binutils 2.31.1
RISC-V binutils 2.35.1
RISC-V binutils 2.35.1
RISC-V binutils 2.37.0
RISC-V binutils 2.37.0
RISC-V binutils 2.38.0
RISC-V binutils 2.38.0
x86-64 binutils (trunk)
x86-64 binutils 2.27
x86-64 binutils 2.28
x86-64 binutils 2.29.1
x86-64 binutils 2.34
x86-64 binutils 2.36.1
x86-64 binutils 2.38
x86-64 clang (assertions trunk)
x86-64 clang (trunk)
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 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 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 6.0.0
x86-64 clang 7.0.0
x86-64 clang 8.0.0
x86-64 clang 9.0.0
Options
Source code
.text .file "widen-load-of-small-alloca.ll" .globl "load-1byte-chunk-of-1byte-alloca" # -- Begin function load-1byte-chunk-of-1byte-alloca .p2align 4, 0x90 .type "load-1byte-chunk-of-1byte-alloca",@function "load-1byte-chunk-of-1byte-alloca": # @load-1byte-chunk-of-1byte-alloca # %bb.0: movzbl (%rdi), %eax movb %al, (%rdx) retq .Lfunc_end0: .size "load-1byte-chunk-of-1byte-alloca", .Lfunc_end0-"load-1byte-chunk-of-1byte-alloca" # -- End function .globl "load-1byte-chunk-of-2byte-alloca" # -- Begin function load-1byte-chunk-of-2byte-alloca .p2align 4, 0x90 .type "load-1byte-chunk-of-2byte-alloca",@function "load-1byte-chunk-of-2byte-alloca": # @load-1byte-chunk-of-2byte-alloca # %bb.0: movzwl (%rdi), %eax shll $3, %esi shrxl %esi, %eax, %eax movb %al, (%rdx) retq .Lfunc_end1: .size "load-1byte-chunk-of-2byte-alloca", .Lfunc_end1-"load-1byte-chunk-of-2byte-alloca" # -- End function .globl "load-2byte-chunk-of-2byte-alloca" # -- Begin function load-2byte-chunk-of-2byte-alloca .p2align 4, 0x90 .type "load-2byte-chunk-of-2byte-alloca",@function "load-2byte-chunk-of-2byte-alloca": # @load-2byte-chunk-of-2byte-alloca # %bb.0: movzwl (%rdi), %eax shll $3, %esi shrxl %esi, %eax, %eax movw %ax, (%rdx) retq .Lfunc_end2: .size "load-2byte-chunk-of-2byte-alloca", .Lfunc_end2-"load-2byte-chunk-of-2byte-alloca" # -- End function .globl "load-1byte-chunk-of-4byte-alloca" # -- Begin function load-1byte-chunk-of-4byte-alloca .p2align 4, 0x90 .type "load-1byte-chunk-of-4byte-alloca",@function "load-1byte-chunk-of-4byte-alloca": # @load-1byte-chunk-of-4byte-alloca # %bb.0: shll $3, %esi shrxl %esi, (%rdi), %eax movb %al, (%rdx) retq .Lfunc_end3: .size "load-1byte-chunk-of-4byte-alloca", .Lfunc_end3-"load-1byte-chunk-of-4byte-alloca" # -- End function .globl "load-2byte-chunk-of-4byte-alloca" # -- Begin function load-2byte-chunk-of-4byte-alloca .p2align 4, 0x90 .type "load-2byte-chunk-of-4byte-alloca",@function "load-2byte-chunk-of-4byte-alloca": # @load-2byte-chunk-of-4byte-alloca # %bb.0: shll $3, %esi shrxl %esi, (%rdi), %eax movw %ax, (%rdx) retq .Lfunc_end4: .size "load-2byte-chunk-of-4byte-alloca", .Lfunc_end4-"load-2byte-chunk-of-4byte-alloca" # -- End function .globl "load-4byte-chunk-of-4byte-alloca" # -- Begin function load-4byte-chunk-of-4byte-alloca .p2align 4, 0x90 .type "load-4byte-chunk-of-4byte-alloca",@function "load-4byte-chunk-of-4byte-alloca": # @load-4byte-chunk-of-4byte-alloca # %bb.0: shll $3, %esi shrxl %esi, (%rdi), %eax movl %eax, (%rdx) retq .Lfunc_end5: .size "load-4byte-chunk-of-4byte-alloca", .Lfunc_end5-"load-4byte-chunk-of-4byte-alloca" # -- End function .globl "load-1byte-chunk-of-8byte-alloca" # -- Begin function load-1byte-chunk-of-8byte-alloca .p2align 4, 0x90 .type "load-1byte-chunk-of-8byte-alloca",@function "load-1byte-chunk-of-8byte-alloca": # @load-1byte-chunk-of-8byte-alloca # %bb.0: shll $3, %esi shrxq %rsi, (%rdi), %rax movb %al, (%rdx) retq .Lfunc_end6: .size "load-1byte-chunk-of-8byte-alloca", .Lfunc_end6-"load-1byte-chunk-of-8byte-alloca" # -- End function .globl "load-2byte-chunk-of-8byte-alloca" # -- Begin function load-2byte-chunk-of-8byte-alloca .p2align 4, 0x90 .type "load-2byte-chunk-of-8byte-alloca",@function "load-2byte-chunk-of-8byte-alloca": # @load-2byte-chunk-of-8byte-alloca # %bb.0: shll $3, %esi shrxq %rsi, (%rdi), %rax movw %ax, (%rdx) retq .Lfunc_end7: .size "load-2byte-chunk-of-8byte-alloca", .Lfunc_end7-"load-2byte-chunk-of-8byte-alloca" # -- End function .globl "load-4byte-chunk-of-8byte-alloca" # -- Begin function load-4byte-chunk-of-8byte-alloca .p2align 4, 0x90 .type "load-4byte-chunk-of-8byte-alloca",@function "load-4byte-chunk-of-8byte-alloca": # @load-4byte-chunk-of-8byte-alloca # %bb.0: shll $3, %esi shrxq %rsi, (%rdi), %rax movl %eax, (%rdx) retq .Lfunc_end8: .size "load-4byte-chunk-of-8byte-alloca", .Lfunc_end8-"load-4byte-chunk-of-8byte-alloca" # -- End function .globl "load-8byte-chunk-of-8byte-alloca" # -- Begin function load-8byte-chunk-of-8byte-alloca .p2align 4, 0x90 .type "load-8byte-chunk-of-8byte-alloca",@function "load-8byte-chunk-of-8byte-alloca": # @load-8byte-chunk-of-8byte-alloca # %bb.0: shll $3, %esi shrxq %rsi, (%rdi), %rax movq %rax, (%rdx) retq .Lfunc_end9: .size "load-8byte-chunk-of-8byte-alloca", .Lfunc_end9-"load-8byte-chunk-of-8byte-alloca" # -- End function .globl "load-1byte-chunk-of-16byte-alloca" # -- Begin function load-1byte-chunk-of-16byte-alloca .p2align 4, 0x90 .type "load-1byte-chunk-of-16byte-alloca",@function "load-1byte-chunk-of-16byte-alloca": # @load-1byte-chunk-of-16byte-alloca # %bb.0: vmovdqu (%rdi), %xmm0 shll $3, %esi movl %esi, %edi notb %dil vpextrq $1, %xmm0, %rax vmovq %xmm0, %rcx leaq (%rax,%rax), %r8 shrxq %rsi, %rcx, %rcx shrxq %rsi, %rax, %rax shlxq %rdi, %r8, %rdi orq %rcx, %rdi testb $64, %sil cmoveq %rdi, %rax movb %al, (%rdx) retq .Lfunc_end10: .size "load-1byte-chunk-of-16byte-alloca", .Lfunc_end10-"load-1byte-chunk-of-16byte-alloca" # -- End function .globl "load-2byte-chunk-of-16byte-alloca" # -- Begin function load-2byte-chunk-of-16byte-alloca .p2align 4, 0x90 .type "load-2byte-chunk-of-16byte-alloca",@function "load-2byte-chunk-of-16byte-alloca": # @load-2byte-chunk-of-16byte-alloca # %bb.0: vmovdqu (%rdi), %xmm0 shll $3, %esi movl %esi, %edi notb %dil vpextrq $1, %xmm0, %rax vmovq %xmm0, %rcx leaq (%rax,%rax), %r8 shrxq %rsi, %rcx, %rcx shrxq %rsi, %rax, %rax shlxq %rdi, %r8, %rdi orq %rcx, %rdi testb $64, %sil cmoveq %rdi, %rax movw %ax, (%rdx) retq .Lfunc_end11: .size "load-2byte-chunk-of-16byte-alloca", .Lfunc_end11-"load-2byte-chunk-of-16byte-alloca" # -- End function .globl "load-4byte-chunk-of-16byte-alloca" # -- Begin function load-4byte-chunk-of-16byte-alloca .p2align 4, 0x90 .type "load-4byte-chunk-of-16byte-alloca",@function "load-4byte-chunk-of-16byte-alloca": # @load-4byte-chunk-of-16byte-alloca # %bb.0: vmovdqu (%rdi), %xmm0 shll $3, %esi movl %esi, %edi notb %dil vpextrq $1, %xmm0, %rax vmovq %xmm0, %rcx leaq (%rax,%rax), %r8 shrxq %rsi, %rcx, %rcx shrxq %rsi, %rax, %rax shlxq %rdi, %r8, %rdi orq %rcx, %rdi testb $64, %sil cmoveq %rdi, %rax movl %eax, (%rdx) retq .Lfunc_end12: .size "load-4byte-chunk-of-16byte-alloca", .Lfunc_end12-"load-4byte-chunk-of-16byte-alloca" # -- End function .globl "load-8byte-chunk-of-16byte-alloca" # -- Begin function load-8byte-chunk-of-16byte-alloca .p2align 4, 0x90 .type "load-8byte-chunk-of-16byte-alloca",@function "load-8byte-chunk-of-16byte-alloca": # @load-8byte-chunk-of-16byte-alloca # %bb.0: vmovdqu (%rdi), %xmm0 shll $3, %esi movl %esi, %edi notb %dil vpextrq $1, %xmm0, %rax vmovq %xmm0, %rcx leaq (%rax,%rax), %r8 shrxq %rsi, %rcx, %rcx shrxq %rsi, %rax, %rax shlxq %rdi, %r8, %rdi orq %rcx, %rdi testb $64, %sil cmoveq %rdi, %rax movq %rax, (%rdx) retq .Lfunc_end13: .size "load-8byte-chunk-of-16byte-alloca", .Lfunc_end13-"load-8byte-chunk-of-16byte-alloca" # -- End function .globl "load-16byte-chunk-of-16byte-alloca" # -- Begin function load-16byte-chunk-of-16byte-alloca .p2align 4, 0x90 .type "load-16byte-chunk-of-16byte-alloca",@function "load-16byte-chunk-of-16byte-alloca": # @load-16byte-chunk-of-16byte-alloca # %bb.0: vmovdqu (%rdi), %xmm0 shll $3, %esi movl %esi, %edi notb %dil vpextrq $1, %xmm0, %rax vmovq %xmm0, %rcx leaq (%rax,%rax), %r8 shrxq %rsi, %rcx, %rcx shrxq %rsi, %rax, %rax shlxq %rdi, %r8, %rdi orq %rcx, %rdi xorl %ecx, %ecx testb $64, %sil cmovneq %rax, %rdi cmoveq %rax, %rcx movq %rcx, 8(%rdx) movq %rdi, (%rdx) retq .Lfunc_end14: .size "load-16byte-chunk-of-16byte-alloca", .Lfunc_end14-"load-16byte-chunk-of-16byte-alloca" # -- End function .globl "load-1byte-chunk-of-32byte-alloca" # -- Begin function load-1byte-chunk-of-32byte-alloca .p2align 4, 0x90 .type "load-1byte-chunk-of-32byte-alloca",@function "load-1byte-chunk-of-32byte-alloca": # @load-1byte-chunk-of-32byte-alloca # %bb.0: pushq %rbp movq %rsp, %rbp andq $-64, %rsp subq $64, %rsp vmovups (%rdi), %ymm0 vmovaps %ymm0, (%rsp) movzbl (%rsp,%rsi), %eax movb %al, (%rdx) movq %rbp, %rsp popq %rbp vzeroupper retq .Lfunc_end15: .size "load-1byte-chunk-of-32byte-alloca", .Lfunc_end15-"load-1byte-chunk-of-32byte-alloca" # -- End function .globl "load-2byte-chunk-of-32byte-alloca" # -- Begin function load-2byte-chunk-of-32byte-alloca .p2align 4, 0x90 .type "load-2byte-chunk-of-32byte-alloca",@function "load-2byte-chunk-of-32byte-alloca": # @load-2byte-chunk-of-32byte-alloca # %bb.0: pushq %rbp movq %rsp, %rbp andq $-64, %rsp subq $64, %rsp vmovups (%rdi), %ymm0 vmovaps %ymm0, (%rsp) movzwl (%rsp,%rsi), %eax movw %ax, (%rdx) movq %rbp, %rsp popq %rbp vzeroupper retq .Lfunc_end16: .size "load-2byte-chunk-of-32byte-alloca", .Lfunc_end16-"load-2byte-chunk-of-32byte-alloca" # -- End function .globl "load-4byte-chunk-of-32byte-alloca" # -- Begin function load-4byte-chunk-of-32byte-alloca .p2align 4, 0x90 .type "load-4byte-chunk-of-32byte-alloca",@function "load-4byte-chunk-of-32byte-alloca": # @load-4byte-chunk-of-32byte-alloca # %bb.0: pushq %rbp movq %rsp, %rbp andq $-64, %rsp subq $64, %rsp vmovups (%rdi), %ymm0 vmovaps %ymm0, (%rsp) movl (%rsp,%rsi), %eax movl %eax, (%rdx) movq %rbp, %rsp popq %rbp vzeroupper retq .Lfunc_end17: .size "load-4byte-chunk-of-32byte-alloca", .Lfunc_end17-"load-4byte-chunk-of-32byte-alloca" # -- End function .globl "load-8byte-chunk-of-32byte-alloca" # -- Begin function load-8byte-chunk-of-32byte-alloca .p2align 4, 0x90 .type "load-8byte-chunk-of-32byte-alloca",@function "load-8byte-chunk-of-32byte-alloca": # @load-8byte-chunk-of-32byte-alloca # %bb.0: pushq %rbp movq %rsp, %rbp andq $-64, %rsp subq $64, %rsp vmovups (%rdi), %ymm0 vmovaps %ymm0, (%rsp) movq (%rsp,%rsi), %rax movq %rax, (%rdx) movq %rbp, %rsp popq %rbp vzeroupper retq .Lfunc_end18: .size "load-8byte-chunk-of-32byte-alloca", .Lfunc_end18-"load-8byte-chunk-of-32byte-alloca" # -- End function .globl "load-16byte-chunk-of-32byte-alloca" # -- Begin function load-16byte-chunk-of-32byte-alloca .p2align 4, 0x90 .type "load-16byte-chunk-of-32byte-alloca",@function "load-16byte-chunk-of-32byte-alloca": # @load-16byte-chunk-of-32byte-alloca # %bb.0: pushq %rbp movq %rsp, %rbp andq $-64, %rsp subq $64, %rsp vmovups (%rdi), %ymm0 vmovaps %ymm0, (%rsp) vmovups (%rsp,%rsi), %xmm0 vmovaps %xmm0, (%rdx) movq %rbp, %rsp popq %rbp vzeroupper retq .Lfunc_end19: .size "load-16byte-chunk-of-32byte-alloca", .Lfunc_end19-"load-16byte-chunk-of-32byte-alloca" # -- End function .globl "load-32byte-chunk-of-32byte-alloca" # -- Begin function load-32byte-chunk-of-32byte-alloca .p2align 4, 0x90 .type "load-32byte-chunk-of-32byte-alloca",@function "load-32byte-chunk-of-32byte-alloca": # @load-32byte-chunk-of-32byte-alloca # %bb.0: pushq %rbp movq %rsp, %rbp andq $-64, %rsp subq $64, %rsp vmovups (%rdi), %ymm0 vmovaps %ymm0, (%rsp) vmovups (%rsp,%rsi), %ymm0 vmovaps %ymm0, (%rdx) movq %rbp, %rsp popq %rbp vzeroupper retq .Lfunc_end20: .size "load-32byte-chunk-of-32byte-alloca", .Lfunc_end20-"load-32byte-chunk-of-32byte-alloca" # -- End function .globl "load-2byte-chunk-of-8byte-alloca-with-2byte-step" # -- Begin function load-2byte-chunk-of-8byte-alloca-with-2byte-step .p2align 4, 0x90 .type "load-2byte-chunk-of-8byte-alloca-with-2byte-step",@function "load-2byte-chunk-of-8byte-alloca-with-2byte-step": # @load-2byte-chunk-of-8byte-alloca-with-2byte-step # %bb.0: shll $4, %esi shrxq %rsi, (%rdi), %rax movw %ax, (%rdx) retq .Lfunc_end21: .size "load-2byte-chunk-of-8byte-alloca-with-2byte-step", .Lfunc_end21-"load-2byte-chunk-of-8byte-alloca-with-2byte-step" # -- End function .globl "load-volatile-2byte-chunk-of-8byte-alloca-with-2byte-step" # -- Begin function load-volatile-2byte-chunk-of-8byte-alloca-with-2byte-step .p2align 4, 0x90 .type "load-volatile-2byte-chunk-of-8byte-alloca-with-2byte-step",@function "load-volatile-2byte-chunk-of-8byte-alloca-with-2byte-step": # @load-volatile-2byte-chunk-of-8byte-alloca-with-2byte-step # %bb.0: pushq %rbp movq %rsp, %rbp andq $-64, %rsp subq $64, %rsp movq (%rdi), %rax movq %rax, (%rsp) movzwl (%rsp,%rsi,2), %eax movw %ax, (%rdx) movq %rbp, %rsp popq %rbp retq .Lfunc_end22: .size "load-volatile-2byte-chunk-of-8byte-alloca-with-2byte-step", .Lfunc_end22-"load-volatile-2byte-chunk-of-8byte-alloca-with-2byte-step" # -- End function .globl "store-2byte-chunk-of-8byte-alloca-with-2byte-step" # -- Begin function store-2byte-chunk-of-8byte-alloca-with-2byte-step .p2align 4, 0x90 .type "store-2byte-chunk-of-8byte-alloca-with-2byte-step",@function "store-2byte-chunk-of-8byte-alloca-with-2byte-step": # @store-2byte-chunk-of-8byte-alloca-with-2byte-step # %bb.0: pushq %rbp movq %rsp, %rbp andq $-64, %rsp subq $64, %rsp movq (%rdi), %rax movq %rax, (%rsp) vpextrw $0, %xmm0, (%rsp,%rsi,2) movq (%rsp), %rax movq %rax, (%rdx) movq %rbp, %rsp popq %rbp retq .Lfunc_end23: .size "store-2byte-chunk-of-8byte-alloca-with-2byte-step", .Lfunc_end23-"store-2byte-chunk-of-8byte-alloca-with-2byte-step" # -- End function .globl "store-volatile-2byte-chunk-of-8byte-alloca-with-2byte-step" # -- Begin function store-volatile-2byte-chunk-of-8byte-alloca-with-2byte-step .p2align 4, 0x90 .type "store-volatile-2byte-chunk-of-8byte-alloca-with-2byte-step",@function "store-volatile-2byte-chunk-of-8byte-alloca-with-2byte-step": # @store-volatile-2byte-chunk-of-8byte-alloca-with-2byte-step # %bb.0: pushq %rbp movq %rsp, %rbp andq $-64, %rsp subq $64, %rsp movq (%rdi), %rax movq %rax, (%rsp) vpextrw $0, %xmm0, (%rsp,%rsi,2) movq (%rsp), %rax movq %rax, (%rdx) movq %rbp, %rsp popq %rbp retq .Lfunc_end24: .size "store-volatile-2byte-chunk-of-8byte-alloca-with-2byte-step", .Lfunc_end24-"store-volatile-2byte-chunk-of-8byte-alloca-with-2byte-step" # -- End function .globl "load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-constant-offset-beforehand" # -- Begin function load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-constant-offset-beforehand .p2align 4, 0x90 .type "load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-constant-offset-beforehand",@function "load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-constant-offset-beforehand": # @load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-constant-offset-beforehand # %bb.0: shll $4, %esi addb $16, %sil shrxq %rsi, (%rdi), %rax movw %ax, (%rdx) retq .Lfunc_end25: .size "load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-constant-offset-beforehand", .Lfunc_end25-"load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-constant-offset-beforehand" # -- End function .globl "load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-constant-offset-afterwards" # -- Begin function load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-constant-offset-afterwards .p2align 4, 0x90 .type "load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-constant-offset-afterwards",@function "load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-constant-offset-afterwards": # @load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-constant-offset-afterwards # %bb.0: shll $4, %esi addb $16, %sil shrxq %rsi, (%rdi), %rax movw %ax, (%rdx) retq .Lfunc_end26: .size "load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-constant-offset-afterwards", .Lfunc_end26-"load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-constant-offset-afterwards" # -- End function .globl "load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-variable-offset-inbetween-constant-offsets" # -- Begin function load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-variable-offset-inbetween-constant-offsets .p2align 4, 0x90 .type "load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-variable-offset-inbetween-constant-offsets",@function "load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-variable-offset-inbetween-constant-offsets": # @load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-variable-offset-inbetween-constant-offsets # %bb.0: shll $4, %esi addb $32, %sil shrxq %rsi, (%rdi), %rax movw %ax, (%rdx) retq .Lfunc_end27: .size "load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-variable-offset-inbetween-constant-offsets", .Lfunc_end27-"load-2byte-chunk-of-8byte-alloca-with-2byte-step-with-variable-offset-inbetween-constant-offsets" # -- End function .globl "load-2byte-chunk-of-8byte-alloca-with-2byte-step-select-of-variable-geps" # -- Begin function load-2byte-chunk-of-8byte-alloca-with-2byte-step-select-of-variable-geps .p2align 4, 0x90 .type "load-2byte-chunk-of-8byte-alloca-with-2byte-step-select-of-variable-geps",@function "load-2byte-chunk-of-8byte-alloca-with-2byte-step-select-of-variable-geps": # @load-2byte-chunk-of-8byte-alloca-with-2byte-step-select-of-variable-geps # %bb.0: testb $1, %cl cmovnel %esi, %edx shll $4, %edx shrxq %rdx, (%rdi), %rax movw %ax, (%r8) retq .Lfunc_end28: .size "load-2byte-chunk-of-8byte-alloca-with-2byte-step-select-of-variable-geps", .Lfunc_end28-"load-2byte-chunk-of-8byte-alloca-with-2byte-step-select-of-variable-geps" # -- End function .globl "load-2byte-chunk-of-8byte-alloca-with-2byte-step-select-of-variable-and-const-geps" # -- Begin function load-2byte-chunk-of-8byte-alloca-with-2byte-step-select-of-variable-and-const-geps .p2align 4, 0x90 .type "load-2byte-chunk-of-8byte-alloca-with-2byte-step-select-of-variable-and-const-geps",@function "load-2byte-chunk-of-8byte-alloca-with-2byte-step-select-of-variable-and-const-geps": # @load-2byte-chunk-of-8byte-alloca-with-2byte-step-select-of-variable-and-const-geps # %bb.0: shll $4, %edx testb $1, %cl movl $16, %eax cmovel %edx, %eax shrxq %rax, (%rdi), %rax movw %ax, (%r8) retq .Lfunc_end29: .size "load-2byte-chunk-of-8byte-alloca-with-2byte-step-select-of-variable-and-const-geps", .Lfunc_end29-"load-2byte-chunk-of-8byte-alloca-with-2byte-step-select-of-variable-and-const-geps" # -- End function .globl "load-2byte-chunk-of-8byte-alloca-with-2byte-step-variable-gep-of-select-of-const-geps" # -- Begin function load-2byte-chunk-of-8byte-alloca-with-2byte-step-variable-gep-of-select-of-const-geps .p2align 4, 0x90 .type "load-2byte-chunk-of-8byte-alloca-with-2byte-step-variable-gep-of-select-of-const-geps",@function "load-2byte-chunk-of-8byte-alloca-with-2byte-step-variable-gep-of-select-of-const-geps": # @load-2byte-chunk-of-8byte-alloca-with-2byte-step-variable-gep-of-select-of-const-geps # %bb.0: notb %dl addl %esi, %esi movzbl %dl, %eax andl $1, %eax leal (%rsi,%rax,4), %eax shll $3, %eax shrxq %rax, (%rdi), %rax movw %ax, (%rcx) retq .Lfunc_end30: .size "load-2byte-chunk-of-8byte-alloca-with-2byte-step-variable-gep-of-select-of-const-geps", .Lfunc_end30-"load-2byte-chunk-of-8byte-alloca-with-2byte-step-variable-gep-of-select-of-const-geps" # -- End function .globl "load-ptr-chunk-of-16byte-alloca" # -- Begin function load-ptr-chunk-of-16byte-alloca .p2align 4, 0x90 .type "load-ptr-chunk-of-16byte-alloca",@function "load-ptr-chunk-of-16byte-alloca": # @load-ptr-chunk-of-16byte-alloca # %bb.0: pushq %rbp movq %rsp, %rbp andq $-64, %rsp subq $64, %rsp vmovups (%rdi), %xmm0 vmovaps %xmm0, (%rsp) movq (%rsp,%rsi), %rax movq %rax, (%rdx) movq %rbp, %rsp popq %rbp retq .Lfunc_end31: .size "load-ptr-chunk-of-16byte-alloca", .Lfunc_end31-"load-ptr-chunk-of-16byte-alloca" # -- End function .globl "load-float-chunk-of-16byte-alloca" # -- Begin function load-float-chunk-of-16byte-alloca .p2align 4, 0x90 .type "load-float-chunk-of-16byte-alloca",@function "load-float-chunk-of-16byte-alloca": # @load-float-chunk-of-16byte-alloca # %bb.0: vmovdqu (%rdi), %xmm0 shll $3, %esi movl %esi, %edi notb %dil vpextrq $1, %xmm0, %rax vmovq %xmm0, %rcx leaq (%rax,%rax), %r8 shrxq %rsi, %rcx, %rcx shrxq %rsi, %rax, %rax shlxq %rdi, %r8, %rdi orq %rcx, %rdi testb $64, %sil cmoveq %rdi, %rax movl %eax, (%rdx) retq .Lfunc_end32: .size "load-float-chunk-of-16byte-alloca", .Lfunc_end32-"load-float-chunk-of-16byte-alloca" # -- End function .globl "two-loads-of-same-2byte-chunks-of-8byte-alloca-with-2byte-step-variable-gep" # -- Begin function two-loads-of-same-2byte-chunks-of-8byte-alloca-with-2byte-step-variable-gep .p2align 4, 0x90 .type "two-loads-of-same-2byte-chunks-of-8byte-alloca-with-2byte-step-variable-gep",@function "two-loads-of-same-2byte-chunks-of-8byte-alloca-with-2byte-step-variable-gep": # @two-loads-of-same-2byte-chunks-of-8byte-alloca-with-2byte-step-variable-gep # %bb.0: shll $4, %esi shrxq %rsi, (%rdi), %rax movw %ax, (%rdx) movw %ax, (%rcx) retq .Lfunc_end33: .size "two-loads-of-same-2byte-chunks-of-8byte-alloca-with-2byte-step-variable-gep", .Lfunc_end33-"two-loads-of-same-2byte-chunks-of-8byte-alloca-with-2byte-step-variable-gep" # -- End function .globl "two-loads-of-two-2byte-chunks-of-8byte-alloca-with-2byte-step-variable-geps" # -- Begin function two-loads-of-two-2byte-chunks-of-8byte-alloca-with-2byte-step-variable-geps .p2align 4, 0x90 .type "two-loads-of-two-2byte-chunks-of-8byte-alloca-with-2byte-step-variable-geps",@function "two-loads-of-two-2byte-chunks-of-8byte-alloca-with-2byte-step-variable-geps": # @two-loads-of-two-2byte-chunks-of-8byte-alloca-with-2byte-step-variable-geps # %bb.0: movq (%rdi), %rax addl %esi, %edx # kill: def $esi killed $esi killed $rsi def $rsi shll $4, %esi shll $4, %edx shrxq %rsi, %rax, %rsi shrxq %rdx, %rax, %rax movw %si, (%rcx) movw %ax, (%r8) retq .Lfunc_end34: .size "two-loads-of-two-2byte-chunks-of-8byte-alloca-with-2byte-step-variable-geps", .Lfunc_end34-"two-loads-of-two-2byte-chunks-of-8byte-alloca-with-2byte-step-variable-geps" # -- End function .section ".note.GNU-stack","",@progbits
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