brintos

brintos / llvm-project-archived public Read only

0
0
Text · 22.4 KiB · 3c0bcc5 Raw
872 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=xtensa -verify-machineinstrs < %s \3; RUN: | FileCheck -check-prefix=XTENSA %s4 5declare void @foo() noreturn6 7; Check reverseBranchCondition and analyzeBranch functions8 9define i32 @eq(i32 %a, ptr %bptr) {10; XTENSA-LABEL: eq:11; XTENSA:         addi a8, a1, -1612; XTENSA-NEXT:    or a1, a8, a813; XTENSA-NEXT:    .cfi_def_cfa_offset 1614; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill15; XTENSA-NEXT:    .cfi_offset a0, -416; XTENSA-NEXT:    l32i a8, a3, 017; XTENSA-NEXT:    beq a2, a8, .LBB0_218; XTENSA-NEXT:  # %bb.1: # %return19; XTENSA-NEXT:    movi a2, 120; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload21; XTENSA-NEXT:    addi a8, a1, 1622; XTENSA-NEXT:    or a1, a8, a823; XTENSA-NEXT:    ret24; XTENSA-NEXT:  .LBB0_2: # %callit25; XTENSA-NEXT:    l32r a8, .LCPI0_026; XTENSA-NEXT:    callx0 a827entry:28  %b = load i32, ptr %bptr29  %cmp = icmp eq i32 %a, %b30  br i1 %cmp, label %callit, label %return31 32callit:33  call void @foo()34  unreachable35 36return:37  ret i32 138}39 40define i32 @eq_reverse(i32 %a, ptr %bptr) {41; XTENSA-LABEL: eq_reverse:42; XTENSA:         addi a8, a1, -1643; XTENSA-NEXT:    or a1, a8, a844; XTENSA-NEXT:    .cfi_def_cfa_offset 1645; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill46; XTENSA-NEXT:    .cfi_offset a0, -447; XTENSA-NEXT:    l32i a8, a3, 048; XTENSA-NEXT:    bne a2, a8, .LBB1_249; XTENSA-NEXT:  # %bb.1: # %return50; XTENSA-NEXT:    movi a2, 151; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload52; XTENSA-NEXT:    addi a8, a1, 1653; XTENSA-NEXT:    or a1, a8, a854; XTENSA-NEXT:    ret55; XTENSA-NEXT:  .LBB1_2: # %callit56; XTENSA-NEXT:    l32r a8, .LCPI1_057; XTENSA-NEXT:    callx0 a858entry:59  %b = load i32, ptr %bptr60  %cmp = icmp eq i32 %a, %b61  br i1 %cmp, label %return, label %callit62 63callit:64  call void @foo()65  unreachable66 67return:68  ret i32 169}70 71define i32 @ne(i32 %a, ptr %bptr) {72; XTENSA-LABEL: ne:73; XTENSA:         addi a8, a1, -1674; XTENSA-NEXT:    or a1, a8, a875; XTENSA-NEXT:    .cfi_def_cfa_offset 1676; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill77; XTENSA-NEXT:    .cfi_offset a0, -478; XTENSA-NEXT:    l32i a8, a3, 079; XTENSA-NEXT:    bne a2, a8, .LBB2_280; XTENSA-NEXT:  # %bb.1: # %return81; XTENSA-NEXT:    movi a2, 182; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload83; XTENSA-NEXT:    addi a8, a1, 1684; XTENSA-NEXT:    or a1, a8, a885; XTENSA-NEXT:    ret86; XTENSA-NEXT:  .LBB2_2: # %callit87; XTENSA-NEXT:    l32r a8, .LCPI2_088; XTENSA-NEXT:    callx0 a889entry:90  %b = load i32, ptr %bptr91  %cmp = icmp ne i32 %a, %b92  br i1 %cmp, label %callit, label %return93 94callit:95  call void @foo()96  unreachable97 98return:99  ret i32 1100}101 102define i32 @ne_reverse(i32 %a, ptr %bptr) {103; XTENSA-LABEL: ne_reverse:104; XTENSA:         addi a8, a1, -16105; XTENSA-NEXT:    or a1, a8, a8106; XTENSA-NEXT:    .cfi_def_cfa_offset 16107; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill108; XTENSA-NEXT:    .cfi_offset a0, -4109; XTENSA-NEXT:    l32i a8, a3, 0110; XTENSA-NEXT:    beq a2, a8, .LBB3_2111; XTENSA-NEXT:  # %bb.1: # %return112; XTENSA-NEXT:    movi a2, 1113; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload114; XTENSA-NEXT:    addi a8, a1, 16115; XTENSA-NEXT:    or a1, a8, a8116; XTENSA-NEXT:    ret117; XTENSA-NEXT:  .LBB3_2: # %callit118; XTENSA-NEXT:    l32r a8, .LCPI3_0119; XTENSA-NEXT:    callx0 a8120entry:121  %b = load i32, ptr %bptr122  %cmp = icmp ne i32 %a, %b123  br i1 %cmp, label %return, label %callit124 125callit:126  call void @foo()127  unreachable128 129return:130  ret i32 1131}132 133define i32 @ult(i32 %a, ptr %bptr) {134; XTENSA-LABEL: ult:135; XTENSA:         addi a8, a1, -16136; XTENSA-NEXT:    or a1, a8, a8137; XTENSA-NEXT:    .cfi_def_cfa_offset 16138; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill139; XTENSA-NEXT:    .cfi_offset a0, -4140; XTENSA-NEXT:    l32i a8, a3, 0141; XTENSA-NEXT:    bltu a2, a8, .LBB4_2142; XTENSA-NEXT:  # %bb.1: # %return143; XTENSA-NEXT:    movi a2, 1144; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload145; XTENSA-NEXT:    addi a8, a1, 16146; XTENSA-NEXT:    or a1, a8, a8147; XTENSA-NEXT:    ret148; XTENSA-NEXT:  .LBB4_2: # %callit149; XTENSA-NEXT:    l32r a8, .LCPI4_0150; XTENSA-NEXT:    callx0 a8151entry:152  %b = load i32, ptr %bptr153  %cmp = icmp ult i32 %a, %b154  br i1 %cmp, label %callit, label %return155 156callit:157  call void @foo()158  unreachable159 160return:161  ret i32 1162}163 164define i32 @ult_reverse(i32 %a, ptr %bptr) {165; XTENSA-LABEL: ult_reverse:166; XTENSA:         addi a8, a1, -16167; XTENSA-NEXT:    or a1, a8, a8168; XTENSA-NEXT:    .cfi_def_cfa_offset 16169; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill170; XTENSA-NEXT:    .cfi_offset a0, -4171; XTENSA-NEXT:    l32i a8, a3, 0172; XTENSA-NEXT:    bgeu a2, a8, .LBB5_2173; XTENSA-NEXT:  # %bb.1: # %return174; XTENSA-NEXT:    movi a2, 1175; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload176; XTENSA-NEXT:    addi a8, a1, 16177; XTENSA-NEXT:    or a1, a8, a8178; XTENSA-NEXT:    ret179; XTENSA-NEXT:  .LBB5_2: # %callit180; XTENSA-NEXT:    l32r a8, .LCPI5_0181; XTENSA-NEXT:    callx0 a8182entry:183  %b = load i32, ptr %bptr184  %cmp = icmp ult i32 %a, %b185  br i1 %cmp, label %return, label %callit186 187callit:188  call void @foo()189  unreachable190 191return:192  ret i32 1193}194 195define i32 @uge(i32 %a, ptr %bptr) {196; XTENSA-LABEL: uge:197; XTENSA:         addi a8, a1, -16198; XTENSA-NEXT:    or a1, a8, a8199; XTENSA-NEXT:    .cfi_def_cfa_offset 16200; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill201; XTENSA-NEXT:    .cfi_offset a0, -4202; XTENSA-NEXT:    l32i a8, a3, 0203; XTENSA-NEXT:    bgeu a2, a8, .LBB6_2204; XTENSA-NEXT:  # %bb.1: # %return205; XTENSA-NEXT:    movi a2, 1206; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload207; XTENSA-NEXT:    addi a8, a1, 16208; XTENSA-NEXT:    or a1, a8, a8209; XTENSA-NEXT:    ret210; XTENSA-NEXT:  .LBB6_2: # %callit211; XTENSA-NEXT:    l32r a8, .LCPI6_0212; XTENSA-NEXT:    callx0 a8213entry:214  %b = load i32, ptr %bptr215  %cmp = icmp uge i32 %a, %b216  br i1 %cmp, label %callit, label %return217 218callit:219  call void @foo()220  unreachable221 222return:223  ret i32 1224}225 226define i32 @uge_reverse(i32 %a, ptr %bptr) {227; XTENSA-LABEL: uge_reverse:228; XTENSA:         addi a8, a1, -16229; XTENSA-NEXT:    or a1, a8, a8230; XTENSA-NEXT:    .cfi_def_cfa_offset 16231; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill232; XTENSA-NEXT:    .cfi_offset a0, -4233; XTENSA-NEXT:    l32i a8, a3, 0234; XTENSA-NEXT:    bltu a2, a8, .LBB7_2235; XTENSA-NEXT:  # %bb.1: # %return236; XTENSA-NEXT:    movi a2, 1237; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload238; XTENSA-NEXT:    addi a8, a1, 16239; XTENSA-NEXT:    or a1, a8, a8240; XTENSA-NEXT:    ret241; XTENSA-NEXT:  .LBB7_2: # %callit242; XTENSA-NEXT:    l32r a8, .LCPI7_0243; XTENSA-NEXT:    callx0 a8244entry:245  %b = load i32, ptr %bptr246  %cmp = icmp uge i32 %a, %b247  br i1 %cmp, label %return, label %callit248 249callit:250  call void @foo()251  unreachable252 253return:254  ret i32 1255}256 257define i32 @slt(i32 %a, ptr %bptr) {258; XTENSA-LABEL: slt:259; XTENSA:         addi a8, a1, -16260; XTENSA-NEXT:    or a1, a8, a8261; XTENSA-NEXT:    .cfi_def_cfa_offset 16262; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill263; XTENSA-NEXT:    .cfi_offset a0, -4264; XTENSA-NEXT:    l32i a8, a3, 0265; XTENSA-NEXT:    blt a2, a8, .LBB8_2266; XTENSA-NEXT:  # %bb.1: # %return267; XTENSA-NEXT:    movi a2, 1268; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload269; XTENSA-NEXT:    addi a8, a1, 16270; XTENSA-NEXT:    or a1, a8, a8271; XTENSA-NEXT:    ret272; XTENSA-NEXT:  .LBB8_2: # %callit273; XTENSA-NEXT:    l32r a8, .LCPI8_0274; XTENSA-NEXT:    callx0 a8275entry:276  %b = load i32, ptr %bptr277  %cmp = icmp slt i32 %a, %b278  br i1 %cmp, label %callit, label %return279 280callit:281  call void @foo()282  unreachable283 284return:285  ret i32 1286}287 288define i32 @slt_reverse(i32 %a, ptr %bptr) {289; XTENSA-LABEL: slt_reverse:290; XTENSA:         addi a8, a1, -16291; XTENSA-NEXT:    or a1, a8, a8292; XTENSA-NEXT:    .cfi_def_cfa_offset 16293; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill294; XTENSA-NEXT:    .cfi_offset a0, -4295; XTENSA-NEXT:    l32i a8, a3, 0296; XTENSA-NEXT:    bge a2, a8, .LBB9_2297; XTENSA-NEXT:  # %bb.1: # %return298; XTENSA-NEXT:    movi a2, 1299; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload300; XTENSA-NEXT:    addi a8, a1, 16301; XTENSA-NEXT:    or a1, a8, a8302; XTENSA-NEXT:    ret303; XTENSA-NEXT:  .LBB9_2: # %callit304; XTENSA-NEXT:    l32r a8, .LCPI9_0305; XTENSA-NEXT:    callx0 a8306entry:307  %b = load i32, ptr %bptr308  %cmp = icmp slt i32 %a, %b309  br i1 %cmp, label %return, label %callit310 311callit:312  call void @foo()313  unreachable314 315return:316  ret i32 1317}318 319define i32 @sle(i32 %a, ptr %bptr) {320; XTENSA-LABEL: sle:321; XTENSA:         addi a8, a1, -16322; XTENSA-NEXT:    or a1, a8, a8323; XTENSA-NEXT:    .cfi_def_cfa_offset 16324; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill325; XTENSA-NEXT:    .cfi_offset a0, -4326; XTENSA-NEXT:    l32i a8, a3, 0327; XTENSA-NEXT:    bge a8, a2, .LBB10_2328; XTENSA-NEXT:  # %bb.1: # %return329; XTENSA-NEXT:    movi a2, 1330; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload331; XTENSA-NEXT:    addi a8, a1, 16332; XTENSA-NEXT:    or a1, a8, a8333; XTENSA-NEXT:    ret334; XTENSA-NEXT:  .LBB10_2: # %callit335; XTENSA-NEXT:    l32r a8, .LCPI10_0336; XTENSA-NEXT:    callx0 a8337entry:338  %b = load i32, ptr %bptr339  %cmp = icmp sle i32 %a, %b340  br i1 %cmp, label %callit, label %return341 342callit:343  call void @foo()344  unreachable345 346return:347  ret i32 1348}349 350define i32 @sle_reverse(i32 %a, ptr %bptr) {351; XTENSA-LABEL: sle_reverse:352; XTENSA:         addi a8, a1, -16353; XTENSA-NEXT:    or a1, a8, a8354; XTENSA-NEXT:    .cfi_def_cfa_offset 16355; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill356; XTENSA-NEXT:    .cfi_offset a0, -4357; XTENSA-NEXT:    l32i a8, a3, 0358; XTENSA-NEXT:    blt a8, a2, .LBB11_2359; XTENSA-NEXT:  # %bb.1: # %return360; XTENSA-NEXT:    movi a2, 1361; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload362; XTENSA-NEXT:    addi a8, a1, 16363; XTENSA-NEXT:    or a1, a8, a8364; XTENSA-NEXT:    ret365; XTENSA-NEXT:  .LBB11_2: # %callit366; XTENSA-NEXT:    l32r a8, .LCPI11_0367; XTENSA-NEXT:    callx0 a8368entry:369  %b = load i32, ptr %bptr370  %cmp = icmp sle i32 %a, %b371  br i1 %cmp, label %return, label %callit372 373callit:374  call void @foo()375  unreachable376 377return:378  ret i32 1379}380 381define i32 @sgt(i32 %a, ptr %bptr) {382; XTENSA-LABEL: sgt:383; XTENSA:         addi a8, a1, -16384; XTENSA-NEXT:    or a1, a8, a8385; XTENSA-NEXT:    .cfi_def_cfa_offset 16386; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill387; XTENSA-NEXT:    .cfi_offset a0, -4388; XTENSA-NEXT:    l32i a8, a3, 0389; XTENSA-NEXT:    blt a8, a2, .LBB12_2390; XTENSA-NEXT:  # %bb.1: # %return391; XTENSA-NEXT:    movi a2, 1392; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload393; XTENSA-NEXT:    addi a8, a1, 16394; XTENSA-NEXT:    or a1, a8, a8395; XTENSA-NEXT:    ret396; XTENSA-NEXT:  .LBB12_2: # %callit397; XTENSA-NEXT:    l32r a8, .LCPI12_0398; XTENSA-NEXT:    callx0 a8399entry:400  %b = load i32, ptr %bptr401  %cmp = icmp sgt i32 %a, %b402  br i1 %cmp, label %callit, label %return403 404callit:405  call void @foo()406  unreachable407 408return:409  ret i32 1410}411 412define i32 @sgt_reverse(i32 %a, ptr %bptr) {413; XTENSA-LABEL: sgt_reverse:414; XTENSA:         addi a8, a1, -16415; XTENSA-NEXT:    or a1, a8, a8416; XTENSA-NEXT:    .cfi_def_cfa_offset 16417; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill418; XTENSA-NEXT:    .cfi_offset a0, -4419; XTENSA-NEXT:    l32i a8, a3, 0420; XTENSA-NEXT:    bge a8, a2, .LBB13_2421; XTENSA-NEXT:  # %bb.1: # %return422; XTENSA-NEXT:    movi a2, 1423; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload424; XTENSA-NEXT:    addi a8, a1, 16425; XTENSA-NEXT:    or a1, a8, a8426; XTENSA-NEXT:    ret427; XTENSA-NEXT:  .LBB13_2: # %callit428; XTENSA-NEXT:    l32r a8, .LCPI13_0429; XTENSA-NEXT:    callx0 a8430entry:431  %b = load i32, ptr %bptr432  %cmp = icmp sgt i32 %a, %b433  br i1 %cmp, label %return, label %callit434 435callit:436  call void @foo()437  unreachable438 439return:440  ret i32 1441}442 443define i32 @sge(i32 %a, ptr %bptr) {444; XTENSA-LABEL: sge:445; XTENSA:         addi a8, a1, -16446; XTENSA-NEXT:    or a1, a8, a8447; XTENSA-NEXT:    .cfi_def_cfa_offset 16448; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill449; XTENSA-NEXT:    .cfi_offset a0, -4450; XTENSA-NEXT:    l32i a8, a3, 0451; XTENSA-NEXT:    bge a2, a8, .LBB14_2452; XTENSA-NEXT:  # %bb.1: # %return453; XTENSA-NEXT:    movi a2, 1454; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload455; XTENSA-NEXT:    addi a8, a1, 16456; XTENSA-NEXT:    or a1, a8, a8457; XTENSA-NEXT:    ret458; XTENSA-NEXT:  .LBB14_2: # %callit459; XTENSA-NEXT:    l32r a8, .LCPI14_0460; XTENSA-NEXT:    callx0 a8461entry:462  %b = load i32, ptr %bptr463  %cmp = icmp sge i32 %a, %b464  br i1 %cmp, label %callit, label %return465 466callit:467  call void @foo()468  unreachable469 470return:471  ret i32 1472}473 474define i32 @sge_reverse(i32 %a, ptr %bptr) {475; XTENSA-LABEL: sge_reverse:476; XTENSA:         addi a8, a1, -16477; XTENSA-NEXT:    or a1, a8, a8478; XTENSA-NEXT:    .cfi_def_cfa_offset 16479; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill480; XTENSA-NEXT:    .cfi_offset a0, -4481; XTENSA-NEXT:    l32i a8, a3, 0482; XTENSA-NEXT:    blt a2, a8, .LBB15_2483; XTENSA-NEXT:  # %bb.1: # %return484; XTENSA-NEXT:    movi a2, 1485; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload486; XTENSA-NEXT:    addi a8, a1, 16487; XTENSA-NEXT:    or a1, a8, a8488; XTENSA-NEXT:    ret489; XTENSA-NEXT:  .LBB15_2: # %callit490; XTENSA-NEXT:    l32r a8, .LCPI15_0491; XTENSA-NEXT:    callx0 a8492entry:493  %b = load i32, ptr %bptr494  %cmp = icmp sge i32 %a, %b495  br i1 %cmp, label %return, label %callit496 497callit:498  call void @foo()499  unreachable500 501return:502  ret i32 1503}504 505; Check some cases of comparing operand with constant.506 507define i32 @eq_zero(ptr %aptr) {508; XTENSA-LABEL: eq_zero:509; XTENSA:         addi a8, a1, -16510; XTENSA-NEXT:    or a1, a8, a8511; XTENSA-NEXT:    .cfi_def_cfa_offset 16512; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill513; XTENSA-NEXT:    .cfi_offset a0, -4514; XTENSA-NEXT:    memw515; XTENSA-NEXT:    l32i a8, a2, 0516; XTENSA-NEXT:    beqz a8, .LBB16_2517; XTENSA-NEXT:  # %bb.1: # %return518; XTENSA-NEXT:    movi a2, 1519; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload520; XTENSA-NEXT:    addi a8, a1, 16521; XTENSA-NEXT:    or a1, a8, a8522; XTENSA-NEXT:    ret523; XTENSA-NEXT:  .LBB16_2: # %callit524; XTENSA-NEXT:    l32r a8, .LCPI16_0525; XTENSA-NEXT:    callx0 a8526entry:527  %a = load volatile i32, ptr %aptr528  %cmp = icmp eq i32 %a, 0529  br i1 %cmp, label %callit, label %return530 531callit:532  call void @foo()533  unreachable534 535return:536  ret i32 1537}538 539define i32 @eq_zero_reverse(ptr %aptr) {540; XTENSA-LABEL: eq_zero_reverse:541; XTENSA:         addi a8, a1, -16542; XTENSA-NEXT:    or a1, a8, a8543; XTENSA-NEXT:    .cfi_def_cfa_offset 16544; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill545; XTENSA-NEXT:    .cfi_offset a0, -4546; XTENSA-NEXT:    memw547; XTENSA-NEXT:    l32i a8, a2, 0548; XTENSA-NEXT:    bnez a8, .LBB17_2549; XTENSA-NEXT:  # %bb.1: # %return550; XTENSA-NEXT:    movi a2, 1551; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload552; XTENSA-NEXT:    addi a8, a1, 16553; XTENSA-NEXT:    or a1, a8, a8554; XTENSA-NEXT:    ret555; XTENSA-NEXT:  .LBB17_2: # %callit556; XTENSA-NEXT:    l32r a8, .LCPI17_0557; XTENSA-NEXT:    callx0 a8558entry:559  %a = load volatile i32, ptr %aptr560  %cmp = icmp eq i32 %a, 0561  br i1 %cmp, label %return, label %callit562 563callit:564  call void @foo()565  unreachable566 567return:568  ret i32 1569}570 571define i32 @ne_zero(ptr %aptr) {572; XTENSA-LABEL: ne_zero:573; XTENSA:         addi a8, a1, -16574; XTENSA-NEXT:    or a1, a8, a8575; XTENSA-NEXT:    .cfi_def_cfa_offset 16576; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill577; XTENSA-NEXT:    .cfi_offset a0, -4578; XTENSA-NEXT:    memw579; XTENSA-NEXT:    l32i a8, a2, 0580; XTENSA-NEXT:    bnez a8, .LBB18_2581; XTENSA-NEXT:  # %bb.1: # %return582; XTENSA-NEXT:    movi a2, 1583; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload584; XTENSA-NEXT:    addi a8, a1, 16585; XTENSA-NEXT:    or a1, a8, a8586; XTENSA-NEXT:    ret587; XTENSA-NEXT:  .LBB18_2: # %callit588; XTENSA-NEXT:    l32r a8, .LCPI18_0589; XTENSA-NEXT:    callx0 a8590entry:591  %a = load volatile i32, ptr %aptr592  %cmp = icmp ne i32 %a, 0593  br i1 %cmp, label %callit, label %return594 595callit:596  call void @foo()597  unreachable598 599return:600  ret i32 1601}602 603define i32 @ne_zero_reverse(ptr %aptr) {604; XTENSA-LABEL: ne_zero_reverse:605; XTENSA:         addi a8, a1, -16606; XTENSA-NEXT:    or a1, a8, a8607; XTENSA-NEXT:    .cfi_def_cfa_offset 16608; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill609; XTENSA-NEXT:    .cfi_offset a0, -4610; XTENSA-NEXT:    memw611; XTENSA-NEXT:    l32i a8, a2, 0612; XTENSA-NEXT:    beqz a8, .LBB19_2613; XTENSA-NEXT:  # %bb.1: # %return614; XTENSA-NEXT:    movi a2, 1615; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload616; XTENSA-NEXT:    addi a8, a1, 16617; XTENSA-NEXT:    or a1, a8, a8618; XTENSA-NEXT:    ret619; XTENSA-NEXT:  .LBB19_2: # %callit620; XTENSA-NEXT:    l32r a8, .LCPI19_0621; XTENSA-NEXT:    callx0 a8622entry:623  %a = load volatile i32, ptr %aptr624  %cmp = icmp ne i32 %a, 0625  br i1 %cmp, label %return, label %callit626 627callit:628  call void @foo()629  unreachable630 631return:632  ret i32 1633}634 635define i32 @slt_zero(ptr %aptr) {636; XTENSA-LABEL: slt_zero:637; XTENSA:         addi a8, a1, -16638; XTENSA-NEXT:    or a1, a8, a8639; XTENSA-NEXT:    .cfi_def_cfa_offset 16640; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill641; XTENSA-NEXT:    .cfi_offset a0, -4642; XTENSA-NEXT:    memw643; XTENSA-NEXT:    l32i a8, a2, 0644; XTENSA-NEXT:    bgez a8, .LBB20_2645; XTENSA-NEXT:  # %bb.1: # %return646; XTENSA-NEXT:    movi a2, 1647; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload648; XTENSA-NEXT:    addi a8, a1, 16649; XTENSA-NEXT:    or a1, a8, a8650; XTENSA-NEXT:    ret651; XTENSA-NEXT:  .LBB20_2: # %callit652; XTENSA-NEXT:    l32r a8, .LCPI20_0653; XTENSA-NEXT:    callx0 a8654entry:655  %a = load volatile i32, ptr %aptr656  %cmp = icmp slt i32 %a, 0657  br i1 %cmp, label %return, label %callit658 659callit:660  call void @foo()661  unreachable662 663return:664  ret i32 1665}666 667define i32 @eq_imm(i32 %a) {668; XTENSA-LABEL: eq_imm:669; XTENSA:         addi a8, a1, -16670; XTENSA-NEXT:    or a1, a8, a8671; XTENSA-NEXT:    .cfi_def_cfa_offset 16672; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill673; XTENSA-NEXT:    .cfi_offset a0, -4674; XTENSA-NEXT:    beqi a2, 1, .LBB21_2675; XTENSA-NEXT:  # %bb.1: # %return676; XTENSA-NEXT:    movi a2, 1677; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload678; XTENSA-NEXT:    addi a8, a1, 16679; XTENSA-NEXT:    or a1, a8, a8680; XTENSA-NEXT:    ret681; XTENSA-NEXT:  .LBB21_2: # %callit682; XTENSA-NEXT:    l32r a8, .LCPI21_0683; XTENSA-NEXT:    callx0 a8684entry:685  %cmp = icmp eq i32 %a, 1686  br i1 %cmp, label %callit, label %return687 688callit:689  call void @foo()690  unreachable691 692return:693  ret i32 1694}695 696define i32 @eq_imm_reverse(i32 %a) {697; XTENSA-LABEL: eq_imm_reverse:698; XTENSA:         addi a8, a1, -16699; XTENSA-NEXT:    or a1, a8, a8700; XTENSA-NEXT:    .cfi_def_cfa_offset 16701; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill702; XTENSA-NEXT:    .cfi_offset a0, -4703; XTENSA-NEXT:    bnei a2, 1, .LBB22_2704; XTENSA-NEXT:  # %bb.1: # %return705; XTENSA-NEXT:    movi a2, 1706; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload707; XTENSA-NEXT:    addi a8, a1, 16708; XTENSA-NEXT:    or a1, a8, a8709; XTENSA-NEXT:    ret710; XTENSA-NEXT:  .LBB22_2: # %callit711; XTENSA-NEXT:    l32r a8, .LCPI22_0712; XTENSA-NEXT:    callx0 a8713entry:714  %cmp = icmp eq i32 %a, 1715  br i1 %cmp, label %return, label %callit716 717callit:718  call void @foo()719  unreachable720 721return:722  ret i32 1723}724 725define i32 @ne_imm(i32 %a) {726; XTENSA-LABEL: ne_imm:727; XTENSA:         addi a8, a1, -16728; XTENSA-NEXT:    or a1, a8, a8729; XTENSA-NEXT:    .cfi_def_cfa_offset 16730; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill731; XTENSA-NEXT:    .cfi_offset a0, -4732; XTENSA-NEXT:    beqi a2, 1, .LBB23_2733; XTENSA-NEXT:  # %bb.1: # %return734; XTENSA-NEXT:    movi a2, 1735; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload736; XTENSA-NEXT:    addi a8, a1, 16737; XTENSA-NEXT:    or a1, a8, a8738; XTENSA-NEXT:    ret739; XTENSA-NEXT:  .LBB23_2: # %callit740; XTENSA-NEXT:    l32r a8, .LCPI23_0741; XTENSA-NEXT:    callx0 a8742entry:743  %cmp = icmp eq i32 %a, 1744  br i1 %cmp, label %callit, label %return745 746callit:747  call void @foo()748  unreachable749 750return:751  ret i32 1752}753 754define i32 @ne_imm_reverse(i32 %a) {755; XTENSA-LABEL: ne_imm_reverse:756; XTENSA:         addi a8, a1, -16757; XTENSA-NEXT:    or a1, a8, a8758; XTENSA-NEXT:    .cfi_def_cfa_offset 16759; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill760; XTENSA-NEXT:    .cfi_offset a0, -4761; XTENSA-NEXT:    bnei a2, 1, .LBB24_2762; XTENSA-NEXT:  # %bb.1: # %return763; XTENSA-NEXT:    movi a2, 1764; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload765; XTENSA-NEXT:    addi a8, a1, 16766; XTENSA-NEXT:    or a1, a8, a8767; XTENSA-NEXT:    ret768; XTENSA-NEXT:  .LBB24_2: # %callit769; XTENSA-NEXT:    l32r a8, .LCPI24_0770; XTENSA-NEXT:    callx0 a8771entry:772  %cmp = icmp eq i32 %a, 1773  br i1 %cmp, label %return, label %callit774 775callit:776  call void @foo()777  unreachable778 779return:780  ret i32 1781}782 783define i32 @slt_imm(i32 %a) {784; XTENSA-LABEL: slt_imm:785; XTENSA:         addi a8, a1, -16786; XTENSA-NEXT:    or a1, a8, a8787; XTENSA-NEXT:    .cfi_def_cfa_offset 16788; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill789; XTENSA-NEXT:    .cfi_offset a0, -4790; XTENSA-NEXT:    bgei a2, -1, .LBB25_2791; XTENSA-NEXT:  # %bb.1: # %return792; XTENSA-NEXT:    movi a2, 1793; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload794; XTENSA-NEXT:    addi a8, a1, 16795; XTENSA-NEXT:    or a1, a8, a8796; XTENSA-NEXT:    ret797; XTENSA-NEXT:  .LBB25_2: # %callit798; XTENSA-NEXT:    l32r a8, .LCPI25_0799; XTENSA-NEXT:    callx0 a8800entry:801  %cmp = icmp slt i32 %a, -1802  br i1 %cmp, label %return, label %callit803 804callit:805  call void @foo()806  unreachable807 808return:809  ret i32 1810}811 812define i32 @sge_imm(i32 %a) {813; XTENSA-LABEL: sge_imm:814; XTENSA:         addi a8, a1, -16815; XTENSA-NEXT:    or a1, a8, a8816; XTENSA-NEXT:    .cfi_def_cfa_offset 16817; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill818; XTENSA-NEXT:    .cfi_offset a0, -4819; XTENSA-NEXT:    beqz a2, .LBB26_2820; XTENSA-NEXT:  # %bb.1: # %return821; XTENSA-NEXT:    movi a2, 1822; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload823; XTENSA-NEXT:    addi a8, a1, 16824; XTENSA-NEXT:    or a1, a8, a8825; XTENSA-NEXT:    ret826; XTENSA-NEXT:  .LBB26_2: # %callit827; XTENSA-NEXT:    l32r a8, .LCPI26_0828; XTENSA-NEXT:    callx0 a8829entry:830  %cmp = icmp ult i32 %a, 1831  br i1 %cmp, label %callit, label %return832 833callit:834  call void @foo()835  unreachable836 837return:838  ret i32 1839}840 841define i32 @uge_imm(ptr %aptr) {842; XTENSA-LABEL: uge_imm:843; XTENSA:         addi a8, a1, -16844; XTENSA-NEXT:    or a1, a8, a8845; XTENSA-NEXT:    .cfi_def_cfa_offset 16846; XTENSA-NEXT:    s32i a0, a1, 0 # 4-byte Folded Spill847; XTENSA-NEXT:    .cfi_offset a0, -4848; XTENSA-NEXT:    memw849; XTENSA-NEXT:    l32i a8, a2, 0850; XTENSA-NEXT:    bgeui a8, 2, .LBB27_2851; XTENSA-NEXT:  # %bb.1: # %return852; XTENSA-NEXT:    movi a2, 1853; XTENSA-NEXT:    l32i a0, a1, 0 # 4-byte Folded Reload854; XTENSA-NEXT:    addi a8, a1, 16855; XTENSA-NEXT:    or a1, a8, a8856; XTENSA-NEXT:    ret857; XTENSA-NEXT:  .LBB27_2: # %callit858; XTENSA-NEXT:    l32r a8, .LCPI27_0859; XTENSA-NEXT:    callx0 a8860entry:861  %a = load volatile i32, ptr %aptr862  %cmp = icmp uge i32 %a, 2863  br i1 %cmp, label %callit, label %return864 865callit:866  call void @foo()867  unreachable868 869return:870  ret i32 1871}872