3253 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -mattr=+2e3 | FileCheck %s3; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky | FileCheck %s --check-prefix=GENERIC4 5;eq6define i1 @icmpRR_eq(i32 %x, i32 %y) {7; CHECK-LABEL: icmpRR_eq:8; CHECK: # %bb.0: # %entry9; CHECK-NEXT: cmpne16 a1, a010; CHECK-NEXT: mvcv16 a011; CHECK-NEXT: rts1612;13; GENERIC-LABEL: icmpRR_eq:14; GENERIC: # %bb.0: # %entry15; GENERIC-NEXT: .cfi_def_cfa_offset 016; GENERIC-NEXT: subi16 sp, sp, 417; GENERIC-NEXT: .cfi_def_cfa_offset 418; GENERIC-NEXT: cmpne16 a1, a019; GENERIC-NEXT: mvcv16 a020; GENERIC-NEXT: addi16 sp, sp, 421; GENERIC-NEXT: rts1622entry:23 %icmp = icmp eq i32 %y, %x24 ret i1 %icmp25}26 27define i1 @icmpRI_eq(i32 %x) {28; CHECK-LABEL: icmpRI_eq:29; CHECK: # %bb.0: # %entry30; CHECK-NEXT: cmpnei16 a0, 1031; CHECK-NEXT: mvcv16 a032; CHECK-NEXT: rts1633;34; GENERIC-LABEL: icmpRI_eq:35; GENERIC: # %bb.0: # %entry36; GENERIC-NEXT: .cfi_def_cfa_offset 037; GENERIC-NEXT: subi16 sp, sp, 438; GENERIC-NEXT: .cfi_def_cfa_offset 439; GENERIC-NEXT: cmpnei16 a0, 1040; GENERIC-NEXT: mvcv16 a041; GENERIC-NEXT: addi16 sp, sp, 442; GENERIC-NEXT: rts1643entry:44 %icmp = icmp eq i32 %x, 1045 ret i1 %icmp46}47 48define i1 @icmpRI_X_eq(i32 %x) {49; CHECK-LABEL: icmpRI_X_eq:50; CHECK: # %bb.0: # %entry51; CHECK-NEXT: movih32 a1, 6252; CHECK-NEXT: ori32 a1, a1, 3376853; CHECK-NEXT: cmpne16 a0, a154; CHECK-NEXT: mvcv16 a055; CHECK-NEXT: rts1656;57; GENERIC-LABEL: icmpRI_X_eq:58; GENERIC: # %bb.0: # %entry59; GENERIC-NEXT: .cfi_def_cfa_offset 060; GENERIC-NEXT: subi16 sp, sp, 461; GENERIC-NEXT: .cfi_def_cfa_offset 462; GENERIC-NEXT: movi16 a1, 063; GENERIC-NEXT: lsli16 a1, a1, 2464; GENERIC-NEXT: movi16 a2, 6265; GENERIC-NEXT: lsli16 a2, a2, 1666; GENERIC-NEXT: or16 a2, a167; GENERIC-NEXT: movi16 a1, 13168; GENERIC-NEXT: lsli16 a1, a1, 869; GENERIC-NEXT: or16 a1, a270; GENERIC-NEXT: movi16 a2, 23271; GENERIC-NEXT: or16 a2, a172; GENERIC-NEXT: cmpne16 a0, a273; GENERIC-NEXT: mvcv16 a074; GENERIC-NEXT: addi16 sp, sp, 475; GENERIC-NEXT: rts1676entry:77 %icmp = icmp eq i32 %x, 409700078 ret i1 %icmp79}80 81define i1 @icmpRI_AND_ne(i32 %x) {82; CHECK-LABEL: icmpRI_AND_ne:83; CHECK: # %bb.0: # %entry84; CHECK-NEXT: btsti16 a0, 1585; CHECK-NEXT: mvc32 a086; CHECK-NEXT: rts1687;88; GENERIC-LABEL: icmpRI_AND_ne:89; GENERIC: # %bb.0: # %entry90; GENERIC-NEXT: .cfi_def_cfa_offset 091; GENERIC-NEXT: subi16 sp, sp, 492; GENERIC-NEXT: .cfi_def_cfa_offset 493; GENERIC-NEXT: movi16 a1, 094; GENERIC-NEXT: lsli16 a2, a1, 2495; GENERIC-NEXT: lsli16 a3, a1, 1696; GENERIC-NEXT: or16 a3, a297; GENERIC-NEXT: movi16 a2, 12898; GENERIC-NEXT: lsli16 a2, a2, 899; GENERIC-NEXT: or16 a2, a3100; GENERIC-NEXT: or16 a2, a1101; GENERIC-NEXT: and16 a2, a0102; GENERIC-NEXT: cmpnei16 a2, 0103; GENERIC-NEXT: mvcv16 a1104; GENERIC-NEXT: movi16 a0, 1105; GENERIC-NEXT: subu16 a0, a1106; GENERIC-NEXT: addi16 sp, sp, 4107; GENERIC-NEXT: rts16108entry:109 %and = and i32 %x, 32768110 %icmp = icmp ne i32 %and, 0111 ret i1 %icmp112}113 114define i1 @ICMP_LONG_eq(i64 %x, i64 %y) {115; CHECK-LABEL: ICMP_LONG_eq:116; CHECK: # %bb.0: # %entry117; CHECK-NEXT: xor16 a1, a3118; CHECK-NEXT: xor16 a0, a2119; CHECK-NEXT: or16 a0, a1120; CHECK-NEXT: cmpnei16 a0, 0121; CHECK-NEXT: mvcv16 a0122; CHECK-NEXT: rts16123;124; GENERIC-LABEL: ICMP_LONG_eq:125; GENERIC: # %bb.0: # %entry126; GENERIC-NEXT: .cfi_def_cfa_offset 0127; GENERIC-NEXT: subi16 sp, sp, 4128; GENERIC-NEXT: .cfi_def_cfa_offset 4129; GENERIC-NEXT: xor16 a1, a3130; GENERIC-NEXT: xor16 a0, a2131; GENERIC-NEXT: or16 a0, a1132; GENERIC-NEXT: cmpnei16 a0, 0133; GENERIC-NEXT: mvcv16 a0134; GENERIC-NEXT: addi16 sp, sp, 4135; GENERIC-NEXT: rts16136entry:137 %icmp = icmp eq i64 %y, %x138 ret i1 %icmp139}140 141define i1 @ICMP_LONG_I_eq(i64 %x) {142; CHECK-LABEL: ICMP_LONG_I_eq:143; CHECK: # %bb.0: # %entry144; CHECK-NEXT: xori32 a0, a0, 1145; CHECK-NEXT: or16 a0, a1146; CHECK-NEXT: cmpnei16 a0, 0147; CHECK-NEXT: mvcv16 a0148; CHECK-NEXT: rts16149;150; GENERIC-LABEL: ICMP_LONG_I_eq:151; GENERIC: # %bb.0: # %entry152; GENERIC-NEXT: .cfi_def_cfa_offset 0153; GENERIC-NEXT: subi16 sp, sp, 4154; GENERIC-NEXT: .cfi_def_cfa_offset 4155; GENERIC-NEXT: movi16 a2, 1156; GENERIC-NEXT: xor16 a2, a0157; GENERIC-NEXT: or16 a2, a1158; GENERIC-NEXT: cmpnei16 a2, 0159; GENERIC-NEXT: mvcv16 a0160; GENERIC-NEXT: addi16 sp, sp, 4161; GENERIC-NEXT: rts16162entry:163 %icmp = icmp eq i64 %x, 1164 ret i1 %icmp165}166 167define i1 @ICMP_SHORT_eq(i16 %x, i16 %y) {168; CHECK-LABEL: ICMP_SHORT_eq:169; CHECK: # %bb.0: # %entry170; CHECK-NEXT: zexth16 a0, a0171; CHECK-NEXT: zexth16 a1, a1172; CHECK-NEXT: cmpne16 a1, a0173; CHECK-NEXT: mvcv16 a0174; CHECK-NEXT: rts16175;176; GENERIC-LABEL: ICMP_SHORT_eq:177; GENERIC: # %bb.0: # %entry178; GENERIC-NEXT: subi16 sp, sp, 4179; GENERIC-NEXT: .cfi_def_cfa_offset 4180; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill181; GENERIC-NEXT: .cfi_offset l0, -4182; GENERIC-NEXT: subi16 sp, sp, 4183; GENERIC-NEXT: .cfi_def_cfa_offset 8184; GENERIC-NEXT: movi16 a2, 0185; GENERIC-NEXT: lsli16 a3, a2, 24186; GENERIC-NEXT: lsli16 a2, a2, 16187; GENERIC-NEXT: or16 a2, a3188; GENERIC-NEXT: movi16 a3, 255189; GENERIC-NEXT: lsli16 l0, a3, 8190; GENERIC-NEXT: or16 l0, a2191; GENERIC-NEXT: or16 l0, a3192; GENERIC-NEXT: and16 a0, l0193; GENERIC-NEXT: and16 l0, a1194; GENERIC-NEXT: cmpne16 l0, a0195; GENERIC-NEXT: mvcv16 a0196; GENERIC-NEXT: addi16 sp, sp, 4197; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload198; GENERIC-NEXT: addi16 sp, sp, 4199; GENERIC-NEXT: rts16200entry:201 %icmp = icmp eq i16 %y, %x202 ret i1 %icmp203}204 205define i1 @ICMP_SHORT_I_eq(i16 %x) {206; CHECK-LABEL: ICMP_SHORT_I_eq:207; CHECK: # %bb.0: # %entry208; CHECK-NEXT: zexth16 a0, a0209; CHECK-NEXT: cmpnei16 a0, 1210; CHECK-NEXT: mvcv16 a0211; CHECK-NEXT: rts16212;213; GENERIC-LABEL: ICMP_SHORT_I_eq:214; GENERIC: # %bb.0: # %entry215; GENERIC-NEXT: .cfi_def_cfa_offset 0216; GENERIC-NEXT: subi16 sp, sp, 4217; GENERIC-NEXT: .cfi_def_cfa_offset 4218; GENERIC-NEXT: movi16 a1, 0219; GENERIC-NEXT: lsli16 a2, a1, 24220; GENERIC-NEXT: lsli16 a1, a1, 16221; GENERIC-NEXT: or16 a1, a2222; GENERIC-NEXT: movi16 a2, 255223; GENERIC-NEXT: lsli16 a3, a2, 8224; GENERIC-NEXT: or16 a3, a1225; GENERIC-NEXT: or16 a3, a2226; GENERIC-NEXT: and16 a3, a0227; GENERIC-NEXT: cmpnei16 a3, 1228; GENERIC-NEXT: mvcv16 a0229; GENERIC-NEXT: addi16 sp, sp, 4230; GENERIC-NEXT: rts16231entry:232 %icmp = icmp eq i16 %x, 1233 ret i1 %icmp234}235 236define i1 @ICMP_CHAR_eq(i8 %x, i8 %y) {237; CHECK-LABEL: ICMP_CHAR_eq:238; CHECK: # %bb.0: # %entry239; CHECK-NEXT: zextb16 a0, a0240; CHECK-NEXT: zextb16 a1, a1241; CHECK-NEXT: cmpne16 a1, a0242; CHECK-NEXT: mvcv16 a0243; CHECK-NEXT: rts16244;245; GENERIC-LABEL: ICMP_CHAR_eq:246; GENERIC: # %bb.0: # %entry247; GENERIC-NEXT: .cfi_def_cfa_offset 0248; GENERIC-NEXT: subi16 sp, sp, 4249; GENERIC-NEXT: .cfi_def_cfa_offset 4250; GENERIC-NEXT: movi16 a2, 255251; GENERIC-NEXT: and16 a0, a2252; GENERIC-NEXT: and16 a1, a2253; GENERIC-NEXT: cmpne16 a1, a0254; GENERIC-NEXT: mvcv16 a0255; GENERIC-NEXT: addi16 sp, sp, 4256; GENERIC-NEXT: rts16257entry:258 %icmp = icmp eq i8 %y, %x259 ret i1 %icmp260}261 262define i1 @ICMP_CHAR_I_eq(i8 %x) {263; CHECK-LABEL: ICMP_CHAR_I_eq:264; CHECK: # %bb.0: # %entry265; CHECK-NEXT: zextb16 a0, a0266; CHECK-NEXT: cmpnei16 a0, 1267; CHECK-NEXT: mvcv16 a0268; CHECK-NEXT: rts16269;270; GENERIC-LABEL: ICMP_CHAR_I_eq:271; GENERIC: # %bb.0: # %entry272; GENERIC-NEXT: .cfi_def_cfa_offset 0273; GENERIC-NEXT: subi16 sp, sp, 4274; GENERIC-NEXT: .cfi_def_cfa_offset 4275; GENERIC-NEXT: movi16 a1, 255276; GENERIC-NEXT: and16 a1, a0277; GENERIC-NEXT: cmpnei16 a1, 1278; GENERIC-NEXT: mvcv16 a0279; GENERIC-NEXT: addi16 sp, sp, 4280; GENERIC-NEXT: rts16281entry:282 %icmp = icmp eq i8 %x, 1283 ret i1 %icmp284}285 286define i1 @ICMP_BIT_eq(i1 %x, i1 %y) {287; CHECK-LABEL: ICMP_BIT_eq:288; CHECK: # %bb.0: # %entry289; CHECK-NEXT: xor16 a0, a1290; CHECK-NEXT: xori32 a0, a0, 1291; CHECK-NEXT: rts16292;293; GENERIC-LABEL: ICMP_BIT_eq:294; GENERIC: # %bb.0: # %entry295; GENERIC-NEXT: .cfi_def_cfa_offset 0296; GENERIC-NEXT: subi16 sp, sp, 4297; GENERIC-NEXT: .cfi_def_cfa_offset 4298; GENERIC-NEXT: xor16 a0, a1299; GENERIC-NEXT: movi16 a1, 1300; GENERIC-NEXT: xor16 a0, a1301; GENERIC-NEXT: addi16 sp, sp, 4302; GENERIC-NEXT: rts16303entry:304 %icmp = icmp eq i1 %y, %x305 ret i1 %icmp306}307 308define i1 @ICMP_BIT_I_eq(i1 %x) {309; CHECK-LABEL: ICMP_BIT_I_eq:310; CHECK: # %bb.0: # %entry311; CHECK-NEXT: rts16312;313; GENERIC-LABEL: ICMP_BIT_I_eq:314; GENERIC: # %bb.0: # %entry315; GENERIC-NEXT: .cfi_def_cfa_offset 0316; GENERIC-NEXT: subi16 sp, sp, 4317; GENERIC-NEXT: .cfi_def_cfa_offset 4318; GENERIC-NEXT: addi16 sp, sp, 4319; GENERIC-NEXT: rts16320entry:321 %icmp = icmp eq i1 %x, 1322 ret i1 %icmp323}324 325;ne326define i1 @icmpRR_ne(i32 %x, i32 %y) {327; CHECK-LABEL: icmpRR_ne:328; CHECK: # %bb.0: # %entry329; CHECK-NEXT: cmpne16 a1, a0330; CHECK-NEXT: mvc32 a0331; CHECK-NEXT: rts16332;333; GENERIC-LABEL: icmpRR_ne:334; GENERIC: # %bb.0: # %entry335; GENERIC-NEXT: .cfi_def_cfa_offset 0336; GENERIC-NEXT: subi16 sp, sp, 4337; GENERIC-NEXT: .cfi_def_cfa_offset 4338; GENERIC-NEXT: cmpne16 a1, a0339; GENERIC-NEXT: mvcv16 a1340; GENERIC-NEXT: movi16 a0, 1341; GENERIC-NEXT: subu16 a0, a1342; GENERIC-NEXT: addi16 sp, sp, 4343; GENERIC-NEXT: rts16344entry:345 %icmp = icmp ne i32 %y, %x346 ret i1 %icmp347}348 349define i1 @icmpRI_ne(i32 %x) {350; CHECK-LABEL: icmpRI_ne:351; CHECK: # %bb.0: # %entry352; CHECK-NEXT: cmpnei16 a0, 10353; CHECK-NEXT: mvc32 a0354; CHECK-NEXT: rts16355;356; GENERIC-LABEL: icmpRI_ne:357; GENERIC: # %bb.0: # %entry358; GENERIC-NEXT: .cfi_def_cfa_offset 0359; GENERIC-NEXT: subi16 sp, sp, 4360; GENERIC-NEXT: .cfi_def_cfa_offset 4361; GENERIC-NEXT: cmpnei16 a0, 10362; GENERIC-NEXT: mvcv16 a1363; GENERIC-NEXT: movi16 a0, 1364; GENERIC-NEXT: subu16 a0, a1365; GENERIC-NEXT: addi16 sp, sp, 4366; GENERIC-NEXT: rts16367entry:368 %icmp = icmp ne i32 %x, 10369 ret i1 %icmp370}371 372define i1 @icmpRI_X_ne(i32 %x) {373; CHECK-LABEL: icmpRI_X_ne:374; CHECK: # %bb.0: # %entry375; CHECK-NEXT: movih32 a1, 62376; CHECK-NEXT: ori32 a1, a1, 33768377; CHECK-NEXT: cmpne16 a0, a1378; CHECK-NEXT: mvc32 a0379; CHECK-NEXT: rts16380;381; GENERIC-LABEL: icmpRI_X_ne:382; GENERIC: # %bb.0: # %entry383; GENERIC-NEXT: .cfi_def_cfa_offset 0384; GENERIC-NEXT: subi16 sp, sp, 4385; GENERIC-NEXT: .cfi_def_cfa_offset 4386; GENERIC-NEXT: movi16 a1, 0387; GENERIC-NEXT: lsli16 a1, a1, 24388; GENERIC-NEXT: movi16 a2, 62389; GENERIC-NEXT: lsli16 a2, a2, 16390; GENERIC-NEXT: or16 a2, a1391; GENERIC-NEXT: movi16 a1, 131392; GENERIC-NEXT: lsli16 a1, a1, 8393; GENERIC-NEXT: or16 a1, a2394; GENERIC-NEXT: movi16 a2, 232395; GENERIC-NEXT: or16 a2, a1396; GENERIC-NEXT: cmpne16 a0, a2397; GENERIC-NEXT: mvcv16 a1398; GENERIC-NEXT: movi16 a0, 1399; GENERIC-NEXT: subu16 a0, a1400; GENERIC-NEXT: addi16 sp, sp, 4401; GENERIC-NEXT: rts16402entry:403 %icmp = icmp ne i32 %x, 4097000404 ret i1 %icmp405}406 407define i1 @ICMP_LONG_ne(i64 %x, i64 %y) {408; CHECK-LABEL: ICMP_LONG_ne:409; CHECK: # %bb.0: # %entry410; CHECK-NEXT: xor16 a1, a3411; CHECK-NEXT: xor16 a0, a2412; CHECK-NEXT: or16 a0, a1413; CHECK-NEXT: cmpnei16 a0, 0414; CHECK-NEXT: mvc32 a0415; CHECK-NEXT: rts16416;417; GENERIC-LABEL: ICMP_LONG_ne:418; GENERIC: # %bb.0: # %entry419; GENERIC-NEXT: .cfi_def_cfa_offset 0420; GENERIC-NEXT: subi16 sp, sp, 4421; GENERIC-NEXT: .cfi_def_cfa_offset 4422; GENERIC-NEXT: xor16 a1, a3423; GENERIC-NEXT: xor16 a0, a2424; GENERIC-NEXT: or16 a0, a1425; GENERIC-NEXT: cmpnei16 a0, 0426; GENERIC-NEXT: mvcv16 a1427; GENERIC-NEXT: movi16 a0, 1428; GENERIC-NEXT: subu16 a0, a1429; GENERIC-NEXT: addi16 sp, sp, 4430; GENERIC-NEXT: rts16431entry:432 %icmp = icmp ne i64 %y, %x433 ret i1 %icmp434}435 436define i1 @ICMP_LONG_I_ne(i64 %x) {437; CHECK-LABEL: ICMP_LONG_I_ne:438; CHECK: # %bb.0: # %entry439; CHECK-NEXT: xori32 a0, a0, 1440; CHECK-NEXT: or16 a0, a1441; CHECK-NEXT: cmpnei16 a0, 0442; CHECK-NEXT: mvc32 a0443; CHECK-NEXT: rts16444;445; GENERIC-LABEL: ICMP_LONG_I_ne:446; GENERIC: # %bb.0: # %entry447; GENERIC-NEXT: .cfi_def_cfa_offset 0448; GENERIC-NEXT: subi16 sp, sp, 4449; GENERIC-NEXT: .cfi_def_cfa_offset 4450; GENERIC-NEXT: movi16 a2, 1451; GENERIC-NEXT: xor16 a0, a2452; GENERIC-NEXT: or16 a0, a1453; GENERIC-NEXT: cmpnei16 a0, 0454; GENERIC-NEXT: mvcv16 a0455; GENERIC-NEXT: subu16 a2, a0456; GENERIC-NEXT: mov16 a0, a2457; GENERIC-NEXT: addi16 sp, sp, 4458; GENERIC-NEXT: rts16459entry:460 %icmp = icmp ne i64 %x, 1461 ret i1 %icmp462}463 464define i1 @ICMP_SHORT_ne(i16 %x, i16 %y) {465; CHECK-LABEL: ICMP_SHORT_ne:466; CHECK: # %bb.0: # %entry467; CHECK-NEXT: zexth16 a0, a0468; CHECK-NEXT: zexth16 a1, a1469; CHECK-NEXT: cmpne16 a1, a0470; CHECK-NEXT: mvc32 a0471; CHECK-NEXT: rts16472;473; GENERIC-LABEL: ICMP_SHORT_ne:474; GENERIC: # %bb.0: # %entry475; GENERIC-NEXT: subi16 sp, sp, 4476; GENERIC-NEXT: .cfi_def_cfa_offset 4477; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill478; GENERIC-NEXT: .cfi_offset l0, -4479; GENERIC-NEXT: subi16 sp, sp, 4480; GENERIC-NEXT: .cfi_def_cfa_offset 8481; GENERIC-NEXT: movi16 a2, 0482; GENERIC-NEXT: lsli16 a3, a2, 24483; GENERIC-NEXT: lsli16 a2, a2, 16484; GENERIC-NEXT: or16 a2, a3485; GENERIC-NEXT: movi16 a3, 255486; GENERIC-NEXT: lsli16 l0, a3, 8487; GENERIC-NEXT: or16 l0, a2488; GENERIC-NEXT: or16 l0, a3489; GENERIC-NEXT: and16 a0, l0490; GENERIC-NEXT: and16 l0, a1491; GENERIC-NEXT: cmpne16 l0, a0492; GENERIC-NEXT: mvcv16 a1493; GENERIC-NEXT: movi16 a0, 1494; GENERIC-NEXT: subu16 a0, a1495; GENERIC-NEXT: addi16 sp, sp, 4496; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload497; GENERIC-NEXT: addi16 sp, sp, 4498; GENERIC-NEXT: rts16499entry:500 %icmp = icmp ne i16 %y, %x501 ret i1 %icmp502}503 504define i1 @ICMP_SHORT_I_ne(i16 %x) {505; CHECK-LABEL: ICMP_SHORT_I_ne:506; CHECK: # %bb.0: # %entry507; CHECK-NEXT: zexth16 a0, a0508; CHECK-NEXT: cmpnei16 a0, 1509; CHECK-NEXT: mvc32 a0510; CHECK-NEXT: rts16511;512; GENERIC-LABEL: ICMP_SHORT_I_ne:513; GENERIC: # %bb.0: # %entry514; GENERIC-NEXT: .cfi_def_cfa_offset 0515; GENERIC-NEXT: subi16 sp, sp, 4516; GENERIC-NEXT: .cfi_def_cfa_offset 4517; GENERIC-NEXT: movi16 a1, 0518; GENERIC-NEXT: lsli16 a2, a1, 24519; GENERIC-NEXT: lsli16 a1, a1, 16520; GENERIC-NEXT: or16 a1, a2521; GENERIC-NEXT: movi16 a2, 255522; GENERIC-NEXT: lsli16 a3, a2, 8523; GENERIC-NEXT: or16 a3, a1524; GENERIC-NEXT: or16 a3, a2525; GENERIC-NEXT: and16 a3, a0526; GENERIC-NEXT: cmpnei16 a3, 1527; GENERIC-NEXT: mvcv16 a1528; GENERIC-NEXT: movi16 a0, 1529; GENERIC-NEXT: subu16 a0, a1530; GENERIC-NEXT: addi16 sp, sp, 4531; GENERIC-NEXT: rts16532entry:533 %icmp = icmp ne i16 %x, 1534 ret i1 %icmp535}536 537define i1 @ICMP_CHAR_ne(i8 %x, i8 %y) {538; CHECK-LABEL: ICMP_CHAR_ne:539; CHECK: # %bb.0: # %entry540; CHECK-NEXT: zextb16 a0, a0541; CHECK-NEXT: zextb16 a1, a1542; CHECK-NEXT: cmpne16 a1, a0543; CHECK-NEXT: mvc32 a0544; CHECK-NEXT: rts16545;546; GENERIC-LABEL: ICMP_CHAR_ne:547; GENERIC: # %bb.0: # %entry548; GENERIC-NEXT: .cfi_def_cfa_offset 0549; GENERIC-NEXT: subi16 sp, sp, 4550; GENERIC-NEXT: .cfi_def_cfa_offset 4551; GENERIC-NEXT: movi16 a2, 255552; GENERIC-NEXT: and16 a0, a2553; GENERIC-NEXT: and16 a1, a2554; GENERIC-NEXT: cmpne16 a1, a0555; GENERIC-NEXT: mvcv16 a1556; GENERIC-NEXT: movi16 a0, 1557; GENERIC-NEXT: subu16 a0, a1558; GENERIC-NEXT: addi16 sp, sp, 4559; GENERIC-NEXT: rts16560entry:561 %icmp = icmp ne i8 %y, %x562 ret i1 %icmp563}564 565define i1 @ICMP_CHAR_I_ne(i8 %x) {566; CHECK-LABEL: ICMP_CHAR_I_ne:567; CHECK: # %bb.0: # %entry568; CHECK-NEXT: zextb16 a0, a0569; CHECK-NEXT: cmpnei16 a0, 1570; CHECK-NEXT: mvc32 a0571; CHECK-NEXT: rts16572;573; GENERIC-LABEL: ICMP_CHAR_I_ne:574; GENERIC: # %bb.0: # %entry575; GENERIC-NEXT: .cfi_def_cfa_offset 0576; GENERIC-NEXT: subi16 sp, sp, 4577; GENERIC-NEXT: .cfi_def_cfa_offset 4578; GENERIC-NEXT: movi16 a1, 255579; GENERIC-NEXT: and16 a1, a0580; GENERIC-NEXT: cmpnei16 a1, 1581; GENERIC-NEXT: mvcv16 a1582; GENERIC-NEXT: movi16 a0, 1583; GENERIC-NEXT: subu16 a0, a1584; GENERIC-NEXT: addi16 sp, sp, 4585; GENERIC-NEXT: rts16586entry:587 %icmp = icmp ne i8 %x, 1588 ret i1 %icmp589}590 591define i1 @ICMP_BIT_ne(i1 %x, i1 %y) {592; CHECK-LABEL: ICMP_BIT_ne:593; CHECK: # %bb.0: # %entry594; CHECK-NEXT: xor16 a0, a1595; CHECK-NEXT: rts16596;597; GENERIC-LABEL: ICMP_BIT_ne:598; GENERIC: # %bb.0: # %entry599; GENERIC-NEXT: .cfi_def_cfa_offset 0600; GENERIC-NEXT: subi16 sp, sp, 4601; GENERIC-NEXT: .cfi_def_cfa_offset 4602; GENERIC-NEXT: xor16 a0, a1603; GENERIC-NEXT: addi16 sp, sp, 4604; GENERIC-NEXT: rts16605entry:606 %icmp = icmp ne i1 %y, %x607 ret i1 %icmp608}609 610define i1 @ICMP_BIT_I_ne(i1 %x) {611; CHECK-LABEL: ICMP_BIT_I_ne:612; CHECK: # %bb.0: # %entry613; CHECK-NEXT: xori32 a0, a0, 1614; CHECK-NEXT: rts16615;616; GENERIC-LABEL: ICMP_BIT_I_ne:617; GENERIC: # %bb.0: # %entry618; GENERIC-NEXT: .cfi_def_cfa_offset 0619; GENERIC-NEXT: subi16 sp, sp, 4620; GENERIC-NEXT: .cfi_def_cfa_offset 4621; GENERIC-NEXT: movi16 a1, 1622; GENERIC-NEXT: xor16 a0, a1623; GENERIC-NEXT: addi16 sp, sp, 4624; GENERIC-NEXT: rts16625entry:626 %icmp = icmp ne i1 %x, 1627 ret i1 %icmp628}629 630 631;ugt632define i1 @icmpRR_ugt(i32 %x, i32 %y) {633; CHECK-LABEL: icmpRR_ugt:634; CHECK: # %bb.0: # %entry635; CHECK-NEXT: cmphs16 a0, a1636; CHECK-NEXT: mvcv16 a0637; CHECK-NEXT: rts16638;639; GENERIC-LABEL: icmpRR_ugt:640; GENERIC: # %bb.0: # %entry641; GENERIC-NEXT: .cfi_def_cfa_offset 0642; GENERIC-NEXT: subi16 sp, sp, 4643; GENERIC-NEXT: .cfi_def_cfa_offset 4644; GENERIC-NEXT: cmphs16 a0, a1645; GENERIC-NEXT: mvcv16 a0646; GENERIC-NEXT: addi16 sp, sp, 4647; GENERIC-NEXT: rts16648entry:649 %icmp = icmp ugt i32 %y, %x650 ret i1 %icmp651}652 653define i1 @icmpRI_ugt(i32 %x) {654; CHECK-LABEL: icmpRI_ugt:655; CHECK: # %bb.0: # %entry656; CHECK-NEXT: movi16 a1, 10657; CHECK-NEXT: cmphs16 a1, a0658; CHECK-NEXT: mvcv16 a0659; CHECK-NEXT: rts16660;661; GENERIC-LABEL: icmpRI_ugt:662; GENERIC: # %bb.0: # %entry663; GENERIC-NEXT: .cfi_def_cfa_offset 0664; GENERIC-NEXT: subi16 sp, sp, 4665; GENERIC-NEXT: .cfi_def_cfa_offset 4666; GENERIC-NEXT: movi16 a1, 10667; GENERIC-NEXT: cmphs16 a1, a0668; GENERIC-NEXT: mvcv16 a0669; GENERIC-NEXT: addi16 sp, sp, 4670; GENERIC-NEXT: rts16671entry:672 %icmp = icmp ugt i32 %x, 10673 ret i1 %icmp674}675 676define i1 @icmpRI_X_ugt(i32 %x) {677; CHECK-LABEL: icmpRI_X_ugt:678; CHECK: # %bb.0: # %entry679; CHECK-NEXT: movih32 a1, 62680; CHECK-NEXT: ori32 a1, a1, 33768681; CHECK-NEXT: cmphs16 a1, a0682; CHECK-NEXT: mvcv16 a0683; CHECK-NEXT: rts16684;685; GENERIC-LABEL: icmpRI_X_ugt:686; GENERIC: # %bb.0: # %entry687; GENERIC-NEXT: .cfi_def_cfa_offset 0688; GENERIC-NEXT: subi16 sp, sp, 4689; GENERIC-NEXT: .cfi_def_cfa_offset 4690; GENERIC-NEXT: movi16 a1, 0691; GENERIC-NEXT: lsli16 a1, a1, 24692; GENERIC-NEXT: movi16 a2, 62693; GENERIC-NEXT: lsli16 a2, a2, 16694; GENERIC-NEXT: or16 a2, a1695; GENERIC-NEXT: movi16 a1, 131696; GENERIC-NEXT: lsli16 a1, a1, 8697; GENERIC-NEXT: or16 a1, a2698; GENERIC-NEXT: movi16 a2, 232699; GENERIC-NEXT: or16 a2, a1700; GENERIC-NEXT: cmphs16 a2, a0701; GENERIC-NEXT: mvcv16 a0702; GENERIC-NEXT: addi16 sp, sp, 4703; GENERIC-NEXT: rts16704entry:705 %icmp = icmp ugt i32 %x, 4097000706 ret i1 %icmp707}708 709define i1 @ICMP_LONG_ugt(i64 %x, i64 %y) {710; CHECK-LABEL: ICMP_LONG_ugt:711; CHECK: # %bb.0: # %entry712; CHECK-NEXT: .cfi_def_cfa_offset 0713; CHECK-NEXT: subi16 sp, sp, 8714; CHECK-NEXT: .cfi_def_cfa_offset 8715; CHECK-NEXT: cmpne16 a3, a1716; CHECK-NEXT: mvc32 t0717; CHECK-NEXT: st32.w t0, (sp, 4)718; CHECK-NEXT: cmphs16 a1, a3719; CHECK-NEXT: mvcv16 a1720; CHECK-NEXT: cmphs16 a0, a2721; CHECK-NEXT: mvcv16 a0722; CHECK-NEXT: ld16.w a2, (sp, 4)723; CHECK-NEXT: btsti16 a2, 0724; CHECK-NEXT: movf32 a1, a0725; CHECK-NEXT: mov16 a0, a1726; CHECK-NEXT: addi16 sp, sp, 8727; CHECK-NEXT: rts16728;729; GENERIC-LABEL: ICMP_LONG_ugt:730; GENERIC: # %bb.0: # %entry731; GENERIC-NEXT: subi16 sp, sp, 4732; GENERIC-NEXT: .cfi_def_cfa_offset 4733; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill734; GENERIC-NEXT: .cfi_offset l0, -4735; GENERIC-NEXT: subi16 sp, sp, 4736; GENERIC-NEXT: .cfi_def_cfa_offset 8737; GENERIC-NEXT: cmphs16 a1, a3738; GENERIC-NEXT: mvcv16 l0739; GENERIC-NEXT: cmphs16 a0, a2740; GENERIC-NEXT: mvcv16 a0741; GENERIC-NEXT: cmpne16 a3, a1742; GENERIC-NEXT: mvcv16 a1743; GENERIC-NEXT: btsti16 a1, 0744; GENERIC-NEXT: bt16 .LBB26_2745; GENERIC-NEXT: # %bb.1: # %entry746; GENERIC-NEXT: mov16 a0, l0747; GENERIC-NEXT: .LBB26_2: # %entry748; GENERIC-NEXT: addi16 sp, sp, 4749; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload750; GENERIC-NEXT: addi16 sp, sp, 4751; GENERIC-NEXT: rts16752entry:753 %icmp = icmp ugt i64 %y, %x754 ret i1 %icmp755}756 757define i1 @ICMP_LONG_I_ugt(i64 %x) {758; CHECK-LABEL: ICMP_LONG_I_ugt:759; CHECK: # %bb.0: # %entry760; CHECK-NEXT: movi16 a2, 1761; CHECK-NEXT: cmphs16 a2, a0762; CHECK-NEXT: mvcv16 a2763; CHECK-NEXT: cmpnei16 a1, 0764; CHECK-NEXT: mvc32 a0765; CHECK-NEXT: movf32 a0, a2766; CHECK-NEXT: rts16767;768; GENERIC-LABEL: ICMP_LONG_I_ugt:769; GENERIC: # %bb.0: # %entry770; GENERIC-NEXT: .cfi_def_cfa_offset 0771; GENERIC-NEXT: subi16 sp, sp, 4772; GENERIC-NEXT: .cfi_def_cfa_offset 4773; GENERIC-NEXT: cmpnei16 a1, 0774; GENERIC-NEXT: mvcv16 a1775; GENERIC-NEXT: movi16 a2, 1776; GENERIC-NEXT: cmphs16 a2, a0777; GENERIC-NEXT: mvcv16 a0778; GENERIC-NEXT: btsti16 a1, 0779; GENERIC-NEXT: bt16 .LBB27_2780; GENERIC-NEXT: # %bb.1: # %entry781; GENERIC-NEXT: subu16 a2, a1782; GENERIC-NEXT: mov16 a0, a2783; GENERIC-NEXT: .LBB27_2: # %entry784; GENERIC-NEXT: addi16 sp, sp, 4785; GENERIC-NEXT: rts16786entry:787 %icmp = icmp ugt i64 %x, 1788 ret i1 %icmp789}790 791define i1 @ICMP_SHORT_ugt(i16 %x, i16 %y) {792; CHECK-LABEL: ICMP_SHORT_ugt:793; CHECK: # %bb.0: # %entry794; CHECK-NEXT: zexth16 a1, a1795; CHECK-NEXT: zexth16 a0, a0796; CHECK-NEXT: cmphs16 a0, a1797; CHECK-NEXT: mvcv16 a0798; CHECK-NEXT: rts16799;800; GENERIC-LABEL: ICMP_SHORT_ugt:801; GENERIC: # %bb.0: # %entry802; GENERIC-NEXT: subi16 sp, sp, 4803; GENERIC-NEXT: .cfi_def_cfa_offset 4804; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill805; GENERIC-NEXT: .cfi_offset l0, -4806; GENERIC-NEXT: subi16 sp, sp, 4807; GENERIC-NEXT: .cfi_def_cfa_offset 8808; GENERIC-NEXT: movi16 a2, 0809; GENERIC-NEXT: lsli16 a3, a2, 24810; GENERIC-NEXT: lsli16 a2, a2, 16811; GENERIC-NEXT: or16 a2, a3812; GENERIC-NEXT: movi16 a3, 255813; GENERIC-NEXT: lsli16 l0, a3, 8814; GENERIC-NEXT: or16 l0, a2815; GENERIC-NEXT: or16 l0, a3816; GENERIC-NEXT: and16 a1, l0817; GENERIC-NEXT: and16 l0, a0818; GENERIC-NEXT: cmphs16 l0, a1819; GENERIC-NEXT: mvcv16 a0820; GENERIC-NEXT: addi16 sp, sp, 4821; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload822; GENERIC-NEXT: addi16 sp, sp, 4823; GENERIC-NEXT: rts16824entry:825 %icmp = icmp ugt i16 %y, %x826 ret i1 %icmp827}828 829define i1 @ICMP_SHORT_I_ugt(i16 %x) {830; CHECK-LABEL: ICMP_SHORT_I_ugt:831; CHECK: # %bb.0: # %entry832; CHECK-NEXT: zexth16 a0, a0833; CHECK-NEXT: movi16 a1, 1834; CHECK-NEXT: cmphs16 a1, a0835; CHECK-NEXT: mvcv16 a0836; CHECK-NEXT: rts16837;838; GENERIC-LABEL: ICMP_SHORT_I_ugt:839; GENERIC: # %bb.0: # %entry840; GENERIC-NEXT: .cfi_def_cfa_offset 0841; GENERIC-NEXT: subi16 sp, sp, 4842; GENERIC-NEXT: .cfi_def_cfa_offset 4843; GENERIC-NEXT: movi16 a1, 0844; GENERIC-NEXT: lsli16 a2, a1, 24845; GENERIC-NEXT: lsli16 a1, a1, 16846; GENERIC-NEXT: or16 a1, a2847; GENERIC-NEXT: movi16 a2, 255848; GENERIC-NEXT: lsli16 a3, a2, 8849; GENERIC-NEXT: or16 a3, a1850; GENERIC-NEXT: or16 a3, a2851; GENERIC-NEXT: and16 a3, a0852; GENERIC-NEXT: movi16 a0, 1853; GENERIC-NEXT: cmphs16 a0, a3854; GENERIC-NEXT: mvcv16 a0855; GENERIC-NEXT: addi16 sp, sp, 4856; GENERIC-NEXT: rts16857entry:858 %icmp = icmp ugt i16 %x, 1859 ret i1 %icmp860}861 862define i1 @ICMP_CHAR_ugt(i8 %x, i8 %y) {863; CHECK-LABEL: ICMP_CHAR_ugt:864; CHECK: # %bb.0: # %entry865; CHECK-NEXT: zextb16 a1, a1866; CHECK-NEXT: zextb16 a0, a0867; CHECK-NEXT: cmphs16 a0, a1868; CHECK-NEXT: mvcv16 a0869; CHECK-NEXT: rts16870;871; GENERIC-LABEL: ICMP_CHAR_ugt:872; GENERIC: # %bb.0: # %entry873; GENERIC-NEXT: .cfi_def_cfa_offset 0874; GENERIC-NEXT: subi16 sp, sp, 4875; GENERIC-NEXT: .cfi_def_cfa_offset 4876; GENERIC-NEXT: movi16 a2, 255877; GENERIC-NEXT: and16 a1, a2878; GENERIC-NEXT: and16 a0, a2879; GENERIC-NEXT: cmphs16 a0, a1880; GENERIC-NEXT: mvcv16 a0881; GENERIC-NEXT: addi16 sp, sp, 4882; GENERIC-NEXT: rts16883entry:884 %icmp = icmp ugt i8 %y, %x885 ret i1 %icmp886}887 888define i1 @ICMP_CHAR_I_ugt(i8 %x) {889; CHECK-LABEL: ICMP_CHAR_I_ugt:890; CHECK: # %bb.0: # %entry891; CHECK-NEXT: zextb16 a0, a0892; CHECK-NEXT: movi16 a1, 1893; CHECK-NEXT: cmphs16 a1, a0894; CHECK-NEXT: mvcv16 a0895; CHECK-NEXT: rts16896;897; GENERIC-LABEL: ICMP_CHAR_I_ugt:898; GENERIC: # %bb.0: # %entry899; GENERIC-NEXT: .cfi_def_cfa_offset 0900; GENERIC-NEXT: subi16 sp, sp, 4901; GENERIC-NEXT: .cfi_def_cfa_offset 4902; GENERIC-NEXT: movi16 a1, 255903; GENERIC-NEXT: and16 a1, a0904; GENERIC-NEXT: movi16 a0, 1905; GENERIC-NEXT: cmphs16 a0, a1906; GENERIC-NEXT: mvcv16 a0907; GENERIC-NEXT: addi16 sp, sp, 4908; GENERIC-NEXT: rts16909entry:910 %icmp = icmp ugt i8 %x, 1911 ret i1 %icmp912}913 914define i1 @ICMP_BIT_ugt(i1 %x, i1 %y) {915; CHECK-LABEL: ICMP_BIT_ugt:916; CHECK: # %bb.0: # %entry917; CHECK-NEXT: xori32 a0, a0, 1918; CHECK-NEXT: and16 a0, a1919; CHECK-NEXT: rts16920;921; GENERIC-LABEL: ICMP_BIT_ugt:922; GENERIC: # %bb.0: # %entry923; GENERIC-NEXT: .cfi_def_cfa_offset 0924; GENERIC-NEXT: subi16 sp, sp, 4925; GENERIC-NEXT: .cfi_def_cfa_offset 4926; GENERIC-NEXT: movi16 a2, 1927; GENERIC-NEXT: xor16 a0, a2928; GENERIC-NEXT: and16 a0, a1929; GENERIC-NEXT: addi16 sp, sp, 4930; GENERIC-NEXT: rts16931entry:932 %icmp = icmp ugt i1 %y, %x933 ret i1 %icmp934}935 936define i1 @ICMP_BIT_I_ugt(i1 %x) {937; CHECK-LABEL: ICMP_BIT_I_ugt:938; CHECK: # %bb.0: # %entry939; CHECK-NEXT: movi16 a0, 0940; CHECK-NEXT: rts16941;942; GENERIC-LABEL: ICMP_BIT_I_ugt:943; GENERIC: # %bb.0: # %entry944; GENERIC-NEXT: .cfi_def_cfa_offset 0945; GENERIC-NEXT: subi16 sp, sp, 4946; GENERIC-NEXT: .cfi_def_cfa_offset 4947; GENERIC-NEXT: movi16 a0, 0948; GENERIC-NEXT: addi16 sp, sp, 4949; GENERIC-NEXT: rts16950entry:951 %icmp = icmp ugt i1 %x, 1952 ret i1 %icmp953}954 955 956;uge957define i1 @icmpRR_uge(i32 %x, i32 %y) {958; CHECK-LABEL: icmpRR_uge:959; CHECK: # %bb.0: # %entry960; CHECK-NEXT: cmphs16 a1, a0961; CHECK-NEXT: mvc32 a0962; CHECK-NEXT: rts16963;964; GENERIC-LABEL: icmpRR_uge:965; GENERIC: # %bb.0: # %entry966; GENERIC-NEXT: .cfi_def_cfa_offset 0967; GENERIC-NEXT: subi16 sp, sp, 4968; GENERIC-NEXT: .cfi_def_cfa_offset 4969; GENERIC-NEXT: cmphs16 a1, a0970; GENERIC-NEXT: mvcv16 a1971; GENERIC-NEXT: movi16 a0, 1972; GENERIC-NEXT: subu16 a0, a1973; GENERIC-NEXT: addi16 sp, sp, 4974; GENERIC-NEXT: rts16975entry:976 %icmp = icmp uge i32 %y, %x977 ret i1 %icmp978}979 980define i1 @icmpRI_uge(i32 %x) {981; CHECK-LABEL: icmpRI_uge:982; CHECK: # %bb.0: # %entry983; CHECK-NEXT: movi16 a1, 9984; CHECK-NEXT: cmphs16 a1, a0985; CHECK-NEXT: mvcv16 a0986; CHECK-NEXT: rts16987;988; GENERIC-LABEL: icmpRI_uge:989; GENERIC: # %bb.0: # %entry990; GENERIC-NEXT: .cfi_def_cfa_offset 0991; GENERIC-NEXT: subi16 sp, sp, 4992; GENERIC-NEXT: .cfi_def_cfa_offset 4993; GENERIC-NEXT: movi16 a1, 9994; GENERIC-NEXT: cmphs16 a1, a0995; GENERIC-NEXT: mvcv16 a0996; GENERIC-NEXT: addi16 sp, sp, 4997; GENERIC-NEXT: rts16998entry:999 %icmp = icmp uge i32 %x, 101000 ret i1 %icmp1001}1002 1003define i1 @icmpRI_X_uge(i32 %x) {1004; CHECK-LABEL: icmpRI_X_uge:1005; CHECK: # %bb.0: # %entry1006; CHECK-NEXT: movih32 a1, 621007; CHECK-NEXT: ori32 a1, a1, 337671008; CHECK-NEXT: cmphs16 a1, a01009; CHECK-NEXT: mvcv16 a01010; CHECK-NEXT: rts161011;1012; GENERIC-LABEL: icmpRI_X_uge:1013; GENERIC: # %bb.0: # %entry1014; GENERIC-NEXT: .cfi_def_cfa_offset 01015; GENERIC-NEXT: subi16 sp, sp, 41016; GENERIC-NEXT: .cfi_def_cfa_offset 41017; GENERIC-NEXT: movi16 a1, 01018; GENERIC-NEXT: lsli16 a1, a1, 241019; GENERIC-NEXT: movi16 a2, 621020; GENERIC-NEXT: lsli16 a2, a2, 161021; GENERIC-NEXT: or16 a2, a11022; GENERIC-NEXT: movi16 a1, 1311023; GENERIC-NEXT: lsli16 a1, a1, 81024; GENERIC-NEXT: or16 a1, a21025; GENERIC-NEXT: movi16 a2, 2311026; GENERIC-NEXT: or16 a2, a11027; GENERIC-NEXT: cmphs16 a2, a01028; GENERIC-NEXT: mvcv16 a01029; GENERIC-NEXT: addi16 sp, sp, 41030; GENERIC-NEXT: rts161031entry:1032 %icmp = icmp uge i32 %x, 40970001033 ret i1 %icmp1034}1035 1036define i1 @ICMP_LONG_uge(i64 %x, i64 %y) {1037; CHECK-LABEL: ICMP_LONG_uge:1038; CHECK: # %bb.0: # %entry1039; CHECK-NEXT: .cfi_def_cfa_offset 01040; CHECK-NEXT: subi16 sp, sp, 161041; CHECK-NEXT: .cfi_def_cfa_offset 161042; CHECK-NEXT: cmphs16 a3, a11043; CHECK-NEXT: mvc32 t01044; CHECK-NEXT: st32.w t0, (sp, 12)1045; CHECK-NEXT: cmphs16 a2, a01046; CHECK-NEXT: mvc32 a01047; CHECK-NEXT: st16.w a0, (sp, 4)1048; CHECK-NEXT: cmpne16 a3, a11049; CHECK-NEXT: mvc32 a01050; CHECK-NEXT: st16.w a0, (sp, 8)1051; CHECK-NEXT: ld16.w a0, (sp, 4)1052; CHECK-NEXT: btsti16 a0, 01053; CHECK-NEXT: mvc32 a11054; CHECK-NEXT: ld16.w a0, (sp, 12)1055; CHECK-NEXT: btsti16 a0, 01056; CHECK-NEXT: mvc32 a01057; CHECK-NEXT: ld16.w a2, (sp, 8)1058; CHECK-NEXT: btsti16 a2, 01059; CHECK-NEXT: movf32 a0, a11060; CHECK-NEXT: addi16 sp, sp, 161061; CHECK-NEXT: rts161062;1063; GENERIC-LABEL: ICMP_LONG_uge:1064; GENERIC: # %bb.0: # %entry1065; GENERIC-NEXT: subi16 sp, sp, 81066; GENERIC-NEXT: .cfi_def_cfa_offset 81067; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill1068; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1069; GENERIC-NEXT: .cfi_offset l1, -41070; GENERIC-NEXT: .cfi_offset l0, -81071; GENERIC-NEXT: subi16 sp, sp, 41072; GENERIC-NEXT: .cfi_def_cfa_offset 121073; GENERIC-NEXT: mov16 l0, a01074; GENERIC-NEXT: cmphs16 a3, a11075; GENERIC-NEXT: mvcv16 l11076; GENERIC-NEXT: movi16 a0, 11077; GENERIC-NEXT: cmphs16 a2, l01078; GENERIC-NEXT: mvcv16 a21079; GENERIC-NEXT: cmpne16 a3, a11080; GENERIC-NEXT: mvcv16 a11081; GENERIC-NEXT: btsti16 a1, 01082; GENERIC-NEXT: bt16 .LBB37_21083; GENERIC-NEXT: # %bb.1: # %entry1084; GENERIC-NEXT: subu16 a0, l11085; GENERIC-NEXT: br32 .LBB37_31086; GENERIC-NEXT: .LBB37_2:1087; GENERIC-NEXT: subu16 a0, a21088; GENERIC-NEXT: .LBB37_3: # %entry1089; GENERIC-NEXT: addi16 sp, sp, 41090; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1091; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload1092; GENERIC-NEXT: addi16 sp, sp, 81093; GENERIC-NEXT: rts161094entry:1095 %icmp = icmp uge i64 %y, %x1096 ret i1 %icmp1097}1098 1099define i1 @ICMP_LONG_I_uge(i64 %x) {1100; CHECK-LABEL: ICMP_LONG_I_uge:1101; CHECK: # %bb.0: # %entry1102; CHECK-NEXT: or16 a0, a11103; CHECK-NEXT: cmpnei16 a0, 01104; CHECK-NEXT: mvc32 a01105; CHECK-NEXT: rts161106;1107; GENERIC-LABEL: ICMP_LONG_I_uge:1108; GENERIC: # %bb.0: # %entry1109; GENERIC-NEXT: .cfi_def_cfa_offset 01110; GENERIC-NEXT: subi16 sp, sp, 41111; GENERIC-NEXT: .cfi_def_cfa_offset 41112; GENERIC-NEXT: or16 a0, a11113; GENERIC-NEXT: cmpnei16 a0, 01114; GENERIC-NEXT: mvcv16 a11115; GENERIC-NEXT: movi16 a0, 11116; GENERIC-NEXT: subu16 a0, a11117; GENERIC-NEXT: addi16 sp, sp, 41118; GENERIC-NEXT: rts161119entry:1120 %icmp = icmp uge i64 %x, 11121 ret i1 %icmp1122}1123 1124define i1 @ICMP_SHORT_uge(i16 %x, i16 %y) {1125; CHECK-LABEL: ICMP_SHORT_uge:1126; CHECK: # %bb.0: # %entry1127; CHECK-NEXT: zexth16 a0, a01128; CHECK-NEXT: zexth16 a1, a11129; CHECK-NEXT: cmphs16 a1, a01130; CHECK-NEXT: mvc32 a01131; CHECK-NEXT: rts161132;1133; GENERIC-LABEL: ICMP_SHORT_uge:1134; GENERIC: # %bb.0: # %entry1135; GENERIC-NEXT: subi16 sp, sp, 41136; GENERIC-NEXT: .cfi_def_cfa_offset 41137; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1138; GENERIC-NEXT: .cfi_offset l0, -41139; GENERIC-NEXT: subi16 sp, sp, 41140; GENERIC-NEXT: .cfi_def_cfa_offset 81141; GENERIC-NEXT: movi16 a2, 01142; GENERIC-NEXT: lsli16 a3, a2, 241143; GENERIC-NEXT: lsli16 a2, a2, 161144; GENERIC-NEXT: or16 a2, a31145; GENERIC-NEXT: movi16 a3, 2551146; GENERIC-NEXT: lsli16 l0, a3, 81147; GENERIC-NEXT: or16 l0, a21148; GENERIC-NEXT: or16 l0, a31149; GENERIC-NEXT: and16 a0, l01150; GENERIC-NEXT: and16 l0, a11151; GENERIC-NEXT: cmphs16 l0, a01152; GENERIC-NEXT: mvcv16 a11153; GENERIC-NEXT: movi16 a0, 11154; GENERIC-NEXT: subu16 a0, a11155; GENERIC-NEXT: addi16 sp, sp, 41156; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1157; GENERIC-NEXT: addi16 sp, sp, 41158; GENERIC-NEXT: rts161159entry:1160 %icmp = icmp uge i16 %y, %x1161 ret i1 %icmp1162}1163 1164define i1 @ICMP_SHORT_I_uge(i16 %x) {1165; CHECK-LABEL: ICMP_SHORT_I_uge:1166; CHECK: # %bb.0: # %entry1167; CHECK-NEXT: zexth16 a0, a01168; CHECK-NEXT: cmpnei16 a0, 01169; CHECK-NEXT: mvc32 a01170; CHECK-NEXT: rts161171;1172; GENERIC-LABEL: ICMP_SHORT_I_uge:1173; GENERIC: # %bb.0: # %entry1174; GENERIC-NEXT: .cfi_def_cfa_offset 01175; GENERIC-NEXT: subi16 sp, sp, 41176; GENERIC-NEXT: .cfi_def_cfa_offset 41177; GENERIC-NEXT: movi16 a1, 01178; GENERIC-NEXT: lsli16 a2, a1, 241179; GENERIC-NEXT: lsli16 a1, a1, 161180; GENERIC-NEXT: or16 a1, a21181; GENERIC-NEXT: movi16 a2, 2551182; GENERIC-NEXT: lsli16 a3, a2, 81183; GENERIC-NEXT: or16 a3, a11184; GENERIC-NEXT: or16 a3, a21185; GENERIC-NEXT: and16 a3, a01186; GENERIC-NEXT: cmpnei16 a3, 01187; GENERIC-NEXT: mvcv16 a11188; GENERIC-NEXT: movi16 a0, 11189; GENERIC-NEXT: subu16 a0, a11190; GENERIC-NEXT: addi16 sp, sp, 41191; GENERIC-NEXT: rts161192entry:1193 %icmp = icmp uge i16 %x, 11194 ret i1 %icmp1195}1196 1197define i1 @ICMP_CHAR_uge(i8 %x, i8 %y) {1198; CHECK-LABEL: ICMP_CHAR_uge:1199; CHECK: # %bb.0: # %entry1200; CHECK-NEXT: zextb16 a0, a01201; CHECK-NEXT: zextb16 a1, a11202; CHECK-NEXT: cmphs16 a1, a01203; CHECK-NEXT: mvc32 a01204; CHECK-NEXT: rts161205;1206; GENERIC-LABEL: ICMP_CHAR_uge:1207; GENERIC: # %bb.0: # %entry1208; GENERIC-NEXT: .cfi_def_cfa_offset 01209; GENERIC-NEXT: subi16 sp, sp, 41210; GENERIC-NEXT: .cfi_def_cfa_offset 41211; GENERIC-NEXT: movi16 a2, 2551212; GENERIC-NEXT: and16 a0, a21213; GENERIC-NEXT: and16 a1, a21214; GENERIC-NEXT: cmphs16 a1, a01215; GENERIC-NEXT: mvcv16 a11216; GENERIC-NEXT: movi16 a0, 11217; GENERIC-NEXT: subu16 a0, a11218; GENERIC-NEXT: addi16 sp, sp, 41219; GENERIC-NEXT: rts161220entry:1221 %icmp = icmp uge i8 %y, %x1222 ret i1 %icmp1223}1224 1225define i1 @ICMP_CHAR_I_uge(i8 %x) {1226; CHECK-LABEL: ICMP_CHAR_I_uge:1227; CHECK: # %bb.0: # %entry1228; CHECK-NEXT: zextb16 a0, a01229; CHECK-NEXT: cmpnei16 a0, 01230; CHECK-NEXT: mvc32 a01231; CHECK-NEXT: rts161232;1233; GENERIC-LABEL: ICMP_CHAR_I_uge:1234; GENERIC: # %bb.0: # %entry1235; GENERIC-NEXT: .cfi_def_cfa_offset 01236; GENERIC-NEXT: subi16 sp, sp, 41237; GENERIC-NEXT: .cfi_def_cfa_offset 41238; GENERIC-NEXT: movi16 a1, 2551239; GENERIC-NEXT: and16 a1, a01240; GENERIC-NEXT: cmpnei16 a1, 01241; GENERIC-NEXT: mvcv16 a11242; GENERIC-NEXT: movi16 a0, 11243; GENERIC-NEXT: subu16 a0, a11244; GENERIC-NEXT: addi16 sp, sp, 41245; GENERIC-NEXT: rts161246entry:1247 %icmp = icmp uge i8 %x, 11248 ret i1 %icmp1249}1250 1251define i1 @ICMP_BIT_uge(i1 %x, i1 %y) {1252; CHECK-LABEL: ICMP_BIT_uge:1253; CHECK: # %bb.0: # %entry1254; CHECK-NEXT: xori32 a0, a0, 11255; CHECK-NEXT: or16 a0, a11256; CHECK-NEXT: rts161257;1258; GENERIC-LABEL: ICMP_BIT_uge:1259; GENERIC: # %bb.0: # %entry1260; GENERIC-NEXT: .cfi_def_cfa_offset 01261; GENERIC-NEXT: subi16 sp, sp, 41262; GENERIC-NEXT: .cfi_def_cfa_offset 41263; GENERIC-NEXT: movi16 a2, 11264; GENERIC-NEXT: xor16 a0, a21265; GENERIC-NEXT: or16 a0, a11266; GENERIC-NEXT: addi16 sp, sp, 41267; GENERIC-NEXT: rts161268entry:1269 %icmp = icmp uge i1 %y, %x1270 ret i1 %icmp1271}1272 1273define i1 @ICMP_BIT_I_uge(i1 %x) {1274; CHECK-LABEL: ICMP_BIT_I_uge:1275; CHECK: # %bb.0: # %entry1276; CHECK-NEXT: rts161277;1278; GENERIC-LABEL: ICMP_BIT_I_uge:1279; GENERIC: # %bb.0: # %entry1280; GENERIC-NEXT: .cfi_def_cfa_offset 01281; GENERIC-NEXT: subi16 sp, sp, 41282; GENERIC-NEXT: .cfi_def_cfa_offset 41283; GENERIC-NEXT: addi16 sp, sp, 41284; GENERIC-NEXT: rts161285entry:1286 %icmp = icmp uge i1 %x, 11287 ret i1 %icmp1288}1289 1290 1291;ult1292define i1 @icmpRR_ult(i32 %x, i32 %y) {1293; CHECK-LABEL: icmpRR_ult:1294; CHECK: # %bb.0: # %entry1295; CHECK-NEXT: cmphs16 a1, a01296; CHECK-NEXT: mvcv16 a01297; CHECK-NEXT: rts161298;1299; GENERIC-LABEL: icmpRR_ult:1300; GENERIC: # %bb.0: # %entry1301; GENERIC-NEXT: .cfi_def_cfa_offset 01302; GENERIC-NEXT: subi16 sp, sp, 41303; GENERIC-NEXT: .cfi_def_cfa_offset 41304; GENERIC-NEXT: cmphs16 a1, a01305; GENERIC-NEXT: mvcv16 a01306; GENERIC-NEXT: addi16 sp, sp, 41307; GENERIC-NEXT: rts161308entry:1309 %icmp = icmp ult i32 %y, %x1310 ret i1 %icmp1311}1312 1313define i1 @icmpRI_ult(i32 %x) {1314; CHECK-LABEL: icmpRI_ult:1315; CHECK: # %bb.0: # %entry1316; CHECK-NEXT: cmphsi16 a0, 101317; CHECK-NEXT: mvcv16 a01318; CHECK-NEXT: rts161319;1320; GENERIC-LABEL: icmpRI_ult:1321; GENERIC: # %bb.0: # %entry1322; GENERIC-NEXT: .cfi_def_cfa_offset 01323; GENERIC-NEXT: subi16 sp, sp, 41324; GENERIC-NEXT: .cfi_def_cfa_offset 41325; GENERIC-NEXT: cmphsi16 a0, 101326; GENERIC-NEXT: mvcv16 a01327; GENERIC-NEXT: addi16 sp, sp, 41328; GENERIC-NEXT: rts161329entry:1330 %icmp = icmp ult i32 %x, 101331 ret i1 %icmp1332}1333 1334define i1 @icmpRI_X_ult(i32 %x) {1335; CHECK-LABEL: icmpRI_X_ult:1336; CHECK: # %bb.0: # %entry1337; CHECK-NEXT: movih32 a1, 621338; CHECK-NEXT: ori32 a1, a1, 337681339; CHECK-NEXT: cmphs16 a0, a11340; CHECK-NEXT: mvcv16 a01341; CHECK-NEXT: rts161342;1343; GENERIC-LABEL: icmpRI_X_ult:1344; GENERIC: # %bb.0: # %entry1345; GENERIC-NEXT: .cfi_def_cfa_offset 01346; GENERIC-NEXT: subi16 sp, sp, 41347; GENERIC-NEXT: .cfi_def_cfa_offset 41348; GENERIC-NEXT: movi16 a1, 01349; GENERIC-NEXT: lsli16 a1, a1, 241350; GENERIC-NEXT: movi16 a2, 621351; GENERIC-NEXT: lsli16 a2, a2, 161352; GENERIC-NEXT: or16 a2, a11353; GENERIC-NEXT: movi16 a1, 1311354; GENERIC-NEXT: lsli16 a1, a1, 81355; GENERIC-NEXT: or16 a1, a21356; GENERIC-NEXT: movi16 a2, 2321357; GENERIC-NEXT: or16 a2, a11358; GENERIC-NEXT: cmphs16 a0, a21359; GENERIC-NEXT: mvcv16 a01360; GENERIC-NEXT: addi16 sp, sp, 41361; GENERIC-NEXT: rts161362entry:1363 %icmp = icmp ult i32 %x, 40970001364 ret i1 %icmp1365}1366 1367define i1 @ICMP_LONG_ult(i64 %x, i64 %y) {1368; CHECK-LABEL: ICMP_LONG_ult:1369; CHECK: # %bb.0: # %entry1370; CHECK-NEXT: .cfi_def_cfa_offset 01371; CHECK-NEXT: subi16 sp, sp, 81372; CHECK-NEXT: .cfi_def_cfa_offset 81373; CHECK-NEXT: cmpne16 a3, a11374; CHECK-NEXT: mvc32 t01375; CHECK-NEXT: st32.w t0, (sp, 4)1376; CHECK-NEXT: cmphs16 a3, a11377; CHECK-NEXT: mvcv16 a11378; CHECK-NEXT: cmphs16 a2, a01379; CHECK-NEXT: mvcv16 a01380; CHECK-NEXT: ld16.w a2, (sp, 4)1381; CHECK-NEXT: btsti16 a2, 01382; CHECK-NEXT: movf32 a1, a01383; CHECK-NEXT: mov16 a0, a11384; CHECK-NEXT: addi16 sp, sp, 81385; CHECK-NEXT: rts161386;1387; GENERIC-LABEL: ICMP_LONG_ult:1388; GENERIC: # %bb.0: # %entry1389; GENERIC-NEXT: subi16 sp, sp, 41390; GENERIC-NEXT: .cfi_def_cfa_offset 41391; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1392; GENERIC-NEXT: .cfi_offset l0, -41393; GENERIC-NEXT: subi16 sp, sp, 41394; GENERIC-NEXT: .cfi_def_cfa_offset 81395; GENERIC-NEXT: cmphs16 a3, a11396; GENERIC-NEXT: mvcv16 l01397; GENERIC-NEXT: cmphs16 a2, a01398; GENERIC-NEXT: mvcv16 a01399; GENERIC-NEXT: cmpne16 a3, a11400; GENERIC-NEXT: mvcv16 a11401; GENERIC-NEXT: btsti16 a1, 01402; GENERIC-NEXT: bt16 .LBB48_21403; GENERIC-NEXT: # %bb.1: # %entry1404; GENERIC-NEXT: mov16 a0, l01405; GENERIC-NEXT: .LBB48_2: # %entry1406; GENERIC-NEXT: addi16 sp, sp, 41407; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1408; GENERIC-NEXT: addi16 sp, sp, 41409; GENERIC-NEXT: rts161410entry:1411 %icmp = icmp ult i64 %y, %x1412 ret i1 %icmp1413}1414 1415define i1 @ICMP_LONG_I_ult(i64 %x) {1416; CHECK-LABEL: ICMP_LONG_I_ult:1417; CHECK: # %bb.0: # %entry1418; CHECK-NEXT: or16 a0, a11419; CHECK-NEXT: cmpnei16 a0, 01420; CHECK-NEXT: mvcv16 a01421; CHECK-NEXT: rts161422;1423; GENERIC-LABEL: ICMP_LONG_I_ult:1424; GENERIC: # %bb.0: # %entry1425; GENERIC-NEXT: .cfi_def_cfa_offset 01426; GENERIC-NEXT: subi16 sp, sp, 41427; GENERIC-NEXT: .cfi_def_cfa_offset 41428; GENERIC-NEXT: or16 a0, a11429; GENERIC-NEXT: cmpnei16 a0, 01430; GENERIC-NEXT: mvcv16 a01431; GENERIC-NEXT: addi16 sp, sp, 41432; GENERIC-NEXT: rts161433entry:1434 %icmp = icmp ult i64 %x, 11435 ret i1 %icmp1436}1437 1438define i1 @ICMP_SHORT_ult(i16 %x, i16 %y) {1439; CHECK-LABEL: ICMP_SHORT_ult:1440; CHECK: # %bb.0: # %entry1441; CHECK-NEXT: zexth16 a0, a01442; CHECK-NEXT: zexth16 a1, a11443; CHECK-NEXT: cmphs16 a1, a01444; CHECK-NEXT: mvcv16 a01445; CHECK-NEXT: rts161446;1447; GENERIC-LABEL: ICMP_SHORT_ult:1448; GENERIC: # %bb.0: # %entry1449; GENERIC-NEXT: subi16 sp, sp, 41450; GENERIC-NEXT: .cfi_def_cfa_offset 41451; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1452; GENERIC-NEXT: .cfi_offset l0, -41453; GENERIC-NEXT: subi16 sp, sp, 41454; GENERIC-NEXT: .cfi_def_cfa_offset 81455; GENERIC-NEXT: movi16 a2, 01456; GENERIC-NEXT: lsli16 a3, a2, 241457; GENERIC-NEXT: lsli16 a2, a2, 161458; GENERIC-NEXT: or16 a2, a31459; GENERIC-NEXT: movi16 a3, 2551460; GENERIC-NEXT: lsli16 l0, a3, 81461; GENERIC-NEXT: or16 l0, a21462; GENERIC-NEXT: or16 l0, a31463; GENERIC-NEXT: and16 a0, l01464; GENERIC-NEXT: and16 l0, a11465; GENERIC-NEXT: cmphs16 l0, a01466; GENERIC-NEXT: mvcv16 a01467; GENERIC-NEXT: addi16 sp, sp, 41468; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1469; GENERIC-NEXT: addi16 sp, sp, 41470; GENERIC-NEXT: rts161471entry:1472 %icmp = icmp ult i16 %y, %x1473 ret i1 %icmp1474}1475 1476define i1 @ICMP_SHORT_I_ult(i16 %x) {1477; CHECK-LABEL: ICMP_SHORT_I_ult:1478; CHECK: # %bb.0: # %entry1479; CHECK-NEXT: zexth16 a0, a01480; CHECK-NEXT: cmpnei16 a0, 01481; CHECK-NEXT: mvcv16 a01482; CHECK-NEXT: rts161483;1484; GENERIC-LABEL: ICMP_SHORT_I_ult:1485; GENERIC: # %bb.0: # %entry1486; GENERIC-NEXT: .cfi_def_cfa_offset 01487; GENERIC-NEXT: subi16 sp, sp, 41488; GENERIC-NEXT: .cfi_def_cfa_offset 41489; GENERIC-NEXT: movi16 a1, 01490; GENERIC-NEXT: lsli16 a2, a1, 241491; GENERIC-NEXT: lsli16 a1, a1, 161492; GENERIC-NEXT: or16 a1, a21493; GENERIC-NEXT: movi16 a2, 2551494; GENERIC-NEXT: lsli16 a3, a2, 81495; GENERIC-NEXT: or16 a3, a11496; GENERIC-NEXT: or16 a3, a21497; GENERIC-NEXT: and16 a3, a01498; GENERIC-NEXT: cmpnei16 a3, 01499; GENERIC-NEXT: mvcv16 a01500; GENERIC-NEXT: addi16 sp, sp, 41501; GENERIC-NEXT: rts161502entry:1503 %icmp = icmp ult i16 %x, 11504 ret i1 %icmp1505}1506 1507define i1 @ICMP_CHAR_ult(i8 %x, i8 %y) {1508; CHECK-LABEL: ICMP_CHAR_ult:1509; CHECK: # %bb.0: # %entry1510; CHECK-NEXT: zextb16 a0, a01511; CHECK-NEXT: zextb16 a1, a11512; CHECK-NEXT: cmphs16 a1, a01513; CHECK-NEXT: mvcv16 a01514; CHECK-NEXT: rts161515;1516; GENERIC-LABEL: ICMP_CHAR_ult:1517; GENERIC: # %bb.0: # %entry1518; GENERIC-NEXT: .cfi_def_cfa_offset 01519; GENERIC-NEXT: subi16 sp, sp, 41520; GENERIC-NEXT: .cfi_def_cfa_offset 41521; GENERIC-NEXT: movi16 a2, 2551522; GENERIC-NEXT: and16 a0, a21523; GENERIC-NEXT: and16 a1, a21524; GENERIC-NEXT: cmphs16 a1, a01525; GENERIC-NEXT: mvcv16 a01526; GENERIC-NEXT: addi16 sp, sp, 41527; GENERIC-NEXT: rts161528entry:1529 %icmp = icmp ult i8 %y, %x1530 ret i1 %icmp1531}1532 1533define i1 @ICMP_CHAR_I_ult(i8 %x) {1534; CHECK-LABEL: ICMP_CHAR_I_ult:1535; CHECK: # %bb.0: # %entry1536; CHECK-NEXT: zextb16 a0, a01537; CHECK-NEXT: cmpnei16 a0, 01538; CHECK-NEXT: mvcv16 a01539; CHECK-NEXT: rts161540;1541; GENERIC-LABEL: ICMP_CHAR_I_ult:1542; GENERIC: # %bb.0: # %entry1543; GENERIC-NEXT: .cfi_def_cfa_offset 01544; GENERIC-NEXT: subi16 sp, sp, 41545; GENERIC-NEXT: .cfi_def_cfa_offset 41546; GENERIC-NEXT: movi16 a1, 2551547; GENERIC-NEXT: and16 a1, a01548; GENERIC-NEXT: cmpnei16 a1, 01549; GENERIC-NEXT: mvcv16 a01550; GENERIC-NEXT: addi16 sp, sp, 41551; GENERIC-NEXT: rts161552entry:1553 %icmp = icmp ult i8 %x, 11554 ret i1 %icmp1555}1556 1557define i1 @ICMP_BIT_ult(i1 %x, i1 %y) {1558; CHECK-LABEL: ICMP_BIT_ult:1559; CHECK: # %bb.0: # %entry1560; CHECK-NEXT: xori32 a1, a1, 11561; CHECK-NEXT: and16 a0, a11562; CHECK-NEXT: rts161563;1564; GENERIC-LABEL: ICMP_BIT_ult:1565; GENERIC: # %bb.0: # %entry1566; GENERIC-NEXT: .cfi_def_cfa_offset 01567; GENERIC-NEXT: subi16 sp, sp, 41568; GENERIC-NEXT: .cfi_def_cfa_offset 41569; GENERIC-NEXT: movi16 a2, 11570; GENERIC-NEXT: xor16 a2, a11571; GENERIC-NEXT: and16 a0, a21572; GENERIC-NEXT: addi16 sp, sp, 41573; GENERIC-NEXT: rts161574entry:1575 %icmp = icmp ult i1 %y, %x1576 ret i1 %icmp1577}1578 1579define i1 @ICMP_BIT_I_ult(i1 %x) {1580; CHECK-LABEL: ICMP_BIT_I_ult:1581; CHECK: # %bb.0: # %entry1582; CHECK-NEXT: xori32 a0, a0, 11583; CHECK-NEXT: rts161584;1585; GENERIC-LABEL: ICMP_BIT_I_ult:1586; GENERIC: # %bb.0: # %entry1587; GENERIC-NEXT: .cfi_def_cfa_offset 01588; GENERIC-NEXT: subi16 sp, sp, 41589; GENERIC-NEXT: .cfi_def_cfa_offset 41590; GENERIC-NEXT: movi16 a1, 11591; GENERIC-NEXT: xor16 a0, a11592; GENERIC-NEXT: addi16 sp, sp, 41593; GENERIC-NEXT: rts161594entry:1595 %icmp = icmp ult i1 %x, 11596 ret i1 %icmp1597}1598 1599 1600;ule1601define i1 @icmpRR_ule(i32 %x, i32 %y) {1602; CHECK-LABEL: icmpRR_ule:1603; CHECK: # %bb.0: # %entry1604; CHECK-NEXT: cmphs16 a0, a11605; CHECK-NEXT: mvc32 a01606; CHECK-NEXT: rts161607;1608; GENERIC-LABEL: icmpRR_ule:1609; GENERIC: # %bb.0: # %entry1610; GENERIC-NEXT: .cfi_def_cfa_offset 01611; GENERIC-NEXT: subi16 sp, sp, 41612; GENERIC-NEXT: .cfi_def_cfa_offset 41613; GENERIC-NEXT: cmphs16 a0, a11614; GENERIC-NEXT: mvcv16 a11615; GENERIC-NEXT: movi16 a0, 11616; GENERIC-NEXT: subu16 a0, a11617; GENERIC-NEXT: addi16 sp, sp, 41618; GENERIC-NEXT: rts161619entry:1620 %icmp = icmp ule i32 %y, %x1621 ret i1 %icmp1622}1623 1624define i1 @icmpRI_ule(i32 %x) {1625; CHECK-LABEL: icmpRI_ule:1626; CHECK: # %bb.0: # %entry1627; CHECK-NEXT: cmphsi16 a0, 111628; CHECK-NEXT: mvcv16 a01629; CHECK-NEXT: rts161630;1631; GENERIC-LABEL: icmpRI_ule:1632; GENERIC: # %bb.0: # %entry1633; GENERIC-NEXT: .cfi_def_cfa_offset 01634; GENERIC-NEXT: subi16 sp, sp, 41635; GENERIC-NEXT: .cfi_def_cfa_offset 41636; GENERIC-NEXT: cmphsi16 a0, 111637; GENERIC-NEXT: mvcv16 a01638; GENERIC-NEXT: addi16 sp, sp, 41639; GENERIC-NEXT: rts161640entry:1641 %icmp = icmp ule i32 %x, 101642 ret i1 %icmp1643}1644 1645define i1 @icmpRI_X_ule(i32 %x) {1646; CHECK-LABEL: icmpRI_X_ule:1647; CHECK: # %bb.0: # %entry1648; CHECK-NEXT: movih32 a1, 621649; CHECK-NEXT: ori32 a1, a1, 337691650; CHECK-NEXT: cmphs16 a0, a11651; CHECK-NEXT: mvcv16 a01652; CHECK-NEXT: rts161653;1654; GENERIC-LABEL: icmpRI_X_ule:1655; GENERIC: # %bb.0: # %entry1656; GENERIC-NEXT: .cfi_def_cfa_offset 01657; GENERIC-NEXT: subi16 sp, sp, 41658; GENERIC-NEXT: .cfi_def_cfa_offset 41659; GENERIC-NEXT: movi16 a1, 01660; GENERIC-NEXT: lsli16 a1, a1, 241661; GENERIC-NEXT: movi16 a2, 621662; GENERIC-NEXT: lsli16 a2, a2, 161663; GENERIC-NEXT: or16 a2, a11664; GENERIC-NEXT: movi16 a1, 1311665; GENERIC-NEXT: lsli16 a1, a1, 81666; GENERIC-NEXT: or16 a1, a21667; GENERIC-NEXT: movi16 a2, 2331668; GENERIC-NEXT: or16 a2, a11669; GENERIC-NEXT: cmphs16 a0, a21670; GENERIC-NEXT: mvcv16 a01671; GENERIC-NEXT: addi16 sp, sp, 41672; GENERIC-NEXT: rts161673entry:1674 %icmp = icmp ule i32 %x, 40970001675 ret i1 %icmp1676}1677 1678define i1 @ICMP_LONG_ule(i64 %x, i64 %y) {1679; CHECK-LABEL: ICMP_LONG_ule:1680; CHECK: # %bb.0: # %entry1681; CHECK-NEXT: .cfi_def_cfa_offset 01682; CHECK-NEXT: subi16 sp, sp, 161683; CHECK-NEXT: .cfi_def_cfa_offset 161684; CHECK-NEXT: cmphs16 a1, a31685; CHECK-NEXT: mvc32 t01686; CHECK-NEXT: st32.w t0, (sp, 12)1687; CHECK-NEXT: cmphs16 a0, a21688; CHECK-NEXT: mvc32 a01689; CHECK-NEXT: st16.w a0, (sp, 4)1690; CHECK-NEXT: cmpne16 a3, a11691; CHECK-NEXT: mvc32 a01692; CHECK-NEXT: st16.w a0, (sp, 8)1693; CHECK-NEXT: ld16.w a0, (sp, 4)1694; CHECK-NEXT: btsti16 a0, 01695; CHECK-NEXT: mvc32 a11696; CHECK-NEXT: ld16.w a0, (sp, 12)1697; CHECK-NEXT: btsti16 a0, 01698; CHECK-NEXT: mvc32 a01699; CHECK-NEXT: ld16.w a2, (sp, 8)1700; CHECK-NEXT: btsti16 a2, 01701; CHECK-NEXT: movf32 a0, a11702; CHECK-NEXT: addi16 sp, sp, 161703; CHECK-NEXT: rts161704;1705; GENERIC-LABEL: ICMP_LONG_ule:1706; GENERIC: # %bb.0: # %entry1707; GENERIC-NEXT: subi16 sp, sp, 81708; GENERIC-NEXT: .cfi_def_cfa_offset 81709; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill1710; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1711; GENERIC-NEXT: .cfi_offset l1, -41712; GENERIC-NEXT: .cfi_offset l0, -81713; GENERIC-NEXT: subi16 sp, sp, 41714; GENERIC-NEXT: .cfi_def_cfa_offset 121715; GENERIC-NEXT: mov16 l0, a01716; GENERIC-NEXT: cmphs16 a1, a31717; GENERIC-NEXT: mvcv16 l11718; GENERIC-NEXT: movi16 a0, 11719; GENERIC-NEXT: cmphs16 l0, a21720; GENERIC-NEXT: mvcv16 a21721; GENERIC-NEXT: cmpne16 a3, a11722; GENERIC-NEXT: mvcv16 a11723; GENERIC-NEXT: btsti16 a1, 01724; GENERIC-NEXT: bt16 .LBB59_21725; GENERIC-NEXT: # %bb.1: # %entry1726; GENERIC-NEXT: subu16 a0, l11727; GENERIC-NEXT: br32 .LBB59_31728; GENERIC-NEXT: .LBB59_2:1729; GENERIC-NEXT: subu16 a0, a21730; GENERIC-NEXT: .LBB59_3: # %entry1731; GENERIC-NEXT: addi16 sp, sp, 41732; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1733; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload1734; GENERIC-NEXT: addi16 sp, sp, 81735; GENERIC-NEXT: rts161736entry:1737 %icmp = icmp ule i64 %y, %x1738 ret i1 %icmp1739}1740 1741define i1 @ICMP_LONG_I_ule(i64 %x) {1742; CHECK-LABEL: ICMP_LONG_I_ule:1743; CHECK: # %bb.0: # %entry1744; CHECK-NEXT: .cfi_def_cfa_offset 01745; CHECK-NEXT: subi16 sp, sp, 81746; CHECK-NEXT: .cfi_def_cfa_offset 81747; CHECK-NEXT: cmpnei16 a1, 01748; CHECK-NEXT: mvc32 a11749; CHECK-NEXT: st16.w a1, (sp, 4)1750; CHECK-NEXT: cmphsi16 a0, 21751; CHECK-NEXT: mvcv16 a11752; CHECK-NEXT: movi16 a0, 01753; CHECK-NEXT: ld16.w a2, (sp, 4)1754; CHECK-NEXT: btsti16 a2, 01755; CHECK-NEXT: movf32 a0, a11756; CHECK-NEXT: addi16 sp, sp, 81757; CHECK-NEXT: rts161758;1759; GENERIC-LABEL: ICMP_LONG_I_ule:1760; GENERIC: # %bb.0: # %entry1761; GENERIC-NEXT: .cfi_def_cfa_offset 01762; GENERIC-NEXT: subi16 sp, sp, 41763; GENERIC-NEXT: .cfi_def_cfa_offset 41764; GENERIC-NEXT: cmphsi16 a0, 21765; GENERIC-NEXT: mvcv16 a01766; GENERIC-NEXT: cmpnei16 a1, 01767; GENERIC-NEXT: mvcv16 a11768; GENERIC-NEXT: btsti16 a1, 01769; GENERIC-NEXT: bt16 .LBB60_21770; GENERIC-NEXT: # %bb.1: # %entry1771; GENERIC-NEXT: movi16 a0, 01772; GENERIC-NEXT: .LBB60_2: # %entry1773; GENERIC-NEXT: addi16 sp, sp, 41774; GENERIC-NEXT: rts161775entry:1776 %icmp = icmp ule i64 %x, 11777 ret i1 %icmp1778}1779 1780define i1 @ICMP_SHORT_ule(i16 %x, i16 %y) {1781; CHECK-LABEL: ICMP_SHORT_ule:1782; CHECK: # %bb.0: # %entry1783; CHECK-NEXT: zexth16 a1, a11784; CHECK-NEXT: zexth16 a0, a01785; CHECK-NEXT: cmphs16 a0, a11786; CHECK-NEXT: mvc32 a01787; CHECK-NEXT: rts161788;1789; GENERIC-LABEL: ICMP_SHORT_ule:1790; GENERIC: # %bb.0: # %entry1791; GENERIC-NEXT: subi16 sp, sp, 41792; GENERIC-NEXT: .cfi_def_cfa_offset 41793; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1794; GENERIC-NEXT: .cfi_offset l0, -41795; GENERIC-NEXT: subi16 sp, sp, 41796; GENERIC-NEXT: .cfi_def_cfa_offset 81797; GENERIC-NEXT: movi16 a2, 01798; GENERIC-NEXT: lsli16 a3, a2, 241799; GENERIC-NEXT: lsli16 a2, a2, 161800; GENERIC-NEXT: or16 a2, a31801; GENERIC-NEXT: movi16 a3, 2551802; GENERIC-NEXT: lsli16 l0, a3, 81803; GENERIC-NEXT: or16 l0, a21804; GENERIC-NEXT: or16 l0, a31805; GENERIC-NEXT: and16 a1, l01806; GENERIC-NEXT: and16 l0, a01807; GENERIC-NEXT: cmphs16 l0, a11808; GENERIC-NEXT: mvcv16 a11809; GENERIC-NEXT: movi16 a0, 11810; GENERIC-NEXT: subu16 a0, a11811; GENERIC-NEXT: addi16 sp, sp, 41812; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1813; GENERIC-NEXT: addi16 sp, sp, 41814; GENERIC-NEXT: rts161815entry:1816 %icmp = icmp ule i16 %y, %x1817 ret i1 %icmp1818}1819 1820define i1 @ICMP_SHORT_I_ule(i16 %x) {1821; CHECK-LABEL: ICMP_SHORT_I_ule:1822; CHECK: # %bb.0: # %entry1823; CHECK-NEXT: zexth16 a0, a01824; CHECK-NEXT: cmphsi16 a0, 21825; CHECK-NEXT: mvcv16 a01826; CHECK-NEXT: rts161827;1828; GENERIC-LABEL: ICMP_SHORT_I_ule:1829; GENERIC: # %bb.0: # %entry1830; GENERIC-NEXT: .cfi_def_cfa_offset 01831; GENERIC-NEXT: subi16 sp, sp, 41832; GENERIC-NEXT: .cfi_def_cfa_offset 41833; GENERIC-NEXT: movi16 a1, 01834; GENERIC-NEXT: lsli16 a2, a1, 241835; GENERIC-NEXT: lsli16 a1, a1, 161836; GENERIC-NEXT: or16 a1, a21837; GENERIC-NEXT: movi16 a2, 2551838; GENERIC-NEXT: lsli16 a3, a2, 81839; GENERIC-NEXT: or16 a3, a11840; GENERIC-NEXT: or16 a3, a21841; GENERIC-NEXT: and16 a3, a01842; GENERIC-NEXT: cmphsi16 a3, 21843; GENERIC-NEXT: mvcv16 a01844; GENERIC-NEXT: addi16 sp, sp, 41845; GENERIC-NEXT: rts161846entry:1847 %icmp = icmp ule i16 %x, 11848 ret i1 %icmp1849}1850 1851define i1 @ICMP_CHAR_ule(i8 %x, i8 %y) {1852; CHECK-LABEL: ICMP_CHAR_ule:1853; CHECK: # %bb.0: # %entry1854; CHECK-NEXT: zextb16 a1, a11855; CHECK-NEXT: zextb16 a0, a01856; CHECK-NEXT: cmphs16 a0, a11857; CHECK-NEXT: mvc32 a01858; CHECK-NEXT: rts161859;1860; GENERIC-LABEL: ICMP_CHAR_ule:1861; GENERIC: # %bb.0: # %entry1862; GENERIC-NEXT: .cfi_def_cfa_offset 01863; GENERIC-NEXT: subi16 sp, sp, 41864; GENERIC-NEXT: .cfi_def_cfa_offset 41865; GENERIC-NEXT: movi16 a2, 2551866; GENERIC-NEXT: and16 a1, a21867; GENERIC-NEXT: and16 a0, a21868; GENERIC-NEXT: cmphs16 a0, a11869; GENERIC-NEXT: mvcv16 a11870; GENERIC-NEXT: movi16 a0, 11871; GENERIC-NEXT: subu16 a0, a11872; GENERIC-NEXT: addi16 sp, sp, 41873; GENERIC-NEXT: rts161874entry:1875 %icmp = icmp ule i8 %y, %x1876 ret i1 %icmp1877}1878 1879define i1 @ICMP_CHAR_I_ule(i8 %x) {1880; CHECK-LABEL: ICMP_CHAR_I_ule:1881; CHECK: # %bb.0: # %entry1882; CHECK-NEXT: zextb16 a0, a01883; CHECK-NEXT: cmphsi16 a0, 21884; CHECK-NEXT: mvcv16 a01885; CHECK-NEXT: rts161886;1887; GENERIC-LABEL: ICMP_CHAR_I_ule:1888; GENERIC: # %bb.0: # %entry1889; GENERIC-NEXT: .cfi_def_cfa_offset 01890; GENERIC-NEXT: subi16 sp, sp, 41891; GENERIC-NEXT: .cfi_def_cfa_offset 41892; GENERIC-NEXT: movi16 a1, 2551893; GENERIC-NEXT: and16 a1, a01894; GENERIC-NEXT: cmphsi16 a1, 21895; GENERIC-NEXT: mvcv16 a01896; GENERIC-NEXT: addi16 sp, sp, 41897; GENERIC-NEXT: rts161898entry:1899 %icmp = icmp ule i8 %x, 11900 ret i1 %icmp1901}1902 1903define i1 @ICMP_BIT_ule(i1 %x, i1 %y) {1904; CHECK-LABEL: ICMP_BIT_ule:1905; CHECK: # %bb.0: # %entry1906; CHECK-NEXT: xori32 a1, a1, 11907; CHECK-NEXT: or16 a0, a11908; CHECK-NEXT: rts161909;1910; GENERIC-LABEL: ICMP_BIT_ule:1911; GENERIC: # %bb.0: # %entry1912; GENERIC-NEXT: .cfi_def_cfa_offset 01913; GENERIC-NEXT: subi16 sp, sp, 41914; GENERIC-NEXT: .cfi_def_cfa_offset 41915; GENERIC-NEXT: movi16 a2, 11916; GENERIC-NEXT: xor16 a2, a11917; GENERIC-NEXT: or16 a0, a21918; GENERIC-NEXT: addi16 sp, sp, 41919; GENERIC-NEXT: rts161920entry:1921 %icmp = icmp ule i1 %y, %x1922 ret i1 %icmp1923}1924 1925define i1 @ICMP_BIT_I_ule(i1 %x) {1926; CHECK-LABEL: ICMP_BIT_I_ule:1927; CHECK: # %bb.0: # %entry1928; CHECK-NEXT: movi16 a0, 11929; CHECK-NEXT: rts161930;1931; GENERIC-LABEL: ICMP_BIT_I_ule:1932; GENERIC: # %bb.0: # %entry1933; GENERIC-NEXT: .cfi_def_cfa_offset 01934; GENERIC-NEXT: subi16 sp, sp, 41935; GENERIC-NEXT: .cfi_def_cfa_offset 41936; GENERIC-NEXT: movi16 a0, 11937; GENERIC-NEXT: addi16 sp, sp, 41938; GENERIC-NEXT: rts161939entry:1940 %icmp = icmp ule i1 %x, 11941 ret i1 %icmp1942}1943 1944;sgt1945define i1 @icmpRR_sgt(i32 %x, i32 %y) {1946; CHECK-LABEL: icmpRR_sgt:1947; CHECK: # %bb.0: # %entry1948; CHECK-NEXT: cmplt16 a0, a11949; CHECK-NEXT: mvc32 a01950; CHECK-NEXT: rts161951;1952; GENERIC-LABEL: icmpRR_sgt:1953; GENERIC: # %bb.0: # %entry1954; GENERIC-NEXT: .cfi_def_cfa_offset 01955; GENERIC-NEXT: subi16 sp, sp, 41956; GENERIC-NEXT: .cfi_def_cfa_offset 41957; GENERIC-NEXT: cmplt16 a0, a11958; GENERIC-NEXT: mvcv16 a11959; GENERIC-NEXT: movi16 a0, 11960; GENERIC-NEXT: subu16 a0, a11961; GENERIC-NEXT: addi16 sp, sp, 41962; GENERIC-NEXT: rts161963entry:1964 %icmp = icmp sgt i32 %y, %x1965 ret i1 %icmp1966}1967 1968define i1 @icmpRI_sgt(i32 %x) {1969; CHECK-LABEL: icmpRI_sgt:1970; CHECK: # %bb.0: # %entry1971; CHECK-NEXT: movi16 a1, 101972; CHECK-NEXT: cmplt16 a1, a01973; CHECK-NEXT: mvc32 a01974; CHECK-NEXT: rts161975;1976; GENERIC-LABEL: icmpRI_sgt:1977; GENERIC: # %bb.0: # %entry1978; GENERIC-NEXT: .cfi_def_cfa_offset 01979; GENERIC-NEXT: subi16 sp, sp, 41980; GENERIC-NEXT: .cfi_def_cfa_offset 41981; GENERIC-NEXT: movi16 a1, 101982; GENERIC-NEXT: cmplt16 a1, a01983; GENERIC-NEXT: mvcv16 a11984; GENERIC-NEXT: movi16 a0, 11985; GENERIC-NEXT: subu16 a0, a11986; GENERIC-NEXT: addi16 sp, sp, 41987; GENERIC-NEXT: rts161988entry:1989 %icmp = icmp sgt i32 %x, 101990 ret i1 %icmp1991}1992 1993define i1 @icmpRI_X_sgt(i32 %x) {1994; CHECK-LABEL: icmpRI_X_sgt:1995; CHECK: # %bb.0: # %entry1996; CHECK-NEXT: movih32 a1, 621997; CHECK-NEXT: ori32 a1, a1, 337681998; CHECK-NEXT: cmplt16 a1, a01999; CHECK-NEXT: mvc32 a02000; CHECK-NEXT: rts162001;2002; GENERIC-LABEL: icmpRI_X_sgt:2003; GENERIC: # %bb.0: # %entry2004; GENERIC-NEXT: .cfi_def_cfa_offset 02005; GENERIC-NEXT: subi16 sp, sp, 42006; GENERIC-NEXT: .cfi_def_cfa_offset 42007; GENERIC-NEXT: movi16 a1, 02008; GENERIC-NEXT: lsli16 a1, a1, 242009; GENERIC-NEXT: movi16 a2, 622010; GENERIC-NEXT: lsli16 a2, a2, 162011; GENERIC-NEXT: or16 a2, a12012; GENERIC-NEXT: movi16 a1, 1312013; GENERIC-NEXT: lsli16 a1, a1, 82014; GENERIC-NEXT: or16 a1, a22015; GENERIC-NEXT: movi16 a2, 2322016; GENERIC-NEXT: or16 a2, a12017; GENERIC-NEXT: cmplt16 a2, a02018; GENERIC-NEXT: mvcv16 a12019; GENERIC-NEXT: movi16 a0, 12020; GENERIC-NEXT: subu16 a0, a12021; GENERIC-NEXT: addi16 sp, sp, 42022; GENERIC-NEXT: rts162023entry:2024 %icmp = icmp sgt i32 %x, 40970002025 ret i1 %icmp2026}2027 2028define i1 @ICMP_LONG_sgt(i64 %x, i64 %y) {2029; CHECK-LABEL: ICMP_LONG_sgt:2030; CHECK: # %bb.0: # %entry2031; CHECK-NEXT: .cfi_def_cfa_offset 02032; CHECK-NEXT: subi16 sp, sp, 122033; CHECK-NEXT: .cfi_def_cfa_offset 122034; CHECK-NEXT: cmplt16 a1, a32035; CHECK-NEXT: mvc32 t02036; CHECK-NEXT: st32.w t0, (sp, 4)2037; CHECK-NEXT: cmpne16 a3, a12038; CHECK-NEXT: mvc32 a12039; CHECK-NEXT: st16.w a1, (sp, 8)2040; CHECK-NEXT: cmphs16 a0, a22041; CHECK-NEXT: mvcv16 a12042; CHECK-NEXT: ld16.w a0, (sp, 4)2043; CHECK-NEXT: btsti16 a0, 02044; CHECK-NEXT: mvc32 a02045; CHECK-NEXT: ld16.w a2, (sp, 8)2046; CHECK-NEXT: btsti16 a2, 02047; CHECK-NEXT: movf32 a0, a12048; CHECK-NEXT: addi16 sp, sp, 122049; CHECK-NEXT: rts162050;2051; GENERIC-LABEL: ICMP_LONG_sgt:2052; GENERIC: # %bb.0: # %entry2053; GENERIC-NEXT: subi16 sp, sp, 42054; GENERIC-NEXT: .cfi_def_cfa_offset 42055; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill2056; GENERIC-NEXT: .cfi_offset l0, -42057; GENERIC-NEXT: subi16 sp, sp, 42058; GENERIC-NEXT: .cfi_def_cfa_offset 82059; GENERIC-NEXT: cmplt16 a1, a32060; GENERIC-NEXT: mvcv16 l02061; GENERIC-NEXT: cmphs16 a0, a22062; GENERIC-NEXT: mvcv16 a02063; GENERIC-NEXT: cmpne16 a3, a12064; GENERIC-NEXT: mvcv16 a12065; GENERIC-NEXT: btsti16 a1, 02066; GENERIC-NEXT: bt16 .LBB70_22067; GENERIC-NEXT: # %bb.1: # %entry2068; GENERIC-NEXT: movi16 a0, 12069; GENERIC-NEXT: subu16 a0, l02070; GENERIC-NEXT: .LBB70_2: # %entry2071; GENERIC-NEXT: addi16 sp, sp, 42072; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload2073; GENERIC-NEXT: addi16 sp, sp, 42074; GENERIC-NEXT: rts162075entry:2076 %icmp = icmp sgt i64 %y, %x2077 ret i1 %icmp2078}2079 2080define i1 @ICMP_LONG_I_sgt(i64 %x) {2081; CHECK-LABEL: ICMP_LONG_I_sgt:2082; CHECK: # %bb.0: # %entry2083; CHECK-NEXT: .cfi_def_cfa_offset 02084; CHECK-NEXT: subi16 sp, sp, 122085; CHECK-NEXT: .cfi_def_cfa_offset 122086; CHECK-NEXT: movi16 a2, 02087; CHECK-NEXT: cmplt16 a2, a12088; CHECK-NEXT: mvc32 a22089; CHECK-NEXT: st16.w a2, (sp, 8)2090; CHECK-NEXT: movi16 a2, 12091; CHECK-NEXT: cmphs16 a2, a02092; CHECK-NEXT: mvcv16 a22093; CHECK-NEXT: cmpnei16 a1, 02094; CHECK-NEXT: mvc32 a02095; CHECK-NEXT: st16.w a0, (sp, 4)2096; CHECK-NEXT: ld16.w a0, (sp, 8)2097; CHECK-NEXT: btsti16 a0, 02098; CHECK-NEXT: mvc32 a02099; CHECK-NEXT: ld16.w a1, (sp, 4)2100; CHECK-NEXT: btsti16 a1, 02101; CHECK-NEXT: movf32 a0, a22102; CHECK-NEXT: addi16 sp, sp, 122103; CHECK-NEXT: rts162104;2105; GENERIC-LABEL: ICMP_LONG_I_sgt:2106; GENERIC: # %bb.0: # %entry2107; GENERIC-NEXT: .cfi_def_cfa_offset 02108; GENERIC-NEXT: subi16 sp, sp, 42109; GENERIC-NEXT: .cfi_def_cfa_offset 42110; GENERIC-NEXT: movi16 a2, 02111; GENERIC-NEXT: cmplt16 a2, a12112; GENERIC-NEXT: mvcv16 a22113; GENERIC-NEXT: movi16 a3, 12114; GENERIC-NEXT: cmphs16 a3, a02115; GENERIC-NEXT: mvcv16 a02116; GENERIC-NEXT: cmpnei16 a1, 02117; GENERIC-NEXT: mvcv16 a12118; GENERIC-NEXT: btsti16 a1, 02119; GENERIC-NEXT: bt16 .LBB71_22120; GENERIC-NEXT: # %bb.1: # %entry2121; GENERIC-NEXT: subu16 a3, a22122; GENERIC-NEXT: mov16 a0, a32123; GENERIC-NEXT: .LBB71_2: # %entry2124; GENERIC-NEXT: addi16 sp, sp, 42125; GENERIC-NEXT: rts162126entry:2127 %icmp = icmp sgt i64 %x, 12128 ret i1 %icmp2129}2130 2131define i1 @ICMP_SHORT_sgt(i16 %x, i16 %y) {2132; CHECK-LABEL: ICMP_SHORT_sgt:2133; CHECK: # %bb.0: # %entry2134; CHECK-NEXT: sexth16 a1, a12135; CHECK-NEXT: sexth16 a0, a02136; CHECK-NEXT: cmplt16 a0, a12137; CHECK-NEXT: mvc32 a02138; CHECK-NEXT: rts162139;2140; GENERIC-LABEL: ICMP_SHORT_sgt:2141; GENERIC: # %bb.0: # %entry2142; GENERIC-NEXT: .cfi_def_cfa_offset 02143; GENERIC-NEXT: subi16 sp, sp, 42144; GENERIC-NEXT: .cfi_def_cfa_offset 42145; GENERIC-NEXT: sexth16 a1, a12146; GENERIC-NEXT: sexth16 a0, a02147; GENERIC-NEXT: cmplt16 a0, a12148; GENERIC-NEXT: mvcv16 a12149; GENERIC-NEXT: movi16 a0, 12150; GENERIC-NEXT: subu16 a0, a12151; GENERIC-NEXT: addi16 sp, sp, 42152; GENERIC-NEXT: rts162153entry:2154 %icmp = icmp sgt i16 %y, %x2155 ret i1 %icmp2156}2157 2158define i1 @ICMP_SHORT_I_sgt(i16 %x) {2159; CHECK-LABEL: ICMP_SHORT_I_sgt:2160; CHECK: # %bb.0: # %entry2161; CHECK-NEXT: sexth16 a0, a02162; CHECK-NEXT: movi16 a1, 12163; CHECK-NEXT: cmplt16 a1, a02164; CHECK-NEXT: mvc32 a02165; CHECK-NEXT: rts162166;2167; GENERIC-LABEL: ICMP_SHORT_I_sgt:2168; GENERIC: # %bb.0: # %entry2169; GENERIC-NEXT: .cfi_def_cfa_offset 02170; GENERIC-NEXT: subi16 sp, sp, 42171; GENERIC-NEXT: .cfi_def_cfa_offset 42172; GENERIC-NEXT: sexth16 a1, a02173; GENERIC-NEXT: movi16 a0, 12174; GENERIC-NEXT: cmplt16 a0, a12175; GENERIC-NEXT: mvcv16 a12176; GENERIC-NEXT: subu16 a0, a12177; GENERIC-NEXT: addi16 sp, sp, 42178; GENERIC-NEXT: rts162179entry:2180 %icmp = icmp sgt i16 %x, 12181 ret i1 %icmp2182}2183 2184define i1 @ICMP_CHAR_sgt(i8 %x, i8 %y) {2185; CHECK-LABEL: ICMP_CHAR_sgt:2186; CHECK: # %bb.0: # %entry2187; CHECK-NEXT: sextb16 a1, a12188; CHECK-NEXT: sextb16 a0, a02189; CHECK-NEXT: cmplt16 a0, a12190; CHECK-NEXT: mvc32 a02191; CHECK-NEXT: rts162192;2193; GENERIC-LABEL: ICMP_CHAR_sgt:2194; GENERIC: # %bb.0: # %entry2195; GENERIC-NEXT: .cfi_def_cfa_offset 02196; GENERIC-NEXT: subi16 sp, sp, 42197; GENERIC-NEXT: .cfi_def_cfa_offset 42198; GENERIC-NEXT: sextb16 a1, a12199; GENERIC-NEXT: sextb16 a0, a02200; GENERIC-NEXT: cmplt16 a0, a12201; GENERIC-NEXT: mvcv16 a12202; GENERIC-NEXT: movi16 a0, 12203; GENERIC-NEXT: subu16 a0, a12204; GENERIC-NEXT: addi16 sp, sp, 42205; GENERIC-NEXT: rts162206entry:2207 %icmp = icmp sgt i8 %y, %x2208 ret i1 %icmp2209}2210 2211define i1 @ICMP_CHAR_I_sgt(i8 %x) {2212; CHECK-LABEL: ICMP_CHAR_I_sgt:2213; CHECK: # %bb.0: # %entry2214; CHECK-NEXT: sextb16 a0, a02215; CHECK-NEXT: movi16 a1, 12216; CHECK-NEXT: cmplt16 a1, a02217; CHECK-NEXT: mvc32 a02218; CHECK-NEXT: rts162219;2220; GENERIC-LABEL: ICMP_CHAR_I_sgt:2221; GENERIC: # %bb.0: # %entry2222; GENERIC-NEXT: .cfi_def_cfa_offset 02223; GENERIC-NEXT: subi16 sp, sp, 42224; GENERIC-NEXT: .cfi_def_cfa_offset 42225; GENERIC-NEXT: sextb16 a1, a02226; GENERIC-NEXT: movi16 a0, 12227; GENERIC-NEXT: cmplt16 a0, a12228; GENERIC-NEXT: mvcv16 a12229; GENERIC-NEXT: subu16 a0, a12230; GENERIC-NEXT: addi16 sp, sp, 42231; GENERIC-NEXT: rts162232entry:2233 %icmp = icmp sgt i8 %x, 12234 ret i1 %icmp2235}2236 2237define i1 @ICMP_BIT_sgt(i1 %x, i1 %y) {2238; CHECK-LABEL: ICMP_BIT_sgt:2239; CHECK: # %bb.0: # %entry2240; CHECK-NEXT: xori32 a1, a1, 12241; CHECK-NEXT: and16 a0, a12242; CHECK-NEXT: rts162243;2244; GENERIC-LABEL: ICMP_BIT_sgt:2245; GENERIC: # %bb.0: # %entry2246; GENERIC-NEXT: .cfi_def_cfa_offset 02247; GENERIC-NEXT: subi16 sp, sp, 42248; GENERIC-NEXT: .cfi_def_cfa_offset 42249; GENERIC-NEXT: movi16 a2, 12250; GENERIC-NEXT: xor16 a2, a12251; GENERIC-NEXT: and16 a0, a22252; GENERIC-NEXT: addi16 sp, sp, 42253; GENERIC-NEXT: rts162254entry:2255 %icmp = icmp sgt i1 %y, %x2256 ret i1 %icmp2257}2258 2259define i1 @ICMP_BIT_I_sgt(i1 %x) {2260; CHECK-LABEL: ICMP_BIT_I_sgt:2261; CHECK: # %bb.0: # %entry2262; CHECK-NEXT: xori32 a0, a0, 12263; CHECK-NEXT: rts162264;2265; GENERIC-LABEL: ICMP_BIT_I_sgt:2266; GENERIC: # %bb.0: # %entry2267; GENERIC-NEXT: .cfi_def_cfa_offset 02268; GENERIC-NEXT: subi16 sp, sp, 42269; GENERIC-NEXT: .cfi_def_cfa_offset 42270; GENERIC-NEXT: movi16 a1, 12271; GENERIC-NEXT: xor16 a0, a12272; GENERIC-NEXT: addi16 sp, sp, 42273; GENERIC-NEXT: rts162274entry:2275 %icmp = icmp sgt i1 %x, 12276 ret i1 %icmp2277}2278 2279;sge2280define i1 @icmpRR_sge(i32 %x, i32 %y) {2281; CHECK-LABEL: icmpRR_sge:2282; CHECK: # %bb.0: # %entry2283; CHECK-NEXT: cmplt16 a1, a02284; CHECK-NEXT: mvcv16 a02285; CHECK-NEXT: rts162286;2287; GENERIC-LABEL: icmpRR_sge:2288; GENERIC: # %bb.0: # %entry2289; GENERIC-NEXT: .cfi_def_cfa_offset 02290; GENERIC-NEXT: subi16 sp, sp, 42291; GENERIC-NEXT: .cfi_def_cfa_offset 42292; GENERIC-NEXT: cmplt16 a1, a02293; GENERIC-NEXT: mvcv16 a02294; GENERIC-NEXT: addi16 sp, sp, 42295; GENERIC-NEXT: rts162296entry:2297 %icmp = icmp sge i32 %y, %x2298 ret i1 %icmp2299}2300 2301define i1 @icmpRI_sge(i32 %x) {2302; CHECK-LABEL: icmpRI_sge:2303; CHECK: # %bb.0: # %entry2304; CHECK-NEXT: movi16 a1, 92305; CHECK-NEXT: cmplt16 a1, a02306; CHECK-NEXT: mvc32 a02307; CHECK-NEXT: rts162308;2309; GENERIC-LABEL: icmpRI_sge:2310; GENERIC: # %bb.0: # %entry2311; GENERIC-NEXT: .cfi_def_cfa_offset 02312; GENERIC-NEXT: subi16 sp, sp, 42313; GENERIC-NEXT: .cfi_def_cfa_offset 42314; GENERIC-NEXT: movi16 a1, 92315; GENERIC-NEXT: cmplt16 a1, a02316; GENERIC-NEXT: mvcv16 a12317; GENERIC-NEXT: movi16 a0, 12318; GENERIC-NEXT: subu16 a0, a12319; GENERIC-NEXT: addi16 sp, sp, 42320; GENERIC-NEXT: rts162321entry:2322 %icmp = icmp sge i32 %x, 102323 ret i1 %icmp2324}2325 2326define i1 @icmpRI_X_sge(i32 %x) {2327; CHECK-LABEL: icmpRI_X_sge:2328; CHECK: # %bb.0: # %entry2329; CHECK-NEXT: movih32 a1, 622330; CHECK-NEXT: ori32 a1, a1, 337672331; CHECK-NEXT: cmplt16 a1, a02332; CHECK-NEXT: mvc32 a02333; CHECK-NEXT: rts162334;2335; GENERIC-LABEL: icmpRI_X_sge:2336; GENERIC: # %bb.0: # %entry2337; GENERIC-NEXT: .cfi_def_cfa_offset 02338; GENERIC-NEXT: subi16 sp, sp, 42339; GENERIC-NEXT: .cfi_def_cfa_offset 42340; GENERIC-NEXT: movi16 a1, 02341; GENERIC-NEXT: lsli16 a1, a1, 242342; GENERIC-NEXT: movi16 a2, 622343; GENERIC-NEXT: lsli16 a2, a2, 162344; GENERIC-NEXT: or16 a2, a12345; GENERIC-NEXT: movi16 a1, 1312346; GENERIC-NEXT: lsli16 a1, a1, 82347; GENERIC-NEXT: or16 a1, a22348; GENERIC-NEXT: movi16 a2, 2312349; GENERIC-NEXT: or16 a2, a12350; GENERIC-NEXT: cmplt16 a2, a02351; GENERIC-NEXT: mvcv16 a12352; GENERIC-NEXT: movi16 a0, 12353; GENERIC-NEXT: subu16 a0, a12354; GENERIC-NEXT: addi16 sp, sp, 42355; GENERIC-NEXT: rts162356entry:2357 %icmp = icmp sge i32 %x, 40970002358 ret i1 %icmp2359}2360 2361define i1 @ICMP_LONG_sge(i64 %x, i64 %y) {2362; CHECK-LABEL: ICMP_LONG_sge:2363; CHECK: # %bb.0: # %entry2364; CHECK-NEXT: .cfi_def_cfa_offset 02365; CHECK-NEXT: subi16 sp, sp, 122366; CHECK-NEXT: .cfi_def_cfa_offset 122367; CHECK-NEXT: cmphs16 a2, a02368; CHECK-NEXT: mvc32 a02369; CHECK-NEXT: st16.w a0, (sp, 4)2370; CHECK-NEXT: cmpne16 a3, a12371; CHECK-NEXT: mvc32 a02372; CHECK-NEXT: st16.w a0, (sp, 8)2373; CHECK-NEXT: cmplt16 a3, a12374; CHECK-NEXT: mvcv16 a02375; CHECK-NEXT: ld16.w a1, (sp, 4)2376; CHECK-NEXT: btsti16 a1, 02377; CHECK-NEXT: mvc32 a12378; CHECK-NEXT: ld16.w a2, (sp, 8)2379; CHECK-NEXT: btsti16 a2, 02380; CHECK-NEXT: movf32 a0, a12381; CHECK-NEXT: addi16 sp, sp, 122382; CHECK-NEXT: rts162383;2384; GENERIC-LABEL: ICMP_LONG_sge:2385; GENERIC: # %bb.0: # %entry2386; GENERIC-NEXT: .cfi_def_cfa_offset 02387; GENERIC-NEXT: subi16 sp, sp, 42388; GENERIC-NEXT: .cfi_def_cfa_offset 42389; GENERIC-NEXT: cmphs16 a2, a02390; GENERIC-NEXT: mvcv16 a22391; GENERIC-NEXT: cmplt16 a3, a12392; GENERIC-NEXT: mvcv16 a02393; GENERIC-NEXT: cmpne16 a3, a12394; GENERIC-NEXT: mvcv16 a12395; GENERIC-NEXT: btsti16 a1, 02396; GENERIC-NEXT: bf16 .LBB81_22397; GENERIC-NEXT: # %bb.1:2398; GENERIC-NEXT: movi16 a0, 12399; GENERIC-NEXT: subu16 a0, a22400; GENERIC-NEXT: .LBB81_2: # %entry2401; GENERIC-NEXT: addi16 sp, sp, 42402; GENERIC-NEXT: rts162403entry:2404 %icmp = icmp sge i64 %y, %x2405 ret i1 %icmp2406}2407 2408define i1 @ICMP_LONG_I_sge(i64 %x) {2409; CHECK-LABEL: ICMP_LONG_I_sge:2410; CHECK: # %bb.0: # %entry2411; CHECK-NEXT: .cfi_def_cfa_offset 02412; CHECK-NEXT: subi16 sp, sp, 162413; CHECK-NEXT: .cfi_def_cfa_offset 162414; CHECK-NEXT: movi16 a2, 02415; CHECK-NEXT: cmplt16 a2, a12416; CHECK-NEXT: mvc32 a22417; CHECK-NEXT: st16.w a2, (sp, 12)2418; CHECK-NEXT: cmpnei16 a0, 02419; CHECK-NEXT: mvc32 a02420; CHECK-NEXT: st16.w a0, (sp, 4)2421; CHECK-NEXT: cmpnei16 a1, 02422; CHECK-NEXT: mvc32 a02423; CHECK-NEXT: st16.w a0, (sp, 8)2424; CHECK-NEXT: ld16.w a0, (sp, 4)2425; CHECK-NEXT: btsti16 a0, 02426; CHECK-NEXT: mvc32 a12427; CHECK-NEXT: ld16.w a0, (sp, 12)2428; CHECK-NEXT: btsti16 a0, 02429; CHECK-NEXT: mvc32 a02430; CHECK-NEXT: ld16.w a2, (sp, 8)2431; CHECK-NEXT: btsti16 a2, 02432; CHECK-NEXT: movf32 a0, a12433; CHECK-NEXT: addi16 sp, sp, 162434; CHECK-NEXT: rts162435;2436; GENERIC-LABEL: ICMP_LONG_I_sge:2437; GENERIC: # %bb.0: # %entry2438; GENERIC-NEXT: .cfi_def_cfa_offset 02439; GENERIC-NEXT: subi16 sp, sp, 42440; GENERIC-NEXT: .cfi_def_cfa_offset 42441; GENERIC-NEXT: mov16 a2, a02442; GENERIC-NEXT: movi16 a0, 02443; GENERIC-NEXT: cmplt16 a0, a12444; GENERIC-NEXT: mvcv16 a32445; GENERIC-NEXT: movi16 a0, 12446; GENERIC-NEXT: cmpnei16 a2, 02447; GENERIC-NEXT: mvcv16 a22448; GENERIC-NEXT: cmpnei16 a1, 02449; GENERIC-NEXT: mvcv16 a12450; GENERIC-NEXT: btsti16 a1, 02451; GENERIC-NEXT: bt16 .LBB82_22452; GENERIC-NEXT: # %bb.1: # %entry2453; GENERIC-NEXT: subu16 a0, a32454; GENERIC-NEXT: addi16 sp, sp, 42455; GENERIC-NEXT: rts162456; GENERIC-NEXT: .LBB82_2:2457; GENERIC-NEXT: subu16 a0, a22458; GENERIC-NEXT: addi16 sp, sp, 42459; GENERIC-NEXT: rts162460entry:2461 %icmp = icmp sge i64 %x, 12462 ret i1 %icmp2463}2464 2465define i1 @ICMP_SHORT_sge(i16 %x, i16 %y) {2466; CHECK-LABEL: ICMP_SHORT_sge:2467; CHECK: # %bb.0: # %entry2468; CHECK-NEXT: sexth16 a0, a02469; CHECK-NEXT: sexth16 a1, a12470; CHECK-NEXT: cmplt16 a1, a02471; CHECK-NEXT: mvcv16 a02472; CHECK-NEXT: rts162473;2474; GENERIC-LABEL: ICMP_SHORT_sge:2475; GENERIC: # %bb.0: # %entry2476; GENERIC-NEXT: .cfi_def_cfa_offset 02477; GENERIC-NEXT: subi16 sp, sp, 42478; GENERIC-NEXT: .cfi_def_cfa_offset 42479; GENERIC-NEXT: sexth16 a0, a02480; GENERIC-NEXT: sexth16 a1, a12481; GENERIC-NEXT: cmplt16 a1, a02482; GENERIC-NEXT: mvcv16 a02483; GENERIC-NEXT: addi16 sp, sp, 42484; GENERIC-NEXT: rts162485entry:2486 %icmp = icmp sge i16 %y, %x2487 ret i1 %icmp2488}2489 2490define i1 @ICMP_SHORT_I_sge(i16 %x) {2491; CHECK-LABEL: ICMP_SHORT_I_sge:2492; CHECK: # %bb.0: # %entry2493; CHECK-NEXT: sexth16 a0, a02494; CHECK-NEXT: movi16 a1, 02495; CHECK-NEXT: cmplt16 a1, a02496; CHECK-NEXT: mvc32 a02497; CHECK-NEXT: rts162498;2499; GENERIC-LABEL: ICMP_SHORT_I_sge:2500; GENERIC: # %bb.0: # %entry2501; GENERIC-NEXT: .cfi_def_cfa_offset 02502; GENERIC-NEXT: subi16 sp, sp, 42503; GENERIC-NEXT: .cfi_def_cfa_offset 42504; GENERIC-NEXT: sexth16 a0, a02505; GENERIC-NEXT: movi16 a1, 02506; GENERIC-NEXT: cmplt16 a1, a02507; GENERIC-NEXT: mvcv16 a12508; GENERIC-NEXT: movi16 a0, 12509; GENERIC-NEXT: subu16 a0, a12510; GENERIC-NEXT: addi16 sp, sp, 42511; GENERIC-NEXT: rts162512entry:2513 %icmp = icmp sge i16 %x, 12514 ret i1 %icmp2515}2516 2517define i1 @ICMP_CHAR_sge(i8 %x, i8 %y) {2518; CHECK-LABEL: ICMP_CHAR_sge:2519; CHECK: # %bb.0: # %entry2520; CHECK-NEXT: sextb16 a0, a02521; CHECK-NEXT: sextb16 a1, a12522; CHECK-NEXT: cmplt16 a1, a02523; CHECK-NEXT: mvcv16 a02524; CHECK-NEXT: rts162525;2526; GENERIC-LABEL: ICMP_CHAR_sge:2527; GENERIC: # %bb.0: # %entry2528; GENERIC-NEXT: .cfi_def_cfa_offset 02529; GENERIC-NEXT: subi16 sp, sp, 42530; GENERIC-NEXT: .cfi_def_cfa_offset 42531; GENERIC-NEXT: sextb16 a0, a02532; GENERIC-NEXT: sextb16 a1, a12533; GENERIC-NEXT: cmplt16 a1, a02534; GENERIC-NEXT: mvcv16 a02535; GENERIC-NEXT: addi16 sp, sp, 42536; GENERIC-NEXT: rts162537entry:2538 %icmp = icmp sge i8 %y, %x2539 ret i1 %icmp2540}2541 2542define i1 @ICMP_CHAR_I_sge(i8 %x) {2543; CHECK-LABEL: ICMP_CHAR_I_sge:2544; CHECK: # %bb.0: # %entry2545; CHECK-NEXT: sextb16 a0, a02546; CHECK-NEXT: movi16 a1, 02547; CHECK-NEXT: cmplt16 a1, a02548; CHECK-NEXT: mvc32 a02549; CHECK-NEXT: rts162550;2551; GENERIC-LABEL: ICMP_CHAR_I_sge:2552; GENERIC: # %bb.0: # %entry2553; GENERIC-NEXT: .cfi_def_cfa_offset 02554; GENERIC-NEXT: subi16 sp, sp, 42555; GENERIC-NEXT: .cfi_def_cfa_offset 42556; GENERIC-NEXT: sextb16 a0, a02557; GENERIC-NEXT: movi16 a1, 02558; GENERIC-NEXT: cmplt16 a1, a02559; GENERIC-NEXT: mvcv16 a12560; GENERIC-NEXT: movi16 a0, 12561; GENERIC-NEXT: subu16 a0, a12562; GENERIC-NEXT: addi16 sp, sp, 42563; GENERIC-NEXT: rts162564entry:2565 %icmp = icmp sge i8 %x, 12566 ret i1 %icmp2567}2568 2569define i1 @ICMP_BIT_sge(i1 %x, i1 %y) {2570; CHECK-LABEL: ICMP_BIT_sge:2571; CHECK: # %bb.0: # %entry2572; CHECK-NEXT: xori32 a1, a1, 12573; CHECK-NEXT: or16 a0, a12574; CHECK-NEXT: rts162575;2576; GENERIC-LABEL: ICMP_BIT_sge:2577; GENERIC: # %bb.0: # %entry2578; GENERIC-NEXT: .cfi_def_cfa_offset 02579; GENERIC-NEXT: subi16 sp, sp, 42580; GENERIC-NEXT: .cfi_def_cfa_offset 42581; GENERIC-NEXT: movi16 a2, 12582; GENERIC-NEXT: xor16 a2, a12583; GENERIC-NEXT: or16 a0, a22584; GENERIC-NEXT: addi16 sp, sp, 42585; GENERIC-NEXT: rts162586entry:2587 %icmp = icmp sge i1 %y, %x2588 ret i1 %icmp2589}2590 2591define i1 @ICMP_BIT_I_sge(i1 %x) {2592; CHECK-LABEL: ICMP_BIT_I_sge:2593; CHECK: # %bb.0: # %entry2594; CHECK-NEXT: movi16 a0, 12595; CHECK-NEXT: rts162596;2597; GENERIC-LABEL: ICMP_BIT_I_sge:2598; GENERIC: # %bb.0: # %entry2599; GENERIC-NEXT: .cfi_def_cfa_offset 02600; GENERIC-NEXT: subi16 sp, sp, 42601; GENERIC-NEXT: .cfi_def_cfa_offset 42602; GENERIC-NEXT: movi16 a0, 12603; GENERIC-NEXT: addi16 sp, sp, 42604; GENERIC-NEXT: rts162605entry:2606 %icmp = icmp sge i1 %x, 12607 ret i1 %icmp2608}2609 2610;slt2611define i1 @icmpRR_slt(i32 %x, i32 %y) {2612; CHECK-LABEL: icmpRR_slt:2613; CHECK: # %bb.0: # %entry2614; CHECK-NEXT: cmplt16 a1, a02615; CHECK-NEXT: mvc32 a02616; CHECK-NEXT: rts162617;2618; GENERIC-LABEL: icmpRR_slt:2619; GENERIC: # %bb.0: # %entry2620; GENERIC-NEXT: .cfi_def_cfa_offset 02621; GENERIC-NEXT: subi16 sp, sp, 42622; GENERIC-NEXT: .cfi_def_cfa_offset 42623; GENERIC-NEXT: cmplt16 a1, a02624; GENERIC-NEXT: mvcv16 a12625; GENERIC-NEXT: movi16 a0, 12626; GENERIC-NEXT: subu16 a0, a12627; GENERIC-NEXT: addi16 sp, sp, 42628; GENERIC-NEXT: rts162629entry:2630 %icmp = icmp slt i32 %y, %x2631 ret i1 %icmp2632}2633 2634define i1 @icmpRI_slt(i32 %x) {2635; CHECK-LABEL: icmpRI_slt:2636; CHECK: # %bb.0: # %entry2637; CHECK-NEXT: cmplti16 a0, 102638; CHECK-NEXT: mvc32 a02639; CHECK-NEXT: rts162640;2641; GENERIC-LABEL: icmpRI_slt:2642; GENERIC: # %bb.0: # %entry2643; GENERIC-NEXT: .cfi_def_cfa_offset 02644; GENERIC-NEXT: subi16 sp, sp, 42645; GENERIC-NEXT: .cfi_def_cfa_offset 42646; GENERIC-NEXT: cmplti16 a0, 102647; GENERIC-NEXT: mvcv16 a12648; GENERIC-NEXT: movi16 a0, 12649; GENERIC-NEXT: subu16 a0, a12650; GENERIC-NEXT: addi16 sp, sp, 42651; GENERIC-NEXT: rts162652entry:2653 %icmp = icmp slt i32 %x, 102654 ret i1 %icmp2655}2656 2657define i1 @icmpRI_X_slt(i32 %x) {2658; CHECK-LABEL: icmpRI_X_slt:2659; CHECK: # %bb.0: # %entry2660; CHECK-NEXT: movih32 a1, 622661; CHECK-NEXT: ori32 a1, a1, 337682662; CHECK-NEXT: cmplt16 a0, a12663; CHECK-NEXT: mvc32 a02664; CHECK-NEXT: rts162665;2666; GENERIC-LABEL: icmpRI_X_slt:2667; GENERIC: # %bb.0: # %entry2668; GENERIC-NEXT: .cfi_def_cfa_offset 02669; GENERIC-NEXT: subi16 sp, sp, 42670; GENERIC-NEXT: .cfi_def_cfa_offset 42671; GENERIC-NEXT: movi16 a1, 02672; GENERIC-NEXT: lsli16 a1, a1, 242673; GENERIC-NEXT: movi16 a2, 622674; GENERIC-NEXT: lsli16 a2, a2, 162675; GENERIC-NEXT: or16 a2, a12676; GENERIC-NEXT: movi16 a1, 1312677; GENERIC-NEXT: lsli16 a1, a1, 82678; GENERIC-NEXT: or16 a1, a22679; GENERIC-NEXT: movi16 a2, 2322680; GENERIC-NEXT: or16 a2, a12681; GENERIC-NEXT: cmplt16 a0, a22682; GENERIC-NEXT: mvcv16 a12683; GENERIC-NEXT: movi16 a0, 12684; GENERIC-NEXT: subu16 a0, a12685; GENERIC-NEXT: addi16 sp, sp, 42686; GENERIC-NEXT: rts162687entry:2688 %icmp = icmp slt i32 %x, 40970002689 ret i1 %icmp2690}2691 2692define i1 @ICMP_LONG_slt(i64 %x, i64 %y) {2693; CHECK-LABEL: ICMP_LONG_slt:2694; CHECK: # %bb.0: # %entry2695; CHECK-NEXT: .cfi_def_cfa_offset 02696; CHECK-NEXT: subi16 sp, sp, 122697; CHECK-NEXT: .cfi_def_cfa_offset 122698; CHECK-NEXT: cmplt16 a3, a12699; CHECK-NEXT: mvc32 t02700; CHECK-NEXT: st32.w t0, (sp, 4)2701; CHECK-NEXT: cmpne16 a3, a12702; CHECK-NEXT: mvc32 a12703; CHECK-NEXT: st16.w a1, (sp, 8)2704; CHECK-NEXT: cmphs16 a2, a02705; CHECK-NEXT: mvcv16 a12706; CHECK-NEXT: ld16.w a0, (sp, 4)2707; CHECK-NEXT: btsti16 a0, 02708; CHECK-NEXT: mvc32 a02709; CHECK-NEXT: ld16.w a2, (sp, 8)2710; CHECK-NEXT: btsti16 a2, 02711; CHECK-NEXT: movf32 a0, a12712; CHECK-NEXT: addi16 sp, sp, 122713; CHECK-NEXT: rts162714;2715; GENERIC-LABEL: ICMP_LONG_slt:2716; GENERIC: # %bb.0: # %entry2717; GENERIC-NEXT: subi16 sp, sp, 42718; GENERIC-NEXT: .cfi_def_cfa_offset 42719; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill2720; GENERIC-NEXT: .cfi_offset l0, -42721; GENERIC-NEXT: subi16 sp, sp, 42722; GENERIC-NEXT: .cfi_def_cfa_offset 82723; GENERIC-NEXT: cmplt16 a3, a12724; GENERIC-NEXT: mvcv16 l02725; GENERIC-NEXT: cmphs16 a2, a02726; GENERIC-NEXT: mvcv16 a02727; GENERIC-NEXT: cmpne16 a3, a12728; GENERIC-NEXT: mvcv16 a12729; GENERIC-NEXT: btsti16 a1, 02730; GENERIC-NEXT: bt16 .LBB92_22731; GENERIC-NEXT: # %bb.1: # %entry2732; GENERIC-NEXT: movi16 a0, 12733; GENERIC-NEXT: subu16 a0, l02734; GENERIC-NEXT: .LBB92_2: # %entry2735; GENERIC-NEXT: addi16 sp, sp, 42736; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload2737; GENERIC-NEXT: addi16 sp, sp, 42738; GENERIC-NEXT: rts162739entry:2740 %icmp = icmp slt i64 %y, %x2741 ret i1 %icmp2742}2743 2744define i1 @ICMP_LONG_I_slt(i64 %x) {2745; CHECK-LABEL: ICMP_LONG_I_slt:2746; CHECK: # %bb.0: # %entry2747; CHECK-NEXT: .cfi_def_cfa_offset 02748; CHECK-NEXT: subi16 sp, sp, 122749; CHECK-NEXT: .cfi_def_cfa_offset 122750; CHECK-NEXT: movi16 a2, 02751; CHECK-NEXT: cmplt16 a1, a22752; CHECK-NEXT: mvc32 a22753; CHECK-NEXT: st16.w a2, (sp, 4)2754; CHECK-NEXT: cmpnei16 a1, 02755; CHECK-NEXT: mvc32 a12756; CHECK-NEXT: st16.w a1, (sp, 8)2757; CHECK-NEXT: cmpnei16 a0, 02758; CHECK-NEXT: mvcv16 a12759; CHECK-NEXT: ld16.w a0, (sp, 4)2760; CHECK-NEXT: btsti16 a0, 02761; CHECK-NEXT: mvc32 a02762; CHECK-NEXT: ld16.w a2, (sp, 8)2763; CHECK-NEXT: btsti16 a2, 02764; CHECK-NEXT: movf32 a0, a12765; CHECK-NEXT: addi16 sp, sp, 122766; CHECK-NEXT: rts162767;2768; GENERIC-LABEL: ICMP_LONG_I_slt:2769; GENERIC: # %bb.0: # %entry2770; GENERIC-NEXT: .cfi_def_cfa_offset 02771; GENERIC-NEXT: subi16 sp, sp, 42772; GENERIC-NEXT: .cfi_def_cfa_offset 42773; GENERIC-NEXT: movi16 a2, 02774; GENERIC-NEXT: cmplt16 a1, a22775; GENERIC-NEXT: mvcv16 a22776; GENERIC-NEXT: cmpnei16 a0, 02777; GENERIC-NEXT: mvcv16 a02778; GENERIC-NEXT: cmpnei16 a1, 02779; GENERIC-NEXT: mvcv16 a12780; GENERIC-NEXT: btsti16 a1, 02781; GENERIC-NEXT: bt16 .LBB93_22782; GENERIC-NEXT: # %bb.1: # %entry2783; GENERIC-NEXT: movi16 a0, 12784; GENERIC-NEXT: subu16 a0, a22785; GENERIC-NEXT: .LBB93_2: # %entry2786; GENERIC-NEXT: addi16 sp, sp, 42787; GENERIC-NEXT: rts162788entry:2789 %icmp = icmp slt i64 %x, 12790 ret i1 %icmp2791}2792 2793define i1 @ICMP_SHORT_slt(i16 %x, i16 %y) {2794; CHECK-LABEL: ICMP_SHORT_slt:2795; CHECK: # %bb.0: # %entry2796; CHECK-NEXT: sexth16 a0, a02797; CHECK-NEXT: sexth16 a1, a12798; CHECK-NEXT: cmplt16 a1, a02799; CHECK-NEXT: mvc32 a02800; CHECK-NEXT: rts162801;2802; GENERIC-LABEL: ICMP_SHORT_slt:2803; GENERIC: # %bb.0: # %entry2804; GENERIC-NEXT: .cfi_def_cfa_offset 02805; GENERIC-NEXT: subi16 sp, sp, 42806; GENERIC-NEXT: .cfi_def_cfa_offset 42807; GENERIC-NEXT: sexth16 a0, a02808; GENERIC-NEXT: sexth16 a1, a12809; GENERIC-NEXT: cmplt16 a1, a02810; GENERIC-NEXT: mvcv16 a12811; GENERIC-NEXT: movi16 a0, 12812; GENERIC-NEXT: subu16 a0, a12813; GENERIC-NEXT: addi16 sp, sp, 42814; GENERIC-NEXT: rts162815entry:2816 %icmp = icmp slt i16 %y, %x2817 ret i1 %icmp2818}2819 2820define i1 @ICMP_SHORT_I_slt(i16 %x) {2821; CHECK-LABEL: ICMP_SHORT_I_slt:2822; CHECK: # %bb.0: # %entry2823; CHECK-NEXT: sexth16 a0, a02824; CHECK-NEXT: cmplti16 a0, 12825; CHECK-NEXT: mvc32 a02826; CHECK-NEXT: rts162827;2828; GENERIC-LABEL: ICMP_SHORT_I_slt:2829; GENERIC: # %bb.0: # %entry2830; GENERIC-NEXT: .cfi_def_cfa_offset 02831; GENERIC-NEXT: subi16 sp, sp, 42832; GENERIC-NEXT: .cfi_def_cfa_offset 42833; GENERIC-NEXT: sexth16 a0, a02834; GENERIC-NEXT: cmplti16 a0, 12835; GENERIC-NEXT: mvcv16 a12836; GENERIC-NEXT: movi16 a0, 12837; GENERIC-NEXT: subu16 a0, a12838; GENERIC-NEXT: addi16 sp, sp, 42839; GENERIC-NEXT: rts162840entry:2841 %icmp = icmp slt i16 %x, 12842 ret i1 %icmp2843}2844 2845define i1 @ICMP_CHAR_slt(i8 %x, i8 %y) {2846; CHECK-LABEL: ICMP_CHAR_slt:2847; CHECK: # %bb.0: # %entry2848; CHECK-NEXT: sextb16 a0, a02849; CHECK-NEXT: sextb16 a1, a12850; CHECK-NEXT: cmplt16 a1, a02851; CHECK-NEXT: mvc32 a02852; CHECK-NEXT: rts162853;2854; GENERIC-LABEL: ICMP_CHAR_slt:2855; GENERIC: # %bb.0: # %entry2856; GENERIC-NEXT: .cfi_def_cfa_offset 02857; GENERIC-NEXT: subi16 sp, sp, 42858; GENERIC-NEXT: .cfi_def_cfa_offset 42859; GENERIC-NEXT: sextb16 a0, a02860; GENERIC-NEXT: sextb16 a1, a12861; GENERIC-NEXT: cmplt16 a1, a02862; GENERIC-NEXT: mvcv16 a12863; GENERIC-NEXT: movi16 a0, 12864; GENERIC-NEXT: subu16 a0, a12865; GENERIC-NEXT: addi16 sp, sp, 42866; GENERIC-NEXT: rts162867entry:2868 %icmp = icmp slt i8 %y, %x2869 ret i1 %icmp2870}2871 2872define i1 @ICMP_CHAR_I_slt(i8 %x) {2873; CHECK-LABEL: ICMP_CHAR_I_slt:2874; CHECK: # %bb.0: # %entry2875; CHECK-NEXT: sextb16 a0, a02876; CHECK-NEXT: cmplti16 a0, 12877; CHECK-NEXT: mvc32 a02878; CHECK-NEXT: rts162879;2880; GENERIC-LABEL: ICMP_CHAR_I_slt:2881; GENERIC: # %bb.0: # %entry2882; GENERIC-NEXT: .cfi_def_cfa_offset 02883; GENERIC-NEXT: subi16 sp, sp, 42884; GENERIC-NEXT: .cfi_def_cfa_offset 42885; GENERIC-NEXT: sextb16 a0, a02886; GENERIC-NEXT: cmplti16 a0, 12887; GENERIC-NEXT: mvcv16 a12888; GENERIC-NEXT: movi16 a0, 12889; GENERIC-NEXT: subu16 a0, a12890; GENERIC-NEXT: addi16 sp, sp, 42891; GENERIC-NEXT: rts162892entry:2893 %icmp = icmp slt i8 %x, 12894 ret i1 %icmp2895}2896 2897define i1 @ICMP_BIT_slt(i1 %x, i1 %y) {2898; CHECK-LABEL: ICMP_BIT_slt:2899; CHECK: # %bb.0: # %entry2900; CHECK-NEXT: xori32 a0, a0, 12901; CHECK-NEXT: and16 a0, a12902; CHECK-NEXT: rts162903;2904; GENERIC-LABEL: ICMP_BIT_slt:2905; GENERIC: # %bb.0: # %entry2906; GENERIC-NEXT: .cfi_def_cfa_offset 02907; GENERIC-NEXT: subi16 sp, sp, 42908; GENERIC-NEXT: .cfi_def_cfa_offset 42909; GENERIC-NEXT: movi16 a2, 12910; GENERIC-NEXT: xor16 a0, a22911; GENERIC-NEXT: and16 a0, a12912; GENERIC-NEXT: addi16 sp, sp, 42913; GENERIC-NEXT: rts162914entry:2915 %icmp = icmp slt i1 %y, %x2916 ret i1 %icmp2917}2918 2919define i1 @ICMP_BIT_I_slt(i1 %x) {2920; CHECK-LABEL: ICMP_BIT_I_slt:2921; CHECK: # %bb.0: # %entry2922; CHECK-NEXT: movi16 a0, 02923; CHECK-NEXT: rts162924;2925; GENERIC-LABEL: ICMP_BIT_I_slt:2926; GENERIC: # %bb.0: # %entry2927; GENERIC-NEXT: .cfi_def_cfa_offset 02928; GENERIC-NEXT: subi16 sp, sp, 42929; GENERIC-NEXT: .cfi_def_cfa_offset 42930; GENERIC-NEXT: movi16 a0, 02931; GENERIC-NEXT: addi16 sp, sp, 42932; GENERIC-NEXT: rts162933entry:2934 %icmp = icmp slt i1 %x, 12935 ret i1 %icmp2936}2937 2938 2939;sle2940define i1 @icmpRR_sle(i32 %x, i32 %y) {2941; CHECK-LABEL: icmpRR_sle:2942; CHECK: # %bb.0: # %entry2943; CHECK-NEXT: cmplt16 a0, a12944; CHECK-NEXT: mvcv16 a02945; CHECK-NEXT: rts162946;2947; GENERIC-LABEL: icmpRR_sle:2948; GENERIC: # %bb.0: # %entry2949; GENERIC-NEXT: .cfi_def_cfa_offset 02950; GENERIC-NEXT: subi16 sp, sp, 42951; GENERIC-NEXT: .cfi_def_cfa_offset 42952; GENERIC-NEXT: cmplt16 a0, a12953; GENERIC-NEXT: mvcv16 a02954; GENERIC-NEXT: addi16 sp, sp, 42955; GENERIC-NEXT: rts162956entry:2957 %icmp = icmp sle i32 %y, %x2958 ret i1 %icmp2959}2960 2961define i1 @icmpRI_sle(i32 %x) {2962; CHECK-LABEL: icmpRI_sle:2963; CHECK: # %bb.0: # %entry2964; CHECK-NEXT: cmplti16 a0, 112965; CHECK-NEXT: mvc32 a02966; CHECK-NEXT: rts162967;2968; GENERIC-LABEL: icmpRI_sle:2969; GENERIC: # %bb.0: # %entry2970; GENERIC-NEXT: .cfi_def_cfa_offset 02971; GENERIC-NEXT: subi16 sp, sp, 42972; GENERIC-NEXT: .cfi_def_cfa_offset 42973; GENERIC-NEXT: cmplti16 a0, 112974; GENERIC-NEXT: mvcv16 a12975; GENERIC-NEXT: movi16 a0, 12976; GENERIC-NEXT: subu16 a0, a12977; GENERIC-NEXT: addi16 sp, sp, 42978; GENERIC-NEXT: rts162979entry:2980 %icmp = icmp sle i32 %x, 102981 ret i1 %icmp2982}2983 2984define i1 @icmpRI_X_sle(i32 %x) {2985; CHECK-LABEL: icmpRI_X_sle:2986; CHECK: # %bb.0: # %entry2987; CHECK-NEXT: movih32 a1, 622988; CHECK-NEXT: ori32 a1, a1, 337692989; CHECK-NEXT: cmplt16 a0, a12990; CHECK-NEXT: mvc32 a02991; CHECK-NEXT: rts162992;2993; GENERIC-LABEL: icmpRI_X_sle:2994; GENERIC: # %bb.0: # %entry2995; GENERIC-NEXT: .cfi_def_cfa_offset 02996; GENERIC-NEXT: subi16 sp, sp, 42997; GENERIC-NEXT: .cfi_def_cfa_offset 42998; GENERIC-NEXT: movi16 a1, 02999; GENERIC-NEXT: lsli16 a1, a1, 243000; GENERIC-NEXT: movi16 a2, 623001; GENERIC-NEXT: lsli16 a2, a2, 163002; GENERIC-NEXT: or16 a2, a13003; GENERIC-NEXT: movi16 a1, 1313004; GENERIC-NEXT: lsli16 a1, a1, 83005; GENERIC-NEXT: or16 a1, a23006; GENERIC-NEXT: movi16 a2, 2333007; GENERIC-NEXT: or16 a2, a13008; GENERIC-NEXT: cmplt16 a0, a23009; GENERIC-NEXT: mvcv16 a13010; GENERIC-NEXT: movi16 a0, 13011; GENERIC-NEXT: subu16 a0, a13012; GENERIC-NEXT: addi16 sp, sp, 43013; GENERIC-NEXT: rts163014entry:3015 %icmp = icmp sle i32 %x, 40970003016 ret i1 %icmp3017}3018 3019define i1 @ICMP_LONG_sle(i64 %x, i64 %y) {3020; CHECK-LABEL: ICMP_LONG_sle:3021; CHECK: # %bb.0: # %entry3022; CHECK-NEXT: .cfi_def_cfa_offset 03023; CHECK-NEXT: subi16 sp, sp, 123024; CHECK-NEXT: .cfi_def_cfa_offset 123025; CHECK-NEXT: cmphs16 a0, a23026; CHECK-NEXT: mvc32 a03027; CHECK-NEXT: st16.w a0, (sp, 4)3028; CHECK-NEXT: cmpne16 a3, a13029; CHECK-NEXT: mvc32 a03030; CHECK-NEXT: st16.w a0, (sp, 8)3031; CHECK-NEXT: cmplt16 a1, a33032; CHECK-NEXT: mvcv16 a03033; CHECK-NEXT: ld16.w a1, (sp, 4)3034; CHECK-NEXT: btsti16 a1, 03035; CHECK-NEXT: mvc32 a13036; CHECK-NEXT: ld16.w a2, (sp, 8)3037; CHECK-NEXT: btsti16 a2, 03038; CHECK-NEXT: movf32 a0, a13039; CHECK-NEXT: addi16 sp, sp, 123040; CHECK-NEXT: rts163041;3042; GENERIC-LABEL: ICMP_LONG_sle:3043; GENERIC: # %bb.0: # %entry3044; GENERIC-NEXT: .cfi_def_cfa_offset 03045; GENERIC-NEXT: subi16 sp, sp, 43046; GENERIC-NEXT: .cfi_def_cfa_offset 43047; GENERIC-NEXT: cmphs16 a0, a23048; GENERIC-NEXT: mvcv16 a23049; GENERIC-NEXT: cmplt16 a1, a33050; GENERIC-NEXT: mvcv16 a03051; GENERIC-NEXT: cmpne16 a3, a13052; GENERIC-NEXT: mvcv16 a13053; GENERIC-NEXT: btsti16 a1, 03054; GENERIC-NEXT: bf16 .LBB103_23055; GENERIC-NEXT: # %bb.1:3056; GENERIC-NEXT: movi16 a0, 13057; GENERIC-NEXT: subu16 a0, a23058; GENERIC-NEXT: .LBB103_2: # %entry3059; GENERIC-NEXT: addi16 sp, sp, 43060; GENERIC-NEXT: rts163061entry:3062 %icmp = icmp sle i64 %y, %x3063 ret i1 %icmp3064}3065 3066define i1 @ICMP_LONG_I_sle(i64 %x) {3067; CHECK-LABEL: ICMP_LONG_I_sle:3068; CHECK: # %bb.0: # %entry3069; CHECK-NEXT: .cfi_def_cfa_offset 03070; CHECK-NEXT: subi16 sp, sp, 123071; CHECK-NEXT: .cfi_def_cfa_offset 123072; CHECK-NEXT: movi16 a2, 03073; CHECK-NEXT: cmplt16 a1, a23074; CHECK-NEXT: mvc32 a23075; CHECK-NEXT: st16.w a2, (sp, 4)3076; CHECK-NEXT: cmpnei16 a1, 03077; CHECK-NEXT: mvc32 a13078; CHECK-NEXT: st16.w a1, (sp, 8)3079; CHECK-NEXT: cmphsi16 a0, 23080; CHECK-NEXT: mvcv16 a13081; CHECK-NEXT: ld16.w a0, (sp, 4)3082; CHECK-NEXT: btsti16 a0, 03083; CHECK-NEXT: mvc32 a03084; CHECK-NEXT: ld16.w a2, (sp, 8)3085; CHECK-NEXT: btsti16 a2, 03086; CHECK-NEXT: movf32 a0, a13087; CHECK-NEXT: addi16 sp, sp, 123088; CHECK-NEXT: rts163089;3090; GENERIC-LABEL: ICMP_LONG_I_sle:3091; GENERIC: # %bb.0: # %entry3092; GENERIC-NEXT: .cfi_def_cfa_offset 03093; GENERIC-NEXT: subi16 sp, sp, 43094; GENERIC-NEXT: .cfi_def_cfa_offset 43095; GENERIC-NEXT: movi16 a2, 03096; GENERIC-NEXT: cmplt16 a1, a23097; GENERIC-NEXT: mvcv16 a23098; GENERIC-NEXT: cmphsi16 a0, 23099; GENERIC-NEXT: mvcv16 a03100; GENERIC-NEXT: cmpnei16 a1, 03101; GENERIC-NEXT: mvcv16 a13102; GENERIC-NEXT: btsti16 a1, 03103; GENERIC-NEXT: bt16 .LBB104_23104; GENERIC-NEXT: # %bb.1: # %entry3105; GENERIC-NEXT: movi16 a0, 13106; GENERIC-NEXT: subu16 a0, a23107; GENERIC-NEXT: .LBB104_2: # %entry3108; GENERIC-NEXT: addi16 sp, sp, 43109; GENERIC-NEXT: rts163110entry:3111 %icmp = icmp sle i64 %x, 13112 ret i1 %icmp3113}3114 3115define i1 @ICMP_SHORT_sle(i16 %x, i16 %y) {3116; CHECK-LABEL: ICMP_SHORT_sle:3117; CHECK: # %bb.0: # %entry3118; CHECK-NEXT: sexth16 a1, a13119; CHECK-NEXT: sexth16 a0, a03120; CHECK-NEXT: cmplt16 a0, a13121; CHECK-NEXT: mvcv16 a03122; CHECK-NEXT: rts163123;3124; GENERIC-LABEL: ICMP_SHORT_sle:3125; GENERIC: # %bb.0: # %entry3126; GENERIC-NEXT: .cfi_def_cfa_offset 03127; GENERIC-NEXT: subi16 sp, sp, 43128; GENERIC-NEXT: .cfi_def_cfa_offset 43129; GENERIC-NEXT: sexth16 a1, a13130; GENERIC-NEXT: sexth16 a0, a03131; GENERIC-NEXT: cmplt16 a0, a13132; GENERIC-NEXT: mvcv16 a03133; GENERIC-NEXT: addi16 sp, sp, 43134; GENERIC-NEXT: rts163135entry:3136 %icmp = icmp sle i16 %y, %x3137 ret i1 %icmp3138}3139 3140define i1 @ICMP_SHORT_I_sle(i16 %x) {3141; CHECK-LABEL: ICMP_SHORT_I_sle:3142; CHECK: # %bb.0: # %entry3143; CHECK-NEXT: sexth16 a0, a03144; CHECK-NEXT: cmplti16 a0, 23145; CHECK-NEXT: mvc32 a03146; CHECK-NEXT: rts163147;3148; GENERIC-LABEL: ICMP_SHORT_I_sle:3149; GENERIC: # %bb.0: # %entry3150; GENERIC-NEXT: .cfi_def_cfa_offset 03151; GENERIC-NEXT: subi16 sp, sp, 43152; GENERIC-NEXT: .cfi_def_cfa_offset 43153; GENERIC-NEXT: sexth16 a0, a03154; GENERIC-NEXT: cmplti16 a0, 23155; GENERIC-NEXT: mvcv16 a13156; GENERIC-NEXT: movi16 a0, 13157; GENERIC-NEXT: subu16 a0, a13158; GENERIC-NEXT: addi16 sp, sp, 43159; GENERIC-NEXT: rts163160entry:3161 %icmp = icmp sle i16 %x, 13162 ret i1 %icmp3163}3164 3165define i1 @ICMP_CHAR_sle(i8 %x, i8 %y) {3166; CHECK-LABEL: ICMP_CHAR_sle:3167; CHECK: # %bb.0: # %entry3168; CHECK-NEXT: sextb16 a1, a13169; CHECK-NEXT: sextb16 a0, a03170; CHECK-NEXT: cmplt16 a0, a13171; CHECK-NEXT: mvcv16 a03172; CHECK-NEXT: rts163173;3174; GENERIC-LABEL: ICMP_CHAR_sle:3175; GENERIC: # %bb.0: # %entry3176; GENERIC-NEXT: .cfi_def_cfa_offset 03177; GENERIC-NEXT: subi16 sp, sp, 43178; GENERIC-NEXT: .cfi_def_cfa_offset 43179; GENERIC-NEXT: sextb16 a1, a13180; GENERIC-NEXT: sextb16 a0, a03181; GENERIC-NEXT: cmplt16 a0, a13182; GENERIC-NEXT: mvcv16 a03183; GENERIC-NEXT: addi16 sp, sp, 43184; GENERIC-NEXT: rts163185entry:3186 %icmp = icmp sle i8 %y, %x3187 ret i1 %icmp3188}3189 3190define i1 @ICMP_CHAR_I_sle(i8 %x) {3191; CHECK-LABEL: ICMP_CHAR_I_sle:3192; CHECK: # %bb.0: # %entry3193; CHECK-NEXT: sextb16 a0, a03194; CHECK-NEXT: cmplti16 a0, 23195; CHECK-NEXT: mvc32 a03196; CHECK-NEXT: rts163197;3198; GENERIC-LABEL: ICMP_CHAR_I_sle:3199; GENERIC: # %bb.0: # %entry3200; GENERIC-NEXT: .cfi_def_cfa_offset 03201; GENERIC-NEXT: subi16 sp, sp, 43202; GENERIC-NEXT: .cfi_def_cfa_offset 43203; GENERIC-NEXT: sextb16 a0, a03204; GENERIC-NEXT: cmplti16 a0, 23205; GENERIC-NEXT: mvcv16 a13206; GENERIC-NEXT: movi16 a0, 13207; GENERIC-NEXT: subu16 a0, a13208; GENERIC-NEXT: addi16 sp, sp, 43209; GENERIC-NEXT: rts163210entry:3211 %icmp = icmp sle i8 %x, 13212 ret i1 %icmp3213}3214 3215define i1 @ICMP_BIT_sle(i1 %x, i1 %y) {3216; CHECK-LABEL: ICMP_BIT_sle:3217; CHECK: # %bb.0: # %entry3218; CHECK-NEXT: xori32 a0, a0, 13219; CHECK-NEXT: or16 a0, a13220; CHECK-NEXT: rts163221;3222; GENERIC-LABEL: ICMP_BIT_sle:3223; GENERIC: # %bb.0: # %entry3224; GENERIC-NEXT: .cfi_def_cfa_offset 03225; GENERIC-NEXT: subi16 sp, sp, 43226; GENERIC-NEXT: .cfi_def_cfa_offset 43227; GENERIC-NEXT: movi16 a2, 13228; GENERIC-NEXT: xor16 a0, a23229; GENERIC-NEXT: or16 a0, a13230; GENERIC-NEXT: addi16 sp, sp, 43231; GENERIC-NEXT: rts163232entry:3233 %icmp = icmp sle i1 %y, %x3234 ret i1 %icmp3235}3236 3237define i1 @ICMP_BIT_I_sle(i1 %x) {3238; CHECK-LABEL: ICMP_BIT_I_sle:3239; CHECK: # %bb.0: # %entry3240; CHECK-NEXT: rts163241;3242; GENERIC-LABEL: ICMP_BIT_I_sle:3243; GENERIC: # %bb.0: # %entry3244; GENERIC-NEXT: .cfi_def_cfa_offset 03245; GENERIC-NEXT: subi16 sp, sp, 43246; GENERIC-NEXT: .cfi_def_cfa_offset 43247; GENERIC-NEXT: addi16 sp, sp, 43248; GENERIC-NEXT: rts163249entry:3250 %icmp = icmp sle i1 %x, 13251 ret i1 %icmp3252}3253