155 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 --mattr=+f,-d -loongarch-materialize-float-imm=0 < %s | FileCheck %s --check-prefixes=LA32,LA32-03; RUN: llc --mtriple=loongarch32 --mattr=+f,-d -loongarch-materialize-float-imm=2 < %s | FileCheck %s --check-prefixes=LA32,LA32-24; RUN: llc --mtriple=loongarch32 --mattr=+f,-d -loongarch-materialize-float-imm=3 < %s | FileCheck %s --check-prefixes=LA32,LA32-35; RUN: llc --mtriple=loongarch32 --mattr=+f,-d -loongarch-materialize-float-imm=4 < %s | FileCheck %s --check-prefixes=LA32,LA32-36; RUN: llc --mtriple=loongarch32 --mattr=+f,-d -loongarch-materialize-float-imm=5 < %s | FileCheck %s --check-prefixes=LA32,LA32-37; RUN: llc --mtriple=loongarch32 --mattr=+f,-d -loongarch-materialize-float-imm=6 < %s | FileCheck %s --check-prefixes=LA32,LA32-38; RUN: llc --mtriple=loongarch64 --mattr=+f,-d -loongarch-materialize-float-imm=0 < %s | FileCheck %s --check-prefixes=LA64,LA64-09; RUN: llc --mtriple=loongarch64 --mattr=+f,-d -loongarch-materialize-float-imm=2 < %s | FileCheck %s --check-prefixes=LA64,LA64-210; RUN: llc --mtriple=loongarch64 --mattr=+f,-d -loongarch-materialize-float-imm=3 < %s | FileCheck %s --check-prefixes=LA64,LA64-311; RUN: llc --mtriple=loongarch64 --mattr=+f,-d -loongarch-materialize-float-imm=4 < %s | FileCheck %s --check-prefixes=LA64,LA64-312; RUN: llc --mtriple=loongarch64 --mattr=+f,-d -loongarch-materialize-float-imm=5 < %s | FileCheck %s --check-prefixes=LA64,LA64-313; RUN: llc --mtriple=loongarch64 --mattr=+f,-d -loongarch-materialize-float-imm=6 < %s | FileCheck %s --check-prefixes=LA64,LA64-314 15define float @f32_positive_zero() nounwind {16; LA32-LABEL: f32_positive_zero:17; LA32: # %bb.0:18; LA32-NEXT: movgr2fr.w $fa0, $zero19; LA32-NEXT: ret20;21; LA64-LABEL: f32_positive_zero:22; LA64: # %bb.0:23; LA64-NEXT: movgr2fr.w $fa0, $zero24; LA64-NEXT: ret25 ret float 0.026}27 28define float @f32_negative_zero() nounwind {29; LA32-LABEL: f32_negative_zero:30; LA32: # %bb.0:31; LA32-NEXT: movgr2fr.w $fa0, $zero32; LA32-NEXT: fneg.s $fa0, $fa033; LA32-NEXT: ret34;35; LA64-LABEL: f32_negative_zero:36; LA64: # %bb.0:37; LA64-NEXT: movgr2fr.w $fa0, $zero38; LA64-NEXT: fneg.s $fa0, $fa039; LA64-NEXT: ret40 ret float -0.041}42 43define float @f32_constant_ins1() nounwind {44; LA32-0-LABEL: f32_constant_ins1:45; LA32-0: # %bb.0:46; LA32-0-NEXT: pcalau12i $a0, %pc_hi20(.LCPI2_0)47; LA32-0-NEXT: fld.s $fa0, $a0, %pc_lo12(.LCPI2_0)48; LA32-0-NEXT: ret49;50; LA32-2-LABEL: f32_constant_ins1:51; LA32-2: # %bb.0:52; LA32-2-NEXT: lu12i.w $a0, 27033653; LA32-2-NEXT: movgr2fr.w $fa0, $a054; LA32-2-NEXT: ret55;56; LA32-3-LABEL: f32_constant_ins1:57; LA32-3: # %bb.0:58; LA32-3-NEXT: lu12i.w $a0, 27033659; LA32-3-NEXT: movgr2fr.w $fa0, $a060; LA32-3-NEXT: ret61;62; LA64-0-LABEL: f32_constant_ins1:63; LA64-0: # %bb.0:64; LA64-0-NEXT: pcalau12i $a0, %pc_hi20(.LCPI2_0)65; LA64-0-NEXT: fld.s $fa0, $a0, %pc_lo12(.LCPI2_0)66; LA64-0-NEXT: ret67;68; LA64-2-LABEL: f32_constant_ins1:69; LA64-2: # %bb.0:70; LA64-2-NEXT: lu12i.w $a0, 27033671; LA64-2-NEXT: movgr2fr.w $fa0, $a072; LA64-2-NEXT: ret73;74; LA64-3-LABEL: f32_constant_ins1:75; LA64-3: # %bb.0:76; LA64-3-NEXT: lu12i.w $a0, 27033677; LA64-3-NEXT: movgr2fr.w $fa0, $a078; LA64-3-NEXT: ret79 ret float 32.080}81 82define float @f32_constant_pi() nounwind {83; LA32-0-LABEL: f32_constant_pi:84; LA32-0: # %bb.0:85; LA32-0-NEXT: pcalau12i $a0, %pc_hi20(.LCPI3_0)86; LA32-0-NEXT: fld.s $fa0, $a0, %pc_lo12(.LCPI3_0)87; LA32-0-NEXT: ret88;89; LA32-2-LABEL: f32_constant_pi:90; LA32-2: # %bb.0:91; LA32-2-NEXT: pcalau12i $a0, %pc_hi20(.LCPI3_0)92; LA32-2-NEXT: fld.s $fa0, $a0, %pc_lo12(.LCPI3_0)93; LA32-2-NEXT: ret94;95; LA32-3-LABEL: f32_constant_pi:96; LA32-3: # %bb.0:97; LA32-3-NEXT: lu12i.w $a0, 26331298; LA32-3-NEXT: ori $a0, $a0, 405999; LA32-3-NEXT: movgr2fr.w $fa0, $a0100; LA32-3-NEXT: ret101;102; LA64-0-LABEL: f32_constant_pi:103; LA64-0: # %bb.0:104; LA64-0-NEXT: pcalau12i $a0, %pc_hi20(.LCPI3_0)105; LA64-0-NEXT: fld.s $fa0, $a0, %pc_lo12(.LCPI3_0)106; LA64-0-NEXT: ret107;108; LA64-2-LABEL: f32_constant_pi:109; LA64-2: # %bb.0:110; LA64-2-NEXT: pcalau12i $a0, %pc_hi20(.LCPI3_0)111; LA64-2-NEXT: fld.s $fa0, $a0, %pc_lo12(.LCPI3_0)112; LA64-2-NEXT: ret113;114; LA64-3-LABEL: f32_constant_pi:115; LA64-3: # %bb.0:116; LA64-3-NEXT: lu12i.w $a0, 263312117; LA64-3-NEXT: ori $a0, $a0, 4059118; LA64-3-NEXT: movgr2fr.w $fa0, $a0119; LA64-3-NEXT: ret120 ret float 3.14159274101257324218750121}122 123define float @f32_add_fimm1(float %a) nounwind {124; LA32-LABEL: f32_add_fimm1:125; LA32: # %bb.0:126; LA32-NEXT: lu12i.w $a0, 260096127; LA32-NEXT: movgr2fr.w $fa1, $a0128; LA32-NEXT: fadd.s $fa0, $fa0, $fa1129; LA32-NEXT: ret130;131; LA64-LABEL: f32_add_fimm1:132; LA64: # %bb.0:133; LA64-NEXT: lu12i.w $a0, 260096134; LA64-NEXT: movgr2fr.w $fa1, $a0135; LA64-NEXT: fadd.s $fa0, $fa0, $fa1136; LA64-NEXT: ret137 %1 = fadd float %a, 1.0138 ret float %1139}140 141define float @f32_positive_fimm1() nounwind {142; LA32-LABEL: f32_positive_fimm1:143; LA32: # %bb.0:144; LA32-NEXT: lu12i.w $a0, 260096145; LA32-NEXT: movgr2fr.w $fa0, $a0146; LA32-NEXT: ret147;148; LA64-LABEL: f32_positive_fimm1:149; LA64: # %bb.0:150; LA64-NEXT: lu12i.w $a0, 260096151; LA64-NEXT: movgr2fr.w $fa0, $a0152; LA64-NEXT: ret153 ret float 1.0154}155