71 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc --mtriple=loongarch32 --mattr=+32s,+lasx < %s | FileCheck %s --check-prefixes=CHECK,LA323; RUN: llc --mtriple=loongarch64 --mattr=+lasx < %s | FileCheck %s --check-prefixes=CHECK,LA644 5define void @register_xr1() nounwind {6; CHECK-LABEL: register_xr1:7; CHECK: # %bb.0: # %entry8; CHECK-NEXT: #APP9; CHECK-NEXT: xvldi $xr1, 110; CHECK-NEXT: #NO_APP11; CHECK-NEXT: ret12entry:13 %0 = tail call <4 x i64> asm sideeffect "xvldi ${0:u}, 1", "={$xr1}"()14 ret void15}16 17define void @register_xr7() nounwind {18; CHECK-LABEL: register_xr7:19; CHECK: # %bb.0: # %entry20; CHECK-NEXT: #APP21; CHECK-NEXT: xvldi $xr7, 122; CHECK-NEXT: #NO_APP23; CHECK-NEXT: ret24entry:25 %0 = tail call <4 x i64> asm sideeffect "xvldi ${0:u}, 1", "={$xr7}"()26 ret void27}28 29define void @register_xr23() nounwind {30; CHECK-LABEL: register_xr23:31; CHECK: # %bb.0: # %entry32; CHECK-NEXT: #APP33; CHECK-NEXT: xvldi $xr23, 134; CHECK-NEXT: #NO_APP35; CHECK-NEXT: ret36entry:37 %0 = tail call <4 x i64> asm sideeffect "xvldi ${0:u}, 1", "={$xr23}"()38 ret void39}40 41;; The lower 64-bit of the vector register '$xr31' is overlapped with42;; the floating-point register '$f31' ('$fs7'). And '$f31' ('$fs7')43;; is a callee-saved register which is preserved across calls.44;; That's why the fst.d and fld.d instructions are emitted.45define void @register_xr31() nounwind {46; LA32-LABEL: register_xr31:47; LA32: # %bb.0: # %entry48; LA32-NEXT: addi.w $sp, $sp, -1649; LA32-NEXT: fst.d $fs7, $sp, 8 # 8-byte Folded Spill50; LA32-NEXT: #APP51; LA32-NEXT: xvldi $xr31, 152; LA32-NEXT: #NO_APP53; LA32-NEXT: fld.d $fs7, $sp, 8 # 8-byte Folded Reload54; LA32-NEXT: addi.w $sp, $sp, 1655; LA32-NEXT: ret56;57; LA64-LABEL: register_xr31:58; LA64: # %bb.0: # %entry59; LA64-NEXT: addi.d $sp, $sp, -1660; LA64-NEXT: fst.d $fs7, $sp, 8 # 8-byte Folded Spill61; LA64-NEXT: #APP62; LA64-NEXT: xvldi $xr31, 163; LA64-NEXT: #NO_APP64; LA64-NEXT: fld.d $fs7, $sp, 8 # 8-byte Folded Reload65; LA64-NEXT: addi.d $sp, $sp, 1666; LA64-NEXT: ret67entry:68 %0 = tail call <4 x i64> asm sideeffect "xvldi ${0:u}, 1", "={$xr31}"()69 ret void70}71