1708a478dSRaphael Moreira Zinsly; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*c835b48aSCraig Topper; RUN: llc -mtriple=riscv64 -mattr=+m -O2 < %s -verify-machineinstrs \ 3708a478dSRaphael Moreira Zinsly; RUN: | FileCheck %s -check-prefix=RV64I 4*c835b48aSCraig Topper; RUN: llc -mtriple=riscv32 -mattr=+m -O2 < %s -verify-machineinstrs \ 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 nounwind { 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: li a0, 3 15708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sb a0, 0(sp) 16708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lbu a0, 0(sp) 17708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, 64 18708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ret 19708a478dSRaphael Moreira Zinsly; 20708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f0: 21708a478dSRaphael Moreira Zinsly; RV32I: # %bb.0: # %entry 22708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -64 23708a478dSRaphael Moreira Zinsly; RV32I-NEXT: li a0, 3 24708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sb a0, 0(sp) 25708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lbu a0, 0(sp) 26708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, 64 27708a478dSRaphael Moreira Zinsly; RV32I-NEXT: ret 28708a478dSRaphael Moreira Zinslyentry: 29708a478dSRaphael Moreira Zinsly %a = alloca i8, i64 64 30708a478dSRaphael Moreira Zinsly %b = getelementptr inbounds i8, ptr %a, i64 63 31708a478dSRaphael Moreira Zinsly store volatile i8 3, ptr %a 32708a478dSRaphael Moreira Zinsly %c = load volatile i8, ptr %a 33708a478dSRaphael Moreira Zinsly ret i8 %c 34708a478dSRaphael Moreira Zinsly} 35708a478dSRaphael Moreira Zinsly 36708a478dSRaphael Moreira Zinslydefine i8 @f1() #0 nounwind { 37708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f1: 38708a478dSRaphael Moreira Zinsly; RV64I: # %bb.0: # %entry 39708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 1 40708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, a0 41708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 42708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -16 43708a478dSRaphael Moreira Zinsly; RV64I-NEXT: li a0, 3 44708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sb a0, 16(sp) 45708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lbu a0, 16(sp) 46708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a1, 1 47708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addiw a1, a1, 16 48708a478dSRaphael Moreira Zinsly; RV64I-NEXT: add sp, sp, a1 49708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ret 50708a478dSRaphael Moreira Zinsly; 51708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f1: 52708a478dSRaphael Moreira Zinsly; RV32I: # %bb.0: # %entry 53708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 1 54708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, a0 55708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 56708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -16 57708a478dSRaphael Moreira Zinsly; RV32I-NEXT: li a0, 3 58708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sb a0, 16(sp) 59708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lbu a0, 16(sp) 60708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a1, 1 61708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a1, a1, 16 62708a478dSRaphael Moreira Zinsly; RV32I-NEXT: add sp, sp, a1 63708a478dSRaphael Moreira Zinsly; RV32I-NEXT: ret 64708a478dSRaphael Moreira Zinslyentry: 65708a478dSRaphael Moreira Zinsly %a = alloca i8, i64 4096 66708a478dSRaphael Moreira Zinsly %b = getelementptr inbounds i8, ptr %a, i64 63 67708a478dSRaphael Moreira Zinsly store volatile i8 3, ptr %a 68708a478dSRaphael Moreira Zinsly %c = load volatile i8, ptr %a 69708a478dSRaphael Moreira Zinsly ret i8 %c 70708a478dSRaphael Moreira Zinsly} 71708a478dSRaphael Moreira Zinsly 72708a478dSRaphael Moreira Zinslydefine i8 @f2() #0 nounwind { 73708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f2: 74708a478dSRaphael Moreira Zinsly; RV64I: # %bb.0: # %entry 75708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 16 76708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub t1, sp, a0 77708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui t2, 1 78708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .LBB2_1: # %entry 79708a478dSRaphael Moreira Zinsly; RV64I-NEXT: # =>This Inner Loop Header: Depth=1 80708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, t2 81708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 82708a478dSRaphael Moreira Zinsly; RV64I-NEXT: bne sp, t1, .LBB2_1 83708a478dSRaphael Moreira Zinsly; RV64I-NEXT: # %bb.2: # %entry 84708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -16 85708a478dSRaphael Moreira Zinsly; RV64I-NEXT: li a0, 3 86708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sb a0, 16(sp) 87708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lbu a0, 16(sp) 88708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a1, 16 89708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addiw a1, a1, 16 90708a478dSRaphael Moreira Zinsly; RV64I-NEXT: add sp, sp, a1 91708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ret 92708a478dSRaphael Moreira Zinsly; 93708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f2: 94708a478dSRaphael Moreira Zinsly; RV32I: # %bb.0: # %entry 95708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 16 96708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub t1, sp, a0 97708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui t2, 1 98708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .LBB2_1: # %entry 99708a478dSRaphael Moreira Zinsly; RV32I-NEXT: # =>This Inner Loop Header: Depth=1 100708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, t2 101708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 102708a478dSRaphael Moreira Zinsly; RV32I-NEXT: bne sp, t1, .LBB2_1 103708a478dSRaphael Moreira Zinsly; RV32I-NEXT: # %bb.2: # %entry 104708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -16 105708a478dSRaphael Moreira Zinsly; RV32I-NEXT: li a0, 3 106708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sb a0, 16(sp) 107708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lbu a0, 16(sp) 108708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a1, 16 109708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a1, a1, 16 110708a478dSRaphael Moreira Zinsly; RV32I-NEXT: add sp, sp, a1 111708a478dSRaphael Moreira Zinsly; RV32I-NEXT: ret 112708a478dSRaphael Moreira Zinslyentry: 113708a478dSRaphael Moreira Zinsly %a = alloca i8, i64 65536 114708a478dSRaphael Moreira Zinsly %b = getelementptr inbounds i8, ptr %a, i64 63 115708a478dSRaphael Moreira Zinsly store volatile i8 3, ptr %a 116708a478dSRaphael Moreira Zinsly %c = load volatile i8, ptr %a 117708a478dSRaphael Moreira Zinsly ret i8 %c 118708a478dSRaphael Moreira Zinsly} 119708a478dSRaphael Moreira Zinsly 120708a478dSRaphael Moreira Zinslydefine i8 @f3() #0 "stack-probe-size"="32768" nounwind { 121708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f3: 122708a478dSRaphael Moreira Zinsly; RV64I: # %bb.0: # %entry 123708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 8 124708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, a0 125708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 126708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 8 127708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, a0 128708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 129708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -16 130708a478dSRaphael Moreira Zinsly; RV64I-NEXT: li a0, 3 131708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sb a0, 16(sp) 132708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lbu a0, 16(sp) 133708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a1, 16 134708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addiw a1, a1, 16 135708a478dSRaphael Moreira Zinsly; RV64I-NEXT: add sp, sp, a1 136708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ret 137708a478dSRaphael Moreira Zinsly; 138708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f3: 139708a478dSRaphael Moreira Zinsly; RV32I: # %bb.0: # %entry 140708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 8 141708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, a0 142708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 143708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 8 144708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, a0 145708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 146708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -16 147708a478dSRaphael Moreira Zinsly; RV32I-NEXT: li a0, 3 148708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sb a0, 16(sp) 149708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lbu a0, 16(sp) 150708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a1, 16 151708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a1, a1, 16 152708a478dSRaphael Moreira Zinsly; RV32I-NEXT: add sp, sp, a1 153708a478dSRaphael Moreira Zinsly; RV32I-NEXT: ret 154708a478dSRaphael Moreira Zinslyentry: 155708a478dSRaphael Moreira Zinsly %a = alloca i8, i64 65536 156708a478dSRaphael Moreira Zinsly %b = getelementptr inbounds i8, ptr %a, i64 63 157708a478dSRaphael Moreira Zinsly store volatile i8 3, ptr %a 158708a478dSRaphael Moreira Zinsly %c = load volatile i8, ptr %a 159708a478dSRaphael Moreira Zinsly ret i8 %c 160708a478dSRaphael Moreira Zinsly} 161708a478dSRaphael Moreira Zinsly 162708a478dSRaphael Moreira Zinsly; Same as f2, but without protection. 163708a478dSRaphael Moreira Zinslydefine i8 @f4() nounwind { 164708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f4: 165708a478dSRaphael Moreira Zinsly; RV64I: # %bb.0: # %entry 166708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 16 167708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addiw a0, a0, 16 168708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, a0 169708a478dSRaphael Moreira Zinsly; RV64I-NEXT: li a0, 3 170708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sb a0, 16(sp) 171708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lbu a0, 16(sp) 172708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a1, 16 173708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addiw a1, a1, 16 174708a478dSRaphael Moreira Zinsly; RV64I-NEXT: add sp, sp, a1 175708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ret 176708a478dSRaphael Moreira Zinsly; 177708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f4: 178708a478dSRaphael Moreira Zinsly; RV32I: # %bb.0: # %entry 179708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 16 180708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a0, a0, 16 181708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, a0 182708a478dSRaphael Moreira Zinsly; RV32I-NEXT: li a0, 3 183708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sb a0, 16(sp) 184708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lbu a0, 16(sp) 185708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a1, 16 186708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a1, a1, 16 187708a478dSRaphael Moreira Zinsly; RV32I-NEXT: add sp, sp, a1 188708a478dSRaphael Moreira Zinsly; RV32I-NEXT: ret 189708a478dSRaphael Moreira Zinslyentry: 190708a478dSRaphael Moreira Zinsly %a = alloca i8, i64 65536 191708a478dSRaphael Moreira Zinsly %b = getelementptr inbounds i8, ptr %a, i64 63 192708a478dSRaphael Moreira Zinsly store volatile i8 3, ptr %a 193708a478dSRaphael Moreira Zinsly %c = load volatile i8, ptr %a 194708a478dSRaphael Moreira Zinsly ret i8 %c 195708a478dSRaphael Moreira Zinsly} 196708a478dSRaphael Moreira Zinsly 197708a478dSRaphael Moreira Zinslydefine i8 @f5() #0 "stack-probe-size"="65536" nounwind { 198708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f5: 199708a478dSRaphael Moreira Zinsly; RV64I: # %bb.0: # %entry 200708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 256 201708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub t1, sp, a0 202708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui t2, 16 203708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .LBB5_1: # %entry 204708a478dSRaphael Moreira Zinsly; RV64I-NEXT: # =>This Inner Loop Header: Depth=1 205708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, t2 206708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 207708a478dSRaphael Moreira Zinsly; RV64I-NEXT: bne sp, t1, .LBB5_1 208708a478dSRaphael Moreira Zinsly; RV64I-NEXT: # %bb.2: # %entry 209708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -16 210708a478dSRaphael Moreira Zinsly; RV64I-NEXT: li a0, 3 211708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sb a0, 16(sp) 212708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lbu a0, 16(sp) 213708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a1, 256 214708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addiw a1, a1, 16 215708a478dSRaphael Moreira Zinsly; RV64I-NEXT: add sp, sp, a1 216708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ret 217708a478dSRaphael Moreira Zinsly; 218708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f5: 219708a478dSRaphael Moreira Zinsly; RV32I: # %bb.0: # %entry 220708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 256 221708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub t1, sp, a0 222708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui t2, 16 223708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .LBB5_1: # %entry 224708a478dSRaphael Moreira Zinsly; RV32I-NEXT: # =>This Inner Loop Header: Depth=1 225708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, t2 226708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 227708a478dSRaphael Moreira Zinsly; RV32I-NEXT: bne sp, t1, .LBB5_1 228708a478dSRaphael Moreira Zinsly; RV32I-NEXT: # %bb.2: # %entry 229708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -16 230708a478dSRaphael Moreira Zinsly; RV32I-NEXT: li a0, 3 231708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sb a0, 16(sp) 232708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lbu a0, 16(sp) 233708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a1, 256 234708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a1, a1, 16 235708a478dSRaphael Moreira Zinsly; RV32I-NEXT: add sp, sp, a1 236708a478dSRaphael Moreira Zinsly; RV32I-NEXT: ret 237708a478dSRaphael Moreira Zinslyentry: 238708a478dSRaphael Moreira Zinsly %a = alloca i8, i64 1048576 239708a478dSRaphael Moreira Zinsly %b = getelementptr inbounds i8, ptr %a, i64 63 240708a478dSRaphael Moreira Zinsly store volatile i8 3, ptr %a 241708a478dSRaphael Moreira Zinsly %c = load volatile i8, ptr %a 242708a478dSRaphael Moreira Zinsly ret i8 %c 243708a478dSRaphael Moreira Zinsly} 244708a478dSRaphael Moreira Zinsly 245708a478dSRaphael Moreira Zinslydefine i8 @f6() #0 nounwind { 246708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f6: 247708a478dSRaphael Moreira Zinsly; RV64I: # %bb.0: # %entry 248708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 262144 249708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub t1, sp, a0 250708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui t2, 1 251708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .LBB6_1: # %entry 252708a478dSRaphael Moreira Zinsly; RV64I-NEXT: # =>This Inner Loop Header: Depth=1 253708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, t2 254708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 255708a478dSRaphael Moreira Zinsly; RV64I-NEXT: bne sp, t1, .LBB6_1 256708a478dSRaphael Moreira Zinsly; RV64I-NEXT: # %bb.2: # %entry 257708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addi sp, sp, -16 258708a478dSRaphael Moreira Zinsly; RV64I-NEXT: li a0, 3 259708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sb a0, 16(sp) 260708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lbu a0, 16(sp) 261708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a1, 262144 262708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addiw a1, a1, 16 263708a478dSRaphael Moreira Zinsly; RV64I-NEXT: add sp, sp, a1 264708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ret 265708a478dSRaphael Moreira Zinsly; 266708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f6: 267708a478dSRaphael Moreira Zinsly; RV32I: # %bb.0: # %entry 268708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 262144 269708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub t1, sp, a0 270708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui t2, 1 271708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .LBB6_1: # %entry 272708a478dSRaphael Moreira Zinsly; RV32I-NEXT: # =>This Inner Loop Header: Depth=1 273708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, t2 274708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 275708a478dSRaphael Moreira Zinsly; RV32I-NEXT: bne sp, t1, .LBB6_1 276708a478dSRaphael Moreira Zinsly; RV32I-NEXT: # %bb.2: # %entry 277708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi sp, sp, -16 278708a478dSRaphael Moreira Zinsly; RV32I-NEXT: li a0, 3 279708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sb a0, 16(sp) 280708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lbu a0, 16(sp) 281708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a1, 262144 282708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a1, a1, 16 283708a478dSRaphael Moreira Zinsly; RV32I-NEXT: add sp, sp, a1 284708a478dSRaphael Moreira Zinsly; RV32I-NEXT: ret 285708a478dSRaphael Moreira Zinslyentry: 286708a478dSRaphael Moreira Zinsly %a = alloca i8, i64 1073741824 287708a478dSRaphael Moreira Zinsly %b = getelementptr inbounds i8, ptr %a, i64 63 288708a478dSRaphael Moreira Zinsly store volatile i8 3, ptr %a 289708a478dSRaphael Moreira Zinsly %c = load volatile i8, ptr %a 290708a478dSRaphael Moreira Zinsly ret i8 %c 291708a478dSRaphael Moreira Zinsly} 292708a478dSRaphael Moreira Zinsly 293708a478dSRaphael Moreira Zinslydefine i8 @f7() #0 "stack-probe-size"="65536" nounwind { 294708a478dSRaphael Moreira Zinsly; RV64I-LABEL: f7: 295708a478dSRaphael Moreira Zinsly; RV64I: # %bb.0: # %entry 296708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 244128 297708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub t1, sp, a0 298708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui t2, 16 299708a478dSRaphael Moreira Zinsly; RV64I-NEXT: .LBB7_1: # %entry 300708a478dSRaphael Moreira Zinsly; RV64I-NEXT: # =>This Inner Loop Header: Depth=1 301708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, t2 302708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sd zero, 0(sp) 303708a478dSRaphael Moreira Zinsly; RV64I-NEXT: bne sp, t1, .LBB7_1 304708a478dSRaphael Moreira Zinsly; RV64I-NEXT: # %bb.2: # %entry 305708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a0, 13 306708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addiw a0, a0, -1520 307708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sub sp, sp, a0 308708a478dSRaphael Moreira Zinsly; RV64I-NEXT: li a0, 3 309708a478dSRaphael Moreira Zinsly; RV64I-NEXT: sb a0, 9(sp) 310708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lbu a0, 9(sp) 311708a478dSRaphael Moreira Zinsly; RV64I-NEXT: lui a1, 244141 312708a478dSRaphael Moreira Zinsly; RV64I-NEXT: addiw a1, a1, -1520 313708a478dSRaphael Moreira Zinsly; RV64I-NEXT: add sp, sp, a1 314708a478dSRaphael Moreira Zinsly; RV64I-NEXT: ret 315708a478dSRaphael Moreira Zinsly; 316708a478dSRaphael Moreira Zinsly; RV32I-LABEL: f7: 317708a478dSRaphael Moreira Zinsly; RV32I: # %bb.0: # %entry 318708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 244128 319708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub t1, sp, a0 320708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui t2, 16 321708a478dSRaphael Moreira Zinsly; RV32I-NEXT: .LBB7_1: # %entry 322708a478dSRaphael Moreira Zinsly; RV32I-NEXT: # =>This Inner Loop Header: Depth=1 323708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, t2 324708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sw zero, 0(sp) 325708a478dSRaphael Moreira Zinsly; RV32I-NEXT: bne sp, t1, .LBB7_1 326708a478dSRaphael Moreira Zinsly; RV32I-NEXT: # %bb.2: # %entry 327708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a0, 13 328708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a0, a0, -1520 329708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sub sp, sp, a0 330708a478dSRaphael Moreira Zinsly; RV32I-NEXT: li a0, 3 331708a478dSRaphael Moreira Zinsly; RV32I-NEXT: sb a0, 9(sp) 332708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lbu a0, 9(sp) 333708a478dSRaphael Moreira Zinsly; RV32I-NEXT: lui a1, 244141 334708a478dSRaphael Moreira Zinsly; RV32I-NEXT: addi a1, a1, -1520 335708a478dSRaphael Moreira Zinsly; RV32I-NEXT: add sp, sp, a1 336708a478dSRaphael Moreira Zinsly; RV32I-NEXT: ret 337708a478dSRaphael Moreira Zinslyentry: 338708a478dSRaphael Moreira Zinsly %a = alloca i8, i64 1000000007 339708a478dSRaphael Moreira Zinsly %b = getelementptr inbounds i8, ptr %a, i64 101 340708a478dSRaphael Moreira Zinsly store volatile i8 3, ptr %a 341708a478dSRaphael Moreira Zinsly %c = load volatile i8, ptr %a 342708a478dSRaphael Moreira Zinsly ret i8 %c 343708a478dSRaphael Moreira Zinsly} 344708a478dSRaphael Moreira Zinsly 345708a478dSRaphael Moreira Zinslyattributes #0 = { "probe-stack"="inline-asm" } 346