@@ -493,3 +493,67 @@ entry:
493
493
store double %d , ptr %add.ptr , align 8
494
494
ret void
495
495
}
496
+
497
+ @f = global double 4 .2 , align 16
498
+
499
+ define double @foo13 (ptr nocapture %p ) nounwind {
500
+ ; RV32ZDINX-LABEL: foo13:
501
+ ; RV32ZDINX: # %bb.0: # %entry
502
+ ; RV32ZDINX-NEXT: addi sp, sp, -16
503
+ ; RV32ZDINX-NEXT: lui a0, %hi(f)
504
+ ; RV32ZDINX-NEXT: lw a1, %lo(f+8)(a0)
505
+ ; RV32ZDINX-NEXT: sw a1, 12(sp)
506
+ ; RV32ZDINX-NEXT: lw a0, %lo(f+4)(a0)
507
+ ; RV32ZDINX-NEXT: sw a0, 8(sp)
508
+ ; RV32ZDINX-NEXT: lw a0, 8(sp)
509
+ ; RV32ZDINX-NEXT: lw a1, 12(sp)
510
+ ; RV32ZDINX-NEXT: addi sp, sp, 16
511
+ ; RV32ZDINX-NEXT: ret
512
+ ;
513
+ ; RV32ZDINXUALIGNED-LABEL: foo13:
514
+ ; RV32ZDINXUALIGNED: # %bb.0: # %entry
515
+ ; RV32ZDINXUALIGNED-NEXT: lui a0, %hi(f)
516
+ ; RV32ZDINXUALIGNED-NEXT: addi a0, a0, %lo(f)
517
+ ; RV32ZDINXUALIGNED-NEXT: lw a1, 8(a0)
518
+ ; RV32ZDINXUALIGNED-NEXT: lw a0, 4(a0)
519
+ ; RV32ZDINXUALIGNED-NEXT: ret
520
+ ;
521
+ ; RV64ZDINX-LABEL: foo13:
522
+ ; RV64ZDINX: # %bb.0: # %entry
523
+ ; RV64ZDINX-NEXT: lui a0, %hi(f)
524
+ ; RV64ZDINX-NEXT: lwu a1, %lo(f+8)(a0)
525
+ ; RV64ZDINX-NEXT: lwu a0, %lo(f+4)(a0)
526
+ ; RV64ZDINX-NEXT: slli a1, a1, 32
527
+ ; RV64ZDINX-NEXT: or a0, a1, a0
528
+ ; RV64ZDINX-NEXT: ret
529
+ entry:
530
+ %add.ptr = getelementptr inbounds i8 , ptr @f , i64 4
531
+ %0 = load double , ptr %add.ptr , align 4
532
+ ret double %0
533
+ }
534
+
535
+ define double @foo14 (ptr nocapture %p ) nounwind {
536
+ ; RV32ZDINX-LABEL: foo14:
537
+ ; RV32ZDINX: # %bb.0: # %entry
538
+ ; RV32ZDINX-NEXT: lui a0, %hi(f)
539
+ ; RV32ZDINX-NEXT: lw a1, %lo(f+12)(a0)
540
+ ; RV32ZDINX-NEXT: lw a0, %lo(f+8)(a0)
541
+ ; RV32ZDINX-NEXT: ret
542
+ ;
543
+ ; RV32ZDINXUALIGNED-LABEL: foo14:
544
+ ; RV32ZDINXUALIGNED: # %bb.0: # %entry
545
+ ; RV32ZDINXUALIGNED-NEXT: lui a0, %hi(f)
546
+ ; RV32ZDINXUALIGNED-NEXT: lw a1, %lo(f+12)(a0)
547
+ ; RV32ZDINXUALIGNED-NEXT: lw a0, %lo(f+8)(a0)
548
+ ; RV32ZDINXUALIGNED-NEXT: ret
549
+ ;
550
+ ; RV64ZDINX-LABEL: foo14:
551
+ ; RV64ZDINX: # %bb.0: # %entry
552
+ ; RV64ZDINX-NEXT: lui a0, %hi(f)
553
+ ; RV64ZDINX-NEXT: ld a0, %lo(f+8)(a0)
554
+ ; RV64ZDINX-NEXT: ret
555
+ entry:
556
+ %add.ptr = getelementptr inbounds i8 , ptr @f , i64 8
557
+ %0 = load double , ptr %add.ptr , align 8
558
+ ret double %0
559
+ }
0 commit comments