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