1daf067daSwanglei; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*9d4f7f44Swanglei; RUN: llc --mtriple=loongarch32 -mattr=+d --verify-machineinstrs < %s \ 3daf067daSwanglei; RUN: | FileCheck %s --check-prefix=LA32 4*9d4f7f44Swanglei; RUN: llc --mtriple=loongarch64 -mattr=+d --verify-machineinstrs < %s \ 5daf067daSwanglei; RUN: | FileCheck %s --check-prefix=LA64 6daf067daSwanglei 7779df382SNikita Popovdeclare void @callee(ptr) 8daf067daSwanglei 9daf067daSwangleidefine void @caller32() { 10daf067daSwanglei; LA32-LABEL: caller32: 11daf067daSwanglei; LA32: # %bb.0: 12daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, -32 13daf067daSwanglei; LA32-NEXT: .cfi_def_cfa_offset 32 14daf067daSwanglei; LA32-NEXT: st.w $ra, $sp, 28 # 4-byte Folded Spill 15daf067daSwanglei; LA32-NEXT: st.w $fp, $sp, 24 # 4-byte Folded Spill 16daf067daSwanglei; LA32-NEXT: .cfi_offset 1, -4 17daf067daSwanglei; LA32-NEXT: .cfi_offset 22, -8 18daf067daSwanglei; LA32-NEXT: addi.w $fp, $sp, 32 19daf067daSwanglei; LA32-NEXT: .cfi_def_cfa 22, 0 201bb77664Swanglei; LA32-NEXT: bstrins.w $sp, $zero, 4, 0 21daf067daSwanglei; LA32-NEXT: addi.w $a0, $sp, 0 22daf067daSwanglei; LA32-NEXT: bl %plt(callee) 23daf067daSwanglei; LA32-NEXT: addi.w $sp, $fp, -32 24daf067daSwanglei; LA32-NEXT: ld.w $fp, $sp, 24 # 4-byte Folded Reload 25daf067daSwanglei; LA32-NEXT: ld.w $ra, $sp, 28 # 4-byte Folded Reload 26daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, 32 27daf067daSwanglei; LA32-NEXT: ret 28daf067daSwanglei; 29daf067daSwanglei; LA64-LABEL: caller32: 30daf067daSwanglei; LA64: # %bb.0: 31daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, -32 32daf067daSwanglei; LA64-NEXT: .cfi_def_cfa_offset 32 33daf067daSwanglei; LA64-NEXT: st.d $ra, $sp, 24 # 8-byte Folded Spill 34daf067daSwanglei; LA64-NEXT: st.d $fp, $sp, 16 # 8-byte Folded Spill 35daf067daSwanglei; LA64-NEXT: .cfi_offset 1, -8 36daf067daSwanglei; LA64-NEXT: .cfi_offset 22, -16 37daf067daSwanglei; LA64-NEXT: addi.d $fp, $sp, 32 38daf067daSwanglei; LA64-NEXT: .cfi_def_cfa 22, 0 391bb77664Swanglei; LA64-NEXT: bstrins.d $sp, $zero, 4, 0 40daf067daSwanglei; LA64-NEXT: addi.d $a0, $sp, 0 41daf067daSwanglei; LA64-NEXT: bl %plt(callee) 42daf067daSwanglei; LA64-NEXT: addi.d $sp, $fp, -32 43daf067daSwanglei; LA64-NEXT: ld.d $fp, $sp, 16 # 8-byte Folded Reload 44daf067daSwanglei; LA64-NEXT: ld.d $ra, $sp, 24 # 8-byte Folded Reload 45daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, 32 46daf067daSwanglei; LA64-NEXT: ret 47daf067daSwanglei %1 = alloca i8, align 32 48779df382SNikita Popov call void @callee(ptr %1) 49daf067daSwanglei ret void 50daf067daSwanglei} 51daf067daSwanglei 52daf067daSwangleidefine void @caller_no_realign32() "no-realign-stack" { 53daf067daSwanglei; LA32-LABEL: caller_no_realign32: 54daf067daSwanglei; LA32: # %bb.0: 55daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, -16 56daf067daSwanglei; LA32-NEXT: .cfi_def_cfa_offset 16 57daf067daSwanglei; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 58daf067daSwanglei; LA32-NEXT: .cfi_offset 1, -4 59daf067daSwanglei; LA32-NEXT: addi.w $a0, $sp, 0 60daf067daSwanglei; LA32-NEXT: bl %plt(callee) 61daf067daSwanglei; LA32-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 62daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, 16 63daf067daSwanglei; LA32-NEXT: ret 64daf067daSwanglei; 65daf067daSwanglei; LA64-LABEL: caller_no_realign32: 66daf067daSwanglei; LA64: # %bb.0: 67daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, -16 68daf067daSwanglei; LA64-NEXT: .cfi_def_cfa_offset 16 69daf067daSwanglei; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 70daf067daSwanglei; LA64-NEXT: .cfi_offset 1, -8 71daf067daSwanglei; LA64-NEXT: addi.d $a0, $sp, 0 72daf067daSwanglei; LA64-NEXT: bl %plt(callee) 73daf067daSwanglei; LA64-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 74daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, 16 75daf067daSwanglei; LA64-NEXT: ret 76daf067daSwanglei %1 = alloca i8, align 32 77779df382SNikita Popov call void @callee(ptr %1) 78daf067daSwanglei ret void 79daf067daSwanglei} 80daf067daSwanglei 81daf067daSwangleidefine void @caller64() { 82daf067daSwanglei; LA32-LABEL: caller64: 83daf067daSwanglei; LA32: # %bb.0: 84daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, -64 85daf067daSwanglei; LA32-NEXT: .cfi_def_cfa_offset 64 86daf067daSwanglei; LA32-NEXT: st.w $ra, $sp, 60 # 4-byte Folded Spill 87daf067daSwanglei; LA32-NEXT: st.w $fp, $sp, 56 # 4-byte Folded Spill 88daf067daSwanglei; LA32-NEXT: .cfi_offset 1, -4 89daf067daSwanglei; LA32-NEXT: .cfi_offset 22, -8 90daf067daSwanglei; LA32-NEXT: addi.w $fp, $sp, 64 91daf067daSwanglei; LA32-NEXT: .cfi_def_cfa 22, 0 921bb77664Swanglei; LA32-NEXT: bstrins.w $sp, $zero, 5, 0 93daf067daSwanglei; LA32-NEXT: addi.w $a0, $sp, 0 94daf067daSwanglei; LA32-NEXT: bl %plt(callee) 95daf067daSwanglei; LA32-NEXT: addi.w $sp, $fp, -64 96daf067daSwanglei; LA32-NEXT: ld.w $fp, $sp, 56 # 4-byte Folded Reload 97daf067daSwanglei; LA32-NEXT: ld.w $ra, $sp, 60 # 4-byte Folded Reload 98daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, 64 99daf067daSwanglei; LA32-NEXT: ret 100daf067daSwanglei; 101daf067daSwanglei; LA64-LABEL: caller64: 102daf067daSwanglei; LA64: # %bb.0: 103daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, -64 104daf067daSwanglei; LA64-NEXT: .cfi_def_cfa_offset 64 105daf067daSwanglei; LA64-NEXT: st.d $ra, $sp, 56 # 8-byte Folded Spill 106daf067daSwanglei; LA64-NEXT: st.d $fp, $sp, 48 # 8-byte Folded Spill 107daf067daSwanglei; LA64-NEXT: .cfi_offset 1, -8 108daf067daSwanglei; LA64-NEXT: .cfi_offset 22, -16 109daf067daSwanglei; LA64-NEXT: addi.d $fp, $sp, 64 110daf067daSwanglei; LA64-NEXT: .cfi_def_cfa 22, 0 1111bb77664Swanglei; LA64-NEXT: bstrins.d $sp, $zero, 5, 0 112daf067daSwanglei; LA64-NEXT: addi.d $a0, $sp, 0 113daf067daSwanglei; LA64-NEXT: bl %plt(callee) 114daf067daSwanglei; LA64-NEXT: addi.d $sp, $fp, -64 115daf067daSwanglei; LA64-NEXT: ld.d $fp, $sp, 48 # 8-byte Folded Reload 116daf067daSwanglei; LA64-NEXT: ld.d $ra, $sp, 56 # 8-byte Folded Reload 117daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, 64 118daf067daSwanglei; LA64-NEXT: ret 119daf067daSwanglei %1 = alloca i8, align 64 120779df382SNikita Popov call void @callee(ptr %1) 121daf067daSwanglei ret void 122daf067daSwanglei} 123daf067daSwanglei 124daf067daSwangleidefine void @caller_no_realign64() "no-realign-stack" { 125daf067daSwanglei; LA32-LABEL: caller_no_realign64: 126daf067daSwanglei; LA32: # %bb.0: 127daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, -16 128daf067daSwanglei; LA32-NEXT: .cfi_def_cfa_offset 16 129daf067daSwanglei; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 130daf067daSwanglei; LA32-NEXT: .cfi_offset 1, -4 131daf067daSwanglei; LA32-NEXT: addi.w $a0, $sp, 0 132daf067daSwanglei; LA32-NEXT: bl %plt(callee) 133daf067daSwanglei; LA32-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 134daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, 16 135daf067daSwanglei; LA32-NEXT: ret 136daf067daSwanglei; 137daf067daSwanglei; LA64-LABEL: caller_no_realign64: 138daf067daSwanglei; LA64: # %bb.0: 139daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, -16 140daf067daSwanglei; LA64-NEXT: .cfi_def_cfa_offset 16 141daf067daSwanglei; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 142daf067daSwanglei; LA64-NEXT: .cfi_offset 1, -8 143daf067daSwanglei; LA64-NEXT: addi.d $a0, $sp, 0 144daf067daSwanglei; LA64-NEXT: bl %plt(callee) 145daf067daSwanglei; LA64-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 146daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, 16 147daf067daSwanglei; LA64-NEXT: ret 148daf067daSwanglei %1 = alloca i8, align 64 149779df382SNikita Popov call void @callee(ptr %1) 150daf067daSwanglei ret void 151daf067daSwanglei} 152daf067daSwanglei 153daf067daSwangleidefine void @caller128() { 154daf067daSwanglei; LA32-LABEL: caller128: 155daf067daSwanglei; LA32: # %bb.0: 156daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, -128 157daf067daSwanglei; LA32-NEXT: .cfi_def_cfa_offset 128 158daf067daSwanglei; LA32-NEXT: st.w $ra, $sp, 124 # 4-byte Folded Spill 159daf067daSwanglei; LA32-NEXT: st.w $fp, $sp, 120 # 4-byte Folded Spill 160daf067daSwanglei; LA32-NEXT: .cfi_offset 1, -4 161daf067daSwanglei; LA32-NEXT: .cfi_offset 22, -8 162daf067daSwanglei; LA32-NEXT: addi.w $fp, $sp, 128 163daf067daSwanglei; LA32-NEXT: .cfi_def_cfa 22, 0 1641bb77664Swanglei; LA32-NEXT: bstrins.w $sp, $zero, 6, 0 165daf067daSwanglei; LA32-NEXT: addi.w $a0, $sp, 0 166daf067daSwanglei; LA32-NEXT: bl %plt(callee) 167daf067daSwanglei; LA32-NEXT: addi.w $sp, $fp, -128 168daf067daSwanglei; LA32-NEXT: ld.w $fp, $sp, 120 # 4-byte Folded Reload 169daf067daSwanglei; LA32-NEXT: ld.w $ra, $sp, 124 # 4-byte Folded Reload 170daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, 128 171daf067daSwanglei; LA32-NEXT: ret 172daf067daSwanglei; 173daf067daSwanglei; LA64-LABEL: caller128: 174daf067daSwanglei; LA64: # %bb.0: 175daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, -128 176daf067daSwanglei; LA64-NEXT: .cfi_def_cfa_offset 128 177daf067daSwanglei; LA64-NEXT: st.d $ra, $sp, 120 # 8-byte Folded Spill 178daf067daSwanglei; LA64-NEXT: st.d $fp, $sp, 112 # 8-byte Folded Spill 179daf067daSwanglei; LA64-NEXT: .cfi_offset 1, -8 180daf067daSwanglei; LA64-NEXT: .cfi_offset 22, -16 181daf067daSwanglei; LA64-NEXT: addi.d $fp, $sp, 128 182daf067daSwanglei; LA64-NEXT: .cfi_def_cfa 22, 0 1831bb77664Swanglei; LA64-NEXT: bstrins.d $sp, $zero, 6, 0 184daf067daSwanglei; LA64-NEXT: addi.d $a0, $sp, 0 185daf067daSwanglei; LA64-NEXT: bl %plt(callee) 186daf067daSwanglei; LA64-NEXT: addi.d $sp, $fp, -128 187daf067daSwanglei; LA64-NEXT: ld.d $fp, $sp, 112 # 8-byte Folded Reload 188daf067daSwanglei; LA64-NEXT: ld.d $ra, $sp, 120 # 8-byte Folded Reload 189daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, 128 190daf067daSwanglei; LA64-NEXT: ret 191daf067daSwanglei %1 = alloca i8, align 128 192779df382SNikita Popov call void @callee(ptr %1) 193daf067daSwanglei ret void 194daf067daSwanglei} 195daf067daSwanglei 196daf067daSwangleidefine void @caller_no_realign128() "no-realign-stack" { 197daf067daSwanglei; LA32-LABEL: caller_no_realign128: 198daf067daSwanglei; LA32: # %bb.0: 199daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, -16 200daf067daSwanglei; LA32-NEXT: .cfi_def_cfa_offset 16 201daf067daSwanglei; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 202daf067daSwanglei; LA32-NEXT: .cfi_offset 1, -4 203daf067daSwanglei; LA32-NEXT: addi.w $a0, $sp, 0 204daf067daSwanglei; LA32-NEXT: bl %plt(callee) 205daf067daSwanglei; LA32-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 206daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, 16 207daf067daSwanglei; LA32-NEXT: ret 208daf067daSwanglei; 209daf067daSwanglei; LA64-LABEL: caller_no_realign128: 210daf067daSwanglei; LA64: # %bb.0: 211daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, -16 212daf067daSwanglei; LA64-NEXT: .cfi_def_cfa_offset 16 213daf067daSwanglei; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 214daf067daSwanglei; LA64-NEXT: .cfi_offset 1, -8 215daf067daSwanglei; LA64-NEXT: addi.d $a0, $sp, 0 216daf067daSwanglei; LA64-NEXT: bl %plt(callee) 217daf067daSwanglei; LA64-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 218daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, 16 219daf067daSwanglei; LA64-NEXT: ret 220daf067daSwanglei %1 = alloca i8, align 128 221779df382SNikita Popov call void @callee(ptr %1) 222daf067daSwanglei ret void 223daf067daSwanglei} 224daf067daSwanglei 225daf067daSwangleidefine void @caller256() { 226daf067daSwanglei; LA32-LABEL: caller256: 227daf067daSwanglei; LA32: # %bb.0: 228daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, -256 229daf067daSwanglei; LA32-NEXT: .cfi_def_cfa_offset 256 230daf067daSwanglei; LA32-NEXT: st.w $ra, $sp, 252 # 4-byte Folded Spill 231daf067daSwanglei; LA32-NEXT: st.w $fp, $sp, 248 # 4-byte Folded Spill 232daf067daSwanglei; LA32-NEXT: .cfi_offset 1, -4 233daf067daSwanglei; LA32-NEXT: .cfi_offset 22, -8 234daf067daSwanglei; LA32-NEXT: addi.w $fp, $sp, 256 235daf067daSwanglei; LA32-NEXT: .cfi_def_cfa 22, 0 2361bb77664Swanglei; LA32-NEXT: bstrins.w $sp, $zero, 7, 0 237daf067daSwanglei; LA32-NEXT: addi.w $a0, $sp, 0 238daf067daSwanglei; LA32-NEXT: bl %plt(callee) 239daf067daSwanglei; LA32-NEXT: addi.w $sp, $fp, -256 240daf067daSwanglei; LA32-NEXT: ld.w $fp, $sp, 248 # 4-byte Folded Reload 241daf067daSwanglei; LA32-NEXT: ld.w $ra, $sp, 252 # 4-byte Folded Reload 242daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, 256 243daf067daSwanglei; LA32-NEXT: ret 244daf067daSwanglei; 245daf067daSwanglei; LA64-LABEL: caller256: 246daf067daSwanglei; LA64: # %bb.0: 247daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, -256 248daf067daSwanglei; LA64-NEXT: .cfi_def_cfa_offset 256 249daf067daSwanglei; LA64-NEXT: st.d $ra, $sp, 248 # 8-byte Folded Spill 250daf067daSwanglei; LA64-NEXT: st.d $fp, $sp, 240 # 8-byte Folded Spill 251daf067daSwanglei; LA64-NEXT: .cfi_offset 1, -8 252daf067daSwanglei; LA64-NEXT: .cfi_offset 22, -16 253daf067daSwanglei; LA64-NEXT: addi.d $fp, $sp, 256 254daf067daSwanglei; LA64-NEXT: .cfi_def_cfa 22, 0 2551bb77664Swanglei; LA64-NEXT: bstrins.d $sp, $zero, 7, 0 256daf067daSwanglei; LA64-NEXT: addi.d $a0, $sp, 0 257daf067daSwanglei; LA64-NEXT: bl %plt(callee) 258daf067daSwanglei; LA64-NEXT: addi.d $sp, $fp, -256 259daf067daSwanglei; LA64-NEXT: ld.d $fp, $sp, 240 # 8-byte Folded Reload 260daf067daSwanglei; LA64-NEXT: ld.d $ra, $sp, 248 # 8-byte Folded Reload 261daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, 256 262daf067daSwanglei; LA64-NEXT: ret 263daf067daSwanglei %1 = alloca i8, align 256 264779df382SNikita Popov call void @callee(ptr %1) 265daf067daSwanglei ret void 266daf067daSwanglei} 267daf067daSwanglei 268daf067daSwangleidefine void @caller_no_realign256() "no-realign-stack" { 269daf067daSwanglei; LA32-LABEL: caller_no_realign256: 270daf067daSwanglei; LA32: # %bb.0: 271daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, -16 272daf067daSwanglei; LA32-NEXT: .cfi_def_cfa_offset 16 273daf067daSwanglei; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 274daf067daSwanglei; LA32-NEXT: .cfi_offset 1, -4 275daf067daSwanglei; LA32-NEXT: addi.w $a0, $sp, 0 276daf067daSwanglei; LA32-NEXT: bl %plt(callee) 277daf067daSwanglei; LA32-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 278daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, 16 279daf067daSwanglei; LA32-NEXT: ret 280daf067daSwanglei; 281daf067daSwanglei; LA64-LABEL: caller_no_realign256: 282daf067daSwanglei; LA64: # %bb.0: 283daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, -16 284daf067daSwanglei; LA64-NEXT: .cfi_def_cfa_offset 16 285daf067daSwanglei; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 286daf067daSwanglei; LA64-NEXT: .cfi_offset 1, -8 287daf067daSwanglei; LA64-NEXT: addi.d $a0, $sp, 0 288daf067daSwanglei; LA64-NEXT: bl %plt(callee) 289daf067daSwanglei; LA64-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 290daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, 16 291daf067daSwanglei; LA64-NEXT: ret 292daf067daSwanglei %1 = alloca i8, align 256 293779df382SNikita Popov call void @callee(ptr %1) 294daf067daSwanglei ret void 295daf067daSwanglei} 296daf067daSwanglei 297daf067daSwangleidefine void @caller512() { 298daf067daSwanglei; LA32-LABEL: caller512: 299daf067daSwanglei; LA32: # %bb.0: 3004e2364a2Swanglei; LA32-NEXT: addi.w $sp, $sp, -1024 3014e2364a2Swanglei; LA32-NEXT: .cfi_def_cfa_offset 1024 3024e2364a2Swanglei; LA32-NEXT: st.w $ra, $sp, 1020 # 4-byte Folded Spill 3034e2364a2Swanglei; LA32-NEXT: st.w $fp, $sp, 1016 # 4-byte Folded Spill 304daf067daSwanglei; LA32-NEXT: .cfi_offset 1, -4 305daf067daSwanglei; LA32-NEXT: .cfi_offset 22, -8 3064e2364a2Swanglei; LA32-NEXT: addi.w $fp, $sp, 1024 307daf067daSwanglei; LA32-NEXT: .cfi_def_cfa 22, 0 3081bb77664Swanglei; LA32-NEXT: bstrins.w $sp, $zero, 8, 0 3094e2364a2Swanglei; LA32-NEXT: addi.w $a0, $sp, 512 310daf067daSwanglei; LA32-NEXT: bl %plt(callee) 3114e2364a2Swanglei; LA32-NEXT: addi.w $sp, $fp, -1024 3124e2364a2Swanglei; LA32-NEXT: ld.w $fp, $sp, 1016 # 4-byte Folded Reload 3134e2364a2Swanglei; LA32-NEXT: ld.w $ra, $sp, 1020 # 4-byte Folded Reload 3144e2364a2Swanglei; LA32-NEXT: addi.w $sp, $sp, 1024 315daf067daSwanglei; LA32-NEXT: ret 316daf067daSwanglei; 317daf067daSwanglei; LA64-LABEL: caller512: 318daf067daSwanglei; LA64: # %bb.0: 3194e2364a2Swanglei; LA64-NEXT: addi.d $sp, $sp, -1024 3204e2364a2Swanglei; LA64-NEXT: .cfi_def_cfa_offset 1024 3214e2364a2Swanglei; LA64-NEXT: st.d $ra, $sp, 1016 # 8-byte Folded Spill 3224e2364a2Swanglei; LA64-NEXT: st.d $fp, $sp, 1008 # 8-byte Folded Spill 323daf067daSwanglei; LA64-NEXT: .cfi_offset 1, -8 324daf067daSwanglei; LA64-NEXT: .cfi_offset 22, -16 3254e2364a2Swanglei; LA64-NEXT: addi.d $fp, $sp, 1024 326daf067daSwanglei; LA64-NEXT: .cfi_def_cfa 22, 0 3271bb77664Swanglei; LA64-NEXT: bstrins.d $sp, $zero, 8, 0 3284e2364a2Swanglei; LA64-NEXT: addi.d $a0, $sp, 512 329daf067daSwanglei; LA64-NEXT: bl %plt(callee) 3304e2364a2Swanglei; LA64-NEXT: addi.d $sp, $fp, -1024 3314e2364a2Swanglei; LA64-NEXT: ld.d $fp, $sp, 1008 # 8-byte Folded Reload 3324e2364a2Swanglei; LA64-NEXT: ld.d $ra, $sp, 1016 # 8-byte Folded Reload 3334e2364a2Swanglei; LA64-NEXT: addi.d $sp, $sp, 1024 334daf067daSwanglei; LA64-NEXT: ret 335daf067daSwanglei %1 = alloca i8, align 512 336779df382SNikita Popov call void @callee(ptr %1) 337daf067daSwanglei ret void 338daf067daSwanglei} 339daf067daSwanglei 340daf067daSwangleidefine void @caller_no_realign512() "no-realign-stack" { 341daf067daSwanglei; LA32-LABEL: caller_no_realign512: 342daf067daSwanglei; LA32: # %bb.0: 343daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, -16 344daf067daSwanglei; LA32-NEXT: .cfi_def_cfa_offset 16 345daf067daSwanglei; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 346daf067daSwanglei; LA32-NEXT: .cfi_offset 1, -4 347daf067daSwanglei; LA32-NEXT: addi.w $a0, $sp, 0 348daf067daSwanglei; LA32-NEXT: bl %plt(callee) 349daf067daSwanglei; LA32-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 350daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, 16 351daf067daSwanglei; LA32-NEXT: ret 352daf067daSwanglei; 353daf067daSwanglei; LA64-LABEL: caller_no_realign512: 354daf067daSwanglei; LA64: # %bb.0: 355daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, -16 356daf067daSwanglei; LA64-NEXT: .cfi_def_cfa_offset 16 357daf067daSwanglei; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 358daf067daSwanglei; LA64-NEXT: .cfi_offset 1, -8 359daf067daSwanglei; LA64-NEXT: addi.d $a0, $sp, 0 360daf067daSwanglei; LA64-NEXT: bl %plt(callee) 361daf067daSwanglei; LA64-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 362daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, 16 363daf067daSwanglei; LA64-NEXT: ret 364daf067daSwanglei %1 = alloca i8, align 512 365779df382SNikita Popov call void @callee(ptr %1) 366daf067daSwanglei ret void 367daf067daSwanglei} 368daf067daSwanglei 369daf067daSwangleidefine void @caller1024() { 370daf067daSwanglei; LA32-LABEL: caller1024: 371daf067daSwanglei; LA32: # %bb.0: 3724e2364a2Swanglei; LA32-NEXT: addi.w $sp, $sp, -2032 3734e2364a2Swanglei; LA32-NEXT: .cfi_def_cfa_offset 2032 3744e2364a2Swanglei; LA32-NEXT: st.w $ra, $sp, 2028 # 4-byte Folded Spill 3754e2364a2Swanglei; LA32-NEXT: st.w $fp, $sp, 2024 # 4-byte Folded Spill 376daf067daSwanglei; LA32-NEXT: .cfi_offset 1, -4 377daf067daSwanglei; LA32-NEXT: .cfi_offset 22, -8 3784e2364a2Swanglei; LA32-NEXT: addi.w $fp, $sp, 2032 379daf067daSwanglei; LA32-NEXT: .cfi_def_cfa 22, 0 3804e2364a2Swanglei; LA32-NEXT: addi.w $sp, $sp, -16 3811bb77664Swanglei; LA32-NEXT: bstrins.w $sp, $zero, 9, 0 3824e2364a2Swanglei; LA32-NEXT: addi.w $a0, $sp, 1024 383daf067daSwanglei; LA32-NEXT: bl %plt(callee) 3844e2364a2Swanglei; LA32-NEXT: addi.w $sp, $fp, -2048 3854e2364a2Swanglei; LA32-NEXT: addi.w $sp, $sp, 16 3864e2364a2Swanglei; LA32-NEXT: ld.w $fp, $sp, 2024 # 4-byte Folded Reload 3874e2364a2Swanglei; LA32-NEXT: ld.w $ra, $sp, 2028 # 4-byte Folded Reload 3884e2364a2Swanglei; LA32-NEXT: addi.w $sp, $sp, 2032 389daf067daSwanglei; LA32-NEXT: ret 390daf067daSwanglei; 391daf067daSwanglei; LA64-LABEL: caller1024: 392daf067daSwanglei; LA64: # %bb.0: 3934e2364a2Swanglei; LA64-NEXT: addi.d $sp, $sp, -2032 3944e2364a2Swanglei; LA64-NEXT: .cfi_def_cfa_offset 2032 3954e2364a2Swanglei; LA64-NEXT: st.d $ra, $sp, 2024 # 8-byte Folded Spill 3964e2364a2Swanglei; LA64-NEXT: st.d $fp, $sp, 2016 # 8-byte Folded Spill 397daf067daSwanglei; LA64-NEXT: .cfi_offset 1, -8 398daf067daSwanglei; LA64-NEXT: .cfi_offset 22, -16 3994e2364a2Swanglei; LA64-NEXT: addi.d $fp, $sp, 2032 400daf067daSwanglei; LA64-NEXT: .cfi_def_cfa 22, 0 4014e2364a2Swanglei; LA64-NEXT: addi.d $sp, $sp, -16 4021bb77664Swanglei; LA64-NEXT: bstrins.d $sp, $zero, 9, 0 4034e2364a2Swanglei; LA64-NEXT: addi.d $a0, $sp, 1024 404daf067daSwanglei; LA64-NEXT: bl %plt(callee) 4054e2364a2Swanglei; LA64-NEXT: addi.d $sp, $fp, -2048 4064e2364a2Swanglei; LA64-NEXT: addi.d $sp, $sp, 16 4074e2364a2Swanglei; LA64-NEXT: ld.d $fp, $sp, 2016 # 8-byte Folded Reload 4084e2364a2Swanglei; LA64-NEXT: ld.d $ra, $sp, 2024 # 8-byte Folded Reload 4094e2364a2Swanglei; LA64-NEXT: addi.d $sp, $sp, 2032 410daf067daSwanglei; LA64-NEXT: ret 411daf067daSwanglei %1 = alloca i8, align 1024 412779df382SNikita Popov call void @callee(ptr %1) 413daf067daSwanglei ret void 414daf067daSwanglei} 415daf067daSwanglei 416daf067daSwangleidefine void @caller_no_realign1024() "no-realign-stack" { 417daf067daSwanglei; LA32-LABEL: caller_no_realign1024: 418daf067daSwanglei; LA32: # %bb.0: 419daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, -16 420daf067daSwanglei; LA32-NEXT: .cfi_def_cfa_offset 16 421daf067daSwanglei; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 422daf067daSwanglei; LA32-NEXT: .cfi_offset 1, -4 423daf067daSwanglei; LA32-NEXT: addi.w $a0, $sp, 0 424daf067daSwanglei; LA32-NEXT: bl %plt(callee) 425daf067daSwanglei; LA32-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 426daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, 16 427daf067daSwanglei; LA32-NEXT: ret 428daf067daSwanglei; 429daf067daSwanglei; LA64-LABEL: caller_no_realign1024: 430daf067daSwanglei; LA64: # %bb.0: 431daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, -16 432daf067daSwanglei; LA64-NEXT: .cfi_def_cfa_offset 16 433daf067daSwanglei; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 434daf067daSwanglei; LA64-NEXT: .cfi_offset 1, -8 435daf067daSwanglei; LA64-NEXT: addi.d $a0, $sp, 0 436daf067daSwanglei; LA64-NEXT: bl %plt(callee) 437daf067daSwanglei; LA64-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 438daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, 16 439daf067daSwanglei; LA64-NEXT: ret 440daf067daSwanglei %1 = alloca i8, align 1024 441779df382SNikita Popov call void @callee(ptr %1) 442daf067daSwanglei ret void 443daf067daSwanglei} 444daf067daSwanglei 445daf067daSwangleidefine void @caller2048() { 446daf067daSwanglei; LA32-LABEL: caller2048: 447daf067daSwanglei; LA32: # %bb.0: 448f589e506Swanglei; LA32-NEXT: addi.w $sp, $sp, -2032 449f589e506Swanglei; LA32-NEXT: .cfi_def_cfa_offset 2032 450f589e506Swanglei; LA32-NEXT: st.w $ra, $sp, 2028 # 4-byte Folded Spill 451f589e506Swanglei; LA32-NEXT: st.w $fp, $sp, 2024 # 4-byte Folded Spill 452daf067daSwanglei; LA32-NEXT: .cfi_offset 1, -4 453daf067daSwanglei; LA32-NEXT: .cfi_offset 22, -8 454daf067daSwanglei; LA32-NEXT: addi.w $fp, $sp, 2032 455daf067daSwanglei; LA32-NEXT: .cfi_def_cfa 22, 0 4564e2364a2Swanglei; LA32-NEXT: addi.w $sp, $sp, -2048 457f589e506Swanglei; LA32-NEXT: addi.w $sp, $sp, -16 4581bb77664Swanglei; LA32-NEXT: bstrins.w $sp, $zero, 10, 0 4594e2364a2Swanglei; LA32-NEXT: ori $a0, $zero, 2048 4604e2364a2Swanglei; LA32-NEXT: add.w $a0, $sp, $a0 461daf067daSwanglei; LA32-NEXT: bl %plt(callee) 4624e2364a2Swanglei; LA32-NEXT: lu12i.w $a0, 1 4634e2364a2Swanglei; LA32-NEXT: sub.w $sp, $fp, $a0 4644e2364a2Swanglei; LA32-NEXT: addi.w $sp, $sp, 2032 4654e2364a2Swanglei; LA32-NEXT: addi.w $sp, $sp, 32 466f589e506Swanglei; LA32-NEXT: ld.w $fp, $sp, 2024 # 4-byte Folded Reload 467f589e506Swanglei; LA32-NEXT: ld.w $ra, $sp, 2028 # 4-byte Folded Reload 468f589e506Swanglei; LA32-NEXT: addi.w $sp, $sp, 2032 469daf067daSwanglei; LA32-NEXT: ret 470daf067daSwanglei; 471daf067daSwanglei; LA64-LABEL: caller2048: 472daf067daSwanglei; LA64: # %bb.0: 473f589e506Swanglei; LA64-NEXT: addi.d $sp, $sp, -2032 474f589e506Swanglei; LA64-NEXT: .cfi_def_cfa_offset 2032 475f589e506Swanglei; LA64-NEXT: st.d $ra, $sp, 2024 # 8-byte Folded Spill 476f589e506Swanglei; LA64-NEXT: st.d $fp, $sp, 2016 # 8-byte Folded Spill 477daf067daSwanglei; LA64-NEXT: .cfi_offset 1, -8 478daf067daSwanglei; LA64-NEXT: .cfi_offset 22, -16 479daf067daSwanglei; LA64-NEXT: addi.d $fp, $sp, 2032 480daf067daSwanglei; LA64-NEXT: .cfi_def_cfa 22, 0 4814e2364a2Swanglei; LA64-NEXT: addi.d $sp, $sp, -2048 482f589e506Swanglei; LA64-NEXT: addi.d $sp, $sp, -16 4831bb77664Swanglei; LA64-NEXT: bstrins.d $sp, $zero, 10, 0 4844e2364a2Swanglei; LA64-NEXT: ori $a0, $zero, 2048 4854e2364a2Swanglei; LA64-NEXT: add.d $a0, $sp, $a0 486daf067daSwanglei; LA64-NEXT: bl %plt(callee) 4874e2364a2Swanglei; LA64-NEXT: lu12i.w $a0, 1 4884e2364a2Swanglei; LA64-NEXT: sub.d $sp, $fp, $a0 4894e2364a2Swanglei; LA64-NEXT: addi.d $sp, $sp, 2032 4904e2364a2Swanglei; LA64-NEXT: addi.d $sp, $sp, 32 491f589e506Swanglei; LA64-NEXT: ld.d $fp, $sp, 2016 # 8-byte Folded Reload 492f589e506Swanglei; LA64-NEXT: ld.d $ra, $sp, 2024 # 8-byte Folded Reload 493f589e506Swanglei; LA64-NEXT: addi.d $sp, $sp, 2032 494daf067daSwanglei; LA64-NEXT: ret 495daf067daSwanglei %1 = alloca i8, align 2048 496779df382SNikita Popov call void @callee(ptr %1) 497daf067daSwanglei ret void 498daf067daSwanglei} 499daf067daSwanglei 500daf067daSwangleidefine void @caller_no_realign2048() "no-realign-stack" { 501daf067daSwanglei; LA32-LABEL: caller_no_realign2048: 502daf067daSwanglei; LA32: # %bb.0: 503daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, -16 504daf067daSwanglei; LA32-NEXT: .cfi_def_cfa_offset 16 505daf067daSwanglei; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 506daf067daSwanglei; LA32-NEXT: .cfi_offset 1, -4 507daf067daSwanglei; LA32-NEXT: addi.w $a0, $sp, 0 508daf067daSwanglei; LA32-NEXT: bl %plt(callee) 509daf067daSwanglei; LA32-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 510daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, 16 511daf067daSwanglei; LA32-NEXT: ret 512daf067daSwanglei; 513daf067daSwanglei; LA64-LABEL: caller_no_realign2048: 514daf067daSwanglei; LA64: # %bb.0: 515daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, -16 516daf067daSwanglei; LA64-NEXT: .cfi_def_cfa_offset 16 517daf067daSwanglei; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 518daf067daSwanglei; LA64-NEXT: .cfi_offset 1, -8 519daf067daSwanglei; LA64-NEXT: addi.d $a0, $sp, 0 520daf067daSwanglei; LA64-NEXT: bl %plt(callee) 521daf067daSwanglei; LA64-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 522daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, 16 523daf067daSwanglei; LA64-NEXT: ret 524daf067daSwanglei %1 = alloca i8, align 2048 525779df382SNikita Popov call void @callee(ptr %1) 526daf067daSwanglei ret void 527daf067daSwanglei} 528daf067daSwanglei 529daf067daSwangleidefine void @caller4096() { 530daf067daSwanglei; LA32-LABEL: caller4096: 531daf067daSwanglei; LA32: # %bb.0: 532f589e506Swanglei; LA32-NEXT: addi.w $sp, $sp, -2032 533f589e506Swanglei; LA32-NEXT: .cfi_def_cfa_offset 2032 534f589e506Swanglei; LA32-NEXT: st.w $ra, $sp, 2028 # 4-byte Folded Spill 535f589e506Swanglei; LA32-NEXT: st.w $fp, $sp, 2024 # 4-byte Folded Spill 536daf067daSwanglei; LA32-NEXT: .cfi_offset 1, -4 537daf067daSwanglei; LA32-NEXT: .cfi_offset 22, -8 538f589e506Swanglei; LA32-NEXT: addi.w $fp, $sp, 2032 539daf067daSwanglei; LA32-NEXT: .cfi_def_cfa 22, 0 5404e2364a2Swanglei; LA32-NEXT: lu12i.w $a0, 1 5414e2364a2Swanglei; LA32-NEXT: ori $a0, $a0, 2064 5424e2364a2Swanglei; LA32-NEXT: sub.w $sp, $sp, $a0 5431bb77664Swanglei; LA32-NEXT: bstrins.w $sp, $zero, 11, 0 544daf067daSwanglei; LA32-NEXT: lu12i.w $a0, 1 5454e2364a2Swanglei; LA32-NEXT: add.w $a0, $sp, $a0 5464e2364a2Swanglei; LA32-NEXT: bl %plt(callee) 5474e2364a2Swanglei; LA32-NEXT: lu12i.w $a0, 2 548daf067daSwanglei; LA32-NEXT: sub.w $sp, $fp, $a0 5494e2364a2Swanglei; LA32-NEXT: lu12i.w $a0, 1 5504e2364a2Swanglei; LA32-NEXT: ori $a0, $a0, 2064 5514e2364a2Swanglei; LA32-NEXT: add.w $sp, $sp, $a0 552f589e506Swanglei; LA32-NEXT: ld.w $fp, $sp, 2024 # 4-byte Folded Reload 553f589e506Swanglei; LA32-NEXT: ld.w $ra, $sp, 2028 # 4-byte Folded Reload 554f589e506Swanglei; LA32-NEXT: addi.w $sp, $sp, 2032 555daf067daSwanglei; LA32-NEXT: ret 556daf067daSwanglei; 557daf067daSwanglei; LA64-LABEL: caller4096: 558daf067daSwanglei; LA64: # %bb.0: 559f589e506Swanglei; LA64-NEXT: addi.d $sp, $sp, -2032 560f589e506Swanglei; LA64-NEXT: .cfi_def_cfa_offset 2032 561f589e506Swanglei; LA64-NEXT: st.d $ra, $sp, 2024 # 8-byte Folded Spill 562f589e506Swanglei; LA64-NEXT: st.d $fp, $sp, 2016 # 8-byte Folded Spill 563daf067daSwanglei; LA64-NEXT: .cfi_offset 1, -8 564daf067daSwanglei; LA64-NEXT: .cfi_offset 22, -16 565f589e506Swanglei; LA64-NEXT: addi.d $fp, $sp, 2032 566daf067daSwanglei; LA64-NEXT: .cfi_def_cfa 22, 0 5674e2364a2Swanglei; LA64-NEXT: lu12i.w $a0, 1 5684e2364a2Swanglei; LA64-NEXT: ori $a0, $a0, 2064 5694e2364a2Swanglei; LA64-NEXT: sub.d $sp, $sp, $a0 5701bb77664Swanglei; LA64-NEXT: bstrins.d $sp, $zero, 11, 0 571daf067daSwanglei; LA64-NEXT: lu12i.w $a0, 1 5724e2364a2Swanglei; LA64-NEXT: add.d $a0, $sp, $a0 5734e2364a2Swanglei; LA64-NEXT: bl %plt(callee) 5744e2364a2Swanglei; LA64-NEXT: lu12i.w $a0, 2 575daf067daSwanglei; LA64-NEXT: sub.d $sp, $fp, $a0 5764e2364a2Swanglei; LA64-NEXT: lu12i.w $a0, 1 5774e2364a2Swanglei; LA64-NEXT: ori $a0, $a0, 2064 5784e2364a2Swanglei; LA64-NEXT: add.d $sp, $sp, $a0 579f589e506Swanglei; LA64-NEXT: ld.d $fp, $sp, 2016 # 8-byte Folded Reload 580f589e506Swanglei; LA64-NEXT: ld.d $ra, $sp, 2024 # 8-byte Folded Reload 581f589e506Swanglei; LA64-NEXT: addi.d $sp, $sp, 2032 582daf067daSwanglei; LA64-NEXT: ret 583daf067daSwanglei %1 = alloca i8, align 4096 584779df382SNikita Popov call void @callee(ptr %1) 585daf067daSwanglei ret void 586daf067daSwanglei} 587daf067daSwanglei 588daf067daSwangleidefine void @caller_no_realign4096() "no-realign-stack" { 589daf067daSwanglei; LA32-LABEL: caller_no_realign4096: 590daf067daSwanglei; LA32: # %bb.0: 591daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, -16 592daf067daSwanglei; LA32-NEXT: .cfi_def_cfa_offset 16 593daf067daSwanglei; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 594daf067daSwanglei; LA32-NEXT: .cfi_offset 1, -4 595daf067daSwanglei; LA32-NEXT: addi.w $a0, $sp, 0 596daf067daSwanglei; LA32-NEXT: bl %plt(callee) 597daf067daSwanglei; LA32-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 598daf067daSwanglei; LA32-NEXT: addi.w $sp, $sp, 16 599daf067daSwanglei; LA32-NEXT: ret 600daf067daSwanglei; 601daf067daSwanglei; LA64-LABEL: caller_no_realign4096: 602daf067daSwanglei; LA64: # %bb.0: 603daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, -16 604daf067daSwanglei; LA64-NEXT: .cfi_def_cfa_offset 16 605daf067daSwanglei; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 606daf067daSwanglei; LA64-NEXT: .cfi_offset 1, -8 607daf067daSwanglei; LA64-NEXT: addi.d $a0, $sp, 0 608daf067daSwanglei; LA64-NEXT: bl %plt(callee) 609daf067daSwanglei; LA64-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 610daf067daSwanglei; LA64-NEXT: addi.d $sp, $sp, 16 611daf067daSwanglei; LA64-NEXT: ret 612daf067daSwanglei %1 = alloca i8, align 4096 613779df382SNikita Popov call void @callee(ptr %1) 614daf067daSwanglei ret void 615daf067daSwanglei} 616