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 Hsu;; TODO All these can be improved 5c23a780cSMin-Yih Hsu 6c23a780cSMin-Yih Hsudefine zeroext i16 @t1(i16 zeroext %x) nounwind readnone ssp { 7c23a780cSMin-Yih Hsu; CHECK-LABEL: t1: 8c23a780cSMin-Yih Hsu; CHECK: ; %bb.0: ; %entry 9c23a780cSMin-Yih Hsu; CHECK-NEXT: move.w (6,%sp), %d0 10c23a780cSMin-Yih Hsu; CHECK-NEXT: and.l #65535, %d0 11c23a780cSMin-Yih Hsu; CHECK-NEXT: sub.l #26, %d0 12c23a780cSMin-Yih Hsu; CHECK-NEXT: shi %d0 13c23a780cSMin-Yih Hsu; CHECK-NEXT: and.l #255, %d0 14c23a780cSMin-Yih Hsu; CHECK-NEXT: lsl.l #5, %d0 15c23a780cSMin-Yih Hsu; CHECK-NEXT: rts 16c23a780cSMin-Yih Hsuentry: 17c23a780cSMin-Yih Hsu %0 = icmp ugt i16 %x, 26 ; <i1> [#uses=1] 18c23a780cSMin-Yih Hsu %iftmp.1.0 = select i1 %0, i16 32, i16 0 ; <i16> [#uses=1] 19c23a780cSMin-Yih Hsu ret i16 %iftmp.1.0 20c23a780cSMin-Yih Hsu} 21c23a780cSMin-Yih Hsu 22c23a780cSMin-Yih Hsudefine zeroext i16 @t2(i16 zeroext %x) nounwind readnone ssp { 23c23a780cSMin-Yih Hsu; CHECK-LABEL: t2: 24c23a780cSMin-Yih Hsu; CHECK: ; %bb.0: ; %entry 25c23a780cSMin-Yih Hsu; CHECK-NEXT: move.w (6,%sp), %d0 26c23a780cSMin-Yih Hsu; CHECK-NEXT: and.l #65535, %d0 27c23a780cSMin-Yih Hsu; CHECK-NEXT: sub.l #26, %d0 28c23a780cSMin-Yih Hsu; CHECK-NEXT: scs %d0 29c23a780cSMin-Yih Hsu; CHECK-NEXT: and.l #255, %d0 30c23a780cSMin-Yih Hsu; CHECK-NEXT: lsl.l #5, %d0 31c23a780cSMin-Yih Hsu; CHECK-NEXT: rts 32c23a780cSMin-Yih Hsuentry: 33c23a780cSMin-Yih Hsu %0 = icmp ult i16 %x, 26 ; <i1> [#uses=1] 34c23a780cSMin-Yih Hsu %iftmp.0.0 = select i1 %0, i16 32, i16 0 ; <i16> [#uses=1] 35c23a780cSMin-Yih Hsu ret i16 %iftmp.0.0 36c23a780cSMin-Yih Hsu} 37c23a780cSMin-Yih Hsu 38c23a780cSMin-Yih Hsudefine fastcc i64 @t3(i64 %x) nounwind readnone ssp { 39c23a780cSMin-Yih Hsu; CHECK-LABEL: t3: 40c23a780cSMin-Yih Hsu; CHECK: ; %bb.0: ; %entry 41657bb726SMin-Yih Hsu; CHECK-NEXT: suba.l #4, %sp 42c23a780cSMin-Yih Hsu; CHECK-NEXT: movem.l %d2, (0,%sp) ; 8-byte Folded Spill 43*c4c9d4f3SPeter Lafreniere; CHECK-NEXT: moveq #0, %d2 44c23a780cSMin-Yih Hsu; CHECK-NEXT: sub.l #18, %d1 45c23a780cSMin-Yih Hsu; CHECK-NEXT: subx.l %d2, %d0 46c23a780cSMin-Yih Hsu; CHECK-NEXT: scs %d0 47c23a780cSMin-Yih Hsu; CHECK-NEXT: move.l %d0, %d1 48c23a780cSMin-Yih Hsu; CHECK-NEXT: and.l #255, %d1 49c23a780cSMin-Yih Hsu; CHECK-NEXT: lsl.l #6, %d1 50c23a780cSMin-Yih Hsu; CHECK-NEXT: move.l %d2, %d0 51c23a780cSMin-Yih Hsu; CHECK-NEXT: movem.l (0,%sp), %d2 ; 8-byte Folded Reload 52657bb726SMin-Yih Hsu; CHECK-NEXT: adda.l #4, %sp 53c23a780cSMin-Yih Hsu; CHECK-NEXT: rts 54c23a780cSMin-Yih Hsuentry: 55c23a780cSMin-Yih Hsu %0 = icmp ult i64 %x, 18 ; <i1> [#uses=1] 56c23a780cSMin-Yih Hsu %iftmp.2.0 = select i1 %0, i64 64, i64 0 ; <i64> [#uses=1] 57c23a780cSMin-Yih Hsu ret i64 %iftmp.2.0 58c23a780cSMin-Yih Hsu} 59c23a780cSMin-Yih Hsu 60c23a780cSMin-Yih Hsudefine i8 @t5(i32 %a) { 61c23a780cSMin-Yih Hsu; CHECK-LABEL: t5: 62c23a780cSMin-Yih Hsu; CHECK: .cfi_startproc 63c23a780cSMin-Yih Hsu; CHECK-NEXT: ; %bb.0: ; %entry 64*c4c9d4f3SPeter Lafreniere; CHECK-NEXT: moveq #31, %d1 65c23a780cSMin-Yih Hsu; CHECK-NEXT: move.l (4,%sp), %d0 66c23a780cSMin-Yih Hsu; CHECK-NEXT: lsr.l %d1, %d0 67c23a780cSMin-Yih Hsu; CHECK-NEXT: eori.b #1, %d0 68c23a780cSMin-Yih Hsu; CHECK-NEXT: ; kill: def $bd0 killed $bd0 killed $d0 69c23a780cSMin-Yih Hsu; CHECK-NEXT: rts 70c23a780cSMin-Yih Hsuentry: 71c23a780cSMin-Yih Hsu %.lobit = lshr i32 %a, 31 72c23a780cSMin-Yih Hsu %trunc = trunc i32 %.lobit to i8 73c23a780cSMin-Yih Hsu %.not = xor i8 %trunc, 1 74c23a780cSMin-Yih Hsu ret i8 %.not 75c23a780cSMin-Yih Hsu} 76c23a780cSMin-Yih Hsu 77c23a780cSMin-Yih Hsu 78c23a780cSMin-Yih Hsu; 79c23a780cSMin-Yih Hsu; TODO: Should it be like this? 80c23a780cSMin-Yih Hsu; cmp.l 81c23a780cSMin-Yih Hsu; smi 82c23a780cSMin-Yih Hsu; since we are intereseted in sign bit only 83c23a780cSMin-Yih Hsu; and.l in the end is superfluous 84c23a780cSMin-Yih Hsu 85c23a780cSMin-Yih Hsudefine zeroext i1 @t6(i32 %a) { 86c23a780cSMin-Yih Hsu; CHECK-LABEL: t6: 87c23a780cSMin-Yih Hsu; CHECK: .cfi_startproc 88c23a780cSMin-Yih Hsu; CHECK-NEXT: ; %bb.0: ; %entry 89*c4c9d4f3SPeter Lafreniere; CHECK-NEXT: moveq #31, %d0 90c23a780cSMin-Yih Hsu; CHECK-NEXT: move.l (4,%sp), %d1 91c23a780cSMin-Yih Hsu; CHECK-NEXT: lsr.l %d0, %d1 92c23a780cSMin-Yih Hsu; CHECK-NEXT: eori.b #1, %d1 93c23a780cSMin-Yih Hsu; CHECK-NEXT: move.l %d1, %d0 94c23a780cSMin-Yih Hsu; CHECK-NEXT: and.l #255, %d0 95c23a780cSMin-Yih Hsu; CHECK-NEXT: rts 96c23a780cSMin-Yih Hsuentry: 97c23a780cSMin-Yih Hsu %.lobit = lshr i32 %a, 31 98c23a780cSMin-Yih Hsu %trunc = trunc i32 %.lobit to i1 99c23a780cSMin-Yih Hsu %.not = xor i1 %trunc, 1 100c23a780cSMin-Yih Hsu ret i1 %.not 101c23a780cSMin-Yih Hsu} 102