# RUN: llc -mtriple=x86_64-unknown-linux-gnu -run-pass x86-fixup-bw-insts %s -o - | FileCheck  %s

--- |
  define void @test1() { ret void }
  define void @test2() { ret void }

  define i16 @test3(i16* readonly %p) {
  ; Keep original IR to show how the situation like this might happen
  ; due to preceding CG passes.
  ;
  ; %0 is used in %if.end BB (before tail-duplication), so its
  ; corresponding super-register (EAX) is live-in into that BB (%if.end)
  ; and also has an implicit-def EAX flag. Make sure that we still change
  ; the movw into movzwl because EAX is not live before the load (which
  ; can be seen by the fact that implicit EAX flag is missing).
  entry:
    %tobool = icmp eq i16* %p, null
    br i1 %tobool, label %if.end, label %if.then

  if.then:                                          ; preds = %entry
    %0 = load i16, i16* %p, align 2
    br label %if.end

  if.end:                                           ; preds = %if.then, %entry
    %i.0 = phi i16 [ %0, %if.then ], [ 0, %entry ]
    ret i16 %i.0
  }

  define i16 @test4() {
  entry:
    %t1 = zext i1 undef to i16
    %t2 = or i16 undef, %t1
    ret i16 %t2
  }

  define void @test5() {ret void}

...
---
# CHECK-LABEL: name: test1
name:            test1
alignment:       4
tracksRegLiveness: true
liveins:
  - { reg: '$rax' }
# Verify that "movw ($rax), $ax" is changed to "movzwl ($rax), $rax".
#
# For that to happen, the liveness information after the MOV16rm
# instruction should be used, not before it because $rax is live
# before the MOV and is killed by it.
body:             |
  bb.0:
    liveins: $rax

    $ax = MOV16rm killed $rax, 1, $noreg, 0, $noreg
    ; CHECK: $eax = MOVZX32rm16 killed $rax

    RETQ $ax

...
---
# CHECK-LABEL: name: test2
name:            test2
alignment:       4
tracksRegLiveness: true
liveins:
  - { reg: '$rax' }
# Imp-use of any super-register means the register is live before the MOV
body:             |
  bb.0:
    liveins: $dl, $rbx, $rcx, $r14

    $cl = MOV8rr killed $dl, implicit killed $rcx, implicit-def $rcx
    ; CHECK: $cl = MOV8rr killed $dl, implicit killed $rcx, implicit-def $rcx
    JMP_1 %bb.1
  bb.1:
    liveins: $rcx

    RETQ $cl

...
---
# CHECK-LABEL: name: test3
name:            test3
alignment:       4
tracksRegLiveness: true
liveins:
  - { reg: '$rdi' }
# After MOV16rm the whole $eax is not *really* live, as can be seen by
# missing implicit-uses of it in that MOV. Make sure that MOV is
# transformed into MOVZX.
# See the comment near the original IR on what preceding decisions can
# lead to that.
body:             |
  bb.0.entry:
    successors: %bb.1(0x30000000), %bb.2.if.then(0x50000000)
    liveins: $rdi

    TEST64rr $rdi, $rdi, implicit-def $eflags
    JE_1 %bb.1, implicit $eflags

  bb.2.if.then:
    liveins: $rdi

    $ax = MOV16rm killed $rdi, 1, $noreg, 0, $noreg, implicit-def $eax :: (load 2 from %ir.p)
    ; CHECK: $eax = MOVZX32rm16 killed $rdi, 1, $noreg, 0, $noreg, implicit-def $eax :: (load 2 from %ir.p)
    $ax = KILL $ax, implicit killed $eax
    RETQ $ax

  bb.1:
    $eax = XOR32rr undef $eax, undef $eax, implicit-def dead $eflags
    $ax = KILL $ax, implicit killed $eax
    RETQ $ax

...
---
# CHECK-LABEL: name: test4
name:            test4
alignment:       4
tracksRegLiveness: true
liveins:
  - { reg: '$r9d' }
# This code copies r10b into r9b and then uses r9w. We would like to promote
# the copy to a 32-bit copy, but because r9w is used this is not acceptable.
body:             |
  bb.0.entry:
    liveins: $r9d

    $r9b = MOV8rr undef $r10b, implicit-def $r9d, implicit killed $r9d, implicit-def $eflags
    ; CHECK: $r9b = MOV8rr undef $r10b, implicit-def $r9d, implicit killed $r9d, implicit-def $eflags

    $ax = OR16rr undef $ax, $r9w, implicit-def $eflags
    RETQ $ax

...
---
# CHECK-LABEL: name: test5
name:            test5
alignment:       4
tracksRegLiveness: true
liveins:
  - { reg: '$ch', reg: '$bl' }
body:             |
  bb.0:
    liveins: $ch, $bl

    $cl = MOV8rr $bl, implicit-def $cx, implicit killed $ch, implicit-def $eflags
    ; CHECK: $cl = MOV8rr $bl, implicit-def $cx, implicit killed $ch, implicit-def $eflags

    RETQ $cx

...
