Andrei Safronov 4154ada1d4
[Xtensa] Implement Xtensa Floating Point Option. (#136086)
Implement Xtensa FP Option instructions and lowering 
of the base FP operations with tests. Implement UR registers parsing.
 Fix loading from constant pool callee, basic block, globaladdress and
jumptable addresses. Also fixed potential memory leakage when several
similar XtensaConstantPoolValue objects are created Fix lowering i32 immediate.
2025-06-23 01:18:04 +03:00

33 lines
1.2 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
; RUN: llc -mtriple=xtensa -O0 -verify-machineinstrs < %s \
; RUN: | FileCheck %s -check-prefix=XTENSA
define i8 @loadi8_128(i8 %a) {
; XTENSA-LABEL: loadi8_128:
; XTENSA: .cfi_startproc
; XTENSA-NEXT: # %bb.0:
; XTENSA-NEXT: addi a8, a1, -128
; XTENSA-NEXT: or a1, a8, a8
; XTENSA-NEXT: .cfi_def_cfa_offset 128
; XTENSA-NEXT: s32i a0, a1, 124 # 4-byte Folded Spill
; XTENSA-NEXT: .cfi_offset a0, -4
; XTENSA-NEXT: l32r a8, .LCPI0_0
; XTENSA-NEXT: addi a2, a1, 0
; XTENSA-NEXT: movi a3, 0
; XTENSA-NEXT: movi a4, 64
; XTENSA-NEXT: callx0 a8
; XTENSA-NEXT: l8ui a2, a1, 0
; XTENSA-NEXT: l32i a0, a1, 124 # 4-byte Folded Reload
; XTENSA-NEXT: movi a8, 128
; XTENSA-NEXT: add a8, a1, a8
; XTENSA-NEXT: or a1, a8, a8
; XTENSA-NEXT: ret
%aligned = alloca i8, align 128
call void @llvm.memset.p0.i64(ptr noundef nonnull align 64 dereferenceable(64) %aligned, i8 0, i64 64, i1 false)
%1 = load i8, ptr %aligned, align 128
ret i8 %1
}
; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg)