1; RUN: llc --mtriple=loongarch32 --mattr=+d < %s | FileCheck %s --check-prefix=LA32
2; RUN: llc --mtriple=loongarch64 --mattr=+d < %s | FileCheck %s --check-prefix=LA64
3
4;; Test the bare double-precision floating-point values selection:
5;; https://llvm.org/docs/LangRef.html#select-instruction
6
7define double @test(i1 %a, double %b, double %c) {
8; LA32-LABEL: test:
9; LA32:       # %bb.0:
10; LA32-NEXT:    andi $a0, $a0, 1
11; LA32-NEXT:    movgr2cf $fcc0, $a0
12; LA32-NEXT:    fsel $fa0, $fa1, $fa0, $fcc0
13; LA32-NEXT:    jirl $zero, $ra, 0
14;
15; LA64-LABEL: test:
16; LA64:       # %bb.0:
17; LA64-NEXT:    andi $a0, $a0, 1
18; LA64-NEXT:    movgr2cf $fcc0, $a0
19; LA64-NEXT:    fsel $fa0, $fa1, $fa0, $fcc0
20; LA64-NEXT:    jirl $zero, $ra, 0
21  %res = select i1 %a, double %b, double %c
22  ret double %res
23}
24