209 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=x86_64-unknown-linux-gnu < %s 2>&1 | FileCheck %s3 4define i32 @f(ptr %p) {5; CHECK-LABEL: f:6; CHECK: # %bb.0:7; CHECK-NEXT: testb $8, 1(%rdi)8; CHECK-NEXT: je .LBB0_19; CHECK-NEXT: # %bb.2: # %B10; CHECK-NEXT: movl $20, %eax11; CHECK-NEXT: retq12; CHECK-NEXT: .LBB0_1: # %A13; CHECK-NEXT: movl $10, %eax14; CHECK-NEXT: retq15 %v = load i16, ptr %p, align 216 %and = and i16 %v, 204817 %cond = icmp eq i16 %and, 018 %cond.fr = freeze i1 %cond19 br i1 %cond.fr, label %A, label %B20A:21 ret i32 1022B:23 ret i32 2024}25 26define i32 @f_false(ptr %p) {27; CHECK-LABEL: f_false:28; CHECK: # %bb.0:29; CHECK-NEXT: movb $1, %al30; CHECK-NEXT: testb %al, %al31; CHECK-NEXT: jne .LBB1_232; CHECK-NEXT: # %bb.1: # %A33; CHECK-NEXT: movl $10, %eax34; CHECK-NEXT: retq35; CHECK-NEXT: .LBB1_2: # %B36; CHECK-NEXT: movl $20, %eax37; CHECK-NEXT: retq38 %v = load i16, ptr %p, align 239 %and = and i16 %v, 204840 %cond = icmp ult i16 %and, 041 %cond.fr = freeze i1 %cond42 br i1 %cond.fr, label %A, label %B43A:44 ret i32 1045B:46 ret i32 2047}48 49define i32 @f_false2(ptr %p) {50; CHECK-LABEL: f_false2:51; CHECK: # %bb.0:52; CHECK-NEXT: movb $1, %al53; CHECK-NEXT: testb %al, %al54; CHECK-NEXT: jne .LBB2_255; CHECK-NEXT: # %bb.1: # %A56; CHECK-NEXT: movl $10, %eax57; CHECK-NEXT: retq58; CHECK-NEXT: .LBB2_2: # %B59; CHECK-NEXT: movl $20, %eax60; CHECK-NEXT: retq61 %v = load i16, ptr %p, align 262 %and = and i16 %v, 204863 %cond = icmp ult i16 65535, %and64 %cond.fr = freeze i1 %cond65 br i1 %cond.fr, label %A, label %B66A:67 ret i32 1068B:69 ret i32 2070}71 72define i32 @f_false3(ptr %p) {73; CHECK-LABEL: f_false3:74; CHECK: # %bb.0:75; CHECK-NEXT: movb $1, %al76; CHECK-NEXT: testb %al, %al77; CHECK-NEXT: jne .LBB3_278; CHECK-NEXT: # %bb.1: # %A79; CHECK-NEXT: movl $10, %eax80; CHECK-NEXT: retq81; CHECK-NEXT: .LBB3_2: # %B82; CHECK-NEXT: movl $20, %eax83; CHECK-NEXT: retq84 %v = load i16, ptr %p, align 285 %and = and i16 %v, 204886 %cond = icmp slt i16 32767, %and87 %cond.fr = freeze i1 %cond88 br i1 %cond.fr, label %A, label %B89A:90 ret i32 1091B:92 ret i32 2093}94 95define i32 @f_false4(ptr %p) {96; CHECK-LABEL: f_false4:97; CHECK: # %bb.0:98; CHECK-NEXT: movb $1, %al99; CHECK-NEXT: testb %al, %al100; CHECK-NEXT: jne .LBB4_2101; CHECK-NEXT: # %bb.1: # %A102; CHECK-NEXT: movl $10, %eax103; CHECK-NEXT: retq104; CHECK-NEXT: .LBB4_2: # %B105; CHECK-NEXT: movl $20, %eax106; CHECK-NEXT: retq107 %v = load i16, ptr %p, align 2108 %and = and i16 %v, 2048109 %cond = icmp sgt i16 %and, 32767110 %cond.fr = freeze i1 %cond111 br i1 %cond.fr, label %A, label %B112A:113 ret i32 10114B:115 ret i32 20116}117 118define i32 @f_true(ptr %p) {119; CHECK-LABEL: f_true:120; CHECK: # %bb.0:121; CHECK-NEXT: xorl %eax, %eax122; CHECK-NEXT: testb %al, %al123; CHECK-NEXT: jne .LBB5_2124; CHECK-NEXT: # %bb.1: # %A125; CHECK-NEXT: movl $10, %eax126; CHECK-NEXT: retq127; CHECK-NEXT: .LBB5_2: # %B128; CHECK-NEXT: movl $20, %eax129; CHECK-NEXT: retq130 %v = load i16, ptr %p, align 2131 %and = and i16 %v, 2048132 %cond = icmp sge i16 %and, -32768133 %cond.fr = freeze i1 %cond134 br i1 %cond.fr, label %A, label %B135A:136 ret i32 10137B:138 ret i32 20139}140 141define i32 @f_true2(ptr %p) {142; CHECK-LABEL: f_true2:143; CHECK: # %bb.0:144; CHECK-NEXT: xorl %eax, %eax145; CHECK-NEXT: testb %al, %al146; CHECK-NEXT: jne .LBB6_2147; CHECK-NEXT: # %bb.1: # %A148; CHECK-NEXT: movl $10, %eax149; CHECK-NEXT: retq150; CHECK-NEXT: .LBB6_2: # %B151; CHECK-NEXT: movl $20, %eax152; CHECK-NEXT: retq153 %v = load i16, ptr %p, align 2154 %and = and i16 %v, 2048155 %cond = icmp uge i16 %and, 0156 %cond.fr = freeze i1 %cond157 br i1 %cond.fr, label %A, label %B158A:159 ret i32 10160B:161 ret i32 20162}163 164define i32 @f_true3(ptr %p) {165; CHECK-LABEL: f_true3:166; CHECK: # %bb.0:167; CHECK-NEXT: xorl %eax, %eax168; CHECK-NEXT: testb %al, %al169; CHECK-NEXT: jne .LBB7_2170; CHECK-NEXT: # %bb.1: # %A171; CHECK-NEXT: movl $10, %eax172; CHECK-NEXT: retq173; CHECK-NEXT: .LBB7_2: # %B174; CHECK-NEXT: movl $20, %eax175; CHECK-NEXT: retq176 %v = load i16, ptr %p, align 2177 %and = and i16 %v, 2048178 %cond = icmp ule i16 0, %and179 %cond.fr = freeze i1 %cond180 br i1 %cond.fr, label %A, label %B181A:182 ret i32 10183B:184 ret i32 20185}186 187define i32 @f_true4(ptr %p) {188; CHECK-LABEL: f_true4:189; CHECK: # %bb.0:190; CHECK-NEXT: xorl %eax, %eax191; CHECK-NEXT: testb %al, %al192; CHECK-NEXT: jne .LBB8_2193; CHECK-NEXT: # %bb.1: # %A194; CHECK-NEXT: movl $10, %eax195; CHECK-NEXT: retq196; CHECK-NEXT: .LBB8_2: # %B197; CHECK-NEXT: movl $20, %eax198; CHECK-NEXT: retq199 %v = load i16, ptr %p, align 2200 %and = and i16 %v, 2048201 %cond = icmp ule i16 %and, 65535202 %cond.fr = freeze i1 %cond203 br i1 %cond.fr, label %A, label %B204A:205 ret i32 10206B:207 ret i32 20208}209