Skip to content

Commit 4d98ee2

Browse files
authored
ARM: Add watchos run line to llvm.sincos test (#166271)
1 parent 749a0e1 commit 4d98ee2

File tree

1 file changed

+221
-0
lines changed

1 file changed

+221
-0
lines changed

llvm/test/CodeGen/ARM/llvm.sincos.ll

Lines changed: 221 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
; RUN: llc -mtriple=armv7-linux-gnueabi -mcpu=cortex-a8 < %s | FileCheck -check-prefix=GNUEABI %s
44
; RUN: llc -mtriple=armv7-apple-ios6 -mcpu=cortex-a8 < %s | FileCheck -check-prefixes=IOS,IOS-NO-STRET %s
55
; RUN: llc -mtriple=armv7-apple-ios7 -mcpu=cortex-a8 < %s | FileCheck -check-prefixes=IOS,IOS-WITH-STRET %s
6+
; RUN: llc -mtriple=thumbv7k-apple-watchos2.0 < %s | FileCheck -check-prefix=WATCHABI %s
67

78
define { half, half } @test_sincos_f16(half %a) {
89
; GNU-LABEL: test_sincos_f16:
@@ -75,6 +76,23 @@ define { half, half } @test_sincos_f16(half %a) {
7576
; IOS-WITH-STRET-NEXT: mov r0, r5
7677
; IOS-WITH-STRET-NEXT: add sp, sp, #8
7778
; IOS-WITH-STRET-NEXT: pop {r4, r5, pc}
79+
;
80+
; WATCHABI-LABEL: test_sincos_f16:
81+
; WATCHABI: .cfi_startproc
82+
; WATCHABI-NEXT: @ %bb.0:
83+
; WATCHABI-NEXT: push {r7, lr}
84+
; WATCHABI-NEXT: .cfi_def_cfa_offset 8
85+
; WATCHABI-NEXT: .cfi_offset lr, -4
86+
; WATCHABI-NEXT: .cfi_offset r7, -8
87+
; WATCHABI-NEXT: sub sp, #8
88+
; WATCHABI-NEXT: .cfi_def_cfa_offset 16
89+
; WATCHABI-NEXT: vcvtb.f32.f16 s0, s0
90+
; WATCHABI-NEXT: bl ___sincosf_stret
91+
; WATCHABI-NEXT: vcvtb.f16.f32 s0, s0
92+
; WATCHABI-NEXT: vcvtb.f16.f32 s1, s1
93+
; WATCHABI-NEXT: add sp, #8
94+
; WATCHABI-NEXT: pop {r7, pc}
95+
; WATCHABI-NEXT: .cfi_endproc
7896
%result = call { half, half } @llvm.sincos.f16(half %a)
7997
ret { half, half } %result
8098
}
@@ -130,6 +148,22 @@ define half @test_sincos_f16_only_use_sin(half %a) {
130148
; IOS-WITH-STRET-NEXT: add sp, sp, #8
131149
; IOS-WITH-STRET-NEXT: pop {lr}
132150
; IOS-WITH-STRET-NEXT: bx lr
151+
;
152+
; WATCHABI-LABEL: test_sincos_f16_only_use_sin:
153+
; WATCHABI: .cfi_startproc
154+
; WATCHABI-NEXT: @ %bb.0:
155+
; WATCHABI-NEXT: push {r7, lr}
156+
; WATCHABI-NEXT: .cfi_def_cfa_offset 8
157+
; WATCHABI-NEXT: .cfi_offset lr, -4
158+
; WATCHABI-NEXT: .cfi_offset r7, -8
159+
; WATCHABI-NEXT: sub sp, #8
160+
; WATCHABI-NEXT: .cfi_def_cfa_offset 16
161+
; WATCHABI-NEXT: vcvtb.f32.f16 s0, s0
162+
; WATCHABI-NEXT: bl ___sincosf_stret
163+
; WATCHABI-NEXT: vcvtb.f16.f32 s0, s0
164+
; WATCHABI-NEXT: add sp, #8
165+
; WATCHABI-NEXT: pop {r7, pc}
166+
; WATCHABI-NEXT: .cfi_endproc
133167
%result = call { half, half } @llvm.sincos.f16(half %a)
134168
%result.0 = extractvalue { half, half } %result, 0
135169
ret half %result.0
@@ -186,6 +220,22 @@ define half @test_sincos_f16_only_use_cos(half %a) {
186220
; IOS-WITH-STRET-NEXT: add sp, sp, #8
187221
; IOS-WITH-STRET-NEXT: pop {lr}
188222
; IOS-WITH-STRET-NEXT: bx lr
223+
;
224+
; WATCHABI-LABEL: test_sincos_f16_only_use_cos:
225+
; WATCHABI: .cfi_startproc
226+
; WATCHABI-NEXT: @ %bb.0:
227+
; WATCHABI-NEXT: push {r7, lr}
228+
; WATCHABI-NEXT: .cfi_def_cfa_offset 8
229+
; WATCHABI-NEXT: .cfi_offset lr, -4
230+
; WATCHABI-NEXT: .cfi_offset r7, -8
231+
; WATCHABI-NEXT: sub sp, #8
232+
; WATCHABI-NEXT: .cfi_def_cfa_offset 16
233+
; WATCHABI-NEXT: vcvtb.f32.f16 s0, s0
234+
; WATCHABI-NEXT: bl ___sincosf_stret
235+
; WATCHABI-NEXT: vcvtb.f16.f32 s0, s1
236+
; WATCHABI-NEXT: add sp, #8
237+
; WATCHABI-NEXT: pop {r7, pc}
238+
; WATCHABI-NEXT: .cfi_endproc
189239
%result = call { half, half } @llvm.sincos.f16(half %a)
190240
%result.1 = extractvalue { half, half } %result, 1
191241
ret half %result.1
@@ -366,6 +416,54 @@ define { <2 x half>, <2 x half> } @test_sincos_v2f16(<2 x half> %a) {
366416
; IOS-WITH-STRET-NEXT: add sp, sp, #24
367417
; IOS-WITH-STRET-NEXT: vpop {d8}
368418
; IOS-WITH-STRET-NEXT: pop {r4, r5, pc}
419+
;
420+
; WATCHABI-LABEL: test_sincos_v2f16:
421+
; WATCHABI: .cfi_startproc
422+
; WATCHABI-NEXT: @ %bb.0:
423+
; WATCHABI-NEXT: push {r7, lr}
424+
; WATCHABI-NEXT: .cfi_def_cfa_offset 8
425+
; WATCHABI-NEXT: .cfi_offset lr, -4
426+
; WATCHABI-NEXT: .cfi_offset r7, -8
427+
; WATCHABI-NEXT: vpush {d10}
428+
; WATCHABI-NEXT: .cfi_def_cfa_offset 16
429+
; WATCHABI-NEXT: vpush {d8}
430+
; WATCHABI-NEXT: .cfi_def_cfa_offset 24
431+
; WATCHABI-NEXT: .cfi_offset d10, -16
432+
; WATCHABI-NEXT: .cfi_offset d8, -24
433+
; WATCHABI-NEXT: sub sp, #8
434+
; WATCHABI-NEXT: .cfi_def_cfa_offset 32
435+
; WATCHABI-NEXT: vmov.f32 s16, s0
436+
; WATCHABI-NEXT: vcvtb.f32.f16 s0, s1
437+
; WATCHABI-NEXT: bl ___sincosf_stret
438+
; WATCHABI-NEXT: vcvtb.f16.f32 s0, s0
439+
; WATCHABI-NEXT: vcvtb.f32.f16 s4, s16
440+
; WATCHABI-NEXT: vmov r0, s0
441+
; WATCHABI-NEXT: vmov.f32 s0, s4
442+
; WATCHABI-NEXT: vmov.f32 s20, s1
443+
; WATCHABI-NEXT: strh.w r0, [sp, #6]
444+
; WATCHABI-NEXT: bl ___sincosf_stret
445+
; WATCHABI-NEXT: vcvtb.f16.f32 s0, s0
446+
; WATCHABI-NEXT: vmov r0, s0
447+
; WATCHABI-NEXT: vcvtb.f16.f32 s0, s20
448+
; WATCHABI-NEXT: strh.w r0, [sp, #4]
449+
; WATCHABI-NEXT: add r0, sp, #4
450+
; WATCHABI-NEXT: vld1.32 {d16[0]}, [r0:32]
451+
; WATCHABI-NEXT: vmov r0, s0
452+
; WATCHABI-NEXT: vcvtb.f16.f32 s0, s1
453+
; WATCHABI-NEXT: strh.w r0, [sp, #2]
454+
; WATCHABI-NEXT: vmov r0, s0
455+
; WATCHABI-NEXT: vmovl.u16 q0, d16
456+
; WATCHABI-NEXT: strh.w r0, [sp]
457+
; WATCHABI-NEXT: mov r0, sp
458+
; WATCHABI-NEXT: vld1.32 {d18[0]}, [r0:32]
459+
; WATCHABI-NEXT: vmovl.u16 q1, d18
460+
; WATCHABI-NEXT: vmov.f32 s2, s4
461+
; WATCHABI-NEXT: vmov.f32 s3, s5
462+
; WATCHABI-NEXT: add sp, #8
463+
; WATCHABI-NEXT: vpop {d8}
464+
; WATCHABI-NEXT: vpop {d10}
465+
; WATCHABI-NEXT: pop {r7, pc}
466+
; WATCHABI-NEXT: .cfi_endproc
369467
%result = call { <2 x half>, <2 x half> } @llvm.sincos.v2f16(<2 x half> %a)
370468
ret { <2 x half>, <2 x half> } %result
371469
}
@@ -416,6 +514,20 @@ define { float, float } @test_sincos_f32(float %a) {
416514
; IOS-WITH-STRET-NEXT: pop {r0, r1}
417515
; IOS-WITH-STRET-NEXT: pop {lr}
418516
; IOS-WITH-STRET-NEXT: bx lr
517+
;
518+
; WATCHABI-LABEL: test_sincos_f32:
519+
; WATCHABI: .cfi_startproc
520+
; WATCHABI-NEXT: @ %bb.0:
521+
; WATCHABI-NEXT: push {r7, lr}
522+
; WATCHABI-NEXT: .cfi_def_cfa_offset 8
523+
; WATCHABI-NEXT: .cfi_offset lr, -4
524+
; WATCHABI-NEXT: .cfi_offset r7, -8
525+
; WATCHABI-NEXT: sub sp, #8
526+
; WATCHABI-NEXT: .cfi_def_cfa_offset 16
527+
; WATCHABI-NEXT: bl ___sincosf_stret
528+
; WATCHABI-NEXT: add sp, #8
529+
; WATCHABI-NEXT: pop {r7, pc}
530+
; WATCHABI-NEXT: .cfi_endproc
419531
%result = call { float, float } @llvm.sincos.f32(float %a)
420532
ret { float, float } %result
421533
}
@@ -519,6 +631,33 @@ define { <2 x float>, <2 x float> } @test_sincos_v2f32(<2 x float> %a) {
519631
; IOS-WITH-STRET-NEXT: vpop {d8}
520632
; IOS-WITH-STRET-NEXT: pop {lr}
521633
; IOS-WITH-STRET-NEXT: bx lr
634+
;
635+
; WATCHABI-LABEL: test_sincos_v2f32:
636+
; WATCHABI: .cfi_startproc
637+
; WATCHABI-NEXT: @ %bb.0:
638+
; WATCHABI-NEXT: push {r7, lr}
639+
; WATCHABI-NEXT: .cfi_def_cfa_offset 8
640+
; WATCHABI-NEXT: .cfi_offset lr, -4
641+
; WATCHABI-NEXT: .cfi_offset r7, -8
642+
; WATCHABI-NEXT: vpush {d8, d9, d10}
643+
; WATCHABI-NEXT: .cfi_def_cfa_offset 32
644+
; WATCHABI-NEXT: .cfi_offset d10, -16
645+
; WATCHABI-NEXT: .cfi_offset d9, -24
646+
; WATCHABI-NEXT: .cfi_offset d8, -32
647+
; WATCHABI-NEXT: vmov.f64 d8, d0
648+
; WATCHABI-NEXT: vmov.f32 s0, s17
649+
; WATCHABI-NEXT: bl ___sincosf_stret
650+
; WATCHABI-NEXT: vmov.f32 s19, s0
651+
; WATCHABI-NEXT: vmov.f32 s0, s16
652+
; WATCHABI-NEXT: vmov.f32 s21, s1
653+
; WATCHABI-NEXT: bl ___sincosf_stret
654+
; WATCHABI-NEXT: vmov.f32 s20, s1
655+
; WATCHABI-NEXT: vmov.f32 s18, s0
656+
; WATCHABI-NEXT: vmov.f64 d1, d10
657+
; WATCHABI-NEXT: vmov.f64 d0, d9
658+
; WATCHABI-NEXT: vpop {d8, d9, d10}
659+
; WATCHABI-NEXT: pop {r7, pc}
660+
; WATCHABI-NEXT: .cfi_endproc
522661
%result = call { <2 x float>, <2 x float> } @llvm.sincos.v2f32(<2 x float> %a)
523662
ret { <2 x float>, <2 x float> } %result
524663
}
@@ -581,6 +720,20 @@ define { double, double } @test_sincos_f64(double %a) {
581720
; IOS-WITH-STRET-NEXT: add sp, sp, #16
582721
; IOS-WITH-STRET-NEXT: pop {lr}
583722
; IOS-WITH-STRET-NEXT: bx lr
723+
;
724+
; WATCHABI-LABEL: test_sincos_f64:
725+
; WATCHABI: .cfi_startproc
726+
; WATCHABI-NEXT: @ %bb.0:
727+
; WATCHABI-NEXT: push {r7, lr}
728+
; WATCHABI-NEXT: .cfi_def_cfa_offset 8
729+
; WATCHABI-NEXT: .cfi_offset lr, -4
730+
; WATCHABI-NEXT: .cfi_offset r7, -8
731+
; WATCHABI-NEXT: sub sp, #8
732+
; WATCHABI-NEXT: .cfi_def_cfa_offset 16
733+
; WATCHABI-NEXT: bl ___sincos_stret
734+
; WATCHABI-NEXT: add sp, #8
735+
; WATCHABI-NEXT: pop {r7, pc}
736+
; WATCHABI-NEXT: .cfi_endproc
584737
%result = call { double, double } @llvm.sincos.f64(double %a)
585738
ret { double, double } %result
586739
}
@@ -692,6 +845,39 @@ define { <2 x double>, <2 x double> } @test_sincos_v2f64(<2 x double> %a) {
692845
; IOS-WITH-STRET-NEXT: vst1.32 {d18, d19}, [r6]
693846
; IOS-WITH-STRET-NEXT: add sp, sp, #32
694847
; IOS-WITH-STRET-NEXT: pop {r4, r5, r6, pc}
848+
;
849+
; WATCHABI-LABEL: test_sincos_v2f64:
850+
; WATCHABI: .cfi_startproc
851+
; WATCHABI-NEXT: @ %bb.0:
852+
; WATCHABI-NEXT: push {r7, lr}
853+
; WATCHABI-NEXT: .cfi_def_cfa_offset 8
854+
; WATCHABI-NEXT: .cfi_offset lr, -4
855+
; WATCHABI-NEXT: .cfi_offset r7, -8
856+
; WATCHABI-NEXT: vpush {d8, d9, d10, d11, d12, d13}
857+
; WATCHABI-NEXT: .cfi_def_cfa_offset 56
858+
; WATCHABI-NEXT: .cfi_offset d13, -16
859+
; WATCHABI-NEXT: .cfi_offset d12, -24
860+
; WATCHABI-NEXT: .cfi_offset d11, -32
861+
; WATCHABI-NEXT: .cfi_offset d10, -40
862+
; WATCHABI-NEXT: .cfi_offset d9, -48
863+
; WATCHABI-NEXT: .cfi_offset d8, -56
864+
; WATCHABI-NEXT: sub sp, #8
865+
; WATCHABI-NEXT: .cfi_def_cfa_offset 64
866+
; WATCHABI-NEXT: vorr q4, q0, q0
867+
; WATCHABI-NEXT: vorr d0, d9, d9
868+
; WATCHABI-NEXT: bl ___sincos_stret
869+
; WATCHABI-NEXT: vorr d11, d0, d0
870+
; WATCHABI-NEXT: vorr d0, d8, d8
871+
; WATCHABI-NEXT: vorr d13, d1, d1
872+
; WATCHABI-NEXT: bl ___sincos_stret
873+
; WATCHABI-NEXT: vorr d12, d1, d1
874+
; WATCHABI-NEXT: vorr d10, d0, d0
875+
; WATCHABI-NEXT: vorr q1, q6, q6
876+
; WATCHABI-NEXT: vorr q0, q5, q5
877+
; WATCHABI-NEXT: add sp, #8
878+
; WATCHABI-NEXT: vpop {d8, d9, d10, d11, d12, d13}
879+
; WATCHABI-NEXT: pop {r7, pc}
880+
; WATCHABI-NEXT: .cfi_endproc
695881
%result = call { <2 x double>, <2 x double> } @llvm.sincos.v2f64(<2 x double> %a)
696882
ret { <2 x double>, <2 x double> } %result
697883
}
@@ -778,6 +964,41 @@ define { fp128, fp128 } @test_sincos_f128(fp128 %a) {
778964
; IOS-NEXT: bl _sinl
779965
; IOS-NEXT: stm r4, {r0, r1, r2, r3}
780966
; IOS-NEXT: pop {r4, r5, r6, r7, r8, pc}
967+
;
968+
; WATCHABI-LABEL: test_sincos_f128:
969+
; WATCHABI: .cfi_startproc
970+
; WATCHABI-NEXT: @ %bb.0:
971+
; WATCHABI-NEXT: push.w {r4, r5, r6, r7, r8, lr}
972+
; WATCHABI-NEXT: .cfi_def_cfa_offset 24
973+
; WATCHABI-NEXT: .cfi_offset lr, -4
974+
; WATCHABI-NEXT: .cfi_offset r7, -8
975+
; WATCHABI-NEXT: .cfi_offset r6, -12
976+
; WATCHABI-NEXT: .cfi_offset r5, -16
977+
; WATCHABI-NEXT: .cfi_offset r4, -20
978+
; WATCHABI-NEXT: .cfi_offset r8, -24
979+
; WATCHABI-NEXT: sub sp, #8
980+
; WATCHABI-NEXT: .cfi_def_cfa_offset 32
981+
; WATCHABI-NEXT: ldr.w r8, [sp, #32]
982+
; WATCHABI-NEXT: mov r4, r0
983+
; WATCHABI-NEXT: mov r5, r3
984+
; WATCHABI-NEXT: mov r6, r2
985+
; WATCHABI-NEXT: mov r7, r1
986+
; WATCHABI-NEXT: mov r0, r1
987+
; WATCHABI-NEXT: mov r1, r2
988+
; WATCHABI-NEXT: mov r2, r3
989+
; WATCHABI-NEXT: mov r3, r8
990+
; WATCHABI-NEXT: bl _cosl
991+
; WATCHABI-NEXT: add.w r9, r4, #16
992+
; WATCHABI-NEXT: stm.w r9, {r0, r1, r2, r3}
993+
; WATCHABI-NEXT: mov r0, r7
994+
; WATCHABI-NEXT: mov r1, r6
995+
; WATCHABI-NEXT: mov r2, r5
996+
; WATCHABI-NEXT: mov r3, r8
997+
; WATCHABI-NEXT: bl _sinl
998+
; WATCHABI-NEXT: stm r4!, {r0, r1, r2, r3}
999+
; WATCHABI-NEXT: add sp, #8
1000+
; WATCHABI-NEXT: pop.w {r4, r5, r6, r7, r8, pc}
1001+
; WATCHABI-NEXT: .cfi_endproc
7811002
%result = call { fp128, fp128 } @llvm.sincos.f16(fp128 %a)
7821003
ret { fp128, fp128 } %result
7831004
}

0 commit comments

Comments
 (0)