aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/AVR/llvm.sincos.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/AVR/llvm.sincos.ll')
-rw-r--r--llvm/test/CodeGen/AVR/llvm.sincos.ll1183
1 files changed, 356 insertions, 827 deletions
diff --git a/llvm/test/CodeGen/AVR/llvm.sincos.ll b/llvm/test/CodeGen/AVR/llvm.sincos.ll
index 897101d..b70b8d3 100644
--- a/llvm/test/CodeGen/AVR/llvm.sincos.ll
+++ b/llvm/test/CodeGen/AVR/llvm.sincos.ll
@@ -3,630 +3,266 @@
; RUN: llc -mtriple=avr-unknown-linux-gnu < %s | FileCheck -check-prefixes=CHECK,GNU %s
define { half, half } @test_sincos_f16(half %a) #0 {
-; NONGNU-LABEL: test_sincos_f16:
-; NONGNU: ; %bb.0:
-; NONGNU-NEXT: push r12
-; NONGNU-NEXT: push r13
-; NONGNU-NEXT: push r14
-; NONGNU-NEXT: push r15
-; NONGNU-NEXT: push r16
-; NONGNU-NEXT: push r17
-; NONGNU-NEXT: mov r24, r22
-; NONGNU-NEXT: mov r25, r23
-; NONGNU-NEXT: rcall __extendhfsf2
-; NONGNU-NEXT: mov r16, r22
-; NONGNU-NEXT: mov r17, r23
-; NONGNU-NEXT: mov r14, r24
-; NONGNU-NEXT: mov r15, r25
-; NONGNU-NEXT: rcall sin
-; NONGNU-NEXT: rcall __truncsfhf2
-; NONGNU-NEXT: mov r12, r24
-; NONGNU-NEXT: mov r13, r25
-; NONGNU-NEXT: mov r22, r16
-; NONGNU-NEXT: mov r23, r17
-; NONGNU-NEXT: mov r24, r14
-; NONGNU-NEXT: mov r25, r15
-; NONGNU-NEXT: rcall cos
-; NONGNU-NEXT: rcall __truncsfhf2
-; NONGNU-NEXT: mov r22, r24
-; NONGNU-NEXT: mov r23, r25
-; NONGNU-NEXT: mov r18, r12
-; NONGNU-NEXT: mov r19, r13
-; NONGNU-NEXT: pop r17
-; NONGNU-NEXT: pop r16
-; NONGNU-NEXT: pop r15
-; NONGNU-NEXT: pop r14
-; NONGNU-NEXT: pop r13
-; NONGNU-NEXT: pop r12
-; NONGNU-NEXT: ret
-;
-; GNU-LABEL: test_sincos_f16:
-; GNU: ; %bb.0:
-; GNU-NEXT: push r16
-; GNU-NEXT: push r17
-; GNU-NEXT: push r28
-; GNU-NEXT: push r29
-; GNU-NEXT: in r28, 61
-; GNU-NEXT: in r29, 62
-; GNU-NEXT: sbiw r28, 8
-; GNU-NEXT: in r0, 63
-; GNU-NEXT: cli
-; GNU-NEXT: out 62, r29
-; GNU-NEXT: out 63, r0
-; GNU-NEXT: out 61, r28
-; GNU-NEXT: mov r24, r22
-; GNU-NEXT: mov r25, r23
-; GNU-NEXT: rcall __extendhfsf2
-; GNU-NEXT: mov r20, r28
-; GNU-NEXT: mov r21, r29
-; GNU-NEXT: subi r20, 251
-; GNU-NEXT: sbci r21, 255
-; GNU-NEXT: mov r18, r28
-; GNU-NEXT: mov r19, r29
-; GNU-NEXT: subi r18, 255
-; GNU-NEXT: sbci r19, 255
-; GNU-NEXT: rcall sincosf
-; GNU-NEXT: ldd r22, Y+5
-; GNU-NEXT: ldd r23, Y+6
-; GNU-NEXT: ldd r24, Y+7
-; GNU-NEXT: ldd r25, Y+8
-; GNU-NEXT: rcall __truncsfhf2
-; GNU-NEXT: mov r16, r24
-; GNU-NEXT: mov r17, r25
-; GNU-NEXT: ldd r22, Y+1
-; GNU-NEXT: ldd r23, Y+2
-; GNU-NEXT: ldd r24, Y+3
-; GNU-NEXT: ldd r25, Y+4
-; GNU-NEXT: rcall __truncsfhf2
-; GNU-NEXT: mov r22, r24
-; GNU-NEXT: mov r23, r25
-; GNU-NEXT: mov r18, r16
-; GNU-NEXT: mov r19, r17
-; GNU-NEXT: adiw r28, 8
-; GNU-NEXT: in r0, 63
-; GNU-NEXT: cli
-; GNU-NEXT: out 62, r29
-; GNU-NEXT: out 63, r0
-; GNU-NEXT: out 61, r28
-; GNU-NEXT: pop r29
-; GNU-NEXT: pop r28
-; GNU-NEXT: pop r17
-; GNU-NEXT: pop r16
-; GNU-NEXT: ret
+; CHECK-LABEL: test_sincos_f16:
+; CHECK: ; %bb.0:
+; CHECK-NEXT: push r12
+; CHECK-NEXT: push r13
+; CHECK-NEXT: push r14
+; CHECK-NEXT: push r15
+; CHECK-NEXT: push r16
+; CHECK-NEXT: push r17
+; CHECK-NEXT: mov r24, r22
+; CHECK-NEXT: mov r25, r23
+; CHECK-NEXT: rcall __extendhfsf2
+; CHECK-NEXT: mov r16, r22
+; CHECK-NEXT: mov r17, r23
+; CHECK-NEXT: mov r14, r24
+; CHECK-NEXT: mov r15, r25
+; CHECK-NEXT: rcall sin
+; CHECK-NEXT: rcall __truncsfhf2
+; CHECK-NEXT: mov r12, r24
+; CHECK-NEXT: mov r13, r25
+; CHECK-NEXT: mov r22, r16
+; CHECK-NEXT: mov r23, r17
+; CHECK-NEXT: mov r24, r14
+; CHECK-NEXT: mov r25, r15
+; CHECK-NEXT: rcall cos
+; CHECK-NEXT: rcall __truncsfhf2
+; CHECK-NEXT: mov r22, r24
+; CHECK-NEXT: mov r23, r25
+; CHECK-NEXT: mov r18, r12
+; CHECK-NEXT: mov r19, r13
+; CHECK-NEXT: pop r17
+; CHECK-NEXT: pop r16
+; CHECK-NEXT: pop r15
+; CHECK-NEXT: pop r14
+; CHECK-NEXT: pop r13
+; CHECK-NEXT: pop r12
+; CHECK-NEXT: ret
%result = call { half, half } @llvm.sincos.f16(half %a)
ret { half, half } %result
}
define half @test_sincos_f16_only_use_sin(half %a) #0 {
-; NONGNU-LABEL: test_sincos_f16_only_use_sin:
-; NONGNU: ; %bb.0:
-; NONGNU-NEXT: mov r24, r22
-; NONGNU-NEXT: mov r25, r23
-; NONGNU-NEXT: rcall __extendhfsf2
-; NONGNU-NEXT: rcall sin
-; NONGNU-NEXT: rcall __truncsfhf2
-; NONGNU-NEXT: mov r22, r24
-; NONGNU-NEXT: mov r23, r25
-; NONGNU-NEXT: ret
-;
-; GNU-LABEL: test_sincos_f16_only_use_sin:
-; GNU: ; %bb.0:
-; GNU-NEXT: push r28
-; GNU-NEXT: push r29
-; GNU-NEXT: in r28, 61
-; GNU-NEXT: in r29, 62
-; GNU-NEXT: sbiw r28, 8
-; GNU-NEXT: in r0, 63
-; GNU-NEXT: cli
-; GNU-NEXT: out 62, r29
-; GNU-NEXT: out 63, r0
-; GNU-NEXT: out 61, r28
-; GNU-NEXT: mov r24, r22
-; GNU-NEXT: mov r25, r23
-; GNU-NEXT: rcall __extendhfsf2
-; GNU-NEXT: mov r20, r28
-; GNU-NEXT: mov r21, r29
-; GNU-NEXT: subi r20, 251
-; GNU-NEXT: sbci r21, 255
-; GNU-NEXT: mov r18, r28
-; GNU-NEXT: mov r19, r29
-; GNU-NEXT: subi r18, 255
-; GNU-NEXT: sbci r19, 255
-; GNU-NEXT: rcall sincosf
-; GNU-NEXT: ldd r22, Y+5
-; GNU-NEXT: ldd r23, Y+6
-; GNU-NEXT: ldd r24, Y+7
-; GNU-NEXT: ldd r25, Y+8
-; GNU-NEXT: rcall __truncsfhf2
-; GNU-NEXT: mov r22, r24
-; GNU-NEXT: mov r23, r25
-; GNU-NEXT: adiw r28, 8
-; GNU-NEXT: in r0, 63
-; GNU-NEXT: cli
-; GNU-NEXT: out 62, r29
-; GNU-NEXT: out 63, r0
-; GNU-NEXT: out 61, r28
-; GNU-NEXT: pop r29
-; GNU-NEXT: pop r28
-; GNU-NEXT: ret
+; CHECK-LABEL: test_sincos_f16_only_use_sin:
+; CHECK: ; %bb.0:
+; CHECK-NEXT: mov r24, r22
+; CHECK-NEXT: mov r25, r23
+; CHECK-NEXT: rcall __extendhfsf2
+; CHECK-NEXT: rcall sin
+; CHECK-NEXT: rcall __truncsfhf2
+; CHECK-NEXT: mov r22, r24
+; CHECK-NEXT: mov r23, r25
+; CHECK-NEXT: ret
%result = call { half, half } @llvm.sincos.f16(half %a)
%result.0 = extractvalue { half, half } %result, 0
ret half %result.0
}
define half @test_sincos_f16_only_use_cos(half %a) #0 {
-; NONGNU-LABEL: test_sincos_f16_only_use_cos:
-; NONGNU: ; %bb.0:
-; NONGNU-NEXT: mov r24, r22
-; NONGNU-NEXT: mov r25, r23
-; NONGNU-NEXT: rcall __extendhfsf2
-; NONGNU-NEXT: rcall cos
-; NONGNU-NEXT: rcall __truncsfhf2
-; NONGNU-NEXT: mov r22, r24
-; NONGNU-NEXT: mov r23, r25
-; NONGNU-NEXT: ret
-;
-; GNU-LABEL: test_sincos_f16_only_use_cos:
-; GNU: ; %bb.0:
-; GNU-NEXT: push r28
-; GNU-NEXT: push r29
-; GNU-NEXT: in r28, 61
-; GNU-NEXT: in r29, 62
-; GNU-NEXT: sbiw r28, 8
-; GNU-NEXT: in r0, 63
-; GNU-NEXT: cli
-; GNU-NEXT: out 62, r29
-; GNU-NEXT: out 63, r0
-; GNU-NEXT: out 61, r28
-; GNU-NEXT: mov r24, r22
-; GNU-NEXT: mov r25, r23
-; GNU-NEXT: rcall __extendhfsf2
-; GNU-NEXT: mov r20, r28
-; GNU-NEXT: mov r21, r29
-; GNU-NEXT: subi r20, 251
-; GNU-NEXT: sbci r21, 255
-; GNU-NEXT: mov r18, r28
-; GNU-NEXT: mov r19, r29
-; GNU-NEXT: subi r18, 255
-; GNU-NEXT: sbci r19, 255
-; GNU-NEXT: rcall sincosf
-; GNU-NEXT: ldd r22, Y+1
-; GNU-NEXT: ldd r23, Y+2
-; GNU-NEXT: ldd r24, Y+3
-; GNU-NEXT: ldd r25, Y+4
-; GNU-NEXT: rcall __truncsfhf2
-; GNU-NEXT: mov r22, r24
-; GNU-NEXT: mov r23, r25
-; GNU-NEXT: adiw r28, 8
-; GNU-NEXT: in r0, 63
-; GNU-NEXT: cli
-; GNU-NEXT: out 62, r29
-; GNU-NEXT: out 63, r0
-; GNU-NEXT: out 61, r28
-; GNU-NEXT: pop r29
-; GNU-NEXT: pop r28
-; GNU-NEXT: ret
+; CHECK-LABEL: test_sincos_f16_only_use_cos:
+; CHECK: ; %bb.0:
+; CHECK-NEXT: mov r24, r22
+; CHECK-NEXT: mov r25, r23
+; CHECK-NEXT: rcall __extendhfsf2
+; CHECK-NEXT: rcall cos
+; CHECK-NEXT: rcall __truncsfhf2
+; CHECK-NEXT: mov r22, r24
+; CHECK-NEXT: mov r23, r25
+; CHECK-NEXT: ret
%result = call { half, half } @llvm.sincos.f16(half %a)
%result.1 = extractvalue { half, half } %result, 1
ret half %result.1
}
define { <2 x half>, <2 x half> } @test_sincos_v2f16(<2 x half> %a) #0 {
-; NONGNU-LABEL: test_sincos_v2f16:
-; NONGNU: ; %bb.0:
-; NONGNU-NEXT: push r6
-; NONGNU-NEXT: push r7
-; NONGNU-NEXT: push r8
-; NONGNU-NEXT: push r9
-; NONGNU-NEXT: push r10
-; NONGNU-NEXT: push r11
-; NONGNU-NEXT: push r12
-; NONGNU-NEXT: push r13
-; NONGNU-NEXT: push r14
-; NONGNU-NEXT: push r15
-; NONGNU-NEXT: push r16
-; NONGNU-NEXT: push r17
-; NONGNU-NEXT: mov r10, r22
-; NONGNU-NEXT: mov r11, r23
-; NONGNU-NEXT: rcall __extendhfsf2
-; NONGNU-NEXT: mov r16, r22
-; NONGNU-NEXT: mov r17, r23
-; NONGNU-NEXT: mov r14, r24
-; NONGNU-NEXT: mov r15, r25
-; NONGNU-NEXT: rcall sin
-; NONGNU-NEXT: rcall __truncsfhf2
-; NONGNU-NEXT: mov r12, r24
-; NONGNU-NEXT: mov r13, r25
-; NONGNU-NEXT: mov r24, r10
-; NONGNU-NEXT: mov r25, r11
-; NONGNU-NEXT: rcall __extendhfsf2
-; NONGNU-NEXT: mov r10, r22
-; NONGNU-NEXT: mov r11, r23
-; NONGNU-NEXT: mov r8, r24
-; NONGNU-NEXT: mov r9, r25
-; NONGNU-NEXT: rcall cos
-; NONGNU-NEXT: rcall __truncsfhf2
-; NONGNU-NEXT: mov r6, r24
-; NONGNU-NEXT: mov r7, r25
-; NONGNU-NEXT: mov r22, r10
-; NONGNU-NEXT: mov r23, r11
-; NONGNU-NEXT: mov r24, r8
-; NONGNU-NEXT: mov r25, r9
-; NONGNU-NEXT: rcall sin
-; NONGNU-NEXT: rcall __truncsfhf2
-; NONGNU-NEXT: mov r10, r24
-; NONGNU-NEXT: mov r11, r25
-; NONGNU-NEXT: mov r22, r16
-; NONGNU-NEXT: mov r23, r17
-; NONGNU-NEXT: mov r24, r14
-; NONGNU-NEXT: mov r25, r15
-; NONGNU-NEXT: rcall cos
-; NONGNU-NEXT: rcall __truncsfhf2
-; NONGNU-NEXT: mov r18, r10
-; NONGNU-NEXT: mov r19, r11
-; NONGNU-NEXT: mov r20, r12
-; NONGNU-NEXT: mov r21, r13
-; NONGNU-NEXT: mov r22, r6
-; NONGNU-NEXT: mov r23, r7
-; NONGNU-NEXT: pop r17
-; NONGNU-NEXT: pop r16
-; NONGNU-NEXT: pop r15
-; NONGNU-NEXT: pop r14
-; NONGNU-NEXT: pop r13
-; NONGNU-NEXT: pop r12
-; NONGNU-NEXT: pop r11
-; NONGNU-NEXT: pop r10
-; NONGNU-NEXT: pop r9
-; NONGNU-NEXT: pop r8
-; NONGNU-NEXT: pop r7
-; NONGNU-NEXT: pop r6
-; NONGNU-NEXT: ret
-;
-; GNU-LABEL: test_sincos_v2f16:
-; GNU: ; %bb.0:
-; GNU-NEXT: push r12
-; GNU-NEXT: push r13
-; GNU-NEXT: push r14
-; GNU-NEXT: push r15
-; GNU-NEXT: push r16
-; GNU-NEXT: push r17
-; GNU-NEXT: push r28
-; GNU-NEXT: push r29
-; GNU-NEXT: in r28, 61
-; GNU-NEXT: in r29, 62
-; GNU-NEXT: sbiw r28, 16
-; GNU-NEXT: in r0, 63
-; GNU-NEXT: cli
-; GNU-NEXT: out 62, r29
-; GNU-NEXT: out 63, r0
-; GNU-NEXT: out 61, r28
-; GNU-NEXT: mov r16, r24
-; GNU-NEXT: mov r17, r25
-; GNU-NEXT: mov r24, r22
-; GNU-NEXT: mov r25, r23
-; GNU-NEXT: rcall __extendhfsf2
-; GNU-NEXT: mov r20, r28
-; GNU-NEXT: mov r21, r29
-; GNU-NEXT: subi r20, 243
-; GNU-NEXT: sbci r21, 255
-; GNU-NEXT: mov r18, r28
-; GNU-NEXT: mov r19, r29
-; GNU-NEXT: subi r18, 247
-; GNU-NEXT: sbci r19, 255
-; GNU-NEXT: rcall sincosf
-; GNU-NEXT: mov r24, r16
-; GNU-NEXT: mov r25, r17
-; GNU-NEXT: rcall __extendhfsf2
-; GNU-NEXT: mov r20, r28
-; GNU-NEXT: mov r21, r29
-; GNU-NEXT: subi r20, 251
-; GNU-NEXT: sbci r21, 255
-; GNU-NEXT: mov r18, r28
-; GNU-NEXT: mov r19, r29
-; GNU-NEXT: subi r18, 255
-; GNU-NEXT: sbci r19, 255
-; GNU-NEXT: rcall sincosf
-; GNU-NEXT: ldd r22, Y+13
-; GNU-NEXT: ldd r23, Y+14
-; GNU-NEXT: ldd r24, Y+15
-; GNU-NEXT: ldd r25, Y+16
-; GNU-NEXT: rcall __truncsfhf2
-; GNU-NEXT: mov r16, r24
-; GNU-NEXT: mov r17, r25
-; GNU-NEXT: ldd r22, Y+5
-; GNU-NEXT: ldd r23, Y+6
-; GNU-NEXT: ldd r24, Y+7
-; GNU-NEXT: ldd r25, Y+8
-; GNU-NEXT: rcall __truncsfhf2
-; GNU-NEXT: mov r14, r24
-; GNU-NEXT: mov r15, r25
-; GNU-NEXT: ldd r22, Y+9
-; GNU-NEXT: ldd r23, Y+10
-; GNU-NEXT: ldd r24, Y+11
-; GNU-NEXT: ldd r25, Y+12
-; GNU-NEXT: rcall __truncsfhf2
-; GNU-NEXT: mov r12, r24
-; GNU-NEXT: mov r13, r25
-; GNU-NEXT: ldd r22, Y+1
-; GNU-NEXT: ldd r23, Y+2
-; GNU-NEXT: ldd r24, Y+3
-; GNU-NEXT: ldd r25, Y+4
-; GNU-NEXT: rcall __truncsfhf2
-; GNU-NEXT: mov r18, r16
-; GNU-NEXT: mov r19, r17
-; GNU-NEXT: mov r20, r14
-; GNU-NEXT: mov r21, r15
-; GNU-NEXT: mov r22, r12
-; GNU-NEXT: mov r23, r13
-; GNU-NEXT: adiw r28, 16
-; GNU-NEXT: in r0, 63
-; GNU-NEXT: cli
-; GNU-NEXT: out 62, r29
-; GNU-NEXT: out 63, r0
-; GNU-NEXT: out 61, r28
-; GNU-NEXT: pop r29
-; GNU-NEXT: pop r28
-; GNU-NEXT: pop r17
-; GNU-NEXT: pop r16
-; GNU-NEXT: pop r15
-; GNU-NEXT: pop r14
-; GNU-NEXT: pop r13
-; GNU-NEXT: pop r12
-; GNU-NEXT: ret
+; CHECK-LABEL: test_sincos_v2f16:
+; CHECK: ; %bb.0:
+; CHECK-NEXT: push r6
+; CHECK-NEXT: push r7
+; CHECK-NEXT: push r8
+; CHECK-NEXT: push r9
+; CHECK-NEXT: push r10
+; CHECK-NEXT: push r11
+; CHECK-NEXT: push r12
+; CHECK-NEXT: push r13
+; CHECK-NEXT: push r14
+; CHECK-NEXT: push r15
+; CHECK-NEXT: push r16
+; CHECK-NEXT: push r17
+; CHECK-NEXT: mov r10, r22
+; CHECK-NEXT: mov r11, r23
+; CHECK-NEXT: rcall __extendhfsf2
+; CHECK-NEXT: mov r16, r22
+; CHECK-NEXT: mov r17, r23
+; CHECK-NEXT: mov r14, r24
+; CHECK-NEXT: mov r15, r25
+; CHECK-NEXT: rcall sin
+; CHECK-NEXT: rcall __truncsfhf2
+; CHECK-NEXT: mov r12, r24
+; CHECK-NEXT: mov r13, r25
+; CHECK-NEXT: mov r24, r10
+; CHECK-NEXT: mov r25, r11
+; CHECK-NEXT: rcall __extendhfsf2
+; CHECK-NEXT: mov r10, r22
+; CHECK-NEXT: mov r11, r23
+; CHECK-NEXT: mov r8, r24
+; CHECK-NEXT: mov r9, r25
+; CHECK-NEXT: rcall cos
+; CHECK-NEXT: rcall __truncsfhf2
+; CHECK-NEXT: mov r6, r24
+; CHECK-NEXT: mov r7, r25
+; CHECK-NEXT: mov r22, r10
+; CHECK-NEXT: mov r23, r11
+; CHECK-NEXT: mov r24, r8
+; CHECK-NEXT: mov r25, r9
+; CHECK-NEXT: rcall sin
+; CHECK-NEXT: rcall __truncsfhf2
+; CHECK-NEXT: mov r10, r24
+; CHECK-NEXT: mov r11, r25
+; CHECK-NEXT: mov r22, r16
+; CHECK-NEXT: mov r23, r17
+; CHECK-NEXT: mov r24, r14
+; CHECK-NEXT: mov r25, r15
+; CHECK-NEXT: rcall cos
+; CHECK-NEXT: rcall __truncsfhf2
+; CHECK-NEXT: mov r18, r10
+; CHECK-NEXT: mov r19, r11
+; CHECK-NEXT: mov r20, r12
+; CHECK-NEXT: mov r21, r13
+; CHECK-NEXT: mov r22, r6
+; CHECK-NEXT: mov r23, r7
+; CHECK-NEXT: pop r17
+; CHECK-NEXT: pop r16
+; CHECK-NEXT: pop r15
+; CHECK-NEXT: pop r14
+; CHECK-NEXT: pop r13
+; CHECK-NEXT: pop r12
+; CHECK-NEXT: pop r11
+; CHECK-NEXT: pop r10
+; CHECK-NEXT: pop r9
+; CHECK-NEXT: pop r8
+; CHECK-NEXT: pop r7
+; CHECK-NEXT: pop r6
+; CHECK-NEXT: ret
%result = call { <2 x half>, <2 x half> } @llvm.sincos.v2f16(<2 x half> %a)
ret { <2 x half>, <2 x half> } %result
}
define { float, float } @test_sincos_f32(float %a) #0 {
-; NONGNU-LABEL: test_sincos_f32:
-; NONGNU: ; %bb.0:
-; NONGNU-NEXT: push r10
-; NONGNU-NEXT: push r11
-; NONGNU-NEXT: push r12
-; NONGNU-NEXT: push r13
-; NONGNU-NEXT: push r14
-; NONGNU-NEXT: push r15
-; NONGNU-NEXT: push r16
-; NONGNU-NEXT: push r17
-; NONGNU-NEXT: mov r16, r24
-; NONGNU-NEXT: mov r17, r25
-; NONGNU-NEXT: mov r14, r22
-; NONGNU-NEXT: mov r15, r23
-; NONGNU-NEXT: rcall sin
-; NONGNU-NEXT: mov r12, r22
-; NONGNU-NEXT: mov r13, r23
-; NONGNU-NEXT: mov r10, r24
-; NONGNU-NEXT: mov r11, r25
-; NONGNU-NEXT: mov r22, r14
-; NONGNU-NEXT: mov r23, r15
-; NONGNU-NEXT: mov r24, r16
-; NONGNU-NEXT: mov r25, r17
-; NONGNU-NEXT: rcall cos
-; NONGNU-NEXT: mov r18, r12
-; NONGNU-NEXT: mov r19, r13
-; NONGNU-NEXT: mov r20, r10
-; NONGNU-NEXT: mov r21, r11
-; NONGNU-NEXT: pop r17
-; NONGNU-NEXT: pop r16
-; NONGNU-NEXT: pop r15
-; NONGNU-NEXT: pop r14
-; NONGNU-NEXT: pop r13
-; NONGNU-NEXT: pop r12
-; NONGNU-NEXT: pop r11
-; NONGNU-NEXT: pop r10
-; NONGNU-NEXT: ret
-;
-; GNU-LABEL: test_sincos_f32:
-; GNU: ; %bb.0:
-; GNU-NEXT: push r28
-; GNU-NEXT: push r29
-; GNU-NEXT: in r28, 61
-; GNU-NEXT: in r29, 62
-; GNU-NEXT: sbiw r28, 8
-; GNU-NEXT: in r0, 63
-; GNU-NEXT: cli
-; GNU-NEXT: out 62, r29
-; GNU-NEXT: out 63, r0
-; GNU-NEXT: out 61, r28
-; GNU-NEXT: mov r20, r28
-; GNU-NEXT: mov r21, r29
-; GNU-NEXT: subi r20, 251
-; GNU-NEXT: sbci r21, 255
-; GNU-NEXT: mov r18, r28
-; GNU-NEXT: mov r19, r29
-; GNU-NEXT: subi r18, 255
-; GNU-NEXT: sbci r19, 255
-; GNU-NEXT: rcall sincosf
-; GNU-NEXT: ldd r18, Y+5
-; GNU-NEXT: ldd r19, Y+6
-; GNU-NEXT: ldd r20, Y+7
-; GNU-NEXT: ldd r21, Y+8
-; GNU-NEXT: ldd r22, Y+1
-; GNU-NEXT: ldd r23, Y+2
-; GNU-NEXT: ldd r24, Y+3
-; GNU-NEXT: ldd r25, Y+4
-; GNU-NEXT: adiw r28, 8
-; GNU-NEXT: in r0, 63
-; GNU-NEXT: cli
-; GNU-NEXT: out 62, r29
-; GNU-NEXT: out 63, r0
-; GNU-NEXT: out 61, r28
-; GNU-NEXT: pop r29
-; GNU-NEXT: pop r28
-; GNU-NEXT: ret
+; CHECK-LABEL: test_sincos_f32:
+; CHECK: ; %bb.0:
+; CHECK-NEXT: push r10
+; CHECK-NEXT: push r11
+; CHECK-NEXT: push r12
+; CHECK-NEXT: push r13
+; CHECK-NEXT: push r14
+; CHECK-NEXT: push r15
+; CHECK-NEXT: push r16
+; CHECK-NEXT: push r17
+; CHECK-NEXT: mov r16, r24
+; CHECK-NEXT: mov r17, r25
+; CHECK-NEXT: mov r14, r22
+; CHECK-NEXT: mov r15, r23
+; CHECK-NEXT: rcall sin
+; CHECK-NEXT: mov r12, r22
+; CHECK-NEXT: mov r13, r23
+; CHECK-NEXT: mov r10, r24
+; CHECK-NEXT: mov r11, r25
+; CHECK-NEXT: mov r22, r14
+; CHECK-NEXT: mov r23, r15
+; CHECK-NEXT: mov r24, r16
+; CHECK-NEXT: mov r25, r17
+; CHECK-NEXT: rcall cos
+; CHECK-NEXT: mov r18, r12
+; CHECK-NEXT: mov r19, r13
+; CHECK-NEXT: mov r20, r10
+; CHECK-NEXT: mov r21, r11
+; CHECK-NEXT: pop r17
+; CHECK-NEXT: pop r16
+; CHECK-NEXT: pop r15
+; CHECK-NEXT: pop r14
+; CHECK-NEXT: pop r13
+; CHECK-NEXT: pop r12
+; CHECK-NEXT: pop r11
+; CHECK-NEXT: pop r10
+; CHECK-NEXT: ret
%result = call { float, float } @llvm.sincos.f32(float %a)
ret { float, float } %result
}
define { <2 x float>, <2 x float> } @test_sincos_v2f32(<2 x float> %a) #0 {
-; NONGNU-LABEL: test_sincos_v2f32:
-; NONGNU: ; %bb.0:
-; NONGNU-NEXT: push r8
-; NONGNU-NEXT: push r9
-; NONGNU-NEXT: push r10
-; NONGNU-NEXT: push r11
-; NONGNU-NEXT: push r12
-; NONGNU-NEXT: push r13
-; NONGNU-NEXT: push r14
-; NONGNU-NEXT: push r15
-; NONGNU-NEXT: mov r14, r22
-; NONGNU-NEXT: mov r15, r23
-; NONGNU-NEXT: mov r12, r20
-; NONGNU-NEXT: mov r13, r21
-; NONGNU-NEXT: mov r10, r18
-; NONGNU-NEXT: mov r11, r19
-; NONGNU-NEXT: mov r8, r24
-; NONGNU-NEXT: mov r9, r25
-; NONGNU-NEXT: mov r22, r12
-; NONGNU-NEXT: mov r23, r13
-; NONGNU-NEXT: mov r24, r14
-; NONGNU-NEXT: mov r25, r15
-; NONGNU-NEXT: rcall cos
-; NONGNU-NEXT: mov r30, r8
-; NONGNU-NEXT: mov r31, r9
-; NONGNU-NEXT: std Z+15, r25
-; NONGNU-NEXT: std Z+14, r24
-; NONGNU-NEXT: std Z+13, r23
-; NONGNU-NEXT: std Z+12, r22
-; NONGNU-NEXT: mov r22, r16
-; NONGNU-NEXT: mov r23, r17
-; NONGNU-NEXT: mov r24, r10
-; NONGNU-NEXT: mov r25, r11
-; NONGNU-NEXT: rcall cos
-; NONGNU-NEXT: mov r30, r8
-; NONGNU-NEXT: mov r31, r9
-; NONGNU-NEXT: std Z+11, r25
-; NONGNU-NEXT: std Z+10, r24
-; NONGNU-NEXT: std Z+9, r23
-; NONGNU-NEXT: std Z+8, r22
-; NONGNU-NEXT: mov r22, r12
-; NONGNU-NEXT: mov r23, r13
-; NONGNU-NEXT: mov r24, r14
-; NONGNU-NEXT: mov r25, r15
-; NONGNU-NEXT: rcall sin
-; NONGNU-NEXT: mov r30, r8
-; NONGNU-NEXT: mov r31, r9
-; NONGNU-NEXT: std Z+7, r25
-; NONGNU-NEXT: std Z+6, r24
-; NONGNU-NEXT: std Z+5, r23
-; NONGNU-NEXT: std Z+4, r22
-; NONGNU-NEXT: mov r22, r16
-; NONGNU-NEXT: mov r23, r17
-; NONGNU-NEXT: mov r24, r10
-; NONGNU-NEXT: mov r25, r11
-; NONGNU-NEXT: rcall sin
-; NONGNU-NEXT: mov r30, r8
-; NONGNU-NEXT: mov r31, r9
-; NONGNU-NEXT: std Z+3, r25
-; NONGNU-NEXT: std Z+2, r24
-; NONGNU-NEXT: std Z+1, r23
-; NONGNU-NEXT: st Z, r22
-; NONGNU-NEXT: pop r15
-; NONGNU-NEXT: pop r14
-; NONGNU-NEXT: pop r13
-; NONGNU-NEXT: pop r12
-; NONGNU-NEXT: pop r11
-; NONGNU-NEXT: pop r10
-; NONGNU-NEXT: pop r9
-; NONGNU-NEXT: pop r8
-; NONGNU-NEXT: ret
-;
-; GNU-LABEL: test_sincos_v2f32:
-; GNU: ; %bb.0:
-; GNU-NEXT: push r12
-; GNU-NEXT: push r13
-; GNU-NEXT: push r14
-; GNU-NEXT: push r15
-; GNU-NEXT: push r28
-; GNU-NEXT: push r29
-; GNU-NEXT: in r28, 61
-; GNU-NEXT: in r29, 62
-; GNU-NEXT: sbiw r28, 16
-; GNU-NEXT: in r0, 63
-; GNU-NEXT: cli
-; GNU-NEXT: out 62, r29
-; GNU-NEXT: out 63, r0
-; GNU-NEXT: out 61, r28
-; GNU-NEXT: mov r30, r22
-; GNU-NEXT: mov r31, r23
-; GNU-NEXT: mov r14, r18
-; GNU-NEXT: mov r15, r19
-; GNU-NEXT: mov r12, r24
-; GNU-NEXT: mov r13, r25
-; GNU-NEXT: mov r26, r28
-; GNU-NEXT: mov r27, r29
-; GNU-NEXT: adiw r26, 13
-; GNU-NEXT: mov r18, r28
-; GNU-NEXT: mov r19, r29
-; GNU-NEXT: subi r18, 247
-; GNU-NEXT: sbci r19, 255
-; GNU-NEXT: mov r22, r20
-; GNU-NEXT: mov r23, r21
-; GNU-NEXT: mov r24, r30
-; GNU-NEXT: mov r25, r31
-; GNU-NEXT: mov r20, r26
-; GNU-NEXT: mov r21, r27
-; GNU-NEXT: rcall sincosf
-; GNU-NEXT: mov r20, r28
-; GNU-NEXT: mov r21, r29
-; GNU-NEXT: subi r20, 251
-; GNU-NEXT: sbci r21, 255
-; GNU-NEXT: mov r18, r28
-; GNU-NEXT: mov r19, r29
-; GNU-NEXT: subi r18, 255
-; GNU-NEXT: sbci r19, 255
-; GNU-NEXT: mov r22, r16
-; GNU-NEXT: mov r23, r17
-; GNU-NEXT: mov r24, r14
-; GNU-NEXT: mov r25, r15
-; GNU-NEXT: rcall sincosf
-; GNU-NEXT: ldd r24, Y+11
-; GNU-NEXT: ldd r25, Y+12
-; GNU-NEXT: mov r30, r12
-; GNU-NEXT: mov r31, r13
-; GNU-NEXT: std Z+15, r25
-; GNU-NEXT: std Z+14, r24
-; GNU-NEXT: ldd r24, Y+9
-; GNU-NEXT: ldd r25, Y+10
-; GNU-NEXT: std Z+13, r25
-; GNU-NEXT: std Z+12, r24
-; GNU-NEXT: ldd r24, Y+3
-; GNU-NEXT: ldd r25, Y+4
-; GNU-NEXT: std Z+11, r25
-; GNU-NEXT: std Z+10, r24
-; GNU-NEXT: ldd r24, Y+1
-; GNU-NEXT: ldd r25, Y+2
-; GNU-NEXT: std Z+9, r25
-; GNU-NEXT: std Z+8, r24
-; GNU-NEXT: ldd r24, Y+15
-; GNU-NEXT: ldd r25, Y+16
-; GNU-NEXT: std Z+7, r25
-; GNU-NEXT: std Z+6, r24
-; GNU-NEXT: ldd r24, Y+13
-; GNU-NEXT: ldd r25, Y+14
-; GNU-NEXT: std Z+5, r25
-; GNU-NEXT: std Z+4, r24
-; GNU-NEXT: ldd r24, Y+7
-; GNU-NEXT: ldd r25, Y+8
-; GNU-NEXT: std Z+3, r25
-; GNU-NEXT: std Z+2, r24
-; GNU-NEXT: ldd r24, Y+5
-; GNU-NEXT: ldd r25, Y+6
-; GNU-NEXT: std Z+1, r25
-; GNU-NEXT: st Z, r24
-; GNU-NEXT: adiw r28, 16
-; GNU-NEXT: in r0, 63
-; GNU-NEXT: cli
-; GNU-NEXT: out 62, r29
-; GNU-NEXT: out 63, r0
-; GNU-NEXT: out 61, r28
-; GNU-NEXT: pop r29
-; GNU-NEXT: pop r28
-; GNU-NEXT: pop r15
-; GNU-NEXT: pop r14
-; GNU-NEXT: pop r13
-; GNU-NEXT: pop r12
-; GNU-NEXT: ret
+; CHECK-LABEL: test_sincos_v2f32:
+; CHECK: ; %bb.0:
+; CHECK-NEXT: push r8
+; CHECK-NEXT: push r9
+; CHECK-NEXT: push r10
+; CHECK-NEXT: push r11
+; CHECK-NEXT: push r12
+; CHECK-NEXT: push r13
+; CHECK-NEXT: push r14
+; CHECK-NEXT: push r15
+; CHECK-NEXT: mov r14, r22
+; CHECK-NEXT: mov r15, r23
+; CHECK-NEXT: mov r12, r20
+; CHECK-NEXT: mov r13, r21
+; CHECK-NEXT: mov r10, r18
+; CHECK-NEXT: mov r11, r19
+; CHECK-NEXT: mov r8, r24
+; CHECK-NEXT: mov r9, r25
+; CHECK-NEXT: mov r22, r12
+; CHECK-NEXT: mov r23, r13
+; CHECK-NEXT: mov r24, r14
+; CHECK-NEXT: mov r25, r15
+; CHECK-NEXT: rcall cos
+; CHECK-NEXT: mov r30, r8
+; CHECK-NEXT: mov r31, r9
+; CHECK-NEXT: std Z+15, r25
+; CHECK-NEXT: std Z+14, r24
+; CHECK-NEXT: std Z+13, r23
+; CHECK-NEXT: std Z+12, r22
+; CHECK-NEXT: mov r22, r16
+; CHECK-NEXT: mov r23, r17
+; CHECK-NEXT: mov r24, r10
+; CHECK-NEXT: mov r25, r11
+; CHECK-NEXT: rcall cos
+; CHECK-NEXT: mov r30, r8
+; CHECK-NEXT: mov r31, r9
+; CHECK-NEXT: std Z+11, r25
+; CHECK-NEXT: std Z+10, r24
+; CHECK-NEXT: std Z+9, r23
+; CHECK-NEXT: std Z+8, r22
+; CHECK-NEXT: mov r22, r12
+; CHECK-NEXT: mov r23, r13
+; CHECK-NEXT: mov r24, r14
+; CHECK-NEXT: mov r25, r15
+; CHECK-NEXT: rcall sin
+; CHECK-NEXT: mov r30, r8
+; CHECK-NEXT: mov r31, r9
+; CHECK-NEXT: std Z+7, r25
+; CHECK-NEXT: std Z+6, r24
+; CHECK-NEXT: std Z+5, r23
+; CHECK-NEXT: std Z+4, r22
+; CHECK-NEXT: mov r22, r16
+; CHECK-NEXT: mov r23, r17
+; CHECK-NEXT: mov r24, r10
+; CHECK-NEXT: mov r25, r11
+; CHECK-NEXT: rcall sin
+; CHECK-NEXT: mov r30, r8
+; CHECK-NEXT: mov r31, r9
+; CHECK-NEXT: std Z+3, r25
+; CHECK-NEXT: std Z+2, r24
+; CHECK-NEXT: std Z+1, r23
+; CHECK-NEXT: st Z, r22
+; CHECK-NEXT: pop r15
+; CHECK-NEXT: pop r14
+; CHECK-NEXT: pop r13
+; CHECK-NEXT: pop r12
+; CHECK-NEXT: pop r11
+; CHECK-NEXT: pop r10
+; CHECK-NEXT: pop r9
+; CHECK-NEXT: pop r8
+; CHECK-NEXT: ret
%result = call { <2 x float>, <2 x float> } @llvm.sincos.v2f32(<2 x float> %a)
ret { <2 x float>, <2 x float> } %result
}
@@ -644,235 +280,127 @@ define { <2 x float>, <2 x float> } @test_sincos_v2f32(<2 x float> %a) #0 {
; }
define { fp128, fp128 } @test_sincos_f128(fp128 %a) #0 {
-; NONGNU-LABEL: test_sincos_f128:
-; NONGNU: ; %bb.0:
-; NONGNU-NEXT: push r2
-; NONGNU-NEXT: push r3
-; NONGNU-NEXT: push r4
-; NONGNU-NEXT: push r5
-; NONGNU-NEXT: push r6
-; NONGNU-NEXT: push r7
-; NONGNU-NEXT: push r28
-; NONGNU-NEXT: push r29
-; NONGNU-NEXT: in r28, 61
-; NONGNU-NEXT: in r29, 62
-; NONGNU-NEXT: sbiw r28, 34
-; NONGNU-NEXT: in r0, 63
-; NONGNU-NEXT: cli
-; NONGNU-NEXT: out 62, r29
-; NONGNU-NEXT: out 63, r0
-; NONGNU-NEXT: out 61, r28
-; NONGNU-NEXT: std Y+2, r23 ; 2-byte Folded Spill
-; NONGNU-NEXT: std Y+1, r22 ; 2-byte Folded Spill
-; NONGNU-NEXT: mov r2, r20
-; NONGNU-NEXT: mov r3, r21
-; NONGNU-NEXT: mov r4, r18
-; NONGNU-NEXT: mov r5, r19
-; NONGNU-NEXT: mov r6, r24
-; NONGNU-NEXT: mov r7, r25
-; NONGNU-NEXT: mov r24, r28
-; NONGNU-NEXT: mov r25, r29
-; NONGNU-NEXT: adiw r24, 3
-; NONGNU-NEXT: rcall cosl
-; NONGNU-NEXT: mov r24, r28
-; NONGNU-NEXT: mov r25, r29
-; NONGNU-NEXT: adiw r24, 19
-; NONGNU-NEXT: mov r18, r4
-; NONGNU-NEXT: mov r19, r5
-; NONGNU-NEXT: mov r20, r2
-; NONGNU-NEXT: mov r21, r3
-; NONGNU-NEXT: ldd r22, Y+1 ; 2-byte Folded Reload
-; NONGNU-NEXT: ldd r23, Y+2 ; 2-byte Folded Reload
-; NONGNU-NEXT: rcall sinl
-; NONGNU-NEXT: ldd r24, Y+17
-; NONGNU-NEXT: ldd r25, Y+18
-; NONGNU-NEXT: mov r30, r6
-; NONGNU-NEXT: mov r31, r7
-; NONGNU-NEXT: std Z+31, r25
-; NONGNU-NEXT: std Z+30, r24
-; NONGNU-NEXT: ldd r24, Y+15
-; NONGNU-NEXT: ldd r25, Y+16
-; NONGNU-NEXT: std Z+29, r25
-; NONGNU-NEXT: std Z+28, r24
-; NONGNU-NEXT: ldd r24, Y+13
-; NONGNU-NEXT: ldd r25, Y+14
-; NONGNU-NEXT: std Z+27, r25
-; NONGNU-NEXT: std Z+26, r24
-; NONGNU-NEXT: ldd r24, Y+11
-; NONGNU-NEXT: ldd r25, Y+12
-; NONGNU-NEXT: std Z+25, r25
-; NONGNU-NEXT: std Z+24, r24
-; NONGNU-NEXT: ldd r24, Y+9
-; NONGNU-NEXT: ldd r25, Y+10
-; NONGNU-NEXT: std Z+23, r25
-; NONGNU-NEXT: std Z+22, r24
-; NONGNU-NEXT: ldd r24, Y+7
-; NONGNU-NEXT: ldd r25, Y+8
-; NONGNU-NEXT: std Z+21, r25
-; NONGNU-NEXT: std Z+20, r24
-; NONGNU-NEXT: ldd r24, Y+5
-; NONGNU-NEXT: ldd r25, Y+6
-; NONGNU-NEXT: std Z+19, r25
-; NONGNU-NEXT: std Z+18, r24
-; NONGNU-NEXT: ldd r24, Y+3
-; NONGNU-NEXT: ldd r25, Y+4
-; NONGNU-NEXT: std Z+17, r25
-; NONGNU-NEXT: std Z+16, r24
-; NONGNU-NEXT: ldd r24, Y+33
-; NONGNU-NEXT: ldd r25, Y+34
-; NONGNU-NEXT: std Z+15, r25
-; NONGNU-NEXT: std Z+14, r24
-; NONGNU-NEXT: ldd r24, Y+31
-; NONGNU-NEXT: ldd r25, Y+32
-; NONGNU-NEXT: std Z+13, r25
-; NONGNU-NEXT: std Z+12, r24
-; NONGNU-NEXT: ldd r24, Y+29
-; NONGNU-NEXT: ldd r25, Y+30
-; NONGNU-NEXT: std Z+11, r25
-; NONGNU-NEXT: std Z+10, r24
-; NONGNU-NEXT: ldd r24, Y+27
-; NONGNU-NEXT: ldd r25, Y+28
-; NONGNU-NEXT: std Z+9, r25
-; NONGNU-NEXT: std Z+8, r24
-; NONGNU-NEXT: ldd r24, Y+25
-; NONGNU-NEXT: ldd r25, Y+26
-; NONGNU-NEXT: std Z+7, r25
-; NONGNU-NEXT: std Z+6, r24
-; NONGNU-NEXT: ldd r24, Y+23
-; NONGNU-NEXT: ldd r25, Y+24
-; NONGNU-NEXT: std Z+5, r25
-; NONGNU-NEXT: std Z+4, r24
-; NONGNU-NEXT: ldd r24, Y+21
-; NONGNU-NEXT: ldd r25, Y+22
-; NONGNU-NEXT: std Z+3, r25
-; NONGNU-NEXT: std Z+2, r24
-; NONGNU-NEXT: ldd r24, Y+19
-; NONGNU-NEXT: ldd r25, Y+20
-; NONGNU-NEXT: std Z+1, r25
-; NONGNU-NEXT: st Z, r24
-; NONGNU-NEXT: adiw r28, 34
-; NONGNU-NEXT: in r0, 63
-; NONGNU-NEXT: cli
-; NONGNU-NEXT: out 62, r29
-; NONGNU-NEXT: out 63, r0
-; NONGNU-NEXT: out 61, r28
-; NONGNU-NEXT: pop r29
-; NONGNU-NEXT: pop r28
-; NONGNU-NEXT: pop r7
-; NONGNU-NEXT: pop r6
-; NONGNU-NEXT: pop r5
-; NONGNU-NEXT: pop r4
-; NONGNU-NEXT: pop r3
-; NONGNU-NEXT: pop r2
-; NONGNU-NEXT: ret
-;
-; GNU-LABEL: test_sincos_f128:
-; GNU: ; %bb.0:
-; GNU-NEXT: push r6
-; GNU-NEXT: push r7
-; GNU-NEXT: push r28
-; GNU-NEXT: push r29
-; GNU-NEXT: in r28, 61
-; GNU-NEXT: in r29, 62
-; GNU-NEXT: sbiw r28, 52
-; GNU-NEXT: in r0, 63
-; GNU-NEXT: cli
-; GNU-NEXT: out 62, r29
-; GNU-NEXT: out 63, r0
-; GNU-NEXT: out 61, r28
-; GNU-NEXT: mov r6, r24
-; GNU-NEXT: mov r7, r25
-; GNU-NEXT: mov r24, r28
-; GNU-NEXT: mov r25, r29
-; GNU-NEXT: adiw r24, 21
-; GNU-NEXT: std Y+4, r25
-; GNU-NEXT: std Y+3, r24
-; GNU-NEXT: mov r24, r28
-; GNU-NEXT: mov r25, r29
-; GNU-NEXT: adiw r24, 37
-; GNU-NEXT: std Y+2, r25
-; GNU-NEXT: std Y+1, r24
-; GNU-NEXT: mov r24, r28
-; GNU-NEXT: mov r25, r29
-; GNU-NEXT: adiw r24, 5
-; GNU-NEXT: rcall sincosl
-; GNU-NEXT: ldd r24, Y+35
-; GNU-NEXT: ldd r25, Y+36
-; GNU-NEXT: mov r30, r6
-; GNU-NEXT: mov r31, r7
-; GNU-NEXT: std Z+31, r25
-; GNU-NEXT: std Z+30, r24
-; GNU-NEXT: ldd r24, Y+33
-; GNU-NEXT: ldd r25, Y+34
-; GNU-NEXT: std Z+29, r25
-; GNU-NEXT: std Z+28, r24
-; GNU-NEXT: ldd r24, Y+31
-; GNU-NEXT: ldd r25, Y+32
-; GNU-NEXT: std Z+27, r25
-; GNU-NEXT: std Z+26, r24
-; GNU-NEXT: ldd r24, Y+29
-; GNU-NEXT: ldd r25, Y+30
-; GNU-NEXT: std Z+25, r25
-; GNU-NEXT: std Z+24, r24
-; GNU-NEXT: ldd r24, Y+27
-; GNU-NEXT: ldd r25, Y+28
-; GNU-NEXT: std Z+23, r25
-; GNU-NEXT: std Z+22, r24
-; GNU-NEXT: ldd r24, Y+25
-; GNU-NEXT: ldd r25, Y+26
-; GNU-NEXT: std Z+21, r25
-; GNU-NEXT: std Z+20, r24
-; GNU-NEXT: ldd r24, Y+23
-; GNU-NEXT: ldd r25, Y+24
-; GNU-NEXT: std Z+19, r25
-; GNU-NEXT: std Z+18, r24
-; GNU-NEXT: ldd r24, Y+21
-; GNU-NEXT: ldd r25, Y+22
-; GNU-NEXT: std Z+17, r25
-; GNU-NEXT: std Z+16, r24
-; GNU-NEXT: ldd r24, Y+51
-; GNU-NEXT: ldd r25, Y+52
-; GNU-NEXT: std Z+15, r25
-; GNU-NEXT: std Z+14, r24
-; GNU-NEXT: ldd r24, Y+49
-; GNU-NEXT: ldd r25, Y+50
-; GNU-NEXT: std Z+13, r25
-; GNU-NEXT: std Z+12, r24
-; GNU-NEXT: ldd r24, Y+47
-; GNU-NEXT: ldd r25, Y+48
-; GNU-NEXT: std Z+11, r25
-; GNU-NEXT: std Z+10, r24
-; GNU-NEXT: ldd r24, Y+45
-; GNU-NEXT: ldd r25, Y+46
-; GNU-NEXT: std Z+9, r25
-; GNU-NEXT: std Z+8, r24
-; GNU-NEXT: ldd r24, Y+43
-; GNU-NEXT: ldd r25, Y+44
-; GNU-NEXT: std Z+7, r25
-; GNU-NEXT: std Z+6, r24
-; GNU-NEXT: ldd r24, Y+41
-; GNU-NEXT: ldd r25, Y+42
-; GNU-NEXT: std Z+5, r25
-; GNU-NEXT: std Z+4, r24
-; GNU-NEXT: ldd r24, Y+39
-; GNU-NEXT: ldd r25, Y+40
-; GNU-NEXT: std Z+3, r25
-; GNU-NEXT: std Z+2, r24
-; GNU-NEXT: ldd r24, Y+37
-; GNU-NEXT: ldd r25, Y+38
-; GNU-NEXT: std Z+1, r25
-; GNU-NEXT: st Z, r24
-; GNU-NEXT: adiw r28, 52
-; GNU-NEXT: in r0, 63
-; GNU-NEXT: cli
-; GNU-NEXT: out 62, r29
-; GNU-NEXT: out 63, r0
-; GNU-NEXT: out 61, r28
-; GNU-NEXT: pop r29
-; GNU-NEXT: pop r28
-; GNU-NEXT: pop r7
-; GNU-NEXT: pop r6
-; GNU-NEXT: ret
+; CHECK-LABEL: test_sincos_f128:
+; CHECK: ; %bb.0:
+; CHECK-NEXT: push r2
+; CHECK-NEXT: push r3
+; CHECK-NEXT: push r4
+; CHECK-NEXT: push r5
+; CHECK-NEXT: push r6
+; CHECK-NEXT: push r7
+; CHECK-NEXT: push r28
+; CHECK-NEXT: push r29
+; CHECK-NEXT: in r28, 61
+; CHECK-NEXT: in r29, 62
+; CHECK-NEXT: sbiw r28, 34
+; CHECK-NEXT: in r0, 63
+; CHECK-NEXT: cli
+; CHECK-NEXT: out 62, r29
+; CHECK-NEXT: out 63, r0
+; CHECK-NEXT: out 61, r28
+; CHECK-NEXT: std Y+2, r23 ; 2-byte Folded Spill
+; CHECK-NEXT: std Y+1, r22 ; 2-byte Folded Spill
+; CHECK-NEXT: mov r2, r20
+; CHECK-NEXT: mov r3, r21
+; CHECK-NEXT: mov r4, r18
+; CHECK-NEXT: mov r5, r19
+; CHECK-NEXT: mov r6, r24
+; CHECK-NEXT: mov r7, r25
+; CHECK-NEXT: mov r24, r28
+; CHECK-NEXT: mov r25, r29
+; CHECK-NEXT: adiw r24, 3
+; CHECK-NEXT: rcall cosl
+; CHECK-NEXT: mov r24, r28
+; CHECK-NEXT: mov r25, r29
+; CHECK-NEXT: adiw r24, 19
+; CHECK-NEXT: mov r18, r4
+; CHECK-NEXT: mov r19, r5
+; CHECK-NEXT: mov r20, r2
+; CHECK-NEXT: mov r21, r3
+; CHECK-NEXT: ldd r22, Y+1 ; 2-byte Folded Reload
+; CHECK-NEXT: ldd r23, Y+2 ; 2-byte Folded Reload
+; CHECK-NEXT: rcall sinl
+; CHECK-NEXT: ldd r24, Y+17
+; CHECK-NEXT: ldd r25, Y+18
+; CHECK-NEXT: mov r30, r6
+; CHECK-NEXT: mov r31, r7
+; CHECK-NEXT: std Z+31, r25
+; CHECK-NEXT: std Z+30, r24
+; CHECK-NEXT: ldd r24, Y+15
+; CHECK-NEXT: ldd r25, Y+16
+; CHECK-NEXT: std Z+29, r25
+; CHECK-NEXT: std Z+28, r24
+; CHECK-NEXT: ldd r24, Y+13
+; CHECK-NEXT: ldd r25, Y+14
+; CHECK-NEXT: std Z+27, r25
+; CHECK-NEXT: std Z+26, r24
+; CHECK-NEXT: ldd r24, Y+11
+; CHECK-NEXT: ldd r25, Y+12
+; CHECK-NEXT: std Z+25, r25
+; CHECK-NEXT: std Z+24, r24
+; CHECK-NEXT: ldd r24, Y+9
+; CHECK-NEXT: ldd r25, Y+10
+; CHECK-NEXT: std Z+23, r25
+; CHECK-NEXT: std Z+22, r24
+; CHECK-NEXT: ldd r24, Y+7
+; CHECK-NEXT: ldd r25, Y+8
+; CHECK-NEXT: std Z+21, r25
+; CHECK-NEXT: std Z+20, r24
+; CHECK-NEXT: ldd r24, Y+5
+; CHECK-NEXT: ldd r25, Y+6
+; CHECK-NEXT: std Z+19, r25
+; CHECK-NEXT: std Z+18, r24
+; CHECK-NEXT: ldd r24, Y+3
+; CHECK-NEXT: ldd r25, Y+4
+; CHECK-NEXT: std Z+17, r25
+; CHECK-NEXT: std Z+16, r24
+; CHECK-NEXT: ldd r24, Y+33
+; CHECK-NEXT: ldd r25, Y+34
+; CHECK-NEXT: std Z+15, r25
+; CHECK-NEXT: std Z+14, r24
+; CHECK-NEXT: ldd r24, Y+31
+; CHECK-NEXT: ldd r25, Y+32
+; CHECK-NEXT: std Z+13, r25
+; CHECK-NEXT: std Z+12, r24
+; CHECK-NEXT: ldd r24, Y+29
+; CHECK-NEXT: ldd r25, Y+30
+; CHECK-NEXT: std Z+11, r25
+; CHECK-NEXT: std Z+10, r24
+; CHECK-NEXT: ldd r24, Y+27
+; CHECK-NEXT: ldd r25, Y+28
+; CHECK-NEXT: std Z+9, r25
+; CHECK-NEXT: std Z+8, r24
+; CHECK-NEXT: ldd r24, Y+25
+; CHECK-NEXT: ldd r25, Y+26
+; CHECK-NEXT: std Z+7, r25
+; CHECK-NEXT: std Z+6, r24
+; CHECK-NEXT: ldd r24, Y+23
+; CHECK-NEXT: ldd r25, Y+24
+; CHECK-NEXT: std Z+5, r25
+; CHECK-NEXT: std Z+4, r24
+; CHECK-NEXT: ldd r24, Y+21
+; CHECK-NEXT: ldd r25, Y+22
+; CHECK-NEXT: std Z+3, r25
+; CHECK-NEXT: std Z+2, r24
+; CHECK-NEXT: ldd r24, Y+19
+; CHECK-NEXT: ldd r25, Y+20
+; CHECK-NEXT: std Z+1, r25
+; CHECK-NEXT: st Z, r24
+; CHECK-NEXT: adiw r28, 34
+; CHECK-NEXT: in r0, 63
+; CHECK-NEXT: cli
+; CHECK-NEXT: out 62, r29
+; CHECK-NEXT: out 63, r0
+; CHECK-NEXT: out 61, r28
+; CHECK-NEXT: pop r29
+; CHECK-NEXT: pop r28
+; CHECK-NEXT: pop r7
+; CHECK-NEXT: pop r6
+; CHECK-NEXT: pop r5
+; CHECK-NEXT: pop r4
+; CHECK-NEXT: pop r3
+; CHECK-NEXT: pop r2
+; CHECK-NEXT: ret
%result = call { fp128, fp128 } @llvm.sincos.f128(fp128 %a)
ret { fp128, fp128 } %result
}
@@ -880,4 +408,5 @@ define { fp128, fp128 } @test_sincos_f128(fp128 %a) #0 {
attributes #0 = { nounwind }
;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
-; CHECK: {{.*}}
+; GNU: {{.*}}
+; NONGNU: {{.*}}