llvm/llvm/test/CodeGen/M68k/Data/sext-i1.ll

; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
; RUN: llc -mtriple=m68k < %s | FileCheck %s

define void @sext_inreg_i1_to_i8(i1 %val, ptr %ptr) {
; CHECK-LABEL: sext_inreg_i1_to_i8:
; CHECK:         .cfi_startproc
; CHECK-NEXT:  ; %bb.0: ; %entry
; CHECK-NEXT:    move.b (7,%sp), %d0
; CHECK-NEXT:    and.b #1, %d0
; CHECK-NEXT:    neg.b %d0
; CHECK-NEXT:    move.l (8,%sp), %a0
; CHECK-NEXT:    move.b %d0, (%a0)
; CHECK-NEXT:    rts
entry:
  %cond = select i1 %val, i8 -1, i8 0
  store i8 %cond, ptr %ptr
  ret void
}

define void @sext_inreg_i1_to_i16(i1 %val, ptr %ptr) {
; CHECK-LABEL: sext_inreg_i1_to_i16:
; CHECK:         .cfi_startproc
; CHECK-NEXT:  ; %bb.0: ; %entry
; CHECK-NEXT:    move.b (7,%sp), %d0
; CHECK-NEXT:    and.l #255, %d0
; CHECK-NEXT:    and.w #1, %d0
; CHECK-NEXT:    neg.w %d0
; CHECK-NEXT:    move.l (8,%sp), %a0
; CHECK-NEXT:    move.w %d0, (%a0)
; CHECK-NEXT:    rts
entry:
  %cond = select i1 %val, i16 -1, i16 0
  store i16 %cond, ptr %ptr
  ret void
}

define void @sext_inreg_i1_to_i32(i1 %val, ptr %ptr) {
; CHECK-LABEL: sext_inreg_i1_to_i32:
; CHECK:         .cfi_startproc
; CHECK-NEXT:  ; %bb.0: ; %entry
; CHECK-NEXT:    move.b (7,%sp), %d0
; CHECK-NEXT:    and.l #255, %d0
; CHECK-NEXT:    and.l #1, %d0
; CHECK-NEXT:    neg.l %d0
; CHECK-NEXT:    move.l (8,%sp), %a0
; CHECK-NEXT:    move.l %d0, (%a0)
; CHECK-NEXT:    rts
entry:
  %cond = select i1 %val, i32 -1, i32 0
  store i32 %cond, ptr %ptr
  ret void
}