brintos

brintos / llvm-project-archived public Read only

0
0
Text · 51.6 KiB · 4c58c8a Raw
1305 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ccmp -show-mc-encoding -verify-machineinstrs | FileCheck %s3; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ccmp,+ndd -show-mc-encoding -verify-machineinstrs | FileCheck %s --check-prefix=NDD4 5define void @ccmp8rr_zf(i8 noundef %a, i8 noundef %b, i8 noundef %c) {6; CHECK-LABEL: ccmp8rr_zf:7; CHECK:       # %bb.0: # %entry8; CHECK-NEXT:    cmpb %dl, %dil # encoding: [0x40,0x38,0xd7]9; CHECK-NEXT:    ccmpneb {dfv=zf} %dl, %sil # encoding: [0x62,0xf4,0x14,0x05,0x38,0xd6]10; CHECK-NEXT:    jne .LBB0_1 # encoding: [0x75,A]11; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB0_1, kind: FK_PCRel_112; CHECK-NEXT:  # %bb.2: # %if.then13; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]14; CHECK-NEXT:    jmp foo # TAILCALL15; CHECK-NEXT:    # encoding: [0xeb,A]16; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_117; CHECK-NEXT:  .LBB0_1: # %if.end18; CHECK-NEXT:    retq # encoding: [0xc3]19;20; NDD-LABEL: ccmp8rr_zf:21; NDD:       # %bb.0: # %entry22; NDD-NEXT:    cmpb %dl, %dil # encoding: [0x40,0x38,0xd7]23; NDD-NEXT:    ccmpneb {dfv=zf} %dl, %sil # encoding: [0x62,0xf4,0x14,0x05,0x38,0xd6]24; NDD-NEXT:    jne .LBB0_1 # encoding: [0x75,A]25; NDD-NEXT:    # fixup A - offset: 1, value: .LBB0_1, kind: FK_PCRel_126; NDD-NEXT:  # %bb.2: # %if.then27; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]28; NDD-NEXT:    jmp foo # TAILCALL29; NDD-NEXT:    # encoding: [0xeb,A]30; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_131; NDD-NEXT:  .LBB0_1: # %if.end32; NDD-NEXT:    retq # encoding: [0xc3]33entry:34  %cmp = icmp eq i8 %a, %c35  %cmp1 = icmp eq i8 %b, %c36  %or.cond = or i1 %cmp, %cmp137  br i1 %or.cond, label %if.then, label %if.end38 39if.then:                                          ; preds = %entry40  tail call void (...) @foo()41  br label %if.end42 43if.end:                                           ; preds = %entry, %if.then44  ret void45}46 47define void @ccmp8rr_cf(i8 noundef %a, i8 noundef %b) {48; CHECK-LABEL: ccmp8rr_cf:49; CHECK:       # %bb.0: # %entry50; CHECK-NEXT:    cmpb $2, %dil # encoding: [0x40,0x80,0xff,0x02]51; CHECK-NEXT:    ccmpgeb {dfv=cf} $2, %sil # encoding: [0x62,0xf4,0x0c,0x0d,0x80,0xfe,0x02]52; CHECK-NEXT:    jb .LBB1_1 # encoding: [0x72,A]53; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB1_1, kind: FK_PCRel_154; CHECK-NEXT:  # %bb.2: # %if.then55; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]56; CHECK-NEXT:    jmp foo # TAILCALL57; CHECK-NEXT:    # encoding: [0xeb,A]58; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_159; CHECK-NEXT:  .LBB1_1: # %if.end60; CHECK-NEXT:    retq # encoding: [0xc3]61;62; NDD-LABEL: ccmp8rr_cf:63; NDD:       # %bb.0: # %entry64; NDD-NEXT:    cmpb $2, %dil # encoding: [0x40,0x80,0xff,0x02]65; NDD-NEXT:    ccmpgeb {dfv=cf} $2, %sil # encoding: [0x62,0xf4,0x0c,0x0d,0x80,0xfe,0x02]66; NDD-NEXT:    jb .LBB1_1 # encoding: [0x72,A]67; NDD-NEXT:    # fixup A - offset: 1, value: .LBB1_1, kind: FK_PCRel_168; NDD-NEXT:  # %bb.2: # %if.then69; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]70; NDD-NEXT:    jmp foo # TAILCALL71; NDD-NEXT:    # encoding: [0xeb,A]72; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_173; NDD-NEXT:  .LBB1_1: # %if.end74; NDD-NEXT:    retq # encoding: [0xc3]75entry:76  %cmp = icmp sgt i8 %a, 177  %tobool = icmp ugt i8 %b, 178  %or.cond = and i1 %cmp, %tobool79  br i1 %or.cond, label %if.then, label %if.end80 81if.then:                                          ; preds = %entry82  tail call void (...) @foo()83  br label %if.end84 85if.end:                                           ; preds = %if.then, %entry86  ret void87}88 89define i8 @ccmp8rr_sf(i8 %a, i8 %b, i8* nocapture %c)  {90; CHECK-LABEL: ccmp8rr_sf:91; CHECK:       # %bb.0: # %entry92; CHECK-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]93; CHECK-NEXT:    ccmpneb {dfv=sf} $2, %sil # encoding: [0x62,0xf4,0x24,0x05,0x80,0xfe,0x02]94; CHECK-NEXT:    jl .LBB2_2 # encoding: [0x7c,A]95; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB2_2, kind: FK_PCRel_196; CHECK-NEXT:  # %bb.1: # %if.then97; CHECK-NEXT:    movb %dil, (%rdx) # encoding: [0x40,0x88,0x3a]98; CHECK-NEXT:  .LBB2_2: # %if.end99; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]100; CHECK-NEXT:    retq # encoding: [0xc3]101;102; NDD-LABEL: ccmp8rr_sf:103; NDD:       # %bb.0: # %entry104; NDD-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]105; NDD-NEXT:    ccmpneb {dfv=sf} $2, %sil # encoding: [0x62,0xf4,0x24,0x05,0x80,0xfe,0x02]106; NDD-NEXT:    jl .LBB2_2 # encoding: [0x7c,A]107; NDD-NEXT:    # fixup A - offset: 1, value: .LBB2_2, kind: FK_PCRel_1108; NDD-NEXT:  # %bb.1: # %if.then109; NDD-NEXT:    movb %dil, (%rdx) # encoding: [0x40,0x88,0x3a]110; NDD-NEXT:  .LBB2_2: # %if.end111; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]112; NDD-NEXT:    retq # encoding: [0xc3]113entry:114  %tobool = icmp ne i8 %a, 0115  %cmp = icmp sgt i8 %b, 1116  %or.cond = select i1 %tobool, i1 %cmp, i1 false117  br i1 %or.cond, label %if.then, label %if.end118 119if.then:120  store i8 %a, i8* %c, align 4121  br label %if.end122 123if.end:124  ret i8 0125}126 127define i8 @ccmp8rr_none(i8 %a, i8 %b, i8* nocapture %c)  {128; CHECK-LABEL: ccmp8rr_none:129; CHECK:       # %bb.0: # %entry130; CHECK-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]131; CHECK-NEXT:    ccmpeb {dfv=} $2, %sil # encoding: [0x62,0xf4,0x04,0x04,0x80,0xfe,0x02]132; CHECK-NEXT:    jl .LBB3_2 # encoding: [0x7c,A]133; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB3_2, kind: FK_PCRel_1134; CHECK-NEXT:  # %bb.1: # %if.then135; CHECK-NEXT:    movb %dil, (%rdx) # encoding: [0x40,0x88,0x3a]136; CHECK-NEXT:  .LBB3_2: # %if.end137; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]138; CHECK-NEXT:    retq # encoding: [0xc3]139;140; NDD-LABEL: ccmp8rr_none:141; NDD:       # %bb.0: # %entry142; NDD-NEXT:    testb %dil, %dil # encoding: [0x40,0x84,0xff]143; NDD-NEXT:    ccmpeb {dfv=} $2, %sil # encoding: [0x62,0xf4,0x04,0x04,0x80,0xfe,0x02]144; NDD-NEXT:    jl .LBB3_2 # encoding: [0x7c,A]145; NDD-NEXT:    # fixup A - offset: 1, value: .LBB3_2, kind: FK_PCRel_1146; NDD-NEXT:  # %bb.1: # %if.then147; NDD-NEXT:    movb %dil, (%rdx) # encoding: [0x40,0x88,0x3a]148; NDD-NEXT:  .LBB3_2: # %if.end149; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]150; NDD-NEXT:    retq # encoding: [0xc3]151entry:152  %tobool = icmp ne i8 %a, 0153  %cmp = icmp sgt i8 %b, 1154  %or.cond = select i1 %tobool, i1 true, i1 %cmp155  br i1 %or.cond, label %if.then, label %if.end156 157if.then:158  store i8 %a, i8* %c, align 4159  br label %if.end160 161if.end:162  ret i8 0163}164 165define void @ccmp16rr_sf(i16 noundef %a, i16 noundef %b, i16 noundef %c) {166; CHECK-LABEL: ccmp16rr_sf:167; CHECK:       # %bb.0: # %entry168; CHECK-NEXT:    cmpw %dx, %di # encoding: [0x66,0x39,0xd7]169; CHECK-NEXT:    ccmplew {dfv=sf} %dx, %si # encoding: [0x62,0xf4,0x25,0x0e,0x39,0xd6]170; CHECK-NEXT:    jge .LBB4_1 # encoding: [0x7d,A]171; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB4_1, kind: FK_PCRel_1172; CHECK-NEXT:  # %bb.2: # %if.then173; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]174; CHECK-NEXT:    jmp foo # TAILCALL175; CHECK-NEXT:    # encoding: [0xeb,A]176; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1177; CHECK-NEXT:  .LBB4_1: # %if.end178; CHECK-NEXT:    retq # encoding: [0xc3]179;180; NDD-LABEL: ccmp16rr_sf:181; NDD:       # %bb.0: # %entry182; NDD-NEXT:    cmpw %dx, %di # encoding: [0x66,0x39,0xd7]183; NDD-NEXT:    ccmplew {dfv=sf} %dx, %si # encoding: [0x62,0xf4,0x25,0x0e,0x39,0xd6]184; NDD-NEXT:    jge .LBB4_1 # encoding: [0x7d,A]185; NDD-NEXT:    # fixup A - offset: 1, value: .LBB4_1, kind: FK_PCRel_1186; NDD-NEXT:  # %bb.2: # %if.then187; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]188; NDD-NEXT:    jmp foo # TAILCALL189; NDD-NEXT:    # encoding: [0xeb,A]190; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1191; NDD-NEXT:  .LBB4_1: # %if.end192; NDD-NEXT:    retq # encoding: [0xc3]193entry:194  %cmp = icmp sgt i16 %a, %c195  %cmp1 = icmp slt i16 %b, %c196  %or.cond = or i1 %cmp, %cmp1197  br i1 %or.cond, label %if.then, label %if.end198 199if.then:                                          ; preds = %entry200  tail call void (...) @foo()201  br label %if.end202 203if.end:                                           ; preds = %entry, %if.then204  ret void205}206 207define void @ccmp32rr_cf(i32 noundef %a, i32 noundef %b, i32 noundef %c) {208; CHECK-LABEL: ccmp32rr_cf:209; CHECK:       # %bb.0: # %entry210; CHECK-NEXT:    cmpl %edx, %edi # encoding: [0x39,0xd7]211; CHECK-NEXT:    ccmpbl {dfv=cf} %edx, %esi # encoding: [0x62,0xf4,0x0c,0x02,0x39,0xd6]212; CHECK-NEXT:    ja .LBB5_1 # encoding: [0x77,A]213; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB5_1, kind: FK_PCRel_1214; CHECK-NEXT:  # %bb.2: # %if.then215; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]216; CHECK-NEXT:    jmp foo # TAILCALL217; CHECK-NEXT:    # encoding: [0xeb,A]218; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1219; CHECK-NEXT:  .LBB5_1: # %if.end220; CHECK-NEXT:    retq # encoding: [0xc3]221;222; NDD-LABEL: ccmp32rr_cf:223; NDD:       # %bb.0: # %entry224; NDD-NEXT:    cmpl %edx, %edi # encoding: [0x39,0xd7]225; NDD-NEXT:    ccmpbl {dfv=cf} %edx, %esi # encoding: [0x62,0xf4,0x0c,0x02,0x39,0xd6]226; NDD-NEXT:    ja .LBB5_1 # encoding: [0x77,A]227; NDD-NEXT:    # fixup A - offset: 1, value: .LBB5_1, kind: FK_PCRel_1228; NDD-NEXT:  # %bb.2: # %if.then229; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]230; NDD-NEXT:    jmp foo # TAILCALL231; NDD-NEXT:    # encoding: [0xeb,A]232; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1233; NDD-NEXT:  .LBB5_1: # %if.end234; NDD-NEXT:    retq # encoding: [0xc3]235entry:236  %cmp = icmp uge i32 %a, %c237  %cmp1 = icmp ule i32 %b, %c238  %or.cond = or i1 %cmp, %cmp1239  br i1 %or.cond, label %if.then, label %if.end240 241if.then:                                          ; preds = %entry242  tail call void (...) @foo()243  br label %if.end244 245if.end:                                           ; preds = %entry, %if.then246  ret void247}248 249define void @ccmp64rr_of(i64 %a, i64 %b, i64 %c) {250; CHECK-LABEL: ccmp64rr_of:251; CHECK:       # %bb.0: # %bb252; CHECK-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]253; CHECK-NEXT:    ccmpbq {dfv=of} %rsi, %rdi # encoding: [0x62,0xf4,0xc4,0x02,0x39,0xf7]254; CHECK-NEXT:    jno .LBB6_1 # encoding: [0x71,A]255; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB6_1, kind: FK_PCRel_1256; CHECK-NEXT:  # %bb.2: # %if.then257; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]258; CHECK-NEXT:    jmp foo # TAILCALL259; CHECK-NEXT:    # encoding: [0xeb,A]260; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1261; CHECK-NEXT:  .LBB6_1: # %if.end262; CHECK-NEXT:    retq # encoding: [0xc3]263;264; NDD-LABEL: ccmp64rr_of:265; NDD:       # %bb.0: # %bb266; NDD-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]267; NDD-NEXT:    ccmpbq {dfv=of} %rsi, %rdi # encoding: [0x62,0xf4,0xc4,0x02,0x39,0xf7]268; NDD-NEXT:    jno .LBB6_1 # encoding: [0x71,A]269; NDD-NEXT:    # fixup A - offset: 1, value: .LBB6_1, kind: FK_PCRel_1270; NDD-NEXT:  # %bb.2: # %if.then271; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]272; NDD-NEXT:    jmp foo # TAILCALL273; NDD-NEXT:    # encoding: [0xeb,A]274; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1275; NDD-NEXT:  .LBB6_1: # %if.end276; NDD-NEXT:    retq # encoding: [0xc3]277bb:278  %cmp = icmp uge i64 %a, %c279  %smul = call {i64, i1} @llvm.ssub.with.overflow.i64(i64 %a, i64 %b)280  %obit = extractvalue {i64, i1} %smul, 1281  %or.cond = or i1 %cmp, %obit282  br i1 %or.cond, label %if.then, label %if.end283 284if.then:                                          ; preds = %entry285  tail call void (...) @foo()286  br label %if.end287 288if.end:                                           ; preds = %entry, %if.then289  ret void290}291 292define void @ccmp64rr_of_crossbb(i64 %a, i64 %b) {293; CHECK-LABEL: ccmp64rr_of_crossbb:294; CHECK:       # %bb.0: # %bb295; CHECK-NEXT:    testq %rdi, %rdi # encoding: [0x48,0x85,0xff]296; CHECK-NEXT:    je .LBB7_2 # encoding: [0x74,A]297; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB7_2, kind: FK_PCRel_1298; CHECK-NEXT:  # %bb.1: # %bb1299; CHECK-NEXT:    cmpq %rsi, %rdi # encoding: [0x48,0x39,0xf7]300; CHECK-NEXT:  .LBB7_2: # %bb3301; CHECK-NEXT:    retq # encoding: [0xc3]302;303; NDD-LABEL: ccmp64rr_of_crossbb:304; NDD:       # %bb.0: # %bb305; NDD-NEXT:    testq %rdi, %rdi # encoding: [0x48,0x85,0xff]306; NDD-NEXT:    je .LBB7_2 # encoding: [0x74,A]307; NDD-NEXT:    # fixup A - offset: 1, value: .LBB7_2, kind: FK_PCRel_1308; NDD-NEXT:  # %bb.1: # %bb1309; NDD-NEXT:    cmpq %rsi, %rdi # encoding: [0x48,0x39,0xf7]310; NDD-NEXT:  .LBB7_2: # %bb3311; NDD-NEXT:    retq # encoding: [0xc3]312bb:313  %cond1 = icmp eq i64 %a, 0314  br i1 %cond1, label %bb3, label %bb1315 316bb1:                                              ; preds = %bb317  %smul = call {i64, i1} @llvm.ssub.with.overflow.i64(i64 %a, i64 %b)318  %obit = extractvalue {i64, i1} %smul, 1319  br i1 %obit, label %bb3, label %bb2320 321bb2:                                              ; preds = %bb1322  %tmp = ptrtoint ptr null to i64323  br label %bb3324 325bb3:                                              ; preds = %bb2, %bb1, %bb326  ret void327}328 329define void @ccmp8ri_zf(i8 noundef %a, i8 noundef %b, i8 noundef %c) {330; CHECK-LABEL: ccmp8ri_zf:331; CHECK:       # %bb.0: # %entry332; CHECK-NEXT:    cmpb %dl, %dil # encoding: [0x40,0x38,0xd7]333; CHECK-NEXT:    ccmpleb {dfv=zf} $123, %sil # encoding: [0x62,0xf4,0x14,0x0e,0x80,0xfe,0x7b]334; CHECK-NEXT:    jne .LBB8_1 # encoding: [0x75,A]335; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB8_1, kind: FK_PCRel_1336; CHECK-NEXT:  # %bb.2: # %if.then337; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]338; CHECK-NEXT:    jmp foo # TAILCALL339; CHECK-NEXT:    # encoding: [0xeb,A]340; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1341; CHECK-NEXT:  .LBB8_1: # %if.end342; CHECK-NEXT:    retq # encoding: [0xc3]343;344; NDD-LABEL: ccmp8ri_zf:345; NDD:       # %bb.0: # %entry346; NDD-NEXT:    cmpb %dl, %dil # encoding: [0x40,0x38,0xd7]347; NDD-NEXT:    ccmpleb {dfv=zf} $123, %sil # encoding: [0x62,0xf4,0x14,0x0e,0x80,0xfe,0x7b]348; NDD-NEXT:    jne .LBB8_1 # encoding: [0x75,A]349; NDD-NEXT:    # fixup A - offset: 1, value: .LBB8_1, kind: FK_PCRel_1350; NDD-NEXT:  # %bb.2: # %if.then351; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]352; NDD-NEXT:    jmp foo # TAILCALL353; NDD-NEXT:    # encoding: [0xeb,A]354; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1355; NDD-NEXT:  .LBB8_1: # %if.end356; NDD-NEXT:    retq # encoding: [0xc3]357entry:358  %cmp = icmp sgt i8 %a, %c359  %cmp1 = icmp eq i8 %b, 123360  %or.cond = or i1 %cmp, %cmp1361  br i1 %or.cond, label %if.then, label %if.end362 363if.then:                                          ; preds = %entry364  tail call void (...) @foo()365  br label %if.end366 367if.end:                                           ; preds = %entry, %if.then368  ret void369}370 371define i8 @ccmp8ri_zf_double(i8 %a, double %b, i8* nocapture %c)  {372; CHECK-LABEL: ccmp8ri_zf_double:373; CHECK:       # %bb.0: # %entry374; CHECK-NEXT:    xorpd %xmm1, %xmm1 # encoding: [0x66,0x0f,0x57,0xc9]375; CHECK-NEXT:    ucomisd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc1]376; CHECK-NEXT:    ccmpeb {dfv=zf} $123, %dil # encoding: [0x62,0xf4,0x14,0x04,0x80,0xff,0x7b]377; CHECK-NEXT:    je .LBB9_2 # encoding: [0x74,A]378; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB9_2, kind: FK_PCRel_1379; CHECK-NEXT:  # %bb.1: # %if.then380; CHECK-NEXT:    movb %dil, (%rsi) # encoding: [0x40,0x88,0x3e]381; CHECK-NEXT:  .LBB9_2: # %if.end382; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]383; CHECK-NEXT:    retq # encoding: [0xc3]384;385; NDD-LABEL: ccmp8ri_zf_double:386; NDD:       # %bb.0: # %entry387; NDD-NEXT:    xorpd %xmm1, %xmm1 # encoding: [0x66,0x0f,0x57,0xc9]388; NDD-NEXT:    ucomisd %xmm1, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc1]389; NDD-NEXT:    ccmpeb {dfv=zf} $123, %dil # encoding: [0x62,0xf4,0x14,0x04,0x80,0xff,0x7b]390; NDD-NEXT:    je .LBB9_2 # encoding: [0x74,A]391; NDD-NEXT:    # fixup A - offset: 1, value: .LBB9_2, kind: FK_PCRel_1392; NDD-NEXT:  # %bb.1: # %if.then393; NDD-NEXT:    movb %dil, (%rsi) # encoding: [0x40,0x88,0x3e]394; NDD-NEXT:  .LBB9_2: # %if.end395; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]396; NDD-NEXT:    retq # encoding: [0xc3]397entry:398  %tobool = icmp ne i8 %a, 123399  %cmp = fcmp ueq double %b, 0.0400  %or.cond = select i1 %tobool, i1 %cmp, i1 false401  br i1 %or.cond, label %if.then, label %if.end402 403if.then:404  store i8 %a, i8* %c, align 4405  br label %if.end406 407if.end:408  ret i8 0409}410 411define i8 @ccmp8ri_zf_double_p(i8 %a, double %b, i8* nocapture %c)  {412; CHECK-LABEL: ccmp8ri_zf_double_p:413; CHECK:       # %bb.0: # %entry414; CHECK-NEXT:    cmpb $123, %dil # encoding: [0x40,0x80,0xff,0x7b]415; CHECK-NEXT:    setne %al # encoding: [0x0f,0x95,0xc0]416; CHECK-NEXT:    ucomisd %xmm0, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc0]417; CHECK-NEXT:    setp %cl # encoding: [0x0f,0x9a,0xc1]418; CHECK-NEXT:    andb %al, %cl # encoding: [0x20,0xc1]419; CHECK-NEXT:    cmpb $1, %cl # encoding: [0x80,0xf9,0x01]420; CHECK-NEXT:    jne .LBB10_2 # encoding: [0x75,A]421; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB10_2, kind: FK_PCRel_1422; CHECK-NEXT:  # %bb.1: # %if.then423; CHECK-NEXT:    movb %dil, (%rsi) # encoding: [0x40,0x88,0x3e]424; CHECK-NEXT:  .LBB10_2: # %if.end425; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]426; CHECK-NEXT:    retq # encoding: [0xc3]427;428; NDD-LABEL: ccmp8ri_zf_double_p:429; NDD:       # %bb.0: # %entry430; NDD-NEXT:    cmpb $123, %dil # encoding: [0x40,0x80,0xff,0x7b]431; NDD-NEXT:    setne %al # encoding: [0x0f,0x95,0xc0]432; NDD-NEXT:    ucomisd %xmm0, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc0]433; NDD-NEXT:    setp %cl # encoding: [0x0f,0x9a,0xc1]434; NDD-NEXT:    andb %cl, %al # EVEX TO LEGACY Compression encoding: [0x20,0xc8]435; NDD-NEXT:    cmpb $1, %al # encoding: [0x3c,0x01]436; NDD-NEXT:    jne .LBB10_2 # encoding: [0x75,A]437; NDD-NEXT:    # fixup A - offset: 1, value: .LBB10_2, kind: FK_PCRel_1438; NDD-NEXT:  # %bb.1: # %if.then439; NDD-NEXT:    movb %dil, (%rsi) # encoding: [0x40,0x88,0x3e]440; NDD-NEXT:  .LBB10_2: # %if.end441; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]442; NDD-NEXT:    retq # encoding: [0xc3]443entry:444  %tobool = icmp ne i8 %a, 123445  %cmp = fcmp uno double %b, 0.0446  %or.cond = select i1 %tobool, i1 %cmp, i1 false447  br i1 %or.cond, label %if.then, label %if.end448 449if.then:450  store i8 %a, i8* %c, align 4451  br label %if.end452 453if.end:454  ret i8 0455}456 457define i8 @ccmp8ri_zf_double_np(i8 %a, double %b, i8* nocapture %c)  {458; CHECK-LABEL: ccmp8ri_zf_double_np:459; CHECK:       # %bb.0: # %entry460; CHECK-NEXT:    cmpb $123, %dil # encoding: [0x40,0x80,0xff,0x7b]461; CHECK-NEXT:    setne %al # encoding: [0x0f,0x95,0xc0]462; CHECK-NEXT:    ucomisd %xmm0, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc0]463; CHECK-NEXT:    setnp %cl # encoding: [0x0f,0x9b,0xc1]464; CHECK-NEXT:    andb %al, %cl # encoding: [0x20,0xc1]465; CHECK-NEXT:    cmpb $1, %cl # encoding: [0x80,0xf9,0x01]466; CHECK-NEXT:    jne .LBB11_2 # encoding: [0x75,A]467; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB11_2, kind: FK_PCRel_1468; CHECK-NEXT:  # %bb.1: # %if.then469; CHECK-NEXT:    movb %dil, (%rsi) # encoding: [0x40,0x88,0x3e]470; CHECK-NEXT:  .LBB11_2: # %if.end471; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]472; CHECK-NEXT:    retq # encoding: [0xc3]473;474; NDD-LABEL: ccmp8ri_zf_double_np:475; NDD:       # %bb.0: # %entry476; NDD-NEXT:    cmpb $123, %dil # encoding: [0x40,0x80,0xff,0x7b]477; NDD-NEXT:    setne %al # encoding: [0x0f,0x95,0xc0]478; NDD-NEXT:    ucomisd %xmm0, %xmm0 # encoding: [0x66,0x0f,0x2e,0xc0]479; NDD-NEXT:    setnp %cl # encoding: [0x0f,0x9b,0xc1]480; NDD-NEXT:    andb %cl, %al # EVEX TO LEGACY Compression encoding: [0x20,0xc8]481; NDD-NEXT:    cmpb $1, %al # encoding: [0x3c,0x01]482; NDD-NEXT:    jne .LBB11_2 # encoding: [0x75,A]483; NDD-NEXT:    # fixup A - offset: 1, value: .LBB11_2, kind: FK_PCRel_1484; NDD-NEXT:  # %bb.1: # %if.then485; NDD-NEXT:    movb %dil, (%rsi) # encoding: [0x40,0x88,0x3e]486; NDD-NEXT:  .LBB11_2: # %if.end487; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]488; NDD-NEXT:    retq # encoding: [0xc3]489entry:490  %tobool = icmp ne i8 %a, 123491  %cmp = fcmp ord double %b, 0.0492  %or.cond = select i1 %tobool, i1 %cmp, i1 false493  br i1 %or.cond, label %if.then, label %if.end494 495if.then:496  store i8 %a, i8* %c, align 4497  br label %if.end498 499if.end:500  ret i8 0501}502 503define void @ccmp16ri_zf(i16 noundef %a, i16 noundef %b, i16 noundef %c) {504; CHECK-LABEL: ccmp16ri_zf:505; CHECK:       # %bb.0: # %entry506; CHECK-NEXT:    cmpw %dx, %di # encoding: [0x66,0x39,0xd7]507; CHECK-NEXT:    movswl %si, %eax # encoding: [0x0f,0xbf,0xc6]508; CHECK-NEXT:    ccmpael {dfv=sf} $1234, %eax # encoding: [0x62,0xf4,0x24,0x03,0x81,0xf8,0xd2,0x04,0x00,0x00]509; CHECK-NEXT:    # imm = 0x4D2510; CHECK-NEXT:    jge .LBB12_1 # encoding: [0x7d,A]511; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB12_1, kind: FK_PCRel_1512; CHECK-NEXT:  # %bb.2: # %if.then513; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]514; CHECK-NEXT:    jmp foo # TAILCALL515; CHECK-NEXT:    # encoding: [0xeb,A]516; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1517; CHECK-NEXT:  .LBB12_1: # %if.end518; CHECK-NEXT:    retq # encoding: [0xc3]519;520; NDD-LABEL: ccmp16ri_zf:521; NDD:       # %bb.0: # %entry522; NDD-NEXT:    cmpw %dx, %di # encoding: [0x66,0x39,0xd7]523; NDD-NEXT:    movswl %si, %eax # encoding: [0x0f,0xbf,0xc6]524; NDD-NEXT:    ccmpael {dfv=sf} $1234, %eax # encoding: [0x62,0xf4,0x24,0x03,0x81,0xf8,0xd2,0x04,0x00,0x00]525; NDD-NEXT:    # imm = 0x4D2526; NDD-NEXT:    jge .LBB12_1 # encoding: [0x7d,A]527; NDD-NEXT:    # fixup A - offset: 1, value: .LBB12_1, kind: FK_PCRel_1528; NDD-NEXT:  # %bb.2: # %if.then529; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]530; NDD-NEXT:    jmp foo # TAILCALL531; NDD-NEXT:    # encoding: [0xeb,A]532; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1533; NDD-NEXT:  .LBB12_1: # %if.end534; NDD-NEXT:    retq # encoding: [0xc3]535entry:536  %cmp = icmp ult i16 %a, %c537  %cmp1 = icmp slt i16 %b, 1234538  %or.cond = or i1 %cmp, %cmp1539  br i1 %or.cond, label %if.then, label %if.end540 541if.then:                                          ; preds = %entry542  tail call void (...) @foo()543  br label %if.end544 545if.end:                                           ; preds = %entry, %if.then546  ret void547}548 549define void @ccmp32ri_cf(i32 noundef %a, i32 noundef %b, i32 noundef %c) {550; CHECK-LABEL: ccmp32ri_cf:551; CHECK:       # %bb.0: # %entry552; CHECK-NEXT:    cmpl %edx, %edi # encoding: [0x39,0xd7]553; CHECK-NEXT:    ccmpbl {dfv=cf} $1048577, %esi # encoding: [0x62,0xf4,0x0c,0x02,0x81,0xfe,0x01,0x00,0x10,0x00]554; CHECK-NEXT:    # imm = 0x100001555; CHECK-NEXT:    jae .LBB13_1 # encoding: [0x73,A]556; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB13_1, kind: FK_PCRel_1557; CHECK-NEXT:  # %bb.2: # %if.then558; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]559; CHECK-NEXT:    jmp foo # TAILCALL560; CHECK-NEXT:    # encoding: [0xeb,A]561; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1562; CHECK-NEXT:  .LBB13_1: # %if.end563; CHECK-NEXT:    retq # encoding: [0xc3]564;565; NDD-LABEL: ccmp32ri_cf:566; NDD:       # %bb.0: # %entry567; NDD-NEXT:    cmpl %edx, %edi # encoding: [0x39,0xd7]568; NDD-NEXT:    ccmpbl {dfv=cf} $1048577, %esi # encoding: [0x62,0xf4,0x0c,0x02,0x81,0xfe,0x01,0x00,0x10,0x00]569; NDD-NEXT:    # imm = 0x100001570; NDD-NEXT:    jae .LBB13_1 # encoding: [0x73,A]571; NDD-NEXT:    # fixup A - offset: 1, value: .LBB13_1, kind: FK_PCRel_1572; NDD-NEXT:  # %bb.2: # %if.then573; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]574; NDD-NEXT:    jmp foo # TAILCALL575; NDD-NEXT:    # encoding: [0xeb,A]576; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1577; NDD-NEXT:  .LBB13_1: # %if.end578; NDD-NEXT:    retq # encoding: [0xc3]579entry:580  %cmp = icmp uge i32 %a, %c581  %cmp1 = icmp ule i32 %b, 1048576582  %or.cond = or i1 %cmp, %cmp1583  br i1 %or.cond, label %if.then, label %if.end584 585if.then:                                          ; preds = %entry586  tail call void (...) @foo()587  br label %if.end588 589if.end:                                           ; preds = %entry, %if.then590  ret void591}592 593define void @ccmp64ri32_zf(i64 noundef %a, i64 noundef %b, i64 noundef %c) {594; CHECK-LABEL: ccmp64ri32_zf:595; CHECK:       # %bb.0: # %entry596; CHECK-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]597; CHECK-NEXT:    ccmpbeq {dfv=sf} $123456, %rsi # encoding: [0x62,0xf4,0xa4,0x06,0x81,0xfe,0x40,0xe2,0x01,0x00]598; CHECK-NEXT:    # imm = 0x1E240599; CHECK-NEXT:    jge .LBB14_1 # encoding: [0x7d,A]600; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB14_1, kind: FK_PCRel_1601; CHECK-NEXT:  # %bb.2: # %if.then602; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]603; CHECK-NEXT:    jmp foo # TAILCALL604; CHECK-NEXT:    # encoding: [0xeb,A]605; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1606; CHECK-NEXT:  .LBB14_1: # %if.end607; CHECK-NEXT:    retq # encoding: [0xc3]608;609; NDD-LABEL: ccmp64ri32_zf:610; NDD:       # %bb.0: # %entry611; NDD-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]612; NDD-NEXT:    ccmpbeq {dfv=sf} $123456, %rsi # encoding: [0x62,0xf4,0xa4,0x06,0x81,0xfe,0x40,0xe2,0x01,0x00]613; NDD-NEXT:    # imm = 0x1E240614; NDD-NEXT:    jge .LBB14_1 # encoding: [0x7d,A]615; NDD-NEXT:    # fixup A - offset: 1, value: .LBB14_1, kind: FK_PCRel_1616; NDD-NEXT:  # %bb.2: # %if.then617; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]618; NDD-NEXT:    jmp foo # TAILCALL619; NDD-NEXT:    # encoding: [0xeb,A]620; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1621; NDD-NEXT:  .LBB14_1: # %if.end622; NDD-NEXT:    retq # encoding: [0xc3]623entry:624  %cmp = icmp ugt i64 %a, %c625  %cmp1 = icmp slt i64 %b, 123456626  %or.cond = or i1 %cmp, %cmp1627  br i1 %or.cond, label %if.then, label %if.end628 629if.then:                                          ; preds = %entry630  tail call void (...) @foo()631  br label %if.end632 633if.end:                                           ; preds = %entry, %if.then634  ret void635}636 637define void @ccmp8rm_zf(i8 noundef %a, i8 noundef %b, i8 noundef %c, ptr %ptr) {638; CHECK-LABEL: ccmp8rm_zf:639; CHECK:       # %bb.0: # %entry640; CHECK-NEXT:    cmpb %dl, %dil # encoding: [0x40,0x38,0xd7]641; CHECK-NEXT:    ccmpneb {dfv=zf} (%rcx), %sil # encoding: [0x62,0xf4,0x14,0x05,0x3a,0x31]642; CHECK-NEXT:    jne .LBB15_1 # encoding: [0x75,A]643; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB15_1, kind: FK_PCRel_1644; CHECK-NEXT:  # %bb.2: # %if.then645; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]646; CHECK-NEXT:    jmp foo # TAILCALL647; CHECK-NEXT:    # encoding: [0xeb,A]648; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1649; CHECK-NEXT:  .LBB15_1: # %if.end650; CHECK-NEXT:    retq # encoding: [0xc3]651;652; NDD-LABEL: ccmp8rm_zf:653; NDD:       # %bb.0: # %entry654; NDD-NEXT:    cmpb %dl, %dil # encoding: [0x40,0x38,0xd7]655; NDD-NEXT:    ccmpneb {dfv=zf} (%rcx), %sil # encoding: [0x62,0xf4,0x14,0x05,0x3a,0x31]656; NDD-NEXT:    jne .LBB15_1 # encoding: [0x75,A]657; NDD-NEXT:    # fixup A - offset: 1, value: .LBB15_1, kind: FK_PCRel_1658; NDD-NEXT:  # %bb.2: # %if.then659; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]660; NDD-NEXT:    jmp foo # TAILCALL661; NDD-NEXT:    # encoding: [0xeb,A]662; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1663; NDD-NEXT:  .LBB15_1: # %if.end664; NDD-NEXT:    retq # encoding: [0xc3]665entry:666  %d = load i8, ptr %ptr667  %cmp = icmp eq i8 %a, %c668  %cmp1 = icmp eq i8 %b, %d669  %or.cond = or i1 %cmp, %cmp1670  br i1 %or.cond, label %if.then, label %if.end671 672if.then:                                          ; preds = %entry673  tail call void (...) @foo()674  br label %if.end675 676if.end:                                           ; preds = %entry, %if.then677  ret void678}679 680define void @ccmp16rm_sf(i16 noundef %a, i16 noundef %b, i16 noundef %c, ptr %ptr) {681; CHECK-LABEL: ccmp16rm_sf:682; CHECK:       # %bb.0: # %entry683; CHECK-NEXT:    cmpw %dx, %di # encoding: [0x66,0x39,0xd7]684; CHECK-NEXT:    ccmplew {dfv=sf} (%rcx), %si # encoding: [0x62,0xf4,0x25,0x0e,0x3b,0x31]685; CHECK-NEXT:    jge .LBB16_1 # encoding: [0x7d,A]686; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB16_1, kind: FK_PCRel_1687; CHECK-NEXT:  # %bb.2: # %if.then688; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]689; CHECK-NEXT:    jmp foo # TAILCALL690; CHECK-NEXT:    # encoding: [0xeb,A]691; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1692; CHECK-NEXT:  .LBB16_1: # %if.end693; CHECK-NEXT:    retq # encoding: [0xc3]694;695; NDD-LABEL: ccmp16rm_sf:696; NDD:       # %bb.0: # %entry697; NDD-NEXT:    cmpw %dx, %di # encoding: [0x66,0x39,0xd7]698; NDD-NEXT:    ccmplew {dfv=sf} (%rcx), %si # encoding: [0x62,0xf4,0x25,0x0e,0x3b,0x31]699; NDD-NEXT:    jge .LBB16_1 # encoding: [0x7d,A]700; NDD-NEXT:    # fixup A - offset: 1, value: .LBB16_1, kind: FK_PCRel_1701; NDD-NEXT:  # %bb.2: # %if.then702; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]703; NDD-NEXT:    jmp foo # TAILCALL704; NDD-NEXT:    # encoding: [0xeb,A]705; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1706; NDD-NEXT:  .LBB16_1: # %if.end707; NDD-NEXT:    retq # encoding: [0xc3]708entry:709  %d = load i16, ptr %ptr710  %cmp = icmp sgt i16 %a, %c711  %cmp1 = icmp slt i16 %b, %d712  %or.cond = or i1 %cmp, %cmp1713  br i1 %or.cond, label %if.then, label %if.end714 715if.then:                                          ; preds = %entry716  tail call void (...) @foo()717  br label %if.end718 719if.end:                                           ; preds = %entry, %if.then720  ret void721}722 723define void @ccmp32rm_cf(i32 noundef %a, i32 noundef %b, i32 noundef %c, ptr %ptr) {724; CHECK-LABEL: ccmp32rm_cf:725; CHECK:       # %bb.0: # %entry726; CHECK-NEXT:    cmpl %edx, %edi # encoding: [0x39,0xd7]727; CHECK-NEXT:    ccmpgl {dfv=cf} (%rcx), %esi # encoding: [0x62,0xf4,0x0c,0x0f,0x3b,0x31]728; CHECK-NEXT:    ja .LBB17_1 # encoding: [0x77,A]729; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB17_1, kind: FK_PCRel_1730; CHECK-NEXT:  # %bb.2: # %if.then731; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]732; CHECK-NEXT:    jmp foo # TAILCALL733; CHECK-NEXT:    # encoding: [0xeb,A]734; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1735; CHECK-NEXT:  .LBB17_1: # %if.end736; CHECK-NEXT:    retq # encoding: [0xc3]737;738; NDD-LABEL: ccmp32rm_cf:739; NDD:       # %bb.0: # %entry740; NDD-NEXT:    cmpl %edx, %edi # encoding: [0x39,0xd7]741; NDD-NEXT:    ccmpgl {dfv=cf} (%rcx), %esi # encoding: [0x62,0xf4,0x0c,0x0f,0x3b,0x31]742; NDD-NEXT:    ja .LBB17_1 # encoding: [0x77,A]743; NDD-NEXT:    # fixup A - offset: 1, value: .LBB17_1, kind: FK_PCRel_1744; NDD-NEXT:  # %bb.2: # %if.then745; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]746; NDD-NEXT:    jmp foo # TAILCALL747; NDD-NEXT:    # encoding: [0xeb,A]748; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1749; NDD-NEXT:  .LBB17_1: # %if.end750; NDD-NEXT:    retq # encoding: [0xc3]751entry:752  %d = load i32, ptr %ptr753  %cmp = icmp sle i32 %a, %c754  %cmp1 = icmp ule i32 %b, %d755  %or.cond = or i1 %cmp, %cmp1756  br i1 %or.cond, label %if.then, label %if.end757 758if.then:                                          ; preds = %entry759  tail call void (...) @foo()760  br label %if.end761 762if.end:                                           ; preds = %entry, %if.then763  ret void764}765 766define void @ccmp64rm_sf(i64 noundef %a, i64 noundef %b, i64 noundef %c, ptr %ptr) {767; CHECK-LABEL: ccmp64rm_sf:768; CHECK:       # %bb.0: # %entry769; CHECK-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]770; CHECK-NEXT:    ccmpleq {dfv=sf} (%rcx), %rsi # encoding: [0x62,0xf4,0xa4,0x0e,0x3b,0x31]771; CHECK-NEXT:    jge .LBB18_1 # encoding: [0x7d,A]772; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB18_1, kind: FK_PCRel_1773; CHECK-NEXT:  # %bb.2: # %if.then774; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]775; CHECK-NEXT:    jmp foo # TAILCALL776; CHECK-NEXT:    # encoding: [0xeb,A]777; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1778; CHECK-NEXT:  .LBB18_1: # %if.end779; CHECK-NEXT:    retq # encoding: [0xc3]780;781; NDD-LABEL: ccmp64rm_sf:782; NDD:       # %bb.0: # %entry783; NDD-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]784; NDD-NEXT:    ccmpleq {dfv=sf} (%rcx), %rsi # encoding: [0x62,0xf4,0xa4,0x0e,0x3b,0x31]785; NDD-NEXT:    jge .LBB18_1 # encoding: [0x7d,A]786; NDD-NEXT:    # fixup A - offset: 1, value: .LBB18_1, kind: FK_PCRel_1787; NDD-NEXT:  # %bb.2: # %if.then788; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]789; NDD-NEXT:    jmp foo # TAILCALL790; NDD-NEXT:    # encoding: [0xeb,A]791; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1792; NDD-NEXT:  .LBB18_1: # %if.end793; NDD-NEXT:    retq # encoding: [0xc3]794entry:795  %d = load i64, ptr %ptr796  %cmp = icmp sgt i64 %a, %c797  %cmp1 = icmp slt i64 %b, %d798  %or.cond = or i1 %cmp, %cmp1799  br i1 %or.cond, label %if.then, label %if.end800 801if.then:                                          ; preds = %entry802  tail call void (...) @foo()803  br label %if.end804 805if.end:                                           ; preds = %entry, %if.then806  ret void807}808 809define void @ccmp8mr_zf(i8 noundef %a, i8 noundef %c, ptr %ptr) {810; CHECK-LABEL: ccmp8mr_zf:811; CHECK:       # %bb.0: # %entry812; CHECK-NEXT:    cmpb %sil, %dil # encoding: [0x40,0x38,0xf7]813; CHECK-NEXT:    ccmpgeb {dfv=zf} %sil, (%rdx) # encoding: [0x62,0xf4,0x14,0x0d,0x38,0x32]814; CHECK-NEXT:    jne .LBB19_1 # encoding: [0x75,A]815; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB19_1, kind: FK_PCRel_1816; CHECK-NEXT:  # %bb.2: # %if.then817; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]818; CHECK-NEXT:    jmp foo # TAILCALL819; CHECK-NEXT:    # encoding: [0xeb,A]820; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1821; CHECK-NEXT:  .LBB19_1: # %if.end822; CHECK-NEXT:    retq # encoding: [0xc3]823;824; NDD-LABEL: ccmp8mr_zf:825; NDD:       # %bb.0: # %entry826; NDD-NEXT:    cmpb %sil, %dil # encoding: [0x40,0x38,0xf7]827; NDD-NEXT:    ccmpgeb {dfv=zf} %sil, (%rdx) # encoding: [0x62,0xf4,0x14,0x0d,0x38,0x32]828; NDD-NEXT:    jne .LBB19_1 # encoding: [0x75,A]829; NDD-NEXT:    # fixup A - offset: 1, value: .LBB19_1, kind: FK_PCRel_1830; NDD-NEXT:  # %bb.2: # %if.then831; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]832; NDD-NEXT:    jmp foo # TAILCALL833; NDD-NEXT:    # encoding: [0xeb,A]834; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1835; NDD-NEXT:  .LBB19_1: # %if.end836; NDD-NEXT:    retq # encoding: [0xc3]837entry:838  %b = load i8, ptr %ptr839  %cmp = icmp slt i8 %a, %c840  %cmp1 = icmp eq i8 %b, %c841  %or.cond = or i1 %cmp, %cmp1842  br i1 %or.cond, label %if.then, label %if.end843 844if.then:                                          ; preds = %entry845  tail call void (...) @foo()846  br label %if.end847 848if.end:                                           ; preds = %entry, %if.then849  ret void850}851 852define void @ccmp16mr_sf(i16 noundef %a, i16 noundef %c, ptr %ptr) {853; CHECK-LABEL: ccmp16mr_sf:854; CHECK:       # %bb.0: # %entry855; CHECK-NEXT:    cmpw %si, %di # encoding: [0x66,0x39,0xf7]856; CHECK-NEXT:    ccmplew {dfv=sf} %si, (%rdx) # encoding: [0x62,0xf4,0x25,0x0e,0x39,0x32]857; CHECK-NEXT:    jge .LBB20_1 # encoding: [0x7d,A]858; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB20_1, kind: FK_PCRel_1859; CHECK-NEXT:  # %bb.2: # %if.then860; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]861; CHECK-NEXT:    jmp foo # TAILCALL862; CHECK-NEXT:    # encoding: [0xeb,A]863; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1864; CHECK-NEXT:  .LBB20_1: # %if.end865; CHECK-NEXT:    retq # encoding: [0xc3]866;867; NDD-LABEL: ccmp16mr_sf:868; NDD:       # %bb.0: # %entry869; NDD-NEXT:    cmpw %si, %di # encoding: [0x66,0x39,0xf7]870; NDD-NEXT:    ccmplew {dfv=sf} %si, (%rdx) # encoding: [0x62,0xf4,0x25,0x0e,0x39,0x32]871; NDD-NEXT:    jge .LBB20_1 # encoding: [0x7d,A]872; NDD-NEXT:    # fixup A - offset: 1, value: .LBB20_1, kind: FK_PCRel_1873; NDD-NEXT:  # %bb.2: # %if.then874; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]875; NDD-NEXT:    jmp foo # TAILCALL876; NDD-NEXT:    # encoding: [0xeb,A]877; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1878; NDD-NEXT:  .LBB20_1: # %if.end879; NDD-NEXT:    retq # encoding: [0xc3]880entry:881  %b = load i16, ptr %ptr882  %cmp = icmp sgt i16 %a, %c883  %cmp1 = icmp slt i16 %b, %c884  %or.cond = or i1 %cmp, %cmp1885  br i1 %or.cond, label %if.then, label %if.end886 887if.then:                                          ; preds = %entry888  tail call void (...) @foo()889  br label %if.end890 891if.end:                                           ; preds = %entry, %if.then892  ret void893}894 895define void @ccmp32mr_cf(i32 noundef %a, i32 noundef %c, ptr %ptr) {896; CHECK-LABEL: ccmp32mr_cf:897; CHECK:       # %bb.0: # %entry898; CHECK-NEXT:    cmpl %esi, %edi # encoding: [0x39,0xf7]899; CHECK-NEXT:    ccmpll {dfv=cf} %esi, (%rdx) # encoding: [0x62,0xf4,0x0c,0x0c,0x39,0x32]900; CHECK-NEXT:    ja .LBB21_1 # encoding: [0x77,A]901; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB21_1, kind: FK_PCRel_1902; CHECK-NEXT:  # %bb.2: # %if.then903; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]904; CHECK-NEXT:    jmp foo # TAILCALL905; CHECK-NEXT:    # encoding: [0xeb,A]906; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1907; CHECK-NEXT:  .LBB21_1: # %if.end908; CHECK-NEXT:    retq # encoding: [0xc3]909;910; NDD-LABEL: ccmp32mr_cf:911; NDD:       # %bb.0: # %entry912; NDD-NEXT:    cmpl %esi, %edi # encoding: [0x39,0xf7]913; NDD-NEXT:    ccmpll {dfv=cf} %esi, (%rdx) # encoding: [0x62,0xf4,0x0c,0x0c,0x39,0x32]914; NDD-NEXT:    ja .LBB21_1 # encoding: [0x77,A]915; NDD-NEXT:    # fixup A - offset: 1, value: .LBB21_1, kind: FK_PCRel_1916; NDD-NEXT:  # %bb.2: # %if.then917; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]918; NDD-NEXT:    jmp foo # TAILCALL919; NDD-NEXT:    # encoding: [0xeb,A]920; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1921; NDD-NEXT:  .LBB21_1: # %if.end922; NDD-NEXT:    retq # encoding: [0xc3]923entry:924  %b = load i32, ptr %ptr925  %cmp = icmp sge i32 %a, %c926  %cmp1 = icmp ule i32 %b, %c927  %or.cond = or i1 %cmp, %cmp1928  br i1 %or.cond, label %if.then, label %if.end929 930if.then:                                          ; preds = %entry931  tail call void (...) @foo()932  br label %if.end933 934if.end:                                           ; preds = %entry, %if.then935  ret void936}937 938define void @ccmp64mr_sf(i64 noundef %a, i64 noundef %c, ptr %ptr) {939; CHECK-LABEL: ccmp64mr_sf:940; CHECK:       # %bb.0: # %entry941; CHECK-NEXT:    cmpq %rsi, %rdi # encoding: [0x48,0x39,0xf7]942; CHECK-NEXT:    ccmpleq {dfv=sf} %rsi, (%rdx) # encoding: [0x62,0xf4,0xa4,0x0e,0x39,0x32]943; CHECK-NEXT:    jge .LBB22_1 # encoding: [0x7d,A]944; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB22_1, kind: FK_PCRel_1945; CHECK-NEXT:  # %bb.2: # %if.then946; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]947; CHECK-NEXT:    jmp foo # TAILCALL948; CHECK-NEXT:    # encoding: [0xeb,A]949; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1950; CHECK-NEXT:  .LBB22_1: # %if.end951; CHECK-NEXT:    retq # encoding: [0xc3]952;953; NDD-LABEL: ccmp64mr_sf:954; NDD:       # %bb.0: # %entry955; NDD-NEXT:    cmpq %rsi, %rdi # encoding: [0x48,0x39,0xf7]956; NDD-NEXT:    ccmpleq {dfv=sf} %rsi, (%rdx) # encoding: [0x62,0xf4,0xa4,0x0e,0x39,0x32]957; NDD-NEXT:    jge .LBB22_1 # encoding: [0x7d,A]958; NDD-NEXT:    # fixup A - offset: 1, value: .LBB22_1, kind: FK_PCRel_1959; NDD-NEXT:  # %bb.2: # %if.then960; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]961; NDD-NEXT:    jmp foo # TAILCALL962; NDD-NEXT:    # encoding: [0xeb,A]963; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1964; NDD-NEXT:  .LBB22_1: # %if.end965; NDD-NEXT:    retq # encoding: [0xc3]966entry:967  %b = load i64, ptr %ptr968  %cmp = icmp sgt i64 %a, %c969  %cmp1 = icmp slt i64 %b, %c970  %or.cond = or i1 %cmp, %cmp1971  br i1 %or.cond, label %if.then, label %if.end972 973if.then:                                          ; preds = %entry974  tail call void (...) @foo()975  br label %if.end976 977if.end:                                           ; preds = %entry, %if.then978  ret void979}980 981define void @ccmp8mi_zf(i8 noundef %a, i8 noundef %c, ptr %ptr) {982; CHECK-LABEL: ccmp8mi_zf:983; CHECK:       # %bb.0: # %entry984; CHECK-NEXT:    cmpb %sil, %dil # encoding: [0x40,0x38,0xf7]985; CHECK-NEXT:    ccmpneb {dfv=zf} $123, (%rdx) # encoding: [0x62,0xf4,0x14,0x05,0x80,0x3a,0x7b]986; CHECK-NEXT:    jne .LBB23_1 # encoding: [0x75,A]987; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB23_1, kind: FK_PCRel_1988; CHECK-NEXT:  # %bb.2: # %if.then989; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]990; CHECK-NEXT:    jmp foo # TAILCALL991; CHECK-NEXT:    # encoding: [0xeb,A]992; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_1993; CHECK-NEXT:  .LBB23_1: # %if.end994; CHECK-NEXT:    retq # encoding: [0xc3]995;996; NDD-LABEL: ccmp8mi_zf:997; NDD:       # %bb.0: # %entry998; NDD-NEXT:    cmpb %sil, %dil # encoding: [0x40,0x38,0xf7]999; NDD-NEXT:    ccmpneb {dfv=zf} $123, (%rdx) # encoding: [0x62,0xf4,0x14,0x05,0x80,0x3a,0x7b]1000; NDD-NEXT:    jne .LBB23_1 # encoding: [0x75,A]1001; NDD-NEXT:    # fixup A - offset: 1, value: .LBB23_1, kind: FK_PCRel_11002; NDD-NEXT:  # %bb.2: # %if.then1003; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1004; NDD-NEXT:    jmp foo # TAILCALL1005; NDD-NEXT:    # encoding: [0xeb,A]1006; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_11007; NDD-NEXT:  .LBB23_1: # %if.end1008; NDD-NEXT:    retq # encoding: [0xc3]1009entry:1010  %b = load i8, ptr %ptr1011  %cmp = icmp eq i8 %a, %c1012  %cmp1 = icmp eq i8 %b, 1231013  %or.cond = or i1 %cmp, %cmp11014  br i1 %or.cond, label %if.then, label %if.end1015 1016if.then:                                          ; preds = %entry1017  tail call void (...) @foo()1018  br label %if.end1019 1020if.end:                                           ; preds = %entry, %if.then1021  ret void1022}1023 1024define void @ccmp16mi_zf(i16 noundef %a, i16 noundef %c, ptr %ptr) {1025; CHECK-LABEL: ccmp16mi_zf:1026; CHECK:       # %bb.0: # %entry1027; CHECK-NEXT:    cmpw %si, %di # encoding: [0x66,0x39,0xf7]1028; CHECK-NEXT:    ccmplew {dfv=sf} $1234, (%rdx) # encoding: [0x62,0xf4,0x25,0x0e,0x81,0x3a,0xd2,0x04]1029; CHECK-NEXT:    # imm = 0x4D21030; CHECK-NEXT:    jge .LBB24_1 # encoding: [0x7d,A]1031; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB24_1, kind: FK_PCRel_11032; CHECK-NEXT:  # %bb.2: # %if.then1033; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1034; CHECK-NEXT:    jmp foo # TAILCALL1035; CHECK-NEXT:    # encoding: [0xeb,A]1036; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_11037; CHECK-NEXT:  .LBB24_1: # %if.end1038; CHECK-NEXT:    retq # encoding: [0xc3]1039;1040; NDD-LABEL: ccmp16mi_zf:1041; NDD:       # %bb.0: # %entry1042; NDD-NEXT:    cmpw %si, %di # encoding: [0x66,0x39,0xf7]1043; NDD-NEXT:    ccmplew {dfv=sf} $1234, (%rdx) # encoding: [0x62,0xf4,0x25,0x0e,0x81,0x3a,0xd2,0x04]1044; NDD-NEXT:    # imm = 0x4D21045; NDD-NEXT:    jge .LBB24_1 # encoding: [0x7d,A]1046; NDD-NEXT:    # fixup A - offset: 1, value: .LBB24_1, kind: FK_PCRel_11047; NDD-NEXT:  # %bb.2: # %if.then1048; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1049; NDD-NEXT:    jmp foo # TAILCALL1050; NDD-NEXT:    # encoding: [0xeb,A]1051; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_11052; NDD-NEXT:  .LBB24_1: # %if.end1053; NDD-NEXT:    retq # encoding: [0xc3]1054entry:1055  %b = load i16, ptr %ptr1056  %cmp = icmp sgt i16 %a, %c1057  %cmp1 = icmp slt i16 %b, 12341058  %or.cond = or i1 %cmp, %cmp11059  br i1 %or.cond, label %if.then, label %if.end1060 1061if.then:                                          ; preds = %entry1062  tail call void (...) @foo()1063  br label %if.end1064 1065if.end:                                           ; preds = %entry, %if.then1066  ret void1067}1068 1069define void @ccmp32mi_cf(i32 noundef %a, i32 noundef %c, ptr %ptr) {1070; CHECK-LABEL: ccmp32mi_cf:1071; CHECK:       # %bb.0: # %entry1072; CHECK-NEXT:    cmpl %esi, %edi # encoding: [0x39,0xf7]1073; CHECK-NEXT:    ccmpnel {dfv=cf} $123457, (%rdx) # encoding: [0x62,0xf4,0x0c,0x05,0x81,0x3a,0x41,0xe2,0x01,0x00]1074; CHECK-NEXT:    # imm = 0x1E2411075; CHECK-NEXT:    jae .LBB25_1 # encoding: [0x73,A]1076; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB25_1, kind: FK_PCRel_11077; CHECK-NEXT:  # %bb.2: # %if.then1078; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1079; CHECK-NEXT:    jmp foo # TAILCALL1080; CHECK-NEXT:    # encoding: [0xeb,A]1081; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_11082; CHECK-NEXT:  .LBB25_1: # %if.end1083; CHECK-NEXT:    retq # encoding: [0xc3]1084;1085; NDD-LABEL: ccmp32mi_cf:1086; NDD:       # %bb.0: # %entry1087; NDD-NEXT:    cmpl %esi, %edi # encoding: [0x39,0xf7]1088; NDD-NEXT:    ccmpnel {dfv=cf} $123457, (%rdx) # encoding: [0x62,0xf4,0x0c,0x05,0x81,0x3a,0x41,0xe2,0x01,0x00]1089; NDD-NEXT:    # imm = 0x1E2411090; NDD-NEXT:    jae .LBB25_1 # encoding: [0x73,A]1091; NDD-NEXT:    # fixup A - offset: 1, value: .LBB25_1, kind: FK_PCRel_11092; NDD-NEXT:  # %bb.2: # %if.then1093; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1094; NDD-NEXT:    jmp foo # TAILCALL1095; NDD-NEXT:    # encoding: [0xeb,A]1096; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_11097; NDD-NEXT:  .LBB25_1: # %if.end1098; NDD-NEXT:    retq # encoding: [0xc3]1099entry:1100  %b = load i32, ptr %ptr1101  %cmp = icmp eq i32 %a, %c1102  %cmp1 = icmp ule i32 %b, 1234561103  %or.cond = or i1 %cmp, %cmp11104  br i1 %or.cond, label %if.then, label %if.end1105 1106if.then:                                          ; preds = %entry1107  tail call void (...) @foo()1108  br label %if.end1109 1110if.end:                                           ; preds = %entry, %if.then1111  ret void1112}1113 1114define void @ccmp64mi32_zf(i64 noundef %a, i64 noundef %c, ptr %ptr) {1115; CHECK-LABEL: ccmp64mi32_zf:1116; CHECK:       # %bb.0: # %entry1117; CHECK-NEXT:    cmpq %rsi, %rdi # encoding: [0x48,0x39,0xf7]1118; CHECK-NEXT:    ccmpleq {dfv=sf} $123456, (%rdx) # encoding: [0x62,0xf4,0xa4,0x0e,0x81,0x3a,0x40,0xe2,0x01,0x00]1119; CHECK-NEXT:    # imm = 0x1E2401120; CHECK-NEXT:    jge .LBB26_1 # encoding: [0x7d,A]1121; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB26_1, kind: FK_PCRel_11122; CHECK-NEXT:  # %bb.2: # %if.then1123; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1124; CHECK-NEXT:    jmp foo # TAILCALL1125; CHECK-NEXT:    # encoding: [0xeb,A]1126; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_11127; CHECK-NEXT:  .LBB26_1: # %if.end1128; CHECK-NEXT:    retq # encoding: [0xc3]1129;1130; NDD-LABEL: ccmp64mi32_zf:1131; NDD:       # %bb.0: # %entry1132; NDD-NEXT:    cmpq %rsi, %rdi # encoding: [0x48,0x39,0xf7]1133; NDD-NEXT:    ccmpleq {dfv=sf} $123456, (%rdx) # encoding: [0x62,0xf4,0xa4,0x0e,0x81,0x3a,0x40,0xe2,0x01,0x00]1134; NDD-NEXT:    # imm = 0x1E2401135; NDD-NEXT:    jge .LBB26_1 # encoding: [0x7d,A]1136; NDD-NEXT:    # fixup A - offset: 1, value: .LBB26_1, kind: FK_PCRel_11137; NDD-NEXT:  # %bb.2: # %if.then1138; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1139; NDD-NEXT:    jmp foo # TAILCALL1140; NDD-NEXT:    # encoding: [0xeb,A]1141; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_11142; NDD-NEXT:  .LBB26_1: # %if.end1143; NDD-NEXT:    retq # encoding: [0xc3]1144entry:1145  %b = load i64, ptr %ptr1146  %cmp = icmp sgt i64 %a, %c1147  %cmp1 = icmp slt i64 %b, 1234561148  %or.cond = or i1 %cmp, %cmp11149  br i1 %or.cond, label %if.then, label %if.end1150 1151if.then:                                          ; preds = %entry1152  tail call void (...) @foo()1153  br label %if.end1154 1155if.end:                                           ; preds = %entry, %if.then1156  ret void1157}1158 1159define void @ccmp_continous(i32 noundef %a, i32 noundef %b, i32 noundef %c) {1160; CHECK-LABEL: ccmp_continous:1161; CHECK:       # %bb.0: # %entry1162; CHECK-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]1163; CHECK-NEXT:    ccmplel {dfv=} $2, %esi # encoding: [0x62,0xf4,0x04,0x0e,0x83,0xfe,0x02]1164; CHECK-NEXT:    ccmpll {dfv=} $3, %edx # encoding: [0x62,0xf4,0x04,0x0c,0x83,0xfa,0x03]1165; CHECK-NEXT:    jge .LBB27_1 # encoding: [0x7d,A]1166; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB27_1, kind: FK_PCRel_11167; CHECK-NEXT:  # %bb.2: # %if.then1168; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1169; CHECK-NEXT:    jmp foo # TAILCALL1170; CHECK-NEXT:    # encoding: [0xeb,A]1171; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_11172; CHECK-NEXT:  .LBB27_1: # %if.end1173; CHECK-NEXT:    retq # encoding: [0xc3]1174;1175; NDD-LABEL: ccmp_continous:1176; NDD:       # %bb.0: # %entry1177; NDD-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]1178; NDD-NEXT:    ccmplel {dfv=} $2, %esi # encoding: [0x62,0xf4,0x04,0x0e,0x83,0xfe,0x02]1179; NDD-NEXT:    ccmpll {dfv=} $3, %edx # encoding: [0x62,0xf4,0x04,0x0c,0x83,0xfa,0x03]1180; NDD-NEXT:    jge .LBB27_1 # encoding: [0x7d,A]1181; NDD-NEXT:    # fixup A - offset: 1, value: .LBB27_1, kind: FK_PCRel_11182; NDD-NEXT:  # %bb.2: # %if.then1183; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1184; NDD-NEXT:    jmp foo # TAILCALL1185; NDD-NEXT:    # encoding: [0xeb,A]1186; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_11187; NDD-NEXT:  .LBB27_1: # %if.end1188; NDD-NEXT:    retq # encoding: [0xc3]1189entry:1190  %cmp = icmp slt i32 %a, 11191  %cmp1 = icmp slt i32 %b, 21192  %or.cond = and i1 %cmp, %cmp11193  %cmp3 = icmp slt i32 %c, 31194  %or.cond4 = and i1 %or.cond, %cmp31195  br i1 %or.cond4, label %if.then, label %if.end1196 1197if.then:                                          ; preds = %entry1198  tail call void (...) @foo()1199  br label %if.end1200 1201if.end:                                           ; preds = %if.then, %entry1202  ret void1203}1204 1205define i32 @ccmp_nobranch(i32 noundef %a, i32 noundef %b) {1206; CHECK-LABEL: ccmp_nobranch:1207; CHECK:       # %bb.0: # %entry1208; CHECK-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]1209; CHECK-NEXT:    ccmplel {dfv=} $2, %esi # encoding: [0x62,0xf4,0x04,0x0e,0x83,0xfe,0x02]1210; CHECK-NEXT:    setge %al # encoding: [0x0f,0x9d,0xc0]1211; CHECK-NEXT:    movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]1212; CHECK-NEXT:    retq # encoding: [0xc3]1213;1214; NDD-LABEL: ccmp_nobranch:1215; NDD:       # %bb.0: # %entry1216; NDD-NEXT:    testl %edi, %edi # encoding: [0x85,0xff]1217; NDD-NEXT:    ccmplel {dfv=} $2, %esi # encoding: [0x62,0xf4,0x04,0x0e,0x83,0xfe,0x02]1218; NDD-NEXT:    setge %al # encoding: [0x0f,0x9d,0xc0]1219; NDD-NEXT:    movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]1220; NDD-NEXT:    retq # encoding: [0xc3]1221entry:1222  %cmp = icmp sgt i32 %a, 01223  %cmp1 = icmp sgt i32 %b, 11224  %or.cond.not = or i1 %cmp, %cmp11225  %. = zext i1 %or.cond.not to i321226  ret i32 %.1227}1228 1229define i32 @ccmp_continous_nobranch(i32 noundef %a, i32 noundef %b, i32 noundef %c) {1230; CHECK-LABEL: ccmp_continous_nobranch:1231; CHECK:       # %bb.0: # %entry1232; CHECK-NEXT:    cmpl $2, %edi # encoding: [0x83,0xff,0x02]1233; CHECK-NEXT:    ccmpll {dfv=sf} $2, %esi # encoding: [0x62,0xf4,0x24,0x0c,0x83,0xfe,0x02]1234; CHECK-NEXT:    ccmpll {dfv=sf} $4, %edx # encoding: [0x62,0xf4,0x24,0x0c,0x83,0xfa,0x04]1235; CHECK-NEXT:    setge %al # encoding: [0x0f,0x9d,0xc0]1236; CHECK-NEXT:    movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]1237; CHECK-NEXT:    retq # encoding: [0xc3]1238;1239; NDD-LABEL: ccmp_continous_nobranch:1240; NDD:       # %bb.0: # %entry1241; NDD-NEXT:    cmpl $2, %edi # encoding: [0x83,0xff,0x02]1242; NDD-NEXT:    ccmpll {dfv=sf} $2, %esi # encoding: [0x62,0xf4,0x24,0x0c,0x83,0xfe,0x02]1243; NDD-NEXT:    ccmpll {dfv=sf} $4, %edx # encoding: [0x62,0xf4,0x24,0x0c,0x83,0xfa,0x04]1244; NDD-NEXT:    setge %al # encoding: [0x0f,0x9d,0xc0]1245; NDD-NEXT:    movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]1246; NDD-NEXT:    retq # encoding: [0xc3]1247entry:1248  %cmp = icmp sgt i32 %a, 11249  %cmp1 = icmp slt i32 %b, 21250  %cmp2 = icmp sgt i32 %c, 31251  %or1 = or i1 %cmp, %cmp11252  %or2 =  and i1 %or1, %cmp21253  %. = zext i1 %or2 to i321254  ret i32 %.1255}1256 1257define void @ccmp64ri64(i64 noundef %a, i64 noundef %b, i64 noundef %c) {1258; CHECK-LABEL: ccmp64ri64:1259; CHECK:       # %bb.0: # %entry1260; CHECK-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]1261; CHECK-NEXT:    movabsq $9992147483646, %rax # encoding: [0x48,0xb8,0xfe,0xbb,0x66,0x7a,0x16,0x09,0x00,0x00]1262; CHECK-NEXT:    # imm = 0x9167A66BBFE1263; CHECK-NEXT:    ccmpbeq {dfv=zf} %rax, %rsi # encoding: [0x62,0xf4,0x94,0x06,0x39,0xc6]1264; CHECK-NEXT:    jg .LBB30_1 # encoding: [0x7f,A]1265; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB30_1, kind: FK_PCRel_11266; CHECK-NEXT:  # %bb.2: # %if.then1267; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1268; CHECK-NEXT:    jmp foo # TAILCALL1269; CHECK-NEXT:    # encoding: [0xeb,A]1270; CHECK-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_11271; CHECK-NEXT:  .LBB30_1: # %if.end1272; CHECK-NEXT:    retq # encoding: [0xc3]1273;1274; NDD-LABEL: ccmp64ri64:1275; NDD:       # %bb.0: # %entry1276; NDD-NEXT:    cmpq %rdx, %rdi # encoding: [0x48,0x39,0xd7]1277; NDD-NEXT:    movabsq $9992147483646, %rax # encoding: [0x48,0xb8,0xfe,0xbb,0x66,0x7a,0x16,0x09,0x00,0x00]1278; NDD-NEXT:    # imm = 0x9167A66BBFE1279; NDD-NEXT:    ccmpbeq {dfv=zf} %rax, %rsi # encoding: [0x62,0xf4,0x94,0x06,0x39,0xc6]1280; NDD-NEXT:    jg .LBB30_1 # encoding: [0x7f,A]1281; NDD-NEXT:    # fixup A - offset: 1, value: .LBB30_1, kind: FK_PCRel_11282; NDD-NEXT:  # %bb.2: # %if.then1283; NDD-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]1284; NDD-NEXT:    jmp foo # TAILCALL1285; NDD-NEXT:    # encoding: [0xeb,A]1286; NDD-NEXT:    # fixup A - offset: 1, value: foo, kind: FK_PCRel_11287; NDD-NEXT:  .LBB30_1: # %if.end1288; NDD-NEXT:    retq # encoding: [0xc3]1289entry:1290  %cmp = icmp ugt i64 %a, %c1291  %cmp1 = icmp slt i64 %b, 99921474836471292  %or.cond = or i1 %cmp, %cmp11293  br i1 %or.cond, label %if.then, label %if.end1294 1295if.then:                                          ; preds = %entry1296  tail call void (...) @foo()1297  br label %if.end1298 1299if.end:                                           ; preds = %entry, %if.then1300  ret void1301}1302 1303declare dso_local void @foo(...)1304declare {i64, i1} @llvm.ssub.with.overflow.i64(i64, i64) nounwind readnone1305