705 lines · plain
1; RUN: llc < %s -mtriple=xtensa -O0 | FileCheck %s2 3define i32 @f_eq(i32 %a, i32 %b) nounwind {4; CHECK-LABEL: f_eq:5; CHECK: addi a8, a1, -166; CHECK-NEXT: or a1, a8, a87; CHECK-NEXT: movi a8, 08; CHECK-NEXT: s32i a8, a1, 0 # 4-byte Folded Spill9; CHECK-NEXT: movi a8, 110; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill11; CHECK-NEXT: beq a2, a3, .LBB0_212; CHECK-NEXT: # %bb.1:13; CHECK-NEXT: l32i a8, a1, 0 # 4-byte Folded Reload14; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill15; CHECK-NEXT: .LBB0_2:16; CHECK-NEXT: l32i a2, a1, 4 # 4-byte Folded Reload17; CHECK-NEXT: addi a8, a1, 1618; CHECK-NEXT: or a1, a8, a819; CHECK-NEXT: ret20 21 %cond = icmp eq i32 %a, %b22 %res = zext i1 %cond to i3223 ret i32 %res24}25 26define i32 @f_slt(i32 %a, i32 %b) nounwind {27; CHECK-LABEL: f_slt:28; CHECK: addi a8, a1, -1629; CHECK-NEXT: or a1, a8, a830; CHECK-NEXT: movi a8, 031; CHECK-NEXT: s32i a8, a1, 0 # 4-byte Folded Spill32; CHECK-NEXT: movi a8, 133; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill34; CHECK-NEXT: blt a2, a3, .LBB1_235; CHECK-NEXT: # %bb.1:36; CHECK-NEXT: l32i a8, a1, 0 # 4-byte Folded Reload37; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill38; CHECK-NEXT: .LBB1_2:39; CHECK-NEXT: l32i a2, a1, 4 # 4-byte Folded Reload40; CHECK-NEXT: addi a8, a1, 1641; CHECK-NEXT: or a1, a8, a842; CHECK-NEXT: ret43 44 %cond = icmp slt i32 %a, %b45 %res = zext i1 %cond to i3246 ret i32 %res47}48 49define i32 @f_sle(i32 %a, i32 %b) nounwind {50; CHECK-LABEL: f_sle:51; CHECK: addi a8, a1, -1652; CHECK-NEXT: or a1, a8, a853; CHECK-NEXT: movi a8, 054; CHECK-NEXT: s32i a8, a1, 0 # 4-byte Folded Spill55; CHECK-NEXT: movi a8, 156; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill57; CHECK-NEXT: bge a3, a2, .LBB2_258; CHECK-NEXT: # %bb.1:59; CHECK-NEXT: l32i a8, a1, 0 # 4-byte Folded Reload60; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill61; CHECK-NEXT: .LBB2_2:62; CHECK-NEXT: l32i a2, a1, 4 # 4-byte Folded Reload63; CHECK-NEXT: addi a8, a1, 1664; CHECK-NEXT: or a1, a8, a865; CHECK-NEXT: ret66 67 %cond = icmp sle i32 %a, %b68 %res = zext i1 %cond to i3269 ret i32 %res70}71 72define i32 @f_sgt(i32 %a, i32 %b) nounwind {73; CHECK-LABEL: f_sgt:74; CHECK: addi a8, a1, -1675; CHECK-NEXT: or a1, a8, a876; CHECK-NEXT: movi a8, 077; CHECK-NEXT: s32i a8, a1, 0 # 4-byte Folded Spill78; CHECK-NEXT: movi a8, 179; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill80; CHECK-NEXT: blt a3, a2, .LBB3_281; CHECK-NEXT: # %bb.1:82; CHECK-NEXT: l32i a8, a1, 0 # 4-byte Folded Reload83; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill84; CHECK-NEXT: .LBB3_2:85; CHECK-NEXT: l32i a2, a1, 4 # 4-byte Folded Reload86; CHECK-NEXT: addi a8, a1, 1687; CHECK-NEXT: or a1, a8, a888; CHECK-NEXT: ret89 90 %cond = icmp sgt i32 %a, %b91 %res = zext i1 %cond to i3292 ret i32 %res93}94 95define i32 @f_sge(i32 %a, i32 %b) nounwind {96; CHECK-LABEL: f_sge:97; CHECK: addi a8, a1, -1698; CHECK-NEXT: or a1, a8, a899; CHECK-NEXT: movi a8, 0100; CHECK-NEXT: s32i a8, a1, 0 # 4-byte Folded Spill101; CHECK-NEXT: movi a8, 1102; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill103; CHECK-NEXT: bge a2, a3, .LBB4_2104; CHECK-NEXT: # %bb.1:105; CHECK-NEXT: l32i a8, a1, 0 # 4-byte Folded Reload106; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill107; CHECK-NEXT: .LBB4_2:108; CHECK-NEXT: l32i a2, a1, 4 # 4-byte Folded Reload109; CHECK-NEXT: addi a8, a1, 16110; CHECK-NEXT: or a1, a8, a8111; CHECK-NEXT: ret112 113 %cond = icmp sge i32 %a, %b114 %res = zext i1 %cond to i32115 ret i32 %res116}117 118define i32 @f_ne(i32 %a, i32 %b) nounwind {119; CHECK-LABEL: f_ne:120; CHECK: addi a8, a1, -16121; CHECK-NEXT: or a1, a8, a8122; CHECK-NEXT: movi a8, 0123; CHECK-NEXT: s32i a8, a1, 0 # 4-byte Folded Spill124; CHECK-NEXT: movi a8, 1125; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill126; CHECK-NEXT: bne a2, a3, .LBB5_2127; CHECK-NEXT: # %bb.1:128; CHECK-NEXT: l32i a8, a1, 0 # 4-byte Folded Reload129; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill130; CHECK-NEXT: .LBB5_2:131; CHECK-NEXT: l32i a2, a1, 4 # 4-byte Folded Reload132; CHECK-NEXT: addi a8, a1, 16133; CHECK-NEXT: or a1, a8, a8134; CHECK-NEXT: ret135 136 %cond = icmp ne i32 %a, %b137 %res = zext i1 %cond to i32138 ret i32 %res139}140 141define i32 @f_ult(i32 %a, i32 %b) nounwind {142; CHECK-LABEL: f_ult:143; CHECK: addi a8, a1, -16144; CHECK-NEXT: or a1, a8, a8145; CHECK-NEXT: movi a8, 0146; CHECK-NEXT: s32i a8, a1, 0 # 4-byte Folded Spill147; CHECK-NEXT: movi a8, 1148; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill149; CHECK-NEXT: bltu a2, a3, .LBB6_2150; CHECK-NEXT: # %bb.1:151; CHECK-NEXT: l32i a8, a1, 0 # 4-byte Folded Reload152; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill153; CHECK-NEXT: .LBB6_2:154; CHECK-NEXT: l32i a2, a1, 4 # 4-byte Folded Reload155; CHECK-NEXT: addi a8, a1, 16156; CHECK-NEXT: or a1, a8, a8157; CHECK-NEXT: ret158 159 %cond = icmp ult i32 %a, %b160 %res = zext i1 %cond to i32161 ret i32 %res162}163 164define i32 @f_ule(i32 %a, i32 %b) nounwind {165; CHECK-LABEL: f_ule:166; CHECK: addi a8, a1, -16167; CHECK-NEXT: or a1, a8, a8168; CHECK-NEXT: movi a8, 0169; CHECK-NEXT: s32i a8, a1, 0 # 4-byte Folded Spill170; CHECK-NEXT: movi a8, 1171; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill172; CHECK-NEXT: bgeu a3, a2, .LBB7_2173; CHECK-NEXT: # %bb.1:174; CHECK-NEXT: l32i a8, a1, 0 # 4-byte Folded Reload175; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill176; CHECK-NEXT: .LBB7_2:177; CHECK-NEXT: l32i a2, a1, 4 # 4-byte Folded Reload178; CHECK-NEXT: addi a8, a1, 16179; CHECK-NEXT: or a1, a8, a8180; CHECK-NEXT: ret181 182 %cond = icmp ule i32 %a, %b183 %res = zext i1 %cond to i32184 ret i32 %res185}186 187define i32 @f_ugt(i32 %a, i32 %b) nounwind {188; CHECK-LABEL: f_ugt:189; CHECK: addi a8, a1, -16190; CHECK-NEXT: or a1, a8, a8191; CHECK-NEXT: movi a8, 0192; CHECK-NEXT: s32i a8, a1, 0 # 4-byte Folded Spill193; CHECK-NEXT: movi a8, 1194; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill195; CHECK-NEXT: bltu a3, a2, .LBB8_2196; CHECK-NEXT: # %bb.1:197; CHECK-NEXT: l32i a8, a1, 0 # 4-byte Folded Reload198; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill199; CHECK-NEXT: .LBB8_2:200; CHECK-NEXT: l32i a2, a1, 4 # 4-byte Folded Reload201; CHECK-NEXT: addi a8, a1, 16202; CHECK-NEXT: or a1, a8, a8203; CHECK-NEXT: ret204 205 %cond = icmp ugt i32 %a, %b206 %res = zext i1 %cond to i32207 ret i32 %res208}209 210define i32 @f_uge(i32 %a, i32 %b) nounwind {211; CHECK-LABEL: f_uge:212; CHECK: addi a8, a1, -16213; CHECK-NEXT: or a1, a8, a8214; CHECK-NEXT: movi a8, 0215; CHECK-NEXT: s32i a8, a1, 0 # 4-byte Folded Spill216; CHECK-NEXT: movi a8, 1217; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill218; CHECK-NEXT: bgeu a2, a3, .LBB9_2219; CHECK-NEXT: # %bb.1:220; CHECK-NEXT: l32i a8, a1, 0 # 4-byte Folded Reload221; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill222; CHECK-NEXT: .LBB9_2:223; CHECK-NEXT: l32i a2, a1, 4 # 4-byte Folded Reload224; CHECK-NEXT: addi a8, a1, 16225; CHECK-NEXT: or a1, a8, a8226; CHECK-NEXT: ret227 228 %cond = icmp uge i32 %a, %b229 %res = zext i1 %cond to i32230 ret i32 %res231}232 233 234; Tests for i64 operands235 236define i64 @f_eq_i64(i64 %a, i64 %b) nounwind {237; CHECK-LABEL: f_eq_i64:238; CHECK: addi a8, a1, -16239; CHECK-NEXT: or a1, a8, a8240; CHECK-NEXT: # kill: def $a8 killed $a5241; CHECK-NEXT: # kill: def $a8 killed $a4242; CHECK-NEXT: # kill: def $a8 killed $a3243; CHECK-NEXT: # kill: def $a8 killed $a2244; CHECK-NEXT: xor a9, a3, a5245; CHECK-NEXT: xor a8, a2, a4246; CHECK-NEXT: or a8, a8, a9247; CHECK-NEXT: movi a10, 1248; CHECK-NEXT: movi a9, 0249; CHECK-NEXT: s32i a9, a1, 0 # 4-byte Folded Spill250; CHECK-NEXT: s32i a10, a1, 4 # 4-byte Folded Spill251; CHECK-NEXT: beq a8, a9, .LBB10_2252; CHECK-NEXT: # %bb.1:253; CHECK-NEXT: l32i a8, a1, 0 # 4-byte Folded Reload254; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill255; CHECK-NEXT: .LBB10_2:256; CHECK-NEXT: l32i a3, a1, 0 # 4-byte Folded Reload257; CHECK-NEXT: l32i a2, a1, 4 # 4-byte Folded Reload258; CHECK-NEXT: addi a8, a1, 16259; CHECK-NEXT: or a1, a8, a8260; CHECK-NEXT: ret261 262 %cond = icmp eq i64 %a, %b263 %res = zext i1 %cond to i64264 ret i64 %res265}266 267define i64 @f_slt_i64(i64 %a, i64 %b) nounwind {268; CHECK-LABEL: f_slt_i64:269; CHECK: addi a8, a1, -48270; CHECK-NEXT: or a1, a8, a8271; CHECK-NEXT: s32i a5, a1, 12 # 4-byte Folded Spill272; CHECK-NEXT: s32i a4, a1, 16 # 4-byte Folded Spill273; CHECK-NEXT: s32i a3, a1, 20 # 4-byte Folded Spill274; CHECK-NEXT: s32i a2, a1, 24 # 4-byte Folded Spill275; CHECK-NEXT: # kill: def $a8 killed $a5276; CHECK-NEXT: # kill: def $a8 killed $a3277; CHECK-NEXT: movi a8, 0278; CHECK-NEXT: s32i a8, a1, 28 # 4-byte Folded Spill279; CHECK-NEXT: movi a8, 1280; CHECK-NEXT: s32i a8, a1, 32 # 4-byte Folded Spill281; CHECK-NEXT: s32i a8, a1, 36 # 4-byte Folded Spill282; CHECK-NEXT: blt a3, a5, .LBB11_2283; CHECK-NEXT: # %bb.1:284; CHECK-NEXT: l32i a8, a1, 28 # 4-byte Folded Reload285; CHECK-NEXT: s32i a8, a1, 36 # 4-byte Folded Spill286; CHECK-NEXT: .LBB11_2:287; CHECK-NEXT: l32i a8, a1, 24 # 4-byte Folded Reload288; CHECK-NEXT: l32i a9, a1, 16 # 4-byte Folded Reload289; CHECK-NEXT: l32i a10, a1, 32 # 4-byte Folded Reload290; CHECK-NEXT: l32i a11, a1, 36 # 4-byte Folded Reload291; CHECK-NEXT: s32i a11, a1, 4 # 4-byte Folded Spill292; CHECK-NEXT: s32i a10, a1, 8 # 4-byte Folded Spill293; CHECK-NEXT: bltu a8, a9, .LBB11_4294; CHECK-NEXT: # %bb.3:295; CHECK-NEXT: l32i a8, a1, 28 # 4-byte Folded Reload296; CHECK-NEXT: s32i a8, a1, 8 # 4-byte Folded Spill297; CHECK-NEXT: .LBB11_4:298; CHECK-NEXT: l32i a8, a1, 20 # 4-byte Folded Reload299; CHECK-NEXT: l32i a9, a1, 12 # 4-byte Folded Reload300; CHECK-NEXT: l32i a10, a1, 8 # 4-byte Folded Reload301; CHECK-NEXT: s32i a10, a1, 0 # 4-byte Folded Spill302; CHECK-NEXT: beq a8, a9, .LBB11_6303; CHECK-NEXT: # %bb.5:304; CHECK-NEXT: l32i a8, a1, 4 # 4-byte Folded Reload305; CHECK-NEXT: s32i a8, a1, 0 # 4-byte Folded Spill306; CHECK-NEXT: .LBB11_6:307; CHECK-NEXT: l32i a3, a1, 28 # 4-byte Folded Reload308; CHECK-NEXT: l32i a2, a1, 0 # 4-byte Folded Reload309; CHECK-NEXT: addi a8, a1, 48310; CHECK-NEXT: or a1, a8, a8311; CHECK-NEXT: ret312 313 %cond = icmp slt i64 %a, %b314 %res = zext i1 %cond to i64315 ret i64 %res316}317 318define i64 @f_sle_i64(i64 %a, i64 %b) nounwind {319; CHECK-LABEL: f_sle_i64:320; CHECK: addi a8, a1, -48321; CHECK-NEXT: or a1, a8, a8322; CHECK-NEXT: s32i a5, a1, 12 # 4-byte Folded Spill323; CHECK-NEXT: s32i a4, a1, 16 # 4-byte Folded Spill324; CHECK-NEXT: s32i a3, a1, 20 # 4-byte Folded Spill325; CHECK-NEXT: s32i a2, a1, 24 # 4-byte Folded Spill326; CHECK-NEXT: # kill: def $a8 killed $a5327; CHECK-NEXT: # kill: def $a8 killed $a3328; CHECK-NEXT: movi a8, 0329; CHECK-NEXT: s32i a8, a1, 28 # 4-byte Folded Spill330; CHECK-NEXT: movi a8, 1331; CHECK-NEXT: s32i a8, a1, 32 # 4-byte Folded Spill332; CHECK-NEXT: s32i a8, a1, 36 # 4-byte Folded Spill333; CHECK-NEXT: bge a5, a3, .LBB12_2334; CHECK-NEXT: # %bb.1:335; CHECK-NEXT: l32i a8, a1, 28 # 4-byte Folded Reload336; CHECK-NEXT: s32i a8, a1, 36 # 4-byte Folded Spill337; CHECK-NEXT: .LBB12_2:338; CHECK-NEXT: l32i a8, a1, 16 # 4-byte Folded Reload339; CHECK-NEXT: l32i a9, a1, 24 # 4-byte Folded Reload340; CHECK-NEXT: l32i a10, a1, 32 # 4-byte Folded Reload341; CHECK-NEXT: l32i a11, a1, 36 # 4-byte Folded Reload342; CHECK-NEXT: s32i a11, a1, 4 # 4-byte Folded Spill343; CHECK-NEXT: s32i a10, a1, 8 # 4-byte Folded Spill344; CHECK-NEXT: bgeu a8, a9, .LBB12_4345; CHECK-NEXT: # %bb.3:346; CHECK-NEXT: l32i a8, a1, 28 # 4-byte Folded Reload347; CHECK-NEXT: s32i a8, a1, 8 # 4-byte Folded Spill348; CHECK-NEXT: .LBB12_4:349; CHECK-NEXT: l32i a8, a1, 20 # 4-byte Folded Reload350; CHECK-NEXT: l32i a9, a1, 12 # 4-byte Folded Reload351; CHECK-NEXT: l32i a10, a1, 8 # 4-byte Folded Reload352; CHECK-NEXT: s32i a10, a1, 0 # 4-byte Folded Spill353; CHECK-NEXT: beq a8, a9, .LBB12_6354; CHECK-NEXT: # %bb.5:355; CHECK-NEXT: l32i a8, a1, 4 # 4-byte Folded Reload356; CHECK-NEXT: s32i a8, a1, 0 # 4-byte Folded Spill357; CHECK-NEXT: .LBB12_6:358; CHECK-NEXT: l32i a3, a1, 28 # 4-byte Folded Reload359; CHECK-NEXT: l32i a2, a1, 0 # 4-byte Folded Reload360; CHECK-NEXT: addi a8, a1, 48361; CHECK-NEXT: or a1, a8, a8362; CHECK-NEXT: ret363 364 %cond = icmp sle i64 %a, %b365 %res = zext i1 %cond to i64366 ret i64 %res367}368 369define i64 @f_sgt_i64(i64 %a, i64 %b) nounwind {370; CHECK-LABEL: f_sgt_i64:371; CHECK: addi a8, a1, -48372; CHECK-NEXT: or a1, a8, a8373; CHECK-NEXT: s32i a5, a1, 12 # 4-byte Folded Spill374; CHECK-NEXT: s32i a4, a1, 16 # 4-byte Folded Spill375; CHECK-NEXT: s32i a3, a1, 20 # 4-byte Folded Spill376; CHECK-NEXT: s32i a2, a1, 24 # 4-byte Folded Spill377; CHECK-NEXT: # kill: def $a8 killed $a5378; CHECK-NEXT: # kill: def $a8 killed $a3379; CHECK-NEXT: movi a8, 0380; CHECK-NEXT: s32i a8, a1, 28 # 4-byte Folded Spill381; CHECK-NEXT: movi a8, 1382; CHECK-NEXT: s32i a8, a1, 32 # 4-byte Folded Spill383; CHECK-NEXT: s32i a8, a1, 36 # 4-byte Folded Spill384; CHECK-NEXT: blt a5, a3, .LBB13_2385; CHECK-NEXT: # %bb.1:386; CHECK-NEXT: l32i a8, a1, 28 # 4-byte Folded Reload387; CHECK-NEXT: s32i a8, a1, 36 # 4-byte Folded Spill388; CHECK-NEXT: .LBB13_2:389; CHECK-NEXT: l32i a8, a1, 16 # 4-byte Folded Reload390; CHECK-NEXT: l32i a9, a1, 24 # 4-byte Folded Reload391; CHECK-NEXT: l32i a10, a1, 32 # 4-byte Folded Reload392; CHECK-NEXT: l32i a11, a1, 36 # 4-byte Folded Reload393; CHECK-NEXT: s32i a11, a1, 4 # 4-byte Folded Spill394; CHECK-NEXT: s32i a10, a1, 8 # 4-byte Folded Spill395; CHECK-NEXT: bltu a8, a9, .LBB13_4396; CHECK-NEXT: # %bb.3:397; CHECK-NEXT: l32i a8, a1, 28 # 4-byte Folded Reload398; CHECK-NEXT: s32i a8, a1, 8 # 4-byte Folded Spill399; CHECK-NEXT: .LBB13_4:400; CHECK-NEXT: l32i a8, a1, 20 # 4-byte Folded Reload401; CHECK-NEXT: l32i a9, a1, 12 # 4-byte Folded Reload402; CHECK-NEXT: l32i a10, a1, 8 # 4-byte Folded Reload403; CHECK-NEXT: s32i a10, a1, 0 # 4-byte Folded Spill404; CHECK-NEXT: beq a8, a9, .LBB13_6405; CHECK-NEXT: # %bb.5:406; CHECK-NEXT: l32i a8, a1, 4 # 4-byte Folded Reload407; CHECK-NEXT: s32i a8, a1, 0 # 4-byte Folded Spill408; CHECK-NEXT: .LBB13_6:409; CHECK-NEXT: l32i a3, a1, 28 # 4-byte Folded Reload410; CHECK-NEXT: l32i a2, a1, 0 # 4-byte Folded Reload411; CHECK-NEXT: addi a8, a1, 48412; CHECK-NEXT: or a1, a8, a8413; CHECK-NEXT: ret414 415 %cond = icmp sgt i64 %a, %b416 %res = zext i1 %cond to i64417 ret i64 %res418}419 420define i64 @f_sge_i64(i64 %a, i64 %b) nounwind {421; CHECK-LABEL: f_sge_i64:422; CHECK: addi a8, a1, -48423; CHECK-NEXT: or a1, a8, a8424; CHECK-NEXT: s32i a5, a1, 12 # 4-byte Folded Spill425; CHECK-NEXT: s32i a4, a1, 16 # 4-byte Folded Spill426; CHECK-NEXT: s32i a3, a1, 20 # 4-byte Folded Spill427; CHECK-NEXT: s32i a2, a1, 24 # 4-byte Folded Spill428; CHECK-NEXT: # kill: def $a8 killed $a5429; CHECK-NEXT: # kill: def $a8 killed $a3430; CHECK-NEXT: movi a8, 0431; CHECK-NEXT: s32i a8, a1, 28 # 4-byte Folded Spill432; CHECK-NEXT: movi a8, 1433; CHECK-NEXT: s32i a8, a1, 32 # 4-byte Folded Spill434; CHECK-NEXT: s32i a8, a1, 36 # 4-byte Folded Spill435; CHECK-NEXT: bge a3, a5, .LBB14_2436; CHECK-NEXT: # %bb.1:437; CHECK-NEXT: l32i a8, a1, 28 # 4-byte Folded Reload438; CHECK-NEXT: s32i a8, a1, 36 # 4-byte Folded Spill439; CHECK-NEXT: .LBB14_2:440; CHECK-NEXT: l32i a8, a1, 24 # 4-byte Folded Reload441; CHECK-NEXT: l32i a9, a1, 16 # 4-byte Folded Reload442; CHECK-NEXT: l32i a10, a1, 32 # 4-byte Folded Reload443; CHECK-NEXT: l32i a11, a1, 36 # 4-byte Folded Reload444; CHECK-NEXT: s32i a11, a1, 4 # 4-byte Folded Spill445; CHECK-NEXT: s32i a10, a1, 8 # 4-byte Folded Spill446; CHECK-NEXT: bgeu a8, a9, .LBB14_4447; CHECK-NEXT: # %bb.3:448; CHECK-NEXT: l32i a8, a1, 28 # 4-byte Folded Reload449; CHECK-NEXT: s32i a8, a1, 8 # 4-byte Folded Spill450; CHECK-NEXT: .LBB14_4:451; CHECK-NEXT: l32i a8, a1, 20 # 4-byte Folded Reload452; CHECK-NEXT: l32i a9, a1, 12 # 4-byte Folded Reload453; CHECK-NEXT: l32i a10, a1, 8 # 4-byte Folded Reload454; CHECK-NEXT: s32i a10, a1, 0 # 4-byte Folded Spill455; CHECK-NEXT: beq a8, a9, .LBB14_6456; CHECK-NEXT: # %bb.5:457; CHECK-NEXT: l32i a8, a1, 4 # 4-byte Folded Reload458; CHECK-NEXT: s32i a8, a1, 0 # 4-byte Folded Spill459; CHECK-NEXT: .LBB14_6:460; CHECK-NEXT: l32i a3, a1, 28 # 4-byte Folded Reload461; CHECK-NEXT: l32i a2, a1, 0 # 4-byte Folded Reload462; CHECK-NEXT: addi a8, a1, 48463; CHECK-NEXT: or a1, a8, a8464; CHECK-NEXT: ret465 466 %cond = icmp sge i64 %a, %b467 %res = zext i1 %cond to i64468 ret i64 %res469}470 471define i64 @f_ne_i64(i64 %a, i64 %b) nounwind {472; CHECK-LABEL: f_ne_i64:473; CHECK: addi a8, a1, -16474; CHECK-NEXT: or a1, a8, a8475; CHECK-NEXT: # kill: def $a8 killed $a5476; CHECK-NEXT: # kill: def $a8 killed $a4477; CHECK-NEXT: # kill: def $a8 killed $a3478; CHECK-NEXT: # kill: def $a8 killed $a2479; CHECK-NEXT: xor a9, a3, a5480; CHECK-NEXT: xor a8, a2, a4481; CHECK-NEXT: or a8, a8, a9482; CHECK-NEXT: movi a10, 1483; CHECK-NEXT: movi a9, 0484; CHECK-NEXT: s32i a9, a1, 0 # 4-byte Folded Spill485; CHECK-NEXT: s32i a10, a1, 4 # 4-byte Folded Spill486; CHECK-NEXT: bne a8, a9, .LBB15_2487; CHECK-NEXT: # %bb.1:488; CHECK-NEXT: l32i a8, a1, 0 # 4-byte Folded Reload489; CHECK-NEXT: s32i a8, a1, 4 # 4-byte Folded Spill490; CHECK-NEXT: .LBB15_2:491; CHECK-NEXT: l32i a3, a1, 0 # 4-byte Folded Reload492; CHECK-NEXT: l32i a2, a1, 4 # 4-byte Folded Reload493; CHECK-NEXT: addi a8, a1, 16494; CHECK-NEXT: or a1, a8, a8495; CHECK-NEXT: ret496 497 %cond = icmp ne i64 %a, %b498 %res = zext i1 %cond to i64499 ret i64 %res500}501 502define i64 @f_ult_i64(i64 %a, i64 %b) nounwind {503; CHECK-LABEL: f_ult_i64:504; CHECK: addi a8, a1, -48505; CHECK-NEXT: or a1, a8, a8506; CHECK-NEXT: s32i a5, a1, 12 # 4-byte Folded Spill507; CHECK-NEXT: s32i a4, a1, 16 # 4-byte Folded Spill508; CHECK-NEXT: s32i a3, a1, 20 # 4-byte Folded Spill509; CHECK-NEXT: s32i a2, a1, 24 # 4-byte Folded Spill510; CHECK-NEXT: # kill: def $a8 killed $a5511; CHECK-NEXT: # kill: def $a8 killed $a3512; CHECK-NEXT: movi a8, 0513; CHECK-NEXT: s32i a8, a1, 28 # 4-byte Folded Spill514; CHECK-NEXT: movi a8, 1515; CHECK-NEXT: s32i a8, a1, 32 # 4-byte Folded Spill516; CHECK-NEXT: s32i a8, a1, 36 # 4-byte Folded Spill517; CHECK-NEXT: bltu a3, a5, .LBB16_2518; CHECK-NEXT: # %bb.1:519; CHECK-NEXT: l32i a8, a1, 28 # 4-byte Folded Reload520; CHECK-NEXT: s32i a8, a1, 36 # 4-byte Folded Spill521; CHECK-NEXT: .LBB16_2:522; CHECK-NEXT: l32i a8, a1, 24 # 4-byte Folded Reload523; CHECK-NEXT: l32i a9, a1, 16 # 4-byte Folded Reload524; CHECK-NEXT: l32i a10, a1, 32 # 4-byte Folded Reload525; CHECK-NEXT: l32i a11, a1, 36 # 4-byte Folded Reload526; CHECK-NEXT: s32i a11, a1, 4 # 4-byte Folded Spill527; CHECK-NEXT: s32i a10, a1, 8 # 4-byte Folded Spill528; CHECK-NEXT: bltu a8, a9, .LBB16_4529; CHECK-NEXT: # %bb.3:530; CHECK-NEXT: l32i a8, a1, 28 # 4-byte Folded Reload531; CHECK-NEXT: s32i a8, a1, 8 # 4-byte Folded Spill532; CHECK-NEXT: .LBB16_4:533; CHECK-NEXT: l32i a8, a1, 20 # 4-byte Folded Reload534; CHECK-NEXT: l32i a9, a1, 12 # 4-byte Folded Reload535; CHECK-NEXT: l32i a10, a1, 8 # 4-byte Folded Reload536; CHECK-NEXT: s32i a10, a1, 0 # 4-byte Folded Spill537; CHECK-NEXT: beq a8, a9, .LBB16_6538; CHECK-NEXT: # %bb.5:539; CHECK-NEXT: l32i a8, a1, 4 # 4-byte Folded Reload540; CHECK-NEXT: s32i a8, a1, 0 # 4-byte Folded Spill541; CHECK-NEXT: .LBB16_6:542; CHECK-NEXT: l32i a3, a1, 28 # 4-byte Folded Reload543; CHECK-NEXT: l32i a2, a1, 0 # 4-byte Folded Reload544; CHECK-NEXT: addi a8, a1, 48545; CHECK-NEXT: or a1, a8, a8546; CHECK-NEXT: ret547 548 %cond = icmp ult i64 %a, %b549 %res = zext i1 %cond to i64550 ret i64 %res551}552 553define i64 @f_ule_i64(i64 %a, i64 %b) nounwind {554; CHECK-LABEL: f_ule_i64:555; CHECK: addi a8, a1, -48556; CHECK-NEXT: or a1, a8, a8557; CHECK-NEXT: s32i a5, a1, 12 # 4-byte Folded Spill558; CHECK-NEXT: s32i a4, a1, 16 # 4-byte Folded Spill559; CHECK-NEXT: s32i a3, a1, 20 # 4-byte Folded Spill560; CHECK-NEXT: s32i a2, a1, 24 # 4-byte Folded Spill561; CHECK-NEXT: # kill: def $a8 killed $a5562; CHECK-NEXT: # kill: def $a8 killed $a3563; CHECK-NEXT: movi a8, 0564; CHECK-NEXT: s32i a8, a1, 28 # 4-byte Folded Spill565; CHECK-NEXT: movi a8, 1566; CHECK-NEXT: s32i a8, a1, 32 # 4-byte Folded Spill567; CHECK-NEXT: s32i a8, a1, 36 # 4-byte Folded Spill568; CHECK-NEXT: bgeu a5, a3, .LBB17_2569; CHECK-NEXT: # %bb.1:570; CHECK-NEXT: l32i a8, a1, 28 # 4-byte Folded Reload571; CHECK-NEXT: s32i a8, a1, 36 # 4-byte Folded Spill572; CHECK-NEXT: .LBB17_2:573; CHECK-NEXT: l32i a8, a1, 16 # 4-byte Folded Reload574; CHECK-NEXT: l32i a9, a1, 24 # 4-byte Folded Reload575; CHECK-NEXT: l32i a10, a1, 32 # 4-byte Folded Reload576; CHECK-NEXT: l32i a11, a1, 36 # 4-byte Folded Reload577; CHECK-NEXT: s32i a11, a1, 4 # 4-byte Folded Spill578; CHECK-NEXT: s32i a10, a1, 8 # 4-byte Folded Spill579; CHECK-NEXT: bgeu a8, a9, .LBB17_4580; CHECK-NEXT: # %bb.3:581; CHECK-NEXT: l32i a8, a1, 28 # 4-byte Folded Reload582; CHECK-NEXT: s32i a8, a1, 8 # 4-byte Folded Spill583; CHECK-NEXT: .LBB17_4:584; CHECK-NEXT: l32i a8, a1, 20 # 4-byte Folded Reload585; CHECK-NEXT: l32i a9, a1, 12 # 4-byte Folded Reload586; CHECK-NEXT: l32i a10, a1, 8 # 4-byte Folded Reload587; CHECK-NEXT: s32i a10, a1, 0 # 4-byte Folded Spill588; CHECK-NEXT: beq a8, a9, .LBB17_6589; CHECK-NEXT: # %bb.5:590; CHECK-NEXT: l32i a8, a1, 4 # 4-byte Folded Reload591; CHECK-NEXT: s32i a8, a1, 0 # 4-byte Folded Spill592; CHECK-NEXT: .LBB17_6:593; CHECK-NEXT: l32i a3, a1, 28 # 4-byte Folded Reload594; CHECK-NEXT: l32i a2, a1, 0 # 4-byte Folded Reload595; CHECK-NEXT: addi a8, a1, 48596; CHECK-NEXT: or a1, a8, a8597; CHECK-NEXT: ret598 599 %cond = icmp ule i64 %a, %b600 %res = zext i1 %cond to i64601 ret i64 %res602}603 604define i64 @f_ugt_i64(i64 %a, i64 %b) nounwind {605; CHECK-LABEL: f_ugt_i64:606; CHECK: addi a8, a1, -48607; CHECK-NEXT: or a1, a8, a8608; CHECK-NEXT: s32i a5, a1, 12 # 4-byte Folded Spill609; CHECK-NEXT: s32i a4, a1, 16 # 4-byte Folded Spill610; CHECK-NEXT: s32i a3, a1, 20 # 4-byte Folded Spill611; CHECK-NEXT: s32i a2, a1, 24 # 4-byte Folded Spill612; CHECK-NEXT: # kill: def $a8 killed $a5613; CHECK-NEXT: # kill: def $a8 killed $a3614; CHECK-NEXT: movi a8, 0615; CHECK-NEXT: s32i a8, a1, 28 # 4-byte Folded Spill616; CHECK-NEXT: movi a8, 1617; CHECK-NEXT: s32i a8, a1, 32 # 4-byte Folded Spill618; CHECK-NEXT: s32i a8, a1, 36 # 4-byte Folded Spill619; CHECK-NEXT: bltu a5, a3, .LBB18_2620; CHECK-NEXT: # %bb.1:621; CHECK-NEXT: l32i a8, a1, 28 # 4-byte Folded Reload622; CHECK-NEXT: s32i a8, a1, 36 # 4-byte Folded Spill623; CHECK-NEXT: .LBB18_2:624; CHECK-NEXT: l32i a8, a1, 16 # 4-byte Folded Reload625; CHECK-NEXT: l32i a9, a1, 24 # 4-byte Folded Reload626; CHECK-NEXT: l32i a10, a1, 32 # 4-byte Folded Reload627; CHECK-NEXT: l32i a11, a1, 36 # 4-byte Folded Reload628; CHECK-NEXT: s32i a11, a1, 4 # 4-byte Folded Spill629; CHECK-NEXT: s32i a10, a1, 8 # 4-byte Folded Spill630; CHECK-NEXT: bltu a8, a9, .LBB18_4631; CHECK-NEXT: # %bb.3:632; CHECK-NEXT: l32i a8, a1, 28 # 4-byte Folded Reload633; CHECK-NEXT: s32i a8, a1, 8 # 4-byte Folded Spill634; CHECK-NEXT: .LBB18_4:635; CHECK-NEXT: l32i a8, a1, 20 # 4-byte Folded Reload636; CHECK-NEXT: l32i a9, a1, 12 # 4-byte Folded Reload637; CHECK-NEXT: l32i a10, a1, 8 # 4-byte Folded Reload638; CHECK-NEXT: s32i a10, a1, 0 # 4-byte Folded Spill639; CHECK-NEXT: beq a8, a9, .LBB18_6640; CHECK-NEXT: # %bb.5:641; CHECK-NEXT: l32i a8, a1, 4 # 4-byte Folded Reload642; CHECK-NEXT: s32i a8, a1, 0 # 4-byte Folded Spill643; CHECK-NEXT: .LBB18_6:644; CHECK-NEXT: l32i a3, a1, 28 # 4-byte Folded Reload645; CHECK-NEXT: l32i a2, a1, 0 # 4-byte Folded Reload646; CHECK-NEXT: addi a8, a1, 48647; CHECK-NEXT: or a1, a8, a8648; CHECK-NEXT: ret649 650 %cond = icmp ugt i64 %a, %b651 %res = zext i1 %cond to i64652 ret i64 %res653}654 655define i64 @f_uge_i64(i64 %a, i64 %b) nounwind {656; CHECK-LABEL: f_uge_i64:657; CHECK: addi a8, a1, -48658; CHECK-NEXT: or a1, a8, a8659; CHECK-NEXT: s32i a5, a1, 12 # 4-byte Folded Spill660; CHECK-NEXT: s32i a4, a1, 16 # 4-byte Folded Spill661; CHECK-NEXT: s32i a3, a1, 20 # 4-byte Folded Spill662; CHECK-NEXT: s32i a2, a1, 24 # 4-byte Folded Spill663; CHECK-NEXT: # kill: def $a8 killed $a5664; CHECK-NEXT: # kill: def $a8 killed $a3665; CHECK-NEXT: movi a8, 0666; CHECK-NEXT: s32i a8, a1, 28 # 4-byte Folded Spill667; CHECK-NEXT: movi a8, 1668; CHECK-NEXT: s32i a8, a1, 32 # 4-byte Folded Spill669; CHECK-NEXT: s32i a8, a1, 36 # 4-byte Folded Spill670; CHECK-NEXT: bgeu a3, a5, .LBB19_2671; CHECK-NEXT: # %bb.1:672; CHECK-NEXT: l32i a8, a1, 28 # 4-byte Folded Reload673; CHECK-NEXT: s32i a8, a1, 36 # 4-byte Folded Spill674; CHECK-NEXT: .LBB19_2:675; CHECK-NEXT: l32i a8, a1, 24 # 4-byte Folded Reload676; CHECK-NEXT: l32i a9, a1, 16 # 4-byte Folded Reload677; CHECK-NEXT: l32i a10, a1, 32 # 4-byte Folded Reload678; CHECK-NEXT: l32i a11, a1, 36 # 4-byte Folded Reload679; CHECK-NEXT: s32i a11, a1, 4 # 4-byte Folded Spill680; CHECK-NEXT: s32i a10, a1, 8 # 4-byte Folded Spill681; CHECK-NEXT: bgeu a8, a9, .LBB19_4682; CHECK-NEXT: # %bb.3:683; CHECK-NEXT: l32i a8, a1, 28 # 4-byte Folded Reload684; CHECK-NEXT: s32i a8, a1, 8 # 4-byte Folded Spill685; CHECK-NEXT: .LBB19_4:686; CHECK-NEXT: l32i a8, a1, 20 # 4-byte Folded Reload687; CHECK-NEXT: l32i a9, a1, 12 # 4-byte Folded Reload688; CHECK-NEXT: l32i a10, a1, 8 # 4-byte Folded Reload689; CHECK-NEXT: s32i a10, a1, 0 # 4-byte Folded Spill690; CHECK-NEXT: beq a8, a9, .LBB19_6691; CHECK-NEXT: # %bb.5:692; CHECK-NEXT: l32i a8, a1, 4 # 4-byte Folded Reload693; CHECK-NEXT: s32i a8, a1, 0 # 4-byte Folded Spill694; CHECK-NEXT: .LBB19_6:695; CHECK-NEXT: l32i a3, a1, 28 # 4-byte Folded Reload696; CHECK-NEXT: l32i a2, a1, 0 # 4-byte Folded Reload697; CHECK-NEXT: addi a8, a1, 48698; CHECK-NEXT: or a1, a8, a8699; CHECK-NEXT: ret700 701 %cond = icmp uge i64 %a, %b702 %res = zext i1 %cond to i64703 ret i64 %res704}705