xref: /aosp_15_r20/external/llvm/test/CodeGen/SPARC/64spill.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=sparcv9 | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workertarget datalayout = "E-i64:64-n32:64-S128"
4*9880d681SAndroid Build Coastguard Workertarget triple = "sparc64-sun-sparc"
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_and_spill
7*9880d681SAndroid Build Coastguard Worker; CHECK:       and %i0, %i1, [[R:%[gilo][0-7]]]
8*9880d681SAndroid Build Coastguard Worker; CHECK:       stx [[R]], [%fp+{{.+}}]
9*9880d681SAndroid Build Coastguard Worker; CHECK:       ldx [%fp+{{.+}}, %i0
10*9880d681SAndroid Build Coastguard Workerdefine i64 @test_and_spill(i64 %a, i64 %b) {
11*9880d681SAndroid Build Coastguard Workerentry:
12*9880d681SAndroid Build Coastguard Worker  %r0 = and i64 %a, %b
13*9880d681SAndroid Build Coastguard Worker  %0 = tail call i64 asm sideeffect "#$0 $1", "=r,r,~{i0},~{i1},~{i2},~{i3},~{i4},~{i5},~{i6},~{i7},~{g1},~{g2},~{g3},~{g4},~{g5},~{g6},~{g7},~{l0},~{l1},~{l2},~{l3},~{l4},~{l5},~{l6},~{l7},~{o0},~{o1},~{o2},~{o3},~{o4},~{o5},~{o6}"(i64 %r0)
14*9880d681SAndroid Build Coastguard Worker  ret i64 %r0
15*9880d681SAndroid Build Coastguard Worker}
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_or_spill
18*9880d681SAndroid Build Coastguard Worker; CHECK:       or %i0, %i1, [[R:%[gilo][0-7]]]
19*9880d681SAndroid Build Coastguard Worker; CHECK:       stx [[R]], [%fp+{{.+}}]
20*9880d681SAndroid Build Coastguard Worker; CHECK:       ldx [%fp+{{.+}}, %i0
21*9880d681SAndroid Build Coastguard Workerdefine i64 @test_or_spill(i64 %a, i64 %b) {
22*9880d681SAndroid Build Coastguard Workerentry:
23*9880d681SAndroid Build Coastguard Worker  %r0 = or i64 %a, %b
24*9880d681SAndroid Build Coastguard Worker  %0 = tail call i64 asm sideeffect "#$0 $1", "=r,r,~{i0},~{i1},~{i2},~{i3},~{i4},~{i5},~{i6},~{i7},~{g1},~{g2},~{g3},~{g4},~{g5},~{g6},~{g7},~{l0},~{l1},~{l2},~{l3},~{l4},~{l5},~{l6},~{l7},~{o0},~{o1},~{o2},~{o3},~{o4},~{o5},~{o6}"(i64 %r0)
25*9880d681SAndroid Build Coastguard Worker  ret i64 %r0
26*9880d681SAndroid Build Coastguard Worker}
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_xor_spill
29*9880d681SAndroid Build Coastguard Worker; CHECK:       xor %i0, %i1, [[R:%[gilo][0-7]]]
30*9880d681SAndroid Build Coastguard Worker; CHECK:       stx [[R]], [%fp+{{.+}}]
31*9880d681SAndroid Build Coastguard Worker; CHECK:       ldx [%fp+{{.+}}, %i0
32*9880d681SAndroid Build Coastguard Workerdefine i64 @test_xor_spill(i64 %a, i64 %b) {
33*9880d681SAndroid Build Coastguard Workerentry:
34*9880d681SAndroid Build Coastguard Worker  %r0 = xor i64 %a, %b
35*9880d681SAndroid Build Coastguard Worker  %0 = tail call i64 asm sideeffect "#$0 $1", "=r,r,~{i0},~{i1},~{i2},~{i3},~{i4},~{i5},~{i6},~{i7},~{g1},~{g2},~{g3},~{g4},~{g5},~{g6},~{g7},~{l0},~{l1},~{l2},~{l3},~{l4},~{l5},~{l6},~{l7},~{o0},~{o1},~{o2},~{o3},~{o4},~{o5},~{o6}"(i64 %r0)
36*9880d681SAndroid Build Coastguard Worker  ret i64 %r0
37*9880d681SAndroid Build Coastguard Worker}
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_add_spill
41*9880d681SAndroid Build Coastguard Worker; CHECK:       add %i0, %i1, [[R:%[gilo][0-7]]]
42*9880d681SAndroid Build Coastguard Worker; CHECK:       stx [[R]], [%fp+{{.+}}]
43*9880d681SAndroid Build Coastguard Worker; CHECK:       ldx [%fp+{{.+}}, %i0
44*9880d681SAndroid Build Coastguard Workerdefine i64 @test_add_spill(i64 %a, i64 %b) {
45*9880d681SAndroid Build Coastguard Workerentry:
46*9880d681SAndroid Build Coastguard Worker  %r0 = add i64 %a, %b
47*9880d681SAndroid Build Coastguard Worker  %0 = tail call i64 asm sideeffect "#$0 $1", "=r,r,~{i0},~{i1},~{i2},~{i3},~{i4},~{i5},~{i6},~{i7},~{g1},~{g2},~{g3},~{g4},~{g5},~{g6},~{g7},~{l0},~{l1},~{l2},~{l3},~{l4},~{l5},~{l6},~{l7},~{o0},~{o1},~{o2},~{o3},~{o4},~{o5},~{o6}"(i64 %r0)
48*9880d681SAndroid Build Coastguard Worker  ret i64 %r0
49*9880d681SAndroid Build Coastguard Worker}
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_sub_spill
52*9880d681SAndroid Build Coastguard Worker; CHECK:       sub %i0, %i1, [[R:%[gilo][0-7]]]
53*9880d681SAndroid Build Coastguard Worker; CHECK:       stx [[R]], [%fp+{{.+}}]
54*9880d681SAndroid Build Coastguard Worker; CHECK:       ldx [%fp+{{.+}}, %i0
55*9880d681SAndroid Build Coastguard Workerdefine i64 @test_sub_spill(i64 %a, i64 %b) {
56*9880d681SAndroid Build Coastguard Workerentry:
57*9880d681SAndroid Build Coastguard Worker  %r0 = sub i64 %a, %b
58*9880d681SAndroid Build Coastguard Worker  %0 = tail call i64 asm sideeffect "#$0 $1", "=r,r,~{i0},~{i1},~{i2},~{i3},~{i4},~{i5},~{i6},~{i7},~{g1},~{g2},~{g3},~{g4},~{g5},~{g6},~{g7},~{l0},~{l1},~{l2},~{l3},~{l4},~{l5},~{l6},~{l7},~{o0},~{o1},~{o2},~{o3},~{o4},~{o5},~{o6}"(i64 %r0)
59*9880d681SAndroid Build Coastguard Worker  ret i64 %r0
60*9880d681SAndroid Build Coastguard Worker}
61*9880d681SAndroid Build Coastguard Worker
62*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_andi_spill
63*9880d681SAndroid Build Coastguard Worker; CHECK:       and %i0, 1729, [[R:%[gilo][0-7]]]
64*9880d681SAndroid Build Coastguard Worker; CHECK:       stx [[R]], [%fp+{{.+}}]
65*9880d681SAndroid Build Coastguard Worker; CHECK:       ldx [%fp+{{.+}}, %i0
66*9880d681SAndroid Build Coastguard Workerdefine i64 @test_andi_spill(i64 %a) {
67*9880d681SAndroid Build Coastguard Workerentry:
68*9880d681SAndroid Build Coastguard Worker  %r0 = and i64 %a, 1729
69*9880d681SAndroid Build Coastguard Worker  %0 = tail call i64 asm sideeffect "#$0 $1", "=r,r,~{i0},~{i1},~{i2},~{i3},~{i4},~{i5},~{i6},~{i7},~{g1},~{g2},~{g3},~{g4},~{g5},~{g6},~{g7},~{l0},~{l1},~{l2},~{l3},~{l4},~{l5},~{l6},~{l7},~{o0},~{o1},~{o2},~{o3},~{o4},~{o5},~{o6}"(i64 %r0)
70*9880d681SAndroid Build Coastguard Worker  ret i64 %r0
71*9880d681SAndroid Build Coastguard Worker}
72*9880d681SAndroid Build Coastguard Worker
73*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_ori_spill
74*9880d681SAndroid Build Coastguard Worker; CHECK:       or %i0, 1729, [[R:%[gilo][0-7]]]
75*9880d681SAndroid Build Coastguard Worker; CHECK:       stx [[R]], [%fp+{{.+}}]
76*9880d681SAndroid Build Coastguard Worker; CHECK:       ldx [%fp+{{.+}}, %i0
77*9880d681SAndroid Build Coastguard Workerdefine i64 @test_ori_spill(i64 %a) {
78*9880d681SAndroid Build Coastguard Workerentry:
79*9880d681SAndroid Build Coastguard Worker  %r0 = or i64 %a, 1729
80*9880d681SAndroid Build Coastguard Worker  %0 = tail call i64 asm sideeffect "#$0 $1", "=r,r,~{i0},~{i1},~{i2},~{i3},~{i4},~{i5},~{i6},~{i7},~{g1},~{g2},~{g3},~{g4},~{g5},~{g6},~{g7},~{l0},~{l1},~{l2},~{l3},~{l4},~{l5},~{l6},~{l7},~{o0},~{o1},~{o2},~{o3},~{o4},~{o5},~{o6}"(i64 %r0)
81*9880d681SAndroid Build Coastguard Worker  ret i64 %r0
82*9880d681SAndroid Build Coastguard Worker}
83*9880d681SAndroid Build Coastguard Worker
84*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_xori_spill
85*9880d681SAndroid Build Coastguard Worker; CHECK:       xor %i0, 1729, [[R:%[gilo][0-7]]]
86*9880d681SAndroid Build Coastguard Worker; CHECK:       stx [[R]], [%fp+{{.+}}]
87*9880d681SAndroid Build Coastguard Worker; CHECK:       ldx [%fp+{{.+}}, %i0
88*9880d681SAndroid Build Coastguard Workerdefine i64 @test_xori_spill(i64 %a) {
89*9880d681SAndroid Build Coastguard Workerentry:
90*9880d681SAndroid Build Coastguard Worker  %r0 = xor i64 %a, 1729
91*9880d681SAndroid Build Coastguard Worker  %0 = tail call i64 asm sideeffect "#$0 $1", "=r,r,~{i0},~{i1},~{i2},~{i3},~{i4},~{i5},~{i6},~{i7},~{g1},~{g2},~{g3},~{g4},~{g5},~{g6},~{g7},~{l0},~{l1},~{l2},~{l3},~{l4},~{l5},~{l6},~{l7},~{o0},~{o1},~{o2},~{o3},~{o4},~{o5},~{o6}"(i64 %r0)
92*9880d681SAndroid Build Coastguard Worker  ret i64 %r0
93*9880d681SAndroid Build Coastguard Worker}
94*9880d681SAndroid Build Coastguard Worker
95*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_addi_spill
96*9880d681SAndroid Build Coastguard Worker; CHECK:       add %i0, 1729, [[R:%[gilo][0-7]]]
97*9880d681SAndroid Build Coastguard Worker; CHECK:       stx [[R]], [%fp+{{.+}}]
98*9880d681SAndroid Build Coastguard Worker; CHECK:       ldx [%fp+{{.+}}, %i0
99*9880d681SAndroid Build Coastguard Workerdefine i64 @test_addi_spill(i64 %a) {
100*9880d681SAndroid Build Coastguard Workerentry:
101*9880d681SAndroid Build Coastguard Worker  %r0 = add i64 %a, 1729
102*9880d681SAndroid Build Coastguard Worker  %0 = tail call i64 asm sideeffect "#$0 $1", "=r,r,~{i0},~{i1},~{i2},~{i3},~{i4},~{i5},~{i6},~{i7},~{g1},~{g2},~{g3},~{g4},~{g5},~{g6},~{g7},~{l0},~{l1},~{l2},~{l3},~{l4},~{l5},~{l6},~{l7},~{o0},~{o1},~{o2},~{o3},~{o4},~{o5},~{o6}"(i64 %r0)
103*9880d681SAndroid Build Coastguard Worker  ret i64 %r0
104*9880d681SAndroid Build Coastguard Worker}
105*9880d681SAndroid Build Coastguard Worker
106*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_subi_spill
107*9880d681SAndroid Build Coastguard Worker; CHECK:       add %i0, -1729, [[R:%[gilo][0-7]]]
108*9880d681SAndroid Build Coastguard Worker; CHECK:       stx [[R]], [%fp+{{.+}}]
109*9880d681SAndroid Build Coastguard Worker; CHECK:       ldx [%fp+{{.+}}, %i0
110*9880d681SAndroid Build Coastguard Workerdefine i64 @test_subi_spill(i64 %a) {
111*9880d681SAndroid Build Coastguard Workerentry:
112*9880d681SAndroid Build Coastguard Worker  %r0 = sub i64 %a, 1729
113*9880d681SAndroid Build Coastguard Worker  %0 = tail call i64 asm sideeffect "#$0 $1", "=r,r,~{i0},~{i1},~{i2},~{i3},~{i4},~{i5},~{i6},~{i7},~{g1},~{g2},~{g3},~{g4},~{g5},~{g6},~{g7},~{l0},~{l1},~{l2},~{l3},~{l4},~{l5},~{l6},~{l7},~{o0},~{o1},~{o2},~{o3},~{o4},~{o5},~{o6}"(i64 %r0)
114*9880d681SAndroid Build Coastguard Worker  ret i64 %r0
115*9880d681SAndroid Build Coastguard Worker}
116*9880d681SAndroid Build Coastguard Worker
117