1c23a780cSMin-Yih Hsu; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2c23a780cSMin-Yih Hsu; RUN: llc < %s -mtriple=m68k-linux -verify-machineinstrs | FileCheck %s 3c23a780cSMin-Yih Hsu 4c23a780cSMin-Yih Hsudefine i64 @test1(i64 %A, i32 %B) nounwind { 5c23a780cSMin-Yih Hsu; CHECK-LABEL: test1: 6c23a780cSMin-Yih Hsu; CHECK: ; %bb.0: 7c23a780cSMin-Yih Hsu; CHECK-NEXT: move.l (12,%sp), %d0 8c23a780cSMin-Yih Hsu; CHECK-NEXT: add.l (4,%sp), %d0 9c23a780cSMin-Yih Hsu; CHECK-NEXT: move.l (8,%sp), %d1 10c23a780cSMin-Yih Hsu; CHECK-NEXT: rts 11c23a780cSMin-Yih Hsu %tmp12 = zext i32 %B to i64 12c23a780cSMin-Yih Hsu %tmp3 = shl i64 %tmp12, 32 13c23a780cSMin-Yih Hsu %tmp5 = add i64 %tmp3, %A 14c23a780cSMin-Yih Hsu ret i64 %tmp5 15c23a780cSMin-Yih Hsu} 16c23a780cSMin-Yih Hsu 17cd0d11beSFangrui Songdefine void @test2(ptr inreg %a) nounwind { 18c23a780cSMin-Yih Hsu; CHECK-LABEL: test2: 19c23a780cSMin-Yih Hsu; CHECK: ; %bb.0: 20c23a780cSMin-Yih Hsu; CHECK-NEXT: move.l %d0, %a0 21c23a780cSMin-Yih Hsu; CHECK-NEXT: add.l #128, (%a0) 22c23a780cSMin-Yih Hsu; CHECK-NEXT: rts 23cd0d11beSFangrui Song %aa = load i32, ptr %a 24c23a780cSMin-Yih Hsu %b = add i32 %aa, 128 25cd0d11beSFangrui Song store i32 %b, ptr %a 26c23a780cSMin-Yih Hsu ret void 27c23a780cSMin-Yih Hsu} 28c23a780cSMin-Yih Hsu 29cd0d11beSFangrui Songdefine fastcc void @test2_fast(ptr inreg %a) nounwind { 30c23a780cSMin-Yih Hsu; CHECK-LABEL: test2_fast: 31c23a780cSMin-Yih Hsu; CHECK: ; %bb.0: 32c23a780cSMin-Yih Hsu; CHECK-NEXT: add.l #128, (%a0) 33c23a780cSMin-Yih Hsu; CHECK-NEXT: rts 34cd0d11beSFangrui Song %aa = load i32, ptr %a 35c23a780cSMin-Yih Hsu %b = add i32 %aa, 128 36cd0d11beSFangrui Song store i32 %b, ptr %a 37c23a780cSMin-Yih Hsu ret void 38c23a780cSMin-Yih Hsu} 39c23a780cSMin-Yih Hsu 40cd0d11beSFangrui Songdefine fastcc void @test3(ptr inreg %a) nounwind { 41c23a780cSMin-Yih Hsu; CHECK-LABEL: test3: 42c23a780cSMin-Yih Hsu; CHECK: ; %bb.0: 43657bb726SMin-Yih Hsu; CHECK-NEXT: suba.l #4, %sp 44c23a780cSMin-Yih Hsu; CHECK-NEXT: movem.l %d2, (0,%sp) ; 8-byte Folded Spill 45c23a780cSMin-Yih Hsu; CHECK-NEXT: move.l (%a0), %d0 46c4c9d4f3SPeter Lafreniere; CHECK-NEXT: moveq #0, %d1 47c23a780cSMin-Yih Hsu; CHECK-NEXT: move.l #-2147483648, %d2 48c23a780cSMin-Yih Hsu; CHECK-NEXT: add.l (4,%a0), %d2 49c23a780cSMin-Yih Hsu; CHECK-NEXT: addx.l %d0, %d1 50c23a780cSMin-Yih Hsu; CHECK-NEXT: move.l %d2, (4,%a0) 51c23a780cSMin-Yih Hsu; CHECK-NEXT: move.l %d1, (%a0) 52c23a780cSMin-Yih Hsu; CHECK-NEXT: movem.l (0,%sp), %d2 ; 8-byte Folded Reload 53657bb726SMin-Yih Hsu; CHECK-NEXT: adda.l #4, %sp 54c23a780cSMin-Yih Hsu; CHECK-NEXT: rts 55cd0d11beSFangrui Song %aa = load i64, ptr %a 56c23a780cSMin-Yih Hsu %b = add i64 %aa, 2147483648 57cd0d11beSFangrui Song store i64 %b, ptr %a 58c23a780cSMin-Yih Hsu ret void 59c23a780cSMin-Yih Hsu} 60c23a780cSMin-Yih Hsu 61cd0d11beSFangrui Songdefine fastcc void @test4(ptr inreg %a) nounwind { 62c23a780cSMin-Yih Hsu; CHECK-LABEL: test4: 63c23a780cSMin-Yih Hsu; CHECK: ; %bb.0: 64657bb726SMin-Yih Hsu; CHECK-NEXT: suba.l #4, %sp 65c23a780cSMin-Yih Hsu; CHECK-NEXT: movem.l %d2, (0,%sp) ; 8-byte Folded Spill 66c23a780cSMin-Yih Hsu; CHECK-NEXT: move.l (%a0), %d0 67c4c9d4f3SPeter Lafreniere; CHECK-NEXT: moveq #0, %d1 68*d3c10b51SPeter Lafreniere; CHECK-NEXT: moveq #127, %d2 69*d3c10b51SPeter Lafreniere; CHECK-NEXT: not.b %d2 70c23a780cSMin-Yih Hsu; CHECK-NEXT: add.l (4,%a0), %d2 71c23a780cSMin-Yih Hsu; CHECK-NEXT: addx.l %d0, %d1 72c23a780cSMin-Yih Hsu; CHECK-NEXT: move.l %d2, (4,%a0) 73c23a780cSMin-Yih Hsu; CHECK-NEXT: move.l %d1, (%a0) 74c23a780cSMin-Yih Hsu; CHECK-NEXT: movem.l (0,%sp), %d2 ; 8-byte Folded Reload 75657bb726SMin-Yih Hsu; CHECK-NEXT: adda.l #4, %sp 76c23a780cSMin-Yih Hsu; CHECK-NEXT: rts 77cd0d11beSFangrui Song %aa = load i64, ptr %a 78c23a780cSMin-Yih Hsu %b = add i64 %aa, 128 79cd0d11beSFangrui Song store i64 %b, ptr %a 80c23a780cSMin-Yih Hsu ret void 81c23a780cSMin-Yih Hsu} 82c23a780cSMin-Yih Hsu 83c23a780cSMin-Yih Hsudefine fastcc i32 @test9(i32 %x, i32 %y) nounwind readnone { 84c23a780cSMin-Yih Hsu; CHECK-LABEL: test9: 85c23a780cSMin-Yih Hsu; CHECK: ; %bb.0: 86c23a780cSMin-Yih Hsu; CHECK-NEXT: sub.l #10, %d0 87c23a780cSMin-Yih Hsu; CHECK-NEXT: seq %d0 88c23a780cSMin-Yih Hsu; CHECK-NEXT: and.l #255, %d0 89c23a780cSMin-Yih Hsu; CHECK-NEXT: sub.l %d0, %d1 90c23a780cSMin-Yih Hsu; CHECK-NEXT: move.l %d1, %d0 91c23a780cSMin-Yih Hsu; CHECK-NEXT: rts 92c23a780cSMin-Yih Hsu %cmp = icmp eq i32 %x, 10 93c23a780cSMin-Yih Hsu %sub = sext i1 %cmp to i32 94c23a780cSMin-Yih Hsu %cond = add i32 %sub, %y 95c23a780cSMin-Yih Hsu ret i32 %cond 96c23a780cSMin-Yih Hsu} 97