xref: /aosp_15_r20/external/llvm/test/CodeGen/PowerPC/vsx-spill.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=pwr7 -mattr=+vsx < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=pwr7 -mattr=+vsx < %s | FileCheck -check-prefix=CHECK-REG %s
3*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=pwr7 -mattr=+vsx -fast-isel -O0 < %s | FileCheck %s
4*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=pwr7 -mattr=+vsx -fast-isel -O0 < %s | FileCheck -check-prefix=CHECK-FISL %s
5*9880d681SAndroid Build Coastguard Workertarget datalayout = "E-m:e-i64:64-n32:64"
6*9880d681SAndroid Build Coastguard Workertarget triple = "powerpc64-unknown-linux-gnu"
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Workerdefine double @foo1(double %a) nounwind {
9*9880d681SAndroid Build Coastguard Workerentry:
10*9880d681SAndroid Build Coastguard Worker  call void asm sideeffect "", "~{f0},~{f1},~{f2},~{f3},~{f4},~{f5},~{f6},~{f7},~{f8},~{f9},~{f10},~{f11},~{f12},~{f13},~{f14},~{f15},~{f16},~{f17},~{f18},~{f19},~{f20},~{f21},~{f22},~{f23},~{f24},~{f25},~{f26},~{f27},~{f28},~{f29},~{f30},~{f31}"() nounwind
11*9880d681SAndroid Build Coastguard Worker  br label %return
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker; CHECK-REG: @foo1
14*9880d681SAndroid Build Coastguard Worker; CHECK-REG: xxlor [[R1:[0-9]+]], 1, 1
15*9880d681SAndroid Build Coastguard Worker; CHECK-REG: xxlor 1, [[R1]], [[R1]]
16*9880d681SAndroid Build Coastguard Worker; CHECK-REG: blr
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Worker; CHECK-FISL: @foo1
19*9880d681SAndroid Build Coastguard Worker; CHECK-FISL: lis 0, -1
20*9880d681SAndroid Build Coastguard Worker; CHECK-FISL: ori 0, 0, 65384
21*9880d681SAndroid Build Coastguard Worker; CHECK-FISL: stxsdx 1, 1, 0
22*9880d681SAndroid Build Coastguard Worker; CHECK-FISL: blr
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Workerreturn:                                           ; preds = %entry
25*9880d681SAndroid Build Coastguard Worker  ret double %a
26*9880d681SAndroid Build Coastguard Worker}
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Workerdefine double @foo2(double %a) nounwind {
29*9880d681SAndroid Build Coastguard Workerentry:
30*9880d681SAndroid Build Coastguard Worker  %b = fadd double %a, %a
31*9880d681SAndroid Build Coastguard Worker  call void asm sideeffect "", "~{f0},~{f1},~{f2},~{f3},~{f4},~{f5},~{f6},~{f7},~{f8},~{f9},~{f10},~{f11},~{f12},~{f13},~{f14},~{f15},~{f16},~{f17},~{f18},~{f19},~{f20},~{f21},~{f22},~{f23},~{f24},~{f25},~{f26},~{f27},~{f28},~{f29},~{f30},~{f31}"() nounwind
32*9880d681SAndroid Build Coastguard Worker  br label %return
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Worker; CHECK-REG: @foo2
35*9880d681SAndroid Build Coastguard Worker; CHECK-REG: {{xxlor|xsadddp}} [[R1:[0-9]+]], 1, 1
36*9880d681SAndroid Build Coastguard Worker; CHECK-REG: {{xxlor|xsadddp}} 1, [[R1]], [[R1]]
37*9880d681SAndroid Build Coastguard Worker; CHECK-REG: blr
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Worker; CHECK-FISL: @foo2
40*9880d681SAndroid Build Coastguard Worker; CHECK-FISL: xsadddp [[R1:[0-9]+]], 1, 1
41*9880d681SAndroid Build Coastguard Worker; CHECK-FISL: stxsdx [[R1]], [[R1]], 0
42*9880d681SAndroid Build Coastguard Worker; CHECK-FISL: lxsdx [[R1]], [[R1]], 0
43*9880d681SAndroid Build Coastguard Worker; CHECK-FISL: blr
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Workerreturn:                                           ; preds = %entry
46*9880d681SAndroid Build Coastguard Worker  ret double %b
47*9880d681SAndroid Build Coastguard Worker}
48*9880d681SAndroid Build Coastguard Worker
49*9880d681SAndroid Build Coastguard Workerdefine double @foo3(double %a) nounwind {
50*9880d681SAndroid Build Coastguard Workerentry:
51*9880d681SAndroid Build Coastguard Worker  call void asm sideeffect "", "~{f0},~{f1},~{f2},~{f3},~{f4},~{f5},~{f6},~{f7},~{f8},~{f9},~{f10},~{f11},~{f12},~{f13},~{f14},~{f15},~{f16},~{f17},~{f18},~{f19},~{f20},~{f21},~{f22},~{f23},~{f24},~{f25},~{f26},~{f27},~{f28},~{f29},~{f30},~{f31},~{v0},~{v1},~{v2},~{v3},~{v4},~{v5},~{v6},~{v7},~{v8},~{v9},~{v10},~{v11},~{v12},~{v13},~{v14},~{v15},~{v16},~{v17},~{v18},~{v19},~{v20},~{v21},~{v22},~{v23},~{v24},~{v25},~{v26},~{v27},~{v28},~{v29},~{v30},~{v31}"() nounwind
52*9880d681SAndroid Build Coastguard Worker  br label %return
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Worker; CHECK: @foo3
55*9880d681SAndroid Build Coastguard Worker; CHECK: stxsdx 1,
56*9880d681SAndroid Build Coastguard Worker; CHECK: lxsdx [[R1:[0-9]+]],
57*9880d681SAndroid Build Coastguard Worker; CHECK: xsadddp 1, [[R1]], [[R1]]
58*9880d681SAndroid Build Coastguard Worker; CHECK: blr
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Workerreturn:                                           ; preds = %entry
61*9880d681SAndroid Build Coastguard Worker  %b = fadd double %a, %a
62*9880d681SAndroid Build Coastguard Worker  ret double %b
63*9880d681SAndroid Build Coastguard Worker}
64*9880d681SAndroid Build Coastguard Worker
65