122 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \3; RUN: | FileCheck -check-prefix=RV32I-DEFAULT %s4; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \5; RUN: | FileCheck -check-prefix=RV64I-DEFAULT %s6; RUN: llc -mtriple=riscv32 -M emit-x8-as-fp -verify-machineinstrs < %s \7; RUN: | FileCheck -check-prefix=RV32I-EMIT-FP %s8; RUN: llc -mtriple=riscv64 -M emit-x8-as-fp -verify-machineinstrs < %s \9; RUN: | FileCheck -check-prefix=RV64I-EMIT-FP %s10; RUN: llc -mtriple=riscv32 -M numeric -M emit-x8-as-fp -verify-machineinstrs \11; RUN: < %s | FileCheck -check-prefix=RV32I-NUMERIC %s12; RUN: llc -mtriple=riscv64 -M numeric -M emit-x8-as-fp -verify-machineinstrs \13; RUN: < %s | FileCheck -check-prefix=RV64I-NUMERIC %s14 15define signext i32 @add(i32 %0, i32 %1) #0 {16; RV32I-DEFAULT-LABEL: add:17; RV32I-DEFAULT: # %bb.0:18; RV32I-DEFAULT-NEXT: addi sp, sp, -1619; RV32I-DEFAULT-NEXT: sw ra, 12(sp) # 4-byte Folded Spill20; RV32I-DEFAULT-NEXT: sw s0, 8(sp) # 4-byte Folded Spill21; RV32I-DEFAULT-NEXT: addi s0, sp, 1622; RV32I-DEFAULT-NEXT: sw a0, -12(s0)23; RV32I-DEFAULT-NEXT: sw a1, -16(s0)24; RV32I-DEFAULT-NEXT: lw a0, -12(s0)25; RV32I-DEFAULT-NEXT: lw a1, -16(s0)26; RV32I-DEFAULT-NEXT: add a0, a0, a127; RV32I-DEFAULT-NEXT: lw ra, 12(sp) # 4-byte Folded Reload28; RV32I-DEFAULT-NEXT: lw s0, 8(sp) # 4-byte Folded Reload29; RV32I-DEFAULT-NEXT: addi sp, sp, 1630; RV32I-DEFAULT-NEXT: ret31;32; RV64I-DEFAULT-LABEL: add:33; RV64I-DEFAULT: # %bb.0:34; RV64I-DEFAULT-NEXT: addi sp, sp, -3235; RV64I-DEFAULT-NEXT: sd ra, 24(sp) # 8-byte Folded Spill36; RV64I-DEFAULT-NEXT: sd s0, 16(sp) # 8-byte Folded Spill37; RV64I-DEFAULT-NEXT: addi s0, sp, 3238; RV64I-DEFAULT-NEXT: sw a0, -20(s0)39; RV64I-DEFAULT-NEXT: sw a1, -24(s0)40; RV64I-DEFAULT-NEXT: lw a0, -20(s0)41; RV64I-DEFAULT-NEXT: lw a1, -24(s0)42; RV64I-DEFAULT-NEXT: addw a0, a0, a143; RV64I-DEFAULT-NEXT: ld ra, 24(sp) # 8-byte Folded Reload44; RV64I-DEFAULT-NEXT: ld s0, 16(sp) # 8-byte Folded Reload45; RV64I-DEFAULT-NEXT: addi sp, sp, 3246; RV64I-DEFAULT-NEXT: ret47;48; RV32I-EMIT-FP-LABEL: add:49; RV32I-EMIT-FP: # %bb.0:50; RV32I-EMIT-FP-NEXT: addi sp, sp, -1651; RV32I-EMIT-FP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill52; RV32I-EMIT-FP-NEXT: sw fp, 8(sp) # 4-byte Folded Spill53; RV32I-EMIT-FP-NEXT: addi fp, sp, 1654; RV32I-EMIT-FP-NEXT: sw a0, -12(fp)55; RV32I-EMIT-FP-NEXT: sw a1, -16(fp)56; RV32I-EMIT-FP-NEXT: lw a0, -12(fp)57; RV32I-EMIT-FP-NEXT: lw a1, -16(fp)58; RV32I-EMIT-FP-NEXT: add a0, a0, a159; RV32I-EMIT-FP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload60; RV32I-EMIT-FP-NEXT: lw fp, 8(sp) # 4-byte Folded Reload61; RV32I-EMIT-FP-NEXT: addi sp, sp, 1662; RV32I-EMIT-FP-NEXT: ret63;64; RV64I-EMIT-FP-LABEL: add:65; RV64I-EMIT-FP: # %bb.0:66; RV64I-EMIT-FP-NEXT: addi sp, sp, -3267; RV64I-EMIT-FP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill68; RV64I-EMIT-FP-NEXT: sd fp, 16(sp) # 8-byte Folded Spill69; RV64I-EMIT-FP-NEXT: addi fp, sp, 3270; RV64I-EMIT-FP-NEXT: sw a0, -20(fp)71; RV64I-EMIT-FP-NEXT: sw a1, -24(fp)72; RV64I-EMIT-FP-NEXT: lw a0, -20(fp)73; RV64I-EMIT-FP-NEXT: lw a1, -24(fp)74; RV64I-EMIT-FP-NEXT: addw a0, a0, a175; RV64I-EMIT-FP-NEXT: ld ra, 24(sp) # 8-byte Folded Reload76; RV64I-EMIT-FP-NEXT: ld fp, 16(sp) # 8-byte Folded Reload77; RV64I-EMIT-FP-NEXT: addi sp, sp, 3278; RV64I-EMIT-FP-NEXT: ret79;80; RV32I-NUMERIC-LABEL: add:81; RV32I-NUMERIC: # %bb.0:82; RV32I-NUMERIC-NEXT: addi x2, x2, -1683; RV32I-NUMERIC-NEXT: sw x1, 12(x2) # 4-byte Folded Spill84; RV32I-NUMERIC-NEXT: sw x8, 8(x2) # 4-byte Folded Spill85; RV32I-NUMERIC-NEXT: addi x8, x2, 1686; RV32I-NUMERIC-NEXT: sw x10, -12(x8)87; RV32I-NUMERIC-NEXT: sw x11, -16(x8)88; RV32I-NUMERIC-NEXT: lw x10, -12(x8)89; RV32I-NUMERIC-NEXT: lw x11, -16(x8)90; RV32I-NUMERIC-NEXT: add x10, x10, x1191; RV32I-NUMERIC-NEXT: lw x1, 12(x2) # 4-byte Folded Reload92; RV32I-NUMERIC-NEXT: lw x8, 8(x2) # 4-byte Folded Reload93; RV32I-NUMERIC-NEXT: addi x2, x2, 1694; RV32I-NUMERIC-NEXT: ret95;96; RV64I-NUMERIC-LABEL: add:97; RV64I-NUMERIC: # %bb.0:98; RV64I-NUMERIC-NEXT: addi x2, x2, -3299; RV64I-NUMERIC-NEXT: sd x1, 24(x2) # 8-byte Folded Spill100; RV64I-NUMERIC-NEXT: sd x8, 16(x2) # 8-byte Folded Spill101; RV64I-NUMERIC-NEXT: addi x8, x2, 32102; RV64I-NUMERIC-NEXT: sw x10, -20(x8)103; RV64I-NUMERIC-NEXT: sw x11, -24(x8)104; RV64I-NUMERIC-NEXT: lw x10, -20(x8)105; RV64I-NUMERIC-NEXT: lw x11, -24(x8)106; RV64I-NUMERIC-NEXT: addw x10, x10, x11107; RV64I-NUMERIC-NEXT: ld x1, 24(x2) # 8-byte Folded Reload108; RV64I-NUMERIC-NEXT: ld x8, 16(x2) # 8-byte Folded Reload109; RV64I-NUMERIC-NEXT: addi x2, x2, 32110; RV64I-NUMERIC-NEXT: ret111 %3 = alloca i32, align 4112 %4 = alloca i32, align 4113 store i32 %0, ptr %3, align 4114 store i32 %1, ptr %4, align 4115 %5 = load i32, ptr %3, align 4116 %6 = load i32, ptr %4, align 4117 %7 = add nsw i32 %5, %6118 ret i32 %7119}120 121attributes #0 = { noinline nounwind optnone "frame-pointer"="all" }122