211 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc < %s -mtriple=riscv32 -global-isel -code-model=small \3; RUN: -verify-machineinstrs | FileCheck %s --check-prefix=RV32-SMALL4; RUN: llc < %s -mtriple=riscv32 -global-isel -code-model=medium \5; RUN: -verify-machineinstrs | FileCheck %s --check-prefix=RV32-MEDIUM6; RUN: llc < %s -mtriple=riscv32 -global-isel -relocation-model=pic \7; RUN: -verify-machineinstrs | FileCheck %s --check-prefix=RV32-PIC8; RUN: llc < %s -mtriple=riscv64 -global-isel -code-model=small \9; RUN: -verify-machineinstrs | FileCheck %s --check-prefix=RV64-SMALL10; RUN: llc < %s -mtriple=riscv64 -global-isel -code-model=medium \11; RUN: -verify-machineinstrs | FileCheck %s --check-prefix=RV64-MEDIUM12; RUN: llc < %s -mtriple=riscv64 -global-isel -relocation-model=pic \13; RUN: -verify-machineinstrs | FileCheck %s --check-prefix=RV64-PIC14 15define void @constpool_f32(ptr %p) {16; RV32-SMALL-LABEL: constpool_f32:17; RV32-SMALL: # %bb.0:18; RV32-SMALL-NEXT: lui a1, 26009619; RV32-SMALL-NEXT: sw a1, 0(a0)20; RV32-SMALL-NEXT: ret21;22; RV32-MEDIUM-LABEL: constpool_f32:23; RV32-MEDIUM: # %bb.0:24; RV32-MEDIUM-NEXT: lui a1, 26009625; RV32-MEDIUM-NEXT: sw a1, 0(a0)26; RV32-MEDIUM-NEXT: ret27;28; RV32-PIC-LABEL: constpool_f32:29; RV32-PIC: # %bb.0:30; RV32-PIC-NEXT: lui a1, 26009631; RV32-PIC-NEXT: sw a1, 0(a0)32; RV32-PIC-NEXT: ret33;34; RV64-SMALL-LABEL: constpool_f32:35; RV64-SMALL: # %bb.0:36; RV64-SMALL-NEXT: lui a1, 26009637; RV64-SMALL-NEXT: sw a1, 0(a0)38; RV64-SMALL-NEXT: ret39;40; RV64-MEDIUM-LABEL: constpool_f32:41; RV64-MEDIUM: # %bb.0:42; RV64-MEDIUM-NEXT: lui a1, 26009643; RV64-MEDIUM-NEXT: sw a1, 0(a0)44; RV64-MEDIUM-NEXT: ret45;46; RV64-PIC-LABEL: constpool_f32:47; RV64-PIC: # %bb.0:48; RV64-PIC-NEXT: lui a1, 26009649; RV64-PIC-NEXT: sw a1, 0(a0)50; RV64-PIC-NEXT: ret51 store float 1.0, ptr %p52 ret void53}54 55define void @constpool_f64(ptr %p) {56; RV32-SMALL-LABEL: constpool_f64:57; RV32-SMALL: # %bb.0:58; RV32-SMALL-NEXT: lui a1, %hi(.LCPI1_0)59; RV32-SMALL-NEXT: addi a1, a1, %lo(.LCPI1_0)60; RV32-SMALL-NEXT: lw a2, 0(a1)61; RV32-SMALL-NEXT: lw a1, 4(a1)62; RV32-SMALL-NEXT: sw a2, 0(a0)63; RV32-SMALL-NEXT: sw a1, 4(a0)64; RV32-SMALL-NEXT: ret65;66; RV32-MEDIUM-LABEL: constpool_f64:67; RV32-MEDIUM: # %bb.0:68; RV32-MEDIUM-NEXT: .Lpcrel_hi0:69; RV32-MEDIUM-NEXT: auipc a1, %pcrel_hi(.LCPI1_0)70; RV32-MEDIUM-NEXT: addi a1, a1, %pcrel_lo(.Lpcrel_hi0)71; RV32-MEDIUM-NEXT: lw a2, 0(a1)72; RV32-MEDIUM-NEXT: lw a1, 4(a1)73; RV32-MEDIUM-NEXT: sw a2, 0(a0)74; RV32-MEDIUM-NEXT: sw a1, 4(a0)75; RV32-MEDIUM-NEXT: ret76;77; RV32-PIC-LABEL: constpool_f64:78; RV32-PIC: # %bb.0:79; RV32-PIC-NEXT: .Lpcrel_hi0:80; RV32-PIC-NEXT: auipc a1, %pcrel_hi(.LCPI1_0)81; RV32-PIC-NEXT: addi a1, a1, %pcrel_lo(.Lpcrel_hi0)82; RV32-PIC-NEXT: lw a2, 0(a1)83; RV32-PIC-NEXT: lw a1, 4(a1)84; RV32-PIC-NEXT: sw a2, 0(a0)85; RV32-PIC-NEXT: sw a1, 4(a0)86; RV32-PIC-NEXT: ret87;88; RV64-SMALL-LABEL: constpool_f64:89; RV64-SMALL: # %bb.0:90; RV64-SMALL-NEXT: li a1, 102391; RV64-SMALL-NEXT: slli a1, a1, 5292; RV64-SMALL-NEXT: sd a1, 0(a0)93; RV64-SMALL-NEXT: ret94;95; RV64-MEDIUM-LABEL: constpool_f64:96; RV64-MEDIUM: # %bb.0:97; RV64-MEDIUM-NEXT: li a1, 102398; RV64-MEDIUM-NEXT: slli a1, a1, 5299; RV64-MEDIUM-NEXT: sd a1, 0(a0)100; RV64-MEDIUM-NEXT: ret101;102; RV64-PIC-LABEL: constpool_f64:103; RV64-PIC: # %bb.0:104; RV64-PIC-NEXT: li a1, 1023105; RV64-PIC-NEXT: slli a1, a1, 52106; RV64-PIC-NEXT: sd a1, 0(a0)107; RV64-PIC-NEXT: ret108 store double 1.0, ptr %p109 ret void110}111 112define void @constpool_f32_1234_5(ptr %p) {113; RV32-SMALL-LABEL: constpool_f32_1234_5:114; RV32-SMALL: # %bb.0:115; RV32-SMALL-NEXT: lui a1, 280997116; RV32-SMALL-NEXT: sw a1, 0(a0)117; RV32-SMALL-NEXT: ret118;119; RV32-MEDIUM-LABEL: constpool_f32_1234_5:120; RV32-MEDIUM: # %bb.0:121; RV32-MEDIUM-NEXT: lui a1, 280997122; RV32-MEDIUM-NEXT: sw a1, 0(a0)123; RV32-MEDIUM-NEXT: ret124;125; RV32-PIC-LABEL: constpool_f32_1234_5:126; RV32-PIC: # %bb.0:127; RV32-PIC-NEXT: lui a1, 280997128; RV32-PIC-NEXT: sw a1, 0(a0)129; RV32-PIC-NEXT: ret130;131; RV64-SMALL-LABEL: constpool_f32_1234_5:132; RV64-SMALL: # %bb.0:133; RV64-SMALL-NEXT: lui a1, 280997134; RV64-SMALL-NEXT: sw a1, 0(a0)135; RV64-SMALL-NEXT: ret136;137; RV64-MEDIUM-LABEL: constpool_f32_1234_5:138; RV64-MEDIUM: # %bb.0:139; RV64-MEDIUM-NEXT: lui a1, 280997140; RV64-MEDIUM-NEXT: sw a1, 0(a0)141; RV64-MEDIUM-NEXT: ret142;143; RV64-PIC-LABEL: constpool_f32_1234_5:144; RV64-PIC: # %bb.0:145; RV64-PIC-NEXT: lui a1, 280997146; RV64-PIC-NEXT: sw a1, 0(a0)147; RV64-PIC-NEXT: ret148 store float 1.234500e+03, ptr %p149 ret void150}151 152define void @constpool_f64_1234_5(ptr %p) {153; RV32-SMALL-LABEL: constpool_f64_1234_5:154; RV32-SMALL: # %bb.0:155; RV32-SMALL-NEXT: lui a1, %hi(.LCPI3_0)156; RV32-SMALL-NEXT: addi a1, a1, %lo(.LCPI3_0)157; RV32-SMALL-NEXT: lw a2, 0(a1)158; RV32-SMALL-NEXT: lw a1, 4(a1)159; RV32-SMALL-NEXT: sw a2, 0(a0)160; RV32-SMALL-NEXT: sw a1, 4(a0)161; RV32-SMALL-NEXT: ret162;163; RV32-MEDIUM-LABEL: constpool_f64_1234_5:164; RV32-MEDIUM: # %bb.0:165; RV32-MEDIUM-NEXT: .Lpcrel_hi1:166; RV32-MEDIUM-NEXT: auipc a1, %pcrel_hi(.LCPI3_0)167; RV32-MEDIUM-NEXT: addi a1, a1, %pcrel_lo(.Lpcrel_hi1)168; RV32-MEDIUM-NEXT: lw a2, 0(a1)169; RV32-MEDIUM-NEXT: lw a1, 4(a1)170; RV32-MEDIUM-NEXT: sw a2, 0(a0)171; RV32-MEDIUM-NEXT: sw a1, 4(a0)172; RV32-MEDIUM-NEXT: ret173;174; RV32-PIC-LABEL: constpool_f64_1234_5:175; RV32-PIC: # %bb.0:176; RV32-PIC-NEXT: .Lpcrel_hi1:177; RV32-PIC-NEXT: auipc a1, %pcrel_hi(.LCPI3_0)178; RV32-PIC-NEXT: addi a1, a1, %pcrel_lo(.Lpcrel_hi1)179; RV32-PIC-NEXT: lw a2, 0(a1)180; RV32-PIC-NEXT: lw a1, 4(a1)181; RV32-PIC-NEXT: sw a2, 0(a0)182; RV32-PIC-NEXT: sw a1, 4(a0)183; RV32-PIC-NEXT: ret184;185; RV64-SMALL-LABEL: constpool_f64_1234_5:186; RV64-SMALL: # %bb.0:187; RV64-SMALL-NEXT: lui a1, 517188; RV64-SMALL-NEXT: addi a1, a1, -1627189; RV64-SMALL-NEXT: slli a1, a1, 41190; RV64-SMALL-NEXT: sd a1, 0(a0)191; RV64-SMALL-NEXT: ret192;193; RV64-MEDIUM-LABEL: constpool_f64_1234_5:194; RV64-MEDIUM: # %bb.0:195; RV64-MEDIUM-NEXT: lui a1, 517196; RV64-MEDIUM-NEXT: addi a1, a1, -1627197; RV64-MEDIUM-NEXT: slli a1, a1, 41198; RV64-MEDIUM-NEXT: sd a1, 0(a0)199; RV64-MEDIUM-NEXT: ret200;201; RV64-PIC-LABEL: constpool_f64_1234_5:202; RV64-PIC: # %bb.0:203; RV64-PIC-NEXT: lui a1, 517204; RV64-PIC-NEXT: addi a1, a1, -1627205; RV64-PIC-NEXT: slli a1, a1, 41206; RV64-PIC-NEXT: sd a1, 0(a0)207; RV64-PIC-NEXT: ret208 store double 1.234500e+03, ptr %p209 ret void210}211