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