xref: /llvm-project/llvm/test/CodeGen/X86/fast-isel-load-bitcast-fold.ll (revision 2f448bf509432c1a19ec46ab8cbc7353c03c6280)
105c3fe07SNikita Popov; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
205c3fe07SNikita Popov; RUN: llc -O0 -mtriple=x86_64-- -verify-machineinstrs < %s | FileCheck %s
305c3fe07SNikita Popov
4*2f448bf5SNikita Popovdefine void @repro(ptr %a0, i1 %a1) nounwind {
505c3fe07SNikita Popov; CHECK-LABEL: repro:
605c3fe07SNikita Popov; CHECK:       # %bb.0:
705c3fe07SNikita Popov; CHECK-NEXT:    subq $24, %rsp
805c3fe07SNikita Popov; CHECK-NEXT:    movb %sil, %al
905c3fe07SNikita Popov; CHECK-NEXT:    movb %al, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
1005c3fe07SNikita Popov; CHECK-NEXT:    movq (%rdi), %rax
1105c3fe07SNikita Popov; CHECK-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1205c3fe07SNikita Popov; CHECK-NEXT:    callq *%rax
1305c3fe07SNikita Popov; CHECK-NEXT:    movb {{[-0-9]+}}(%r{{[sb]}}p), %al # 1-byte Reload
1405c3fe07SNikita Popov; CHECK-NEXT:    testb $1, %al
1505c3fe07SNikita Popov; CHECK-NEXT:    jne .LBB0_1
1605c3fe07SNikita Popov; CHECK-NEXT:    jmp .LBB0_2
1705c3fe07SNikita Popov; CHECK-NEXT:  .LBB0_1: # %bb1
1805c3fe07SNikita Popov; CHECK-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
1905c3fe07SNikita Popov; CHECK-NEXT:    callq *%rax
2005c3fe07SNikita Popov; CHECK-NEXT:    addq $24, %rsp
2105c3fe07SNikita Popov; CHECK-NEXT:    retq
2205c3fe07SNikita Popov; CHECK-NEXT:  .LBB0_2: # %bb2
2305c3fe07SNikita Popov; CHECK-NEXT:    addq $24, %rsp
2405c3fe07SNikita Popov; CHECK-NEXT:    retq
25*2f448bf5SNikita Popov  %tmp0 = load ptr, ptr %a0
26*2f448bf5SNikita Popov  call void %tmp0()
2705c3fe07SNikita Popov  br i1 %a1, label %bb1, label %bb2
2805c3fe07SNikita Popov
2905c3fe07SNikita Popovbb1:
30*2f448bf5SNikita Popov  call void %tmp0()
3105c3fe07SNikita Popov  ret void
3205c3fe07SNikita Popov
3305c3fe07SNikita Popovbb2:
3405c3fe07SNikita Popov  ret void
3505c3fe07SNikita Popov}
36