xref: /llvm-project/llvm/test/CodeGen/PowerPC/ppcf128-freeze.mir (revision d4d0b5eaab763abf04e99d96ff5bbc6e2d8fdb13)
1# RUN: llc -mtriple powerpc64le-unknown-linux-gnu -start-after=codegenprepare \
2# RUN:   -o - %s -verify-machineinstrs | FileCheck %s
3
4--- |
5  define ppc_fp128 @freeze_select(ppc_fp128 %a, ppc_fp128 %b) {
6    %sel.frozen = freeze ppc_fp128 %a
7    %cmp = fcmp one ppc_fp128 %sel.frozen, 0xM00000000000000000000000000000000
8    br i1 %cmp, label %select.end, label %select.false
9
10  select.false:                                     ; preds = %0
11    br label %select.end
12
13  select.end:                                       ; preds = %0, %select.false
14    %sel = phi ppc_fp128 [ %a, %0 ], [ %b, %select.false ]
15    ret ppc_fp128 %sel
16  }
17
18  ; CHECK-LABEL: freeze_select
19  ; CHECK:       # %bb.0:
20  ; CHECK-NEXT:    xxlxor 0, 0, 0
21  ; CHECK-NEXT:    fcmpu 1, 2, 2
22  ; CHECK-NEXT:    fcmpu 0, 2, 0
23  ; CHECK-NEXT:    crnor 20, 7, 2
24  ; CHECK-NEXT:    fcmpu 0, 1, 0
25  ; CHECK-NEXT:    fcmpu 1, 1, 1
26  ; CHECK-NEXT:    crand 20, 2, 20
27  ; CHECK-NEXT:    bclr 12, 20, 0
28  ; CHECK-NEXT:  # %bb.1:
29  ; CHECK-NEXT:    crnor 20, 7, 2
30  ; CHECK-NEXT:    bclr 12, 20, 0
31  ; CHECK-NEXT:  # %bb.2:                                # %select.false
32  ; CHECK-NEXT:    fmr 1, 3
33  ; CHECK-NEXT:    fmr 2, 4
34  ; CHECK-NEXT:    blr
35...
36