• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# RUN: llc -mtriple=s390x-linux-gnu -mcpu=z10 -no-integrated-as -start-after=block-placement %s -o - | FileCheck %s
2# Test that LTEBR is used without an unnecessary LER
3
4--- |
5  define float @f15(float %val, float %dummy, float* %dest) {
6  entry:
7    call void asm sideeffect "blah $0", "{f2}"(float %val)
8    %cmp = fcmp olt float %val, 0.000000e+00
9    br i1 %cmp, label %exit, label %store
10
11  store:                                            ; preds = %entry
12    store float %val, float* %dest
13    br label %exit
14
15  exit:                                             ; preds = %store, %entry
16    ret float %val
17  }
18
19...
20
21# CHECK: ltebr %f2, %f0
22
23---
24name:            f15
25tracksRegLiveness: true
26liveins:
27  - { reg: '$f0s', virtual-reg: '' }
28  - { reg: '$r2d', virtual-reg: '' }
29body:             |
30  bb.0.entry:
31    liveins: $f0s, $r2d
32
33    LTEBRCompare $f0s, $f0s, implicit-def $cc
34    $f2s = LER $f0s
35    INLINEASM &"blah $0", 1, 9, $f2s
36    CondReturn 15, 4, implicit $f0s, implicit $cc
37
38  bb.1.store:
39    liveins: $f0s, $r2d
40
41    STE $f0s, killed $r2d, 0, $noreg :: (store 4 into %ir.dest)
42    Return implicit $f0s
43
44...
45