; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s
define i64 @foo() nounwind {
; CHECK-LABEL: foo:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: cmpl $12, 0
; CHECK-NEXT: je .LBB0_1
; CHECK-NEXT: # %bb.2: # %bb65
; CHECK-NEXT: xorl %ecx, %ecx
; CHECK-NEXT: #APP
; CHECK-NEXT: #NO_APP
; CHECK-NEXT: xorl %eax, %eax
; CHECK-NEXT: retq
; CHECK-NEXT: .LBB0_1: # %bb56
entry:
%t0 = load i32, ptr null, align 8
switch i32 %t0, label %bb65 [
i32 16, label %bb
i32 12, label %bb56
]
bb:
br label %bb65
bb56:
unreachable
bb65:
%a = phi i64 [ 0, %bb ], [ 0, %entry ]
tail call void asm "", "{cx}"(i64 %a) nounwind
%t15 = and i64 %a, 4294967295
ret i64 %t15
}
define i64 @bar(i64 %t0) nounwind {
; CHECK-LABEL: bar:
; CHECK: # %bb.0:
; CHECK-NEXT: movq %rdi, %rax
; CHECK-NEXT: xorl %ecx, %ecx
; CHECK-NEXT: #APP
; CHECK-NEXT: #NO_APP
; CHECK-NEXT: negl %eax
; CHECK-NEXT: retq
call void asm "", "{cx}"(i64 0) nounwind
%t1 = sub i64 0, %t0
%t2 = and i64 %t1, 4294967295
ret i64 %t2
}