| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py | |
| ; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s | FileCheck %s | |
| ; | |
| ; The test case check that RV64 could handle the stack adjustment offset exceed | |
| ; 32-bit. | |
| define void @foo() nounwind { | |
| ; CHECK-LABEL: foo: | |
| ; CHECK: # %bb.0: # %entry | |
| ; CHECK-NEXT: addi sp, sp, -2032 | |
| ; CHECK-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill | |
| ; CHECK-NEXT: lui a0, 390625 | |
| ; CHECK-NEXT: slli a0, a0, 1 | |
| ; CHECK-NEXT: addi a0, a0, -2000 | |
| ; CHECK-NEXT: sub sp, sp, a0 | |
| ; CHECK-NEXT: addi a0, sp, 16 | |
| ; CHECK-NEXT: call baz | |
| ; CHECK-NEXT: lui a0, 390625 | |
| ; CHECK-NEXT: slli a0, a0, 1 | |
| ; CHECK-NEXT: addi a0, a0, -2000 | |
| ; CHECK-NEXT: add sp, sp, a0 | |
| ; CHECK-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload | |
| ; CHECK-NEXT: addi sp, sp, 2032 | |
| ; CHECK-NEXT: ret | |
| entry: | |
| %w = alloca [100000000 x { fp128, fp128 }], align 16 | |
| %arraydecay = getelementptr inbounds [100000000 x { fp128, fp128 }], ptr %w, i64 0, i64 0 | |
| call void @baz(ptr nonnull %arraydecay) | |
| ret void | |
| } | |
| declare void @baz(ptr) |