1708a478dSRaphael Moreira Zinsly; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2708a478dSRaphael Moreira Zinsly; RUN: llc -mtriple=riscv64 -mattr=+m -O2 < %s \ 3708a478dSRaphael Moreira Zinsly; RUN: | FileCheck %s -check-prefix=RV64I 4708a478dSRaphael Moreira Zinsly; RUN: llc -mtriple=riscv32 -mattr=+m -O2 < %s \ 5708a478dSRaphael Moreira Zinsly; RUN: | FileCheck %s -check-prefix=RV32I 6708a478dSRaphael Moreira Zinsly 7708a478dSRaphael Moreira Zinsly; Tests copied from PowerPC. 8708a478dSRaphael Moreira Zinsly 9708a478dSRaphael Moreira Zinsly; Free probe 10708a478dSRaphael Moreira Zinslydefine i8 @f0() #0 { 11708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f0: 12708a478dSRaphael Moreira Zinsly; RV64I: # %bb.0: # %entry 13708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -64 14708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 64 15708a478dSRaphael Moreira Zinsly; RV64I-NEXT: li a0, 3 16708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sb a0, 0(sp) 17708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lbu a0, 0(sp) 18708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, 64 19708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 0 20708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ret 21708a478dSRaphael Moreira Zinsly; 22708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f0: 23708a478dSRaphael Moreira Zinsly; RV32I: # %bb.0: # %entry 24708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -64 25708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 64 26708a478dSRaphael Moreira Zinsly; RV32I-NEXT: li a0, 3 27708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sb a0, 0(sp) 28708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lbu a0, 0(sp) 29708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, 64 30708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 0 31708a478dSRaphael Moreira Zinsly; RV32I-NEXT: ret 32708a478dSRaphael Moreira Zinslyentry: 33708a478dSRaphael Moreira Zinsly %a = alloca i8, i64 64 34708a478dSRaphael Moreira Zinsly %b = getelementptr inbounds i8, ptr %a, i64 63 35708a478dSRaphael Moreira Zinsly store volatile i8 3, ptr %a 36708a478dSRaphael Moreira Zinsly %c = load volatile i8, ptr %a 37708a478dSRaphael Moreira Zinsly ret i8 %c 38708a478dSRaphael Moreira Zinsly} 39708a478dSRaphael Moreira Zinsly 40708a478dSRaphael Moreira Zinslydefine i8 @f1() #0 { 41708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f1: 42708a478dSRaphael Moreira Zinsly; RV64I: # %bb.0: # %entry 43708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 1 44708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, a0 45708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 46708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 4096 47708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -16 48708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 4112 49708a478dSRaphael Moreira Zinsly; RV64I-NEXT: li a0, 3 50708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sb a0, 16(sp) 51708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lbu a0, 16(sp) 52708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a1, 1 53708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addiw a1, a1, 16 54708a478dSRaphael Moreira Zinsly; RV64I-NEXT: add sp, sp, a1 55708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 0 56708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ret 57708a478dSRaphael Moreira Zinsly; 58708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f1: 59708a478dSRaphael Moreira Zinsly; RV32I: # %bb.0: # %entry 60708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 1 61708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, a0 62708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 63708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 4096 64708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -16 65708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 4112 66708a478dSRaphael Moreira Zinsly; RV32I-NEXT: li a0, 3 67708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sb a0, 16(sp) 68708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lbu a0, 16(sp) 69708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a1, 1 70708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a1, a1, 16 71708a478dSRaphael Moreira Zinsly; RV32I-NEXT: add sp, sp, a1 72708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 0 73708a478dSRaphael Moreira Zinsly; RV32I-NEXT: ret 74708a478dSRaphael Moreira Zinslyentry: 75708a478dSRaphael Moreira Zinsly %a = alloca i8, i64 4096 76708a478dSRaphael Moreira Zinsly %b = getelementptr inbounds i8, ptr %a, i64 63 77708a478dSRaphael Moreira Zinsly store volatile i8 3, ptr %a 78708a478dSRaphael Moreira Zinsly %c = load volatile i8, ptr %a 79708a478dSRaphael Moreira Zinsly ret i8 %c 80708a478dSRaphael Moreira Zinsly} 81708a478dSRaphael Moreira Zinsly 82708a478dSRaphael Moreira Zinslydefine i8 @f2() #0 { 83708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f2: 84708a478dSRaphael Moreira Zinsly; RV64I: # %bb.0: # %entry 85708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 16 86708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub t1, sp, a0 87708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa t1, 65536 88708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui t2, 1 89708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .LBB2_1: # %entry 90708a478dSRaphael Moreira Zinsly; RV64I-NEXT: # =>This Inner Loop Header: Depth=1 91708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, t2 92708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 93708a478dSRaphael Moreira Zinsly; RV64I-NEXT: bne sp, t1, .LBB2_1 94708a478dSRaphael Moreira Zinsly; RV64I-NEXT: # %bb.2: # %entry 95708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_register sp 96708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -16 97708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 65552 98708a478dSRaphael Moreira Zinsly; RV64I-NEXT: li a0, 3 99708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sb a0, 16(sp) 100708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lbu a0, 16(sp) 101708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a1, 16 102708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addiw a1, a1, 16 103708a478dSRaphael Moreira Zinsly; RV64I-NEXT: add sp, sp, a1 104708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 0 105708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ret 106708a478dSRaphael Moreira Zinsly; 107708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f2: 108708a478dSRaphael Moreira Zinsly; RV32I: # %bb.0: # %entry 109708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 16 110708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub t1, sp, a0 111708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa t1, 65536 112708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui t2, 1 113708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .LBB2_1: # %entry 114708a478dSRaphael Moreira Zinsly; RV32I-NEXT: # =>This Inner Loop Header: Depth=1 115708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, t2 116708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 117708a478dSRaphael Moreira Zinsly; RV32I-NEXT: bne sp, t1, .LBB2_1 118708a478dSRaphael Moreira Zinsly; RV32I-NEXT: # %bb.2: # %entry 119708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_register sp 120708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -16 121708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 65552 122708a478dSRaphael Moreira Zinsly; RV32I-NEXT: li a0, 3 123708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sb a0, 16(sp) 124708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lbu a0, 16(sp) 125708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a1, 16 126708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a1, a1, 16 127708a478dSRaphael Moreira Zinsly; RV32I-NEXT: add sp, sp, a1 128708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 0 129708a478dSRaphael Moreira Zinsly; RV32I-NEXT: ret 130708a478dSRaphael Moreira Zinslyentry: 131708a478dSRaphael Moreira Zinsly %a = alloca i8, i64 65536 132708a478dSRaphael Moreira Zinsly %b = getelementptr inbounds i8, ptr %a, i64 63 133708a478dSRaphael Moreira Zinsly store volatile i8 3, ptr %a 134708a478dSRaphael Moreira Zinsly %c = load volatile i8, ptr %a 135708a478dSRaphael Moreira Zinsly ret i8 %c 136708a478dSRaphael Moreira Zinsly} 137708a478dSRaphael Moreira Zinsly 138708a478dSRaphael Moreira Zinslydefine i8 @f3() #0 "stack-probe-size"="32768" { 139708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f3: 140708a478dSRaphael Moreira Zinsly; RV64I: # %bb.0: # %entry 141708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 8 142708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, a0 143708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 144708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 32768 145708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 8 146708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, a0 147708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 148708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 65536 149708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -16 150708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 65552 151708a478dSRaphael Moreira Zinsly; RV64I-NEXT: li a0, 3 152708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sb a0, 16(sp) 153708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lbu a0, 16(sp) 154708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a1, 16 155708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addiw a1, a1, 16 156708a478dSRaphael Moreira Zinsly; RV64I-NEXT: add sp, sp, a1 157708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 0 158708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ret 159708a478dSRaphael Moreira Zinsly; 160708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f3: 161708a478dSRaphael Moreira Zinsly; RV32I: # %bb.0: # %entry 162708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 8 163708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, a0 164708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 165708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 32768 166708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 8 167708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, a0 168708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 169708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 65536 170708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -16 171708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 65552 172708a478dSRaphael Moreira Zinsly; RV32I-NEXT: li a0, 3 173708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sb a0, 16(sp) 174708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lbu a0, 16(sp) 175708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a1, 16 176708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a1, a1, 16 177708a478dSRaphael Moreira Zinsly; RV32I-NEXT: add sp, sp, a1 178708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 0 179708a478dSRaphael Moreira Zinsly; RV32I-NEXT: ret 180708a478dSRaphael Moreira Zinslyentry: 181708a478dSRaphael Moreira Zinsly %a = alloca i8, i64 65536 182708a478dSRaphael Moreira Zinsly %b = getelementptr inbounds i8, ptr %a, i64 63 183708a478dSRaphael Moreira Zinsly store volatile i8 3, ptr %a 184708a478dSRaphael Moreira Zinsly %c = load volatile i8, ptr %a 185708a478dSRaphael Moreira Zinsly ret i8 %c 186708a478dSRaphael Moreira Zinsly} 187708a478dSRaphael Moreira Zinsly 188708a478dSRaphael Moreira Zinsly; Same as f2, but without protection. 189708a478dSRaphael Moreira Zinslydefine i8 @f4() { 190708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f4: 191708a478dSRaphael Moreira Zinsly; RV64I: # %bb.0: # %entry 192708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 16 193708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addiw a0, a0, 16 194708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, a0 195708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 65552 196708a478dSRaphael Moreira Zinsly; RV64I-NEXT: li a0, 3 197708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sb a0, 16(sp) 198708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lbu a0, 16(sp) 199708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a1, 16 200708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addiw a1, a1, 16 201708a478dSRaphael Moreira Zinsly; RV64I-NEXT: add sp, sp, a1 202708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 0 203708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ret 204708a478dSRaphael Moreira Zinsly; 205708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f4: 206708a478dSRaphael Moreira Zinsly; RV32I: # %bb.0: # %entry 207708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 16 208708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a0, a0, 16 209708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, a0 210708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 65552 211708a478dSRaphael Moreira Zinsly; RV32I-NEXT: li a0, 3 212708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sb a0, 16(sp) 213708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lbu a0, 16(sp) 214708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a1, 16 215708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a1, a1, 16 216708a478dSRaphael Moreira Zinsly; RV32I-NEXT: add sp, sp, a1 217708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 0 218708a478dSRaphael Moreira Zinsly; RV32I-NEXT: ret 219708a478dSRaphael Moreira Zinslyentry: 220708a478dSRaphael Moreira Zinsly %a = alloca i8, i64 65536 221708a478dSRaphael Moreira Zinsly %b = getelementptr inbounds i8, ptr %a, i64 63 222708a478dSRaphael Moreira Zinsly store volatile i8 3, ptr %a 223708a478dSRaphael Moreira Zinsly %c = load volatile i8, ptr %a 224708a478dSRaphael Moreira Zinsly ret i8 %c 225708a478dSRaphael Moreira Zinsly} 226708a478dSRaphael Moreira Zinsly 227708a478dSRaphael Moreira Zinslydefine i8 @f5() #0 "stack-probe-size"="65536" { 228708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f5: 229708a478dSRaphael Moreira Zinsly; RV64I: # %bb.0: # %entry 230708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 256 231708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub t1, sp, a0 232708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa t1, 1048576 233708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui t2, 16 234708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .LBB5_1: # %entry 235708a478dSRaphael Moreira Zinsly; RV64I-NEXT: # =>This Inner Loop Header: Depth=1 236708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, t2 237708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 238708a478dSRaphael Moreira Zinsly; RV64I-NEXT: bne sp, t1, .LBB5_1 239708a478dSRaphael Moreira Zinsly; RV64I-NEXT: # %bb.2: # %entry 240708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_register sp 241708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -16 242708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 1048592 243708a478dSRaphael Moreira Zinsly; RV64I-NEXT: li a0, 3 244708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sb a0, 16(sp) 245708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lbu a0, 16(sp) 246708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a1, 256 247708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addiw a1, a1, 16 248708a478dSRaphael Moreira Zinsly; RV64I-NEXT: add sp, sp, a1 249708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 0 250708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ret 251708a478dSRaphael Moreira Zinsly; 252708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f5: 253708a478dSRaphael Moreira Zinsly; RV32I: # %bb.0: # %entry 254708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 256 255708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub t1, sp, a0 256708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa t1, 1048576 257708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui t2, 16 258708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .LBB5_1: # %entry 259708a478dSRaphael Moreira Zinsly; RV32I-NEXT: # =>This Inner Loop Header: Depth=1 260708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, t2 261708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 262708a478dSRaphael Moreira Zinsly; RV32I-NEXT: bne sp, t1, .LBB5_1 263708a478dSRaphael Moreira Zinsly; RV32I-NEXT: # %bb.2: # %entry 264708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_register sp 265708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -16 266708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 1048592 267708a478dSRaphael Moreira Zinsly; RV32I-NEXT: li a0, 3 268708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sb a0, 16(sp) 269708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lbu a0, 16(sp) 270708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a1, 256 271708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a1, a1, 16 272708a478dSRaphael Moreira Zinsly; RV32I-NEXT: add sp, sp, a1 273708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 0 274708a478dSRaphael Moreira Zinsly; RV32I-NEXT: ret 275708a478dSRaphael Moreira Zinslyentry: 276708a478dSRaphael Moreira Zinsly %a = alloca i8, i64 1048576 277708a478dSRaphael Moreira Zinsly %b = getelementptr inbounds i8, ptr %a, i64 63 278708a478dSRaphael Moreira Zinsly store volatile i8 3, ptr %a 279708a478dSRaphael Moreira Zinsly %c = load volatile i8, ptr %a 280708a478dSRaphael Moreira Zinsly ret i8 %c 281708a478dSRaphael Moreira Zinsly} 282708a478dSRaphael Moreira Zinsly 283708a478dSRaphael Moreira Zinslydefine i8 @f6() #0 { 284708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f6: 285708a478dSRaphael Moreira Zinsly; RV64I: # %bb.0: # %entry 286708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 262144 287708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub t1, sp, a0 288708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa t1, 1073741824 289708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui t2, 1 290708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .LBB6_1: # %entry 291708a478dSRaphael Moreira Zinsly; RV64I-NEXT: # =>This Inner Loop Header: Depth=1 292708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, t2 293708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 294708a478dSRaphael Moreira Zinsly; RV64I-NEXT: bne sp, t1, .LBB6_1 295708a478dSRaphael Moreira Zinsly; RV64I-NEXT: # %bb.2: # %entry 296708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_register sp 297708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -16 298708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 1073741840 299708a478dSRaphael Moreira Zinsly; RV64I-NEXT: li a0, 3 300708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sb a0, 16(sp) 301708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lbu a0, 16(sp) 302708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a1, 262144 303708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addiw a1, a1, 16 304708a478dSRaphael Moreira Zinsly; RV64I-NEXT: add sp, sp, a1 305708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 0 306708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ret 307708a478dSRaphael Moreira Zinsly; 308708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f6: 309708a478dSRaphael Moreira Zinsly; RV32I: # %bb.0: # %entry 310708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 262144 311708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub t1, sp, a0 312708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa t1, 1073741824 313708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui t2, 1 314708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .LBB6_1: # %entry 315708a478dSRaphael Moreira Zinsly; RV32I-NEXT: # =>This Inner Loop Header: Depth=1 316708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, t2 317708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 318708a478dSRaphael Moreira Zinsly; RV32I-NEXT: bne sp, t1, .LBB6_1 319708a478dSRaphael Moreira Zinsly; RV32I-NEXT: # %bb.2: # %entry 320708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_register sp 321708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -16 322708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 1073741840 323708a478dSRaphael Moreira Zinsly; RV32I-NEXT: li a0, 3 324708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sb a0, 16(sp) 325708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lbu a0, 16(sp) 326708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a1, 262144 327708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a1, a1, 16 328708a478dSRaphael Moreira Zinsly; RV32I-NEXT: add sp, sp, a1 329708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 0 330708a478dSRaphael Moreira Zinsly; RV32I-NEXT: ret 331708a478dSRaphael Moreira Zinslyentry: 332708a478dSRaphael Moreira Zinsly %a = alloca i8, i64 1073741824 333708a478dSRaphael Moreira Zinsly %b = getelementptr inbounds i8, ptr %a, i64 63 334708a478dSRaphael Moreira Zinsly store volatile i8 3, ptr %a 335708a478dSRaphael Moreira Zinsly %c = load volatile i8, ptr %a 336708a478dSRaphael Moreira Zinsly ret i8 %c 337708a478dSRaphael Moreira Zinsly} 338708a478dSRaphael Moreira Zinsly 339708a478dSRaphael Moreira Zinslydefine i8 @f7() #0 "stack-probe-size"="65536" { 340708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f7: 341708a478dSRaphael Moreira Zinsly; RV64I: # %bb.0: # %entry 342708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 244128 343708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub t1, sp, a0 344708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa t1, 999948288 345708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui t2, 16 346708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .LBB7_1: # %entry 347708a478dSRaphael Moreira Zinsly; RV64I-NEXT: # =>This Inner Loop Header: Depth=1 348708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, t2 349708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 350708a478dSRaphael Moreira Zinsly; RV64I-NEXT: bne sp, t1, .LBB7_1 351708a478dSRaphael Moreira Zinsly; RV64I-NEXT: # %bb.2: # %entry 352708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_register sp 353708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 13 354708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addiw a0, a0, -1520 355708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, a0 356708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 1000000016 357708a478dSRaphael Moreira Zinsly; RV64I-NEXT: li a0, 3 358708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sb a0, 9(sp) 359708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lbu a0, 9(sp) 360708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a1, 244141 361708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addiw a1, a1, -1520 362708a478dSRaphael Moreira Zinsly; RV64I-NEXT: add sp, sp, a1 363708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 0 364708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ret 365708a478dSRaphael Moreira Zinsly; 366708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f7: 367708a478dSRaphael Moreira Zinsly; RV32I: # %bb.0: # %entry 368708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 244128 369708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub t1, sp, a0 370708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa t1, 999948288 371708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui t2, 16 372708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .LBB7_1: # %entry 373708a478dSRaphael Moreira Zinsly; RV32I-NEXT: # =>This Inner Loop Header: Depth=1 374708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, t2 375708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 376708a478dSRaphael Moreira Zinsly; RV32I-NEXT: bne sp, t1, .LBB7_1 377708a478dSRaphael Moreira Zinsly; RV32I-NEXT: # %bb.2: # %entry 378708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_register sp 379708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 13 380708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a0, a0, -1520 381708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, a0 382708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 1000000016 383708a478dSRaphael Moreira Zinsly; RV32I-NEXT: li a0, 3 384708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sb a0, 9(sp) 385708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lbu a0, 9(sp) 386708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a1, 244141 387708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a1, a1, -1520 388708a478dSRaphael Moreira Zinsly; RV32I-NEXT: add sp, sp, a1 389708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 0 390708a478dSRaphael Moreira Zinsly; RV32I-NEXT: ret 391708a478dSRaphael Moreira Zinslyentry: 392708a478dSRaphael Moreira Zinsly %a = alloca i8, i64 1000000007 393708a478dSRaphael Moreira Zinsly %b = getelementptr inbounds i8, ptr %a, i64 101 394708a478dSRaphael Moreira Zinsly store volatile i8 3, ptr %a 395708a478dSRaphael Moreira Zinsly %c = load volatile i8, ptr %a 396708a478dSRaphael Moreira Zinsly ret i8 %c 397708a478dSRaphael Moreira Zinsly} 398708a478dSRaphael Moreira Zinsly 399708a478dSRaphael Moreira Zinsly; alloca + align < probe_size 400708a478dSRaphael Moreira Zinslydefine i32 @f8(i64 %i) local_unnamed_addr #0 { 401708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f8: 402708a478dSRaphael Moreira Zinsly; RV64I: # %bb.0: 403708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -832 404708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 832 405708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd ra, 824(sp) # 8-byte Folded Spill 406708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd s0, 816(sp) # 8-byte Folded Spill 407708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_offset ra, -8 408708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_offset s0, -16 409708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi s0, sp, 832 410708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa s0, 0 411708a478dSRaphael Moreira Zinsly; RV64I-NEXT: andi sp, sp, -64 412708a478dSRaphael Moreira Zinsly; RV64I-NEXT: slli a0, a0, 2 413708a478dSRaphael Moreira Zinsly; RV64I-NEXT: mv a1, sp 414708a478dSRaphael Moreira Zinsly; RV64I-NEXT: add a0, a1, a0 415708a478dSRaphael Moreira Zinsly; RV64I-NEXT: li a1, 1 416708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sw a1, 0(a0) 417708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lw a0, 0(sp) 418708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, s0, -832 419708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa sp, 832 420708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ld ra, 824(sp) # 8-byte Folded Reload 421708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ld s0, 816(sp) # 8-byte Folded Reload 422708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_restore ra 423708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_restore s0 424708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, 832 425708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 0 426708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ret 427708a478dSRaphael Moreira Zinsly; 428708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f8: 429708a478dSRaphael Moreira Zinsly; RV32I: # %bb.0: 430708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -832 431708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 832 432708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw ra, 828(sp) # 4-byte Folded Spill 433708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw s0, 824(sp) # 4-byte Folded Spill 434708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_offset ra, -4 435708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_offset s0, -8 436708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi s0, sp, 832 437708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa s0, 0 438708a478dSRaphael Moreira Zinsly; RV32I-NEXT: andi sp, sp, -64 439708a478dSRaphael Moreira Zinsly; RV32I-NEXT: slli a0, a0, 2 440708a478dSRaphael Moreira Zinsly; RV32I-NEXT: mv a1, sp 441708a478dSRaphael Moreira Zinsly; RV32I-NEXT: add a0, a1, a0 442708a478dSRaphael Moreira Zinsly; RV32I-NEXT: li a1, 1 443708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw a1, 0(a0) 444708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lw a0, 0(sp) 445708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, s0, -832 446708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa sp, 832 447708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lw ra, 828(sp) # 4-byte Folded Reload 448708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lw s0, 824(sp) # 4-byte Folded Reload 449708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_restore ra 450708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_restore s0 451708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, 832 452708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 0 453708a478dSRaphael Moreira Zinsly; RV32I-NEXT: ret 454708a478dSRaphael Moreira Zinsly %a = alloca i32, i32 200, align 64 455708a478dSRaphael Moreira Zinsly %b = getelementptr inbounds i32, ptr %a, i64 %i 456708a478dSRaphael Moreira Zinsly store volatile i32 1, ptr %b 457708a478dSRaphael Moreira Zinsly %c = load volatile i32, ptr %a 458708a478dSRaphael Moreira Zinsly ret i32 %c 459708a478dSRaphael Moreira Zinsly} 460708a478dSRaphael Moreira Zinsly 461708a478dSRaphael Moreira Zinsly; alloca > probe_size, align > probe_size 462708a478dSRaphael Moreira Zinslydefine i32 @f9(i64 %i) local_unnamed_addr #0 { 463708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f9: 464708a478dSRaphael Moreira Zinsly; RV64I: # %bb.0: 465708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -2032 466708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 2032 467708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill 468708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd s0, 2016(sp) # 8-byte Folded Spill 469708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_offset ra, -8 470708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_offset s0, -16 471708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi s0, sp, 2032 472708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa s0, 0 473708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a1, 1 474708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, a1 475708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 476708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, a1 477708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 478708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -16 479708a478dSRaphael Moreira Zinsly; RV64I-NEXT: andi sp, sp, -2048 480708a478dSRaphael Moreira Zinsly; RV64I-NEXT: slli a0, a0, 2 481708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi a1, sp, 2047 482708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi a1, a1, 1 483708a478dSRaphael Moreira Zinsly; RV64I-NEXT: add a0, a1, a0 484708a478dSRaphael Moreira Zinsly; RV64I-NEXT: li a1, 1 485708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sw a1, 0(a0) 486708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 1 487708a478dSRaphael Moreira Zinsly; RV64I-NEXT: add a0, sp, a0 488708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lw a0, -2048(a0) 489708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, s0, -2032 490708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa sp, 2032 491708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload 492708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ld s0, 2016(sp) # 8-byte Folded Reload 493708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_restore ra 494708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_restore s0 495708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, 2032 496708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 0 497708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ret 498708a478dSRaphael Moreira Zinsly; 499708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f9: 500708a478dSRaphael Moreira Zinsly; RV32I: # %bb.0: 501708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -2032 502708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 2032 503708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill 504708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw s0, 2024(sp) # 4-byte Folded Spill 505708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_offset ra, -4 506708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_offset s0, -8 507708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi s0, sp, 2032 508708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa s0, 0 509708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a1, 1 510708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, a1 511708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 512708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, a1 513708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 514708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -16 515708a478dSRaphael Moreira Zinsly; RV32I-NEXT: andi sp, sp, -2048 516708a478dSRaphael Moreira Zinsly; RV32I-NEXT: slli a0, a0, 2 517708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a1, sp, 2047 518708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a1, a1, 1 519708a478dSRaphael Moreira Zinsly; RV32I-NEXT: add a0, a1, a0 520708a478dSRaphael Moreira Zinsly; RV32I-NEXT: li a1, 1 521708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw a1, 0(a0) 522708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 1 523708a478dSRaphael Moreira Zinsly; RV32I-NEXT: add a0, sp, a0 524708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lw a0, -2048(a0) 525708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, s0, -2032 526708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa sp, 2032 527708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload 528708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lw s0, 2024(sp) # 4-byte Folded Reload 529708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_restore ra 530708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_restore s0 531708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, 2032 532708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 0 533708a478dSRaphael Moreira Zinsly; RV32I-NEXT: ret 534708a478dSRaphael Moreira Zinsly %a = alloca i32, i32 2000, align 2048 535708a478dSRaphael Moreira Zinsly %b = getelementptr inbounds i32, ptr %a, i64 %i 536708a478dSRaphael Moreira Zinsly store volatile i32 1, ptr %b 537708a478dSRaphael Moreira Zinsly %c = load volatile i32, ptr %a 538708a478dSRaphael Moreira Zinsly ret i32 %c 539708a478dSRaphael Moreira Zinsly} 540708a478dSRaphael Moreira Zinsly 5416f53886aSRaphael Moreira Zinsly; alloca < probe_size, align < probe_size, alloca + align > probe_size 5426f53886aSRaphael Moreira Zinslydefine i32 @f10(i64 %i) local_unnamed_addr #0 { 5436f53886aSRaphael Moreira Zinsly; RV64I-LABEL: f10: 5446f53886aSRaphael Moreira Zinsly; RV64I: # %bb.0: 5456f53886aSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -2032 5466f53886aSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 2032 5476f53886aSRaphael Moreira Zinsly; RV64I-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill 5486f53886aSRaphael Moreira Zinsly; RV64I-NEXT: sd s0, 2016(sp) # 8-byte Folded Spill 5496f53886aSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_offset ra, -8 5506f53886aSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_offset s0, -16 5516f53886aSRaphael Moreira Zinsly; RV64I-NEXT: addi s0, sp, 2032 5526f53886aSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa s0, 0 5536f53886aSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -2048 5546f53886aSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -1040 5556f53886aSRaphael Moreira Zinsly; RV64I-NEXT: andi sp, sp, -1024 5566f53886aSRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 5576f53886aSRaphael Moreira Zinsly; RV64I-NEXT: slli a0, a0, 2 5586f53886aSRaphael Moreira Zinsly; RV64I-NEXT: addi a1, sp, 1024 5596f53886aSRaphael Moreira Zinsly; RV64I-NEXT: add a0, a1, a0 5606f53886aSRaphael Moreira Zinsly; RV64I-NEXT: li a1, 1 5616f53886aSRaphael Moreira Zinsly; RV64I-NEXT: sw a1, 0(a0) 5626f53886aSRaphael Moreira Zinsly; RV64I-NEXT: lw a0, 1024(sp) 5636f53886aSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, s0, -2032 5646f53886aSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa sp, 2032 5656f53886aSRaphael Moreira Zinsly; RV64I-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload 5666f53886aSRaphael Moreira Zinsly; RV64I-NEXT: ld s0, 2016(sp) # 8-byte Folded Reload 5676f53886aSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_restore ra 5686f53886aSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_restore s0 5696f53886aSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, 2032 5706f53886aSRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 0 5716f53886aSRaphael Moreira Zinsly; RV64I-NEXT: ret 5726f53886aSRaphael Moreira Zinsly; 5736f53886aSRaphael Moreira Zinsly; RV32I-LABEL: f10: 5746f53886aSRaphael Moreira Zinsly; RV32I: # %bb.0: 5756f53886aSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -2032 5766f53886aSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 2032 5776f53886aSRaphael Moreira Zinsly; RV32I-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill 5786f53886aSRaphael Moreira Zinsly; RV32I-NEXT: sw s0, 2024(sp) # 4-byte Folded Spill 5796f53886aSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_offset ra, -4 5806f53886aSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_offset s0, -8 5816f53886aSRaphael Moreira Zinsly; RV32I-NEXT: addi s0, sp, 2032 5826f53886aSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa s0, 0 5836f53886aSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -2048 5846f53886aSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -1040 5856f53886aSRaphael Moreira Zinsly; RV32I-NEXT: andi sp, sp, -1024 5866f53886aSRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 5876f53886aSRaphael Moreira Zinsly; RV32I-NEXT: slli a0, a0, 2 5886f53886aSRaphael Moreira Zinsly; RV32I-NEXT: addi a1, sp, 1024 5896f53886aSRaphael Moreira Zinsly; RV32I-NEXT: add a0, a1, a0 5906f53886aSRaphael Moreira Zinsly; RV32I-NEXT: li a1, 1 5916f53886aSRaphael Moreira Zinsly; RV32I-NEXT: sw a1, 0(a0) 5926f53886aSRaphael Moreira Zinsly; RV32I-NEXT: lw a0, 1024(sp) 5936f53886aSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, s0, -2032 5946f53886aSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa sp, 2032 5956f53886aSRaphael Moreira Zinsly; RV32I-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload 5966f53886aSRaphael Moreira Zinsly; RV32I-NEXT: lw s0, 2024(sp) # 4-byte Folded Reload 5976f53886aSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_restore ra 5986f53886aSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_restore s0 5996f53886aSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, 2032 6006f53886aSRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 0 6016f53886aSRaphael Moreira Zinsly; RV32I-NEXT: ret 6026f53886aSRaphael Moreira Zinsly %a = alloca i32, i32 1000, align 1024 6036f53886aSRaphael Moreira Zinsly %b = getelementptr inbounds i32, ptr %a, i64 %i 6046f53886aSRaphael Moreira Zinsly store volatile i32 1, ptr %b 6056f53886aSRaphael Moreira Zinsly %c = load volatile i32, ptr %a 6066f53886aSRaphael Moreira Zinsly ret i32 %c 6076f53886aSRaphael Moreira Zinsly} 6086f53886aSRaphael Moreira Zinsly 609*01d7f434SRaphael Moreira Zinslydefine void @f11(i32 %vla_size, i64 %i) #0 { 610*01d7f434SRaphael Moreira Zinsly; RV64I-LABEL: f11: 611*01d7f434SRaphael Moreira Zinsly; RV64I: # %bb.0: 612*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -2032 613*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 2032 614*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 615*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill 616*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: sd s0, 2016(sp) # 8-byte Folded Spill 617*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: sd s1, 2008(sp) # 8-byte Folded Spill 618*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: .cfi_offset ra, -8 619*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: .cfi_offset s0, -16 620*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: .cfi_offset s1, -24 621*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: addi s0, sp, 2032 622*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa s0, 0 623*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: lui a2, 15 624*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: sub t1, sp, a2 625*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: lui t2, 1 626*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: .LBB11_1: # =>This Inner Loop Header: Depth=1 627*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, t2 628*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 629*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: bne sp, t1, .LBB11_1 630*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: # %bb.2: 631*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -2048 632*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -16 633*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 634*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: srli a2, sp, 15 635*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: slli sp, a2, 15 636*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: mv s1, sp 637*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: slli a1, a1, 2 638*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: lui a2, 8 639*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: add a2, s1, a2 640*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: add a1, a2, a1 641*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: li a2, 1 642*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: slli a0, a0, 32 643*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: srli a0, a0, 32 644*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: sw a2, 0(a1) 645*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: addi a0, a0, 15 646*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: andi a0, a0, -16 647*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: sub a0, sp, a0 648*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: andi a0, a0, -2048 649*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: lui a1, 1 650*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: .LBB11_3: # =>This Inner Loop Header: Depth=1 651*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, a1 652*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 653*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: blt a0, sp, .LBB11_3 654*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: # %bb.4: 655*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: mv sp, a0 656*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: lbu zero, 0(a0) 657*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: addi sp, s0, -2032 658*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa sp, 2032 659*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload 660*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: ld s0, 2016(sp) # 8-byte Folded Reload 661*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: ld s1, 2008(sp) # 8-byte Folded Reload 662*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: .cfi_restore ra 663*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: .cfi_restore s0 664*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: .cfi_restore s1 665*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, 2032 666*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: .cfi_def_cfa_offset 0 667*01d7f434SRaphael Moreira Zinsly; RV64I-NEXT: ret 668*01d7f434SRaphael Moreira Zinsly; 669*01d7f434SRaphael Moreira Zinsly; RV32I-LABEL: f11: 670*01d7f434SRaphael Moreira Zinsly; RV32I: # %bb.0: 671*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -2032 672*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 2032 673*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 674*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill 675*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: sw s0, 2024(sp) # 4-byte Folded Spill 676*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: sw s1, 2020(sp) # 4-byte Folded Spill 677*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: .cfi_offset ra, -4 678*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: .cfi_offset s0, -8 679*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: .cfi_offset s1, -12 680*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: addi s0, sp, 2032 681*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa s0, 0 682*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: lui a2, 15 683*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: sub t1, sp, a2 684*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: lui t2, 1 685*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: .LBB11_1: # =>This Inner Loop Header: Depth=1 686*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, t2 687*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 688*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: bne sp, t1, .LBB11_1 689*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: # %bb.2: 690*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -2048 691*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -16 692*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 693*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: srli a2, sp, 15 694*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: slli sp, a2, 15 695*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: mv s1, sp 696*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: slli a1, a1, 2 697*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: lui a2, 8 698*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: add a2, s1, a2 699*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: add a1, a2, a1 700*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: li a2, 1 701*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: addi a0, a0, 15 702*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: andi a0, a0, -16 703*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: sw a2, 0(a1) 704*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: sub a0, sp, a0 705*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: andi a0, a0, -2048 706*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: lui a1, 1 707*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: .LBB11_3: # =>This Inner Loop Header: Depth=1 708*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, a1 709*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 710*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: blt a0, sp, .LBB11_3 711*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: # %bb.4: 712*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: mv sp, a0 713*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: lbu zero, 0(a0) 714*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: addi sp, s0, -2032 715*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa sp, 2032 716*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload 717*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: lw s0, 2024(sp) # 4-byte Folded Reload 718*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: lw s1, 2020(sp) # 4-byte Folded Reload 719*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: .cfi_restore ra 720*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: .cfi_restore s0 721*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: .cfi_restore s1 722*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, 2032 723*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: .cfi_def_cfa_offset 0 724*01d7f434SRaphael Moreira Zinsly; RV32I-NEXT: ret 725*01d7f434SRaphael Moreira Zinsly %a = alloca i32, i32 4096, align 32768 726*01d7f434SRaphael Moreira Zinsly %b = getelementptr inbounds i32, ptr %a, i64 %i 727*01d7f434SRaphael Moreira Zinsly store volatile i32 1, ptr %b 728*01d7f434SRaphael Moreira Zinsly %1 = zext i32 %vla_size to i64 729*01d7f434SRaphael Moreira Zinsly %vla = alloca i8, i64 %1, align 2048 730*01d7f434SRaphael Moreira Zinsly %2 = load volatile i8, ptr %vla, align 2048 731*01d7f434SRaphael Moreira Zinsly ret void 732*01d7f434SRaphael Moreira Zinsly} 733*01d7f434SRaphael Moreira Zinsly 734708a478dSRaphael Moreira Zinslyattributes #0 = { "probe-stack"="inline-asm" } 735