77define  void  @store (half  %x , ptr  %p ) nounwind  {
88; CHECK-LABEL: store: 
99; CHECK:       ; %bb.0: 
10- ; CHECK-NEXT:    mov r30, r20  
11- ; CHECK-NEXT:    mov r31, r21  
12- ; CHECK-NEXT:    std Z+1, r23  
13- ; CHECK-NEXT:    st Z, r22  
10+ ; CHECK-NEXT:    mov r30, r22  
11+ ; CHECK-NEXT:    mov r31, r23  
12+ ; CHECK-NEXT:    std Z+1, r25  
13+ ; CHECK-NEXT:    st Z, r24  
1414; CHECK-NEXT:    ret 
1515  store  half  %x , ptr  %p 
1616  ret  void 
@@ -21,8 +21,8 @@ define half @return(ptr %p) nounwind {
2121; CHECK:       ; %bb.0: 
2222; CHECK-NEXT:    mov r30, r24 
2323; CHECK-NEXT:    mov r31, r25 
24- ; CHECK-NEXT:    ld r22 , Z 
25- ; CHECK-NEXT:    ldd r23 , Z+1 
24+ ; CHECK-NEXT:    ld r24 , Z 
25+ ; CHECK-NEXT:    ldd r25 , Z+1 
2626; CHECK-NEXT:    ret 
2727  %r  = load  half , ptr  %p 
2828  ret  half  %r 
@@ -79,8 +79,6 @@ define dso_local void @stored(ptr nocapture %a, double %b) local_unnamed_addr no
7979; CHECK-NEXT:    mov r24, r30 
8080; CHECK-NEXT:    mov r25, r31 
8181; CHECK-NEXT:    rcall __truncdfhf2 
82- ; CHECK-NEXT:    rcall __extendhfsf2 
83- ; CHECK-NEXT:    rcall __truncsfhf2 
8482; CHECK-NEXT:    mov r30, r16 
8583; CHECK-NEXT:    mov r31, r17 
8684; CHECK-NEXT:    std Z+1, r25 
@@ -108,8 +106,6 @@ define dso_local void @storef(ptr nocapture %a, float %b) local_unnamed_addr nou
108106; CHECK-NEXT:    mov r24, r18 
109107; CHECK-NEXT:    mov r25, r19 
110108; CHECK-NEXT:    rcall __truncsfhf2 
111- ; CHECK-NEXT:    rcall __extendhfsf2 
112- ; CHECK-NEXT:    rcall __truncsfhf2 
113109; CHECK-NEXT:    mov r30, r16 
114110; CHECK-NEXT:    mov r31, r17 
115111; CHECK-NEXT:    std Z+1, r25 
@@ -126,22 +122,14 @@ entry:
126122define  void  @test_load_store (ptr  %in , ptr  %out ) nounwind  {
127123; CHECK-LABEL: test_load_store: 
128124; CHECK:       ; %bb.0: 
129- ; CHECK-NEXT:    push r16 
130- ; CHECK-NEXT:    push r17 
131- ; CHECK-NEXT:    mov r16, r22 
132- ; CHECK-NEXT:    mov r17, r23 
133125; CHECK-NEXT:    mov r30, r24 
134126; CHECK-NEXT:    mov r31, r25 
135127; CHECK-NEXT:    ld r24, Z 
136128; CHECK-NEXT:    ldd r25, Z+1 
137- ; CHECK-NEXT:    rcall __extendhfsf2 
138- ; CHECK-NEXT:    rcall __truncsfhf2 
139- ; CHECK-NEXT:    mov r30, r16 
140- ; CHECK-NEXT:    mov r31, r17 
129+ ; CHECK-NEXT:    mov r30, r22 
130+ ; CHECK-NEXT:    mov r31, r23 
141131; CHECK-NEXT:    std Z+1, r25 
142132; CHECK-NEXT:    st Z, r24 
143- ; CHECK-NEXT:    pop r17 
144- ; CHECK-NEXT:    pop r16 
145133; CHECK-NEXT:    ret 
146134  %val  = load  half , ptr  %in 
147135  store  half  %val , ptr  %out 
@@ -177,8 +165,6 @@ define void @test_bitcast_to_half(ptr %addr, i16 %in) nounwind {
177165define  half  @from_bits (i16  %x ) nounwind  {
178166; CHECK-LABEL: from_bits: 
179167; CHECK:       ; %bb.0: 
180- ; CHECK-NEXT:    mov r22, r24 
181- ; CHECK-NEXT:    mov r23, r25 
182168; CHECK-NEXT:    ret 
183169  %res  = bitcast  i16  %x  to  half 
184170  ret  half  %res 
@@ -187,8 +173,6 @@ define half @from_bits(i16 %x) nounwind {
187173define  i16  @to_bits (half  %x ) nounwind  {
188174; CHECK-LABEL: to_bits: 
189175; CHECK:       ; %bb.0: 
190- ; CHECK-NEXT:    mov r24, r22 
191- ; CHECK-NEXT:    mov r25, r23 
192176; CHECK-NEXT:    ret 
193177    %res  = bitcast  half  %x  to  i16 
194178    ret  i16  %res 
@@ -231,8 +215,6 @@ define void @test_trunc32(float %in, ptr %addr) nounwind {
231215; CHECK-NEXT:    mov r16, r20 
232216; CHECK-NEXT:    mov r17, r21 
233217; CHECK-NEXT:    rcall __truncsfhf2 
234- ; CHECK-NEXT:    rcall __extendhfsf2 
235- ; CHECK-NEXT:    rcall __truncsfhf2 
236218; CHECK-NEXT:    mov r30, r16 
237219; CHECK-NEXT:    mov r31, r17 
238220; CHECK-NEXT:    std Z+1, r25 
@@ -249,8 +231,6 @@ define void @test_trunc64(double %in, ptr %addr) nounwind {
249231; CHECK-LABEL: test_trunc64: 
250232; CHECK:       ; %bb.0: 
251233; CHECK-NEXT:    rcall __truncdfhf2 
252- ; CHECK-NEXT:    rcall __extendhfsf2 
253- ; CHECK-NEXT:    rcall __truncsfhf2 
254234; CHECK-NEXT:    mov r30, r16 
255235; CHECK-NEXT:    mov r31, r17 
256236; CHECK-NEXT:    std Z+1, r25 
@@ -281,8 +261,6 @@ define void @test_sitofp_i64(i64 %a, ptr %p) nounwind {
281261; CHECK:       ; %bb.0: 
282262; CHECK-NEXT:    rcall __floatdisf 
283263; CHECK-NEXT:    rcall __truncsfhf2 
284- ; CHECK-NEXT:    rcall __extendhfsf2 
285- ; CHECK-NEXT:    rcall __truncsfhf2 
286264; CHECK-NEXT:    mov r30, r16 
287265; CHECK-NEXT:    mov r31, r17 
288266; CHECK-NEXT:    std Z+1, r25 
@@ -313,8 +291,6 @@ define void @test_uitofp_i64(i64 %a, ptr %p) nounwind {
313291; CHECK:       ; %bb.0: 
314292; CHECK-NEXT:    rcall __floatundisf 
315293; CHECK-NEXT:    rcall __truncsfhf2 
316- ; CHECK-NEXT:    rcall __extendhfsf2 
317- ; CHECK-NEXT:    rcall __truncsfhf2 
318294; CHECK-NEXT:    mov r30, r16 
319295; CHECK-NEXT:    mov r31, r17 
320296; CHECK-NEXT:    std Z+1, r25 
@@ -393,8 +369,6 @@ define void @test_trunc32_vec2(<2 x float> %a, ptr %p) nounwind {
393369; CHECK-NEXT:    mov r12, r18 
394370; CHECK-NEXT:    mov r13, r19 
395371; CHECK-NEXT:    rcall __truncsfhf2 
396- ; CHECK-NEXT:    rcall __extendhfsf2 
397- ; CHECK-NEXT:    rcall __truncsfhf2 
398372; CHECK-NEXT:    mov r30, r16 
399373; CHECK-NEXT:    mov r31, r17 
400374; CHECK-NEXT:    std Z+3, r25 
@@ -404,8 +378,6 @@ define void @test_trunc32_vec2(<2 x float> %a, ptr %p) nounwind {
404378; CHECK-NEXT:    mov r24, r14 
405379; CHECK-NEXT:    mov r25, r15 
406380; CHECK-NEXT:    rcall __truncsfhf2 
407- ; CHECK-NEXT:    rcall __extendhfsf2 
408- ; CHECK-NEXT:    rcall __truncsfhf2 
409381; CHECK-NEXT:    mov r30, r16 
410382; CHECK-NEXT:    mov r31, r17 
411383; CHECK-NEXT:    std Z+1, r25 
@@ -424,8 +396,6 @@ define void @test_trunc64_vec1(<1 x double> %a, ptr %p) nounwind {
424396; CHECK-LABEL: test_trunc64_vec1: 
425397; CHECK:       ; %bb.0: 
426398; CHECK-NEXT:    rcall __truncdfhf2 
427- ; CHECK-NEXT:    rcall __extendhfsf2 
428- ; CHECK-NEXT:    rcall __truncsfhf2 
429399; CHECK-NEXT:    mov r30, r16 
430400; CHECK-NEXT:    mov r31, r17 
431401; CHECK-NEXT:    std Z+1, r25 
@@ -439,51 +409,47 @@ define void @test_trunc64_vec1(<1 x double> %a, ptr %p) nounwind {
439409define  float  @test_sitofp_fadd_i32 (i32  %a , ptr  %b ) nounwind  {
440410; CHECK-LABEL: test_sitofp_fadd_i32: 
441411; CHECK:       ; %bb.0: 
442- ; CHECK-NEXT:    push r10 
443- ; CHECK-NEXT:    push r11 
444412; CHECK-NEXT:    push r12 
445413; CHECK-NEXT:    push r13 
446414; CHECK-NEXT:    push r14 
447415; CHECK-NEXT:    push r15 
448416; CHECK-NEXT:    push r16 
449417; CHECK-NEXT:    push r17 
450- ; CHECK-NEXT:    mov r16, r24 
451- ; CHECK-NEXT:    mov r17, r25 
452- ; CHECK-NEXT:    mov r14, r22 
453- ; CHECK-NEXT:    mov r15, r23 
454- ; CHECK-NEXT:    mov r30, r20 
455- ; CHECK-NEXT:    mov r31, r21 
418+ ; CHECK-NEXT:    mov r16, r20 
419+ ; CHECK-NEXT:    mov r17, r21 
420+ ; CHECK-NEXT:    rcall __floatsisf 
421+ ; CHECK-NEXT:    rcall __truncsfhf2 
422+ ; CHECK-NEXT:    mov r14, r24 
423+ ; CHECK-NEXT:    mov r15, r25 
424+ ; CHECK-NEXT:    mov r30, r16 
425+ ; CHECK-NEXT:    mov r31, r17 
456426; CHECK-NEXT:    ld r24, Z 
457427; CHECK-NEXT:    ldd r25, Z+1 
458428; CHECK-NEXT:    rcall __extendhfsf2 
459- ; CHECK-NEXT:    mov r12, r22 
460- ; CHECK-NEXT:    mov r13, r23 
461- ; CHECK-NEXT:    mov r10, r24 
462- ; CHECK-NEXT:    mov r11, r25 
463- ; CHECK-NEXT:    mov r22, r14 
464- ; CHECK-NEXT:    mov r23, r15 
465- ; CHECK-NEXT:    mov r24, r16 
466- ; CHECK-NEXT:    mov r25, r17 
467- ; CHECK-NEXT:    rcall __floatsisf 
468- ; CHECK-NEXT:    rcall __truncsfhf2 
429+ ; CHECK-NEXT:    mov r16, r22 
430+ ; CHECK-NEXT:    mov r17, r23 
431+ ; CHECK-NEXT:    mov r12, r24 
432+ ; CHECK-NEXT:    mov r13, r25 
433+ ; CHECK-NEXT:    mov r24, r14 
434+ ; CHECK-NEXT:    mov r25, r15 
469435; CHECK-NEXT:    rcall __extendhfsf2 
470436; CHECK-NEXT:    mov r18, r22 
471437; CHECK-NEXT:    mov r19, r23 
472438; CHECK-NEXT:    mov r20, r24 
473439; CHECK-NEXT:    mov r21, r25 
474- ; CHECK-NEXT:    mov r22, r12  
475- ; CHECK-NEXT:    mov r23, r13  
476- ; CHECK-NEXT:    mov r24, r10  
477- ; CHECK-NEXT:    mov r25, r11  
440+ ; CHECK-NEXT:    mov r22, r16  
441+ ; CHECK-NEXT:    mov r23, r17  
442+ ; CHECK-NEXT:    mov r24, r12  
443+ ; CHECK-NEXT:    mov r25, r13  
478444; CHECK-NEXT:    rcall __addsf3 
445+ ; CHECK-NEXT:    rcall __truncsfhf2 
446+ ; CHECK-NEXT:    rcall __extendhfsf2 
479447; CHECK-NEXT:    pop r17 
480448; CHECK-NEXT:    pop r16 
481449; CHECK-NEXT:    pop r15 
482450; CHECK-NEXT:    pop r14 
483451; CHECK-NEXT:    pop r13 
484452; CHECK-NEXT:    pop r12 
485- ; CHECK-NEXT:    pop r11 
486- ; CHECK-NEXT:    pop r10 
487453; CHECK-NEXT:    ret 
488454  %tmp0  = load  half , ptr  %b 
489455  %tmp1  = sitofp  i32  %a  to  half 
@@ -495,22 +461,20 @@ define float @test_sitofp_fadd_i32(i32 %a, ptr %b) nounwind {
495461define  half  @chained_fp_ops (half  %x ) {
496462; CHECK-LABEL: chained_fp_ops: 
497463; CHECK:       ; %bb.0: ; %start 
498- ; CHECK-NEXT:    mov r24, r22 
499- ; CHECK-NEXT:    mov r25, r23 
500464; CHECK-NEXT:    rcall __extendhfsf2 
501465; CHECK-NEXT:    mov r18, r22 
502466; CHECK-NEXT:    mov r19, r23 
503467; CHECK-NEXT:    mov r20, r24 
504468; CHECK-NEXT:    mov r21, r25 
505469; CHECK-NEXT:    rcall __addsf3 
470+ ; CHECK-NEXT:    rcall __truncsfhf2 
471+ ; CHECK-NEXT:    rcall __extendhfsf2 
506472; CHECK-NEXT:    ldi r18, 0 
507473; CHECK-NEXT:    ldi r19, 0 
508474; CHECK-NEXT:    ldi r20, 0 
509475; CHECK-NEXT:    ldi r21, 63 
510476; CHECK-NEXT:    rcall __mulsf3 
511477; CHECK-NEXT:    rcall __truncsfhf2 
512- ; CHECK-NEXT:    mov r22, r24 
513- ; CHECK-NEXT:    mov r23, r25 
514478; CHECK-NEXT:    ret 
515479start:
516480  %y  = fmul  half  %x , 0xH4000
@@ -523,8 +487,6 @@ define half @test_select_cc(half) nounwind {
523487; CHECK:       ; %bb.0: 
524488; CHECK-NEXT:    push r16 
525489; CHECK-NEXT:    push r17 
526- ; CHECK-NEXT:    mov r24, r22 
527- ; CHECK-NEXT:    mov r25, r23 
528490; CHECK-NEXT:    rcall __extendhfsf2 
529491; CHECK-NEXT:    ldi r16, 0 
530492; CHECK-NEXT:    ldi r17, 0 
@@ -534,20 +496,13 @@ define half @test_select_cc(half) nounwind {
534496; CHECK-NEXT:    mov r21, r17 
535497; CHECK-NEXT:    rcall __nesf2 
536498; CHECK-NEXT:    cpi r24, 0 
537- ; CHECK-NEXT:    brne  .LBB25_2 
499+ ; CHECK-NEXT:    breq  .LBB25_2 
538500; CHECK-NEXT:  ; %bb.1: 
501+ ; CHECK-NEXT:    ldi r16, 0 
502+ ; CHECK-NEXT:    ldi r17, 60 
503+ ; CHECK-NEXT:  .LBB25_2: 
539504; CHECK-NEXT:    mov r24, r16 
540505; CHECK-NEXT:    mov r25, r17 
541- ; CHECK-NEXT:    rjmp .LBB25_3 
542- ; CHECK-NEXT:  .LBB25_2: 
543- ; CHECK-NEXT:    ldi r24, 128 
544- ; CHECK-NEXT:    ldi r25, 63 
545- ; CHECK-NEXT:  .LBB25_3: 
546- ; CHECK-NEXT:    mov r22, r16 
547- ; CHECK-NEXT:    mov r23, r17 
548- ; CHECK-NEXT:    rcall __truncsfhf2 
549- ; CHECK-NEXT:    mov r22, r24 
550- ; CHECK-NEXT:    mov r23, r25 
551506; CHECK-NEXT:    pop r17 
552507; CHECK-NEXT:    pop r16 
553508; CHECK-NEXT:    ret 
@@ -559,9 +514,7 @@ define half @test_select_cc(half) nounwind {
559514define  half  @fabs (half  %x ) nounwind  {
560515; CHECK-LABEL: fabs: 
561516; CHECK:       ; %bb.0: 
562- ; CHECK-NEXT:    andi r23, 127 
563- ; CHECK-NEXT:    ldi r24, 0 
564- ; CHECK-NEXT:    ldi r25, 0 
517+ ; CHECK-NEXT:    andi r25, 127 
565518; CHECK-NEXT:    ret 
566519  %a  = call  half  @llvm.fabs.f16 (half  %x )
567520  ret  half  %a 
@@ -570,23 +523,11 @@ define half @fabs(half %x) nounwind {
570523define  half  @fcopysign (half  %x , half  %y ) nounwind  {
571524; CHECK-LABEL: fcopysign: 
572525; CHECK:       ; %bb.0: 
573- ; CHECK-NEXT:    push r16 
574- ; CHECK-NEXT:    push r17 
575- ; CHECK-NEXT:    mov r16, r18 
576- ; CHECK-NEXT:    mov r17, r19 
577- ; CHECK-NEXT:    mov r24, r22 
578- ; CHECK-NEXT:    mov r25, r23 
579- ; CHECK-NEXT:    rcall __extendhfsf2 
580- ; CHECK-NEXT:    andi r16, 0 
581- ; CHECK-NEXT:    andi r17, 128 
526+ ; CHECK-NEXT:    andi r22, 0 
527+ ; CHECK-NEXT:    andi r23, 128 
582528; CHECK-NEXT:    andi r25, 127 
583- ; CHECK-NEXT:    or r24, r16 
584- ; CHECK-NEXT:    or r25, r17 
585- ; CHECK-NEXT:    rcall __truncsfhf2 
586- ; CHECK-NEXT:    mov r22, r24 
587- ; CHECK-NEXT:    mov r23, r25 
588- ; CHECK-NEXT:    pop r17 
589- ; CHECK-NEXT:    pop r16 
529+ ; CHECK-NEXT:    or r24, r22 
530+ ; CHECK-NEXT:    or r25, r23 
590531; CHECK-NEXT:    ret 
591532  %a  = call  half  @llvm.copysign.f16 (half  %x , half  %y )
592533  ret  half  %a 
0 commit comments