brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · 856cd46 Raw
128 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA32S3; RUN: llc --mtriple=loongarch32 --mattr=+f -target-abi=ilp32s --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA32F-ILP32S4; RUN: llc --mtriple=loongarch32 --mattr=+f -target-abi=ilp32d --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA32F-ILP32D5; RUN: llc --mtriple=loongarch32 --mattr=+d -target-abi=ilp32s --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA32D-ILP32S6; RUN: llc --mtriple=loongarch32 --mattr=+d -target-abi=ilp32d --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA32D-ILP32D7; RUN: llc --mtriple=loongarch64 --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA64S8; RUN: llc --mtriple=loongarch64 --mattr=+f -target-abi=lp64s --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA64F-LP64S9; RUN: llc --mtriple=loongarch64 --mattr=+f -target-abi=lp64d --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA64F-LP64D10; RUN: llc --mtriple=loongarch64 --mattr=+d -target-abi=lp64s --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA64D-LP64S11; RUN: llc --mtriple=loongarch64 --mattr=+d -target-abi=lp64d --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA64D-LP64D12 13define half @to_half(i16 %bits) {14; LA32S-LABEL: to_half:15; LA32S:       # %bb.0:16; LA32S-NEXT:    ret17;18; LA32F-ILP32S-LABEL: to_half:19; LA32F-ILP32S:       # %bb.0:20; LA32F-ILP32S-NEXT:    lu12i.w $a1, -1621; LA32F-ILP32S-NEXT:    or $a0, $a0, $a122; LA32F-ILP32S-NEXT:    ret23;24; LA32F-ILP32D-LABEL: to_half:25; LA32F-ILP32D:       # %bb.0:26; LA32F-ILP32D-NEXT:    lu12i.w $a1, -1627; LA32F-ILP32D-NEXT:    or $a0, $a0, $a128; LA32F-ILP32D-NEXT:    movgr2fr.w $fa0, $a029; LA32F-ILP32D-NEXT:    ret30;31; LA32D-ILP32S-LABEL: to_half:32; LA32D-ILP32S:       # %bb.0:33; LA32D-ILP32S-NEXT:    lu12i.w $a1, -1634; LA32D-ILP32S-NEXT:    or $a0, $a0, $a135; LA32D-ILP32S-NEXT:    ret36;37; LA32D-ILP32D-LABEL: to_half:38; LA32D-ILP32D:       # %bb.0:39; LA32D-ILP32D-NEXT:    lu12i.w $a1, -1640; LA32D-ILP32D-NEXT:    or $a0, $a0, $a141; LA32D-ILP32D-NEXT:    movgr2fr.w $fa0, $a042; LA32D-ILP32D-NEXT:    ret43;44; LA64S-LABEL: to_half:45; LA64S:       # %bb.0:46; LA64S-NEXT:    lu12i.w $a1, -1647; LA64S-NEXT:    or $a0, $a0, $a148; LA64S-NEXT:    movgr2fr.w $fa0, $a049; LA64S-NEXT:    ret50;51; LA64F-LP64S-LABEL: to_half:52; LA64F-LP64S:       # %bb.0:53; LA64F-LP64S-NEXT:    lu12i.w $a1, -1654; LA64F-LP64S-NEXT:    or $a0, $a0, $a155; LA64F-LP64S-NEXT:    ret56;57; LA64F-LP64D-LABEL: to_half:58; LA64F-LP64D:       # %bb.0:59; LA64F-LP64D-NEXT:    lu12i.w $a1, -1660; LA64F-LP64D-NEXT:    or $a0, $a0, $a161; LA64F-LP64D-NEXT:    movgr2fr.w $fa0, $a062; LA64F-LP64D-NEXT:    ret63;64; LA64D-LP64S-LABEL: to_half:65; LA64D-LP64S:       # %bb.0:66; LA64D-LP64S-NEXT:    lu12i.w $a1, -1667; LA64D-LP64S-NEXT:    or $a0, $a0, $a168; LA64D-LP64S-NEXT:    ret69;70; LA64D-LP64D-LABEL: to_half:71; LA64D-LP64D:       # %bb.0:72; LA64D-LP64D-NEXT:    lu12i.w $a1, -1673; LA64D-LP64D-NEXT:    or $a0, $a0, $a174; LA64D-LP64D-NEXT:    movgr2fr.w $fa0, $a075; LA64D-LP64D-NEXT:    ret76    %f = bitcast i16 %bits to half77    ret half %f78}79 80define i16 @from_half(half %f) {81; LA32S-LABEL: from_half:82; LA32S:       # %bb.0:83; LA32S-NEXT:    ret84;85; LA32F-ILP32S-LABEL: from_half:86; LA32F-ILP32S:       # %bb.0:87; LA32F-ILP32S-NEXT:    ret88;89; LA32F-ILP32D-LABEL: from_half:90; LA32F-ILP32D:       # %bb.0:91; LA32F-ILP32D-NEXT:    movfr2gr.s $a0, $fa092; LA32F-ILP32D-NEXT:    ret93;94; LA32D-ILP32S-LABEL: from_half:95; LA32D-ILP32S:       # %bb.0:96; LA32D-ILP32S-NEXT:    ret97;98; LA32D-ILP32D-LABEL: from_half:99; LA32D-ILP32D:       # %bb.0:100; LA32D-ILP32D-NEXT:    movfr2gr.s $a0, $fa0101; LA32D-ILP32D-NEXT:    ret102;103; LA64S-LABEL: from_half:104; LA64S:       # %bb.0:105; LA64S-NEXT:    movfr2gr.s $a0, $fa0106; LA64S-NEXT:    ret107;108; LA64F-LP64S-LABEL: from_half:109; LA64F-LP64S:       # %bb.0:110; LA64F-LP64S-NEXT:    ret111;112; LA64F-LP64D-LABEL: from_half:113; LA64F-LP64D:       # %bb.0:114; LA64F-LP64D-NEXT:    movfr2gr.s $a0, $fa0115; LA64F-LP64D-NEXT:    ret116;117; LA64D-LP64S-LABEL: from_half:118; LA64D-LP64S:       # %bb.0:119; LA64D-LP64S-NEXT:    ret120;121; LA64D-LP64D-LABEL: from_half:122; LA64D-LP64D:       # %bb.0:123; LA64D-LP64D-NEXT:    movfr2gr.s $a0, $fa0124; LA64D-LP64D-NEXT:    ret125    %bits = bitcast half %f to i16126    ret i16 %bits127}128