8370 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 5define i32 @selectRR_eq_i32(i32 %x, i32 %y, i32 %n, i32 %m) {6; CHECK-LABEL: selectRR_eq_i32:7; CHECK: # %bb.0: # %entry8; CHECK-NEXT: cmpne16 a1, a09; CHECK-NEXT: movf32 a2, a310; CHECK-NEXT: mov16 a0, a211; CHECK-NEXT: rts1612;13; GENERIC-LABEL: selectRR_eq_i32: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: btsti16 a0, 021; GENERIC-NEXT: bt16 .LBB0_222; GENERIC-NEXT: # %bb.1: # %entry23; GENERIC-NEXT: mov16 a3, a224; GENERIC-NEXT: .LBB0_2: # %entry25; GENERIC-NEXT: mov16 a0, a326; GENERIC-NEXT: addi16 sp, sp, 427; GENERIC-NEXT: rts1628entry:29 %icmp = icmp eq i32 %y, %x30 %ret = select i1 %icmp, i32 %m, i32 %n31 ret i32 %ret32}33 34define i32 @selectRI_eq_i32(i32 %x, i32 %n, i32 %m) {35; CHECK-LABEL: selectRI_eq_i32:36; CHECK: # %bb.0: # %entry37; CHECK-NEXT: cmpnei16 a0, 1038; CHECK-NEXT: movf32 a1, a239; CHECK-NEXT: mov16 a0, a140; CHECK-NEXT: rts1641;42; GENERIC-LABEL: selectRI_eq_i32:43; GENERIC: # %bb.0: # %entry44; GENERIC-NEXT: .cfi_def_cfa_offset 045; GENERIC-NEXT: subi16 sp, sp, 446; GENERIC-NEXT: .cfi_def_cfa_offset 447; GENERIC-NEXT: cmpnei16 a0, 1048; GENERIC-NEXT: mvcv16 a049; GENERIC-NEXT: btsti16 a0, 050; GENERIC-NEXT: bt16 .LBB1_251; GENERIC-NEXT: # %bb.1: # %entry52; GENERIC-NEXT: mov16 a2, a153; GENERIC-NEXT: .LBB1_2: # %entry54; GENERIC-NEXT: mov16 a0, a255; GENERIC-NEXT: addi16 sp, sp, 456; GENERIC-NEXT: rts1657entry:58 %icmp = icmp eq i32 %x, 1059 %ret = select i1 %icmp, i32 %m, i32 %n60 ret i32 %ret61}62 63define i32 @selectRX_eq_i32(i32 %x, i32 %n, i32 %m) {64; CHECK-LABEL: selectRX_eq_i32:65; CHECK: # %bb.0: # %entry66; CHECK-NEXT: movih32 a3, 72967; CHECK-NEXT: ori32 a3, a3, 203368; CHECK-NEXT: cmpne16 a0, a369; CHECK-NEXT: movf32 a1, a270; CHECK-NEXT: mov16 a0, a171; CHECK-NEXT: rts1672;73; GENERIC-LABEL: selectRX_eq_i32:74; GENERIC: # %bb.0: # %entry75; GENERIC-NEXT: subi16 sp, sp, 476; GENERIC-NEXT: .cfi_def_cfa_offset 477; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill78; GENERIC-NEXT: .cfi_offset l0, -479; GENERIC-NEXT: subi16 sp, sp, 480; GENERIC-NEXT: .cfi_def_cfa_offset 881; GENERIC-NEXT: movi16 a3, 282; GENERIC-NEXT: lsli16 a3, a3, 2483; GENERIC-NEXT: movi16 l0, 21784; GENERIC-NEXT: lsli16 l0, l0, 1685; GENERIC-NEXT: or16 l0, a386; GENERIC-NEXT: movi16 a3, 787; GENERIC-NEXT: lsli16 a3, a3, 888; GENERIC-NEXT: or16 a3, l089; GENERIC-NEXT: movi16 l0, 24190; GENERIC-NEXT: or16 l0, a391; GENERIC-NEXT: cmpne16 a0, l092; GENERIC-NEXT: mvcv16 a093; GENERIC-NEXT: btsti16 a0, 094; GENERIC-NEXT: bt16 .LBB2_295; GENERIC-NEXT: # %bb.1: # %entry96; GENERIC-NEXT: mov16 a2, a197; GENERIC-NEXT: .LBB2_2: # %entry98; GENERIC-NEXT: mov16 a0, a299; GENERIC-NEXT: addi16 sp, sp, 4100; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload101; GENERIC-NEXT: addi16 sp, sp, 4102; GENERIC-NEXT: rts16103entry:104 %icmp = icmp eq i32 %x, 47777777105 %ret = select i1 %icmp, i32 %m, i32 %n106 ret i32 %ret107}108 109define i32 @selectC_eq_i32(i1 %c, i32 %n, i32 %m) {110; CHECK-LABEL: selectC_eq_i32:111; CHECK: # %bb.0: # %entry112; CHECK-NEXT: btsti16 a0, 0113; CHECK-NEXT: movt32 a1, a2114; CHECK-NEXT: mov16 a0, a1115; CHECK-NEXT: rts16116;117; GENERIC-LABEL: selectC_eq_i32:118; GENERIC: # %bb.0: # %entry119; GENERIC-NEXT: .cfi_def_cfa_offset 0120; GENERIC-NEXT: subi16 sp, sp, 4121; GENERIC-NEXT: .cfi_def_cfa_offset 4122; GENERIC-NEXT: btsti16 a0, 0123; GENERIC-NEXT: bt16 .LBB3_2124; GENERIC-NEXT: # %bb.1: # %entry125; GENERIC-NEXT: mov16 a2, a1126; GENERIC-NEXT: .LBB3_2: # %entry127; GENERIC-NEXT: mov16 a0, a2128; GENERIC-NEXT: addi16 sp, sp, 4129; GENERIC-NEXT: rts16130entry:131 %ret = select i1 %c, i32 %m, i32 %n132 ret i32 %ret133}134 135define i32 @selectRI_0_if_true(i1 %c, i32 %q) {136; CHECK-LABEL: selectRI_0_if_true:137; CHECK: # %bb.0:138; CHECK-NEXT: btsti16 a0, 0139; CHECK-NEXT: clrt32 a1140; CHECK-NEXT: mov16 a0, a1141; CHECK-NEXT: rts16142;143; GENERIC-LABEL: selectRI_0_if_true:144; GENERIC: # %bb.0:145; GENERIC-NEXT: .cfi_def_cfa_offset 0146; GENERIC-NEXT: subi16 sp, sp, 4147; GENERIC-NEXT: .cfi_def_cfa_offset 4148; GENERIC-NEXT: mov16 a2, a0149; GENERIC-NEXT: movi16 a0, 0150; GENERIC-NEXT: btsti16 a2, 0151; GENERIC-NEXT: bt16 .LBB4_2152; GENERIC-NEXT: # %bb.1:153; GENERIC-NEXT: mov16 a0, a1154; GENERIC-NEXT: .LBB4_2:155; GENERIC-NEXT: addi16 sp, sp, 4156; GENERIC-NEXT: rts16157 %ret = select i1 %c, i32 0, i32 %q158 ret i32 %ret159}160 161define i32 @selectRI_0_if_false(i1 %c, i32 %q) {162; CHECK-LABEL: selectRI_0_if_false:163; CHECK: # %bb.0:164; CHECK-NEXT: btsti16 a0, 0165; CHECK-NEXT: clrf32 a1166; CHECK-NEXT: mov16 a0, a1167; CHECK-NEXT: rts16168;169; GENERIC-LABEL: selectRI_0_if_false:170; GENERIC: # %bb.0:171; GENERIC-NEXT: .cfi_def_cfa_offset 0172; GENERIC-NEXT: subi16 sp, sp, 4173; GENERIC-NEXT: .cfi_def_cfa_offset 4174; GENERIC-NEXT: btsti16 a0, 0175; GENERIC-NEXT: bt16 .LBB5_2176; GENERIC-NEXT: # %bb.1:177; GENERIC-NEXT: movi16 a1, 0178; GENERIC-NEXT: .LBB5_2:179; GENERIC-NEXT: mov16 a0, a1180; GENERIC-NEXT: addi16 sp, sp, 4181; GENERIC-NEXT: rts16182 %ret = select i1 %c, i32 %q, i32 0183 ret i32 %ret184}185 186define i64 @selectRR_eq_i64(i64 %x, i64 %y, i64 %n, i64 %m) {187; CHECK-LABEL: selectRR_eq_i64:188; CHECK: # %bb.0: # %entry189; CHECK-NEXT: xor16 a1, a3190; CHECK-NEXT: xor16 a0, a2191; CHECK-NEXT: or16 a0, a1192; CHECK-NEXT: cmpnei16 a0, 0193; CHECK-NEXT: movi16 a0, 0194; CHECK-NEXT: addu16 a0, sp195; CHECK-NEXT: mov16 a1, a0196; CHECK-NEXT: addi16 a0, sp, 8197; CHECK-NEXT: movf32 a1, a0198; CHECK-NEXT: ld16.w a0, (a1, 0)199; CHECK-NEXT: ld16.w a1, (a1, 4)200; CHECK-NEXT: rts16201;202; GENERIC-LABEL: selectRR_eq_i64:203; GENERIC: # %bb.0: # %entry204; GENERIC-NEXT: .cfi_def_cfa_offset 0205; GENERIC-NEXT: subi16 sp, sp, 4206; GENERIC-NEXT: .cfi_def_cfa_offset 4207; GENERIC-NEXT: xor16 a1, a3208; GENERIC-NEXT: xor16 a0, a2209; GENERIC-NEXT: or16 a0, a1210; GENERIC-NEXT: cmpnei16 a0, 0211; GENERIC-NEXT: mvcv16 a0212; GENERIC-NEXT: btsti16 a0, 0213; GENERIC-NEXT: bt16 .LBB6_2214; GENERIC-NEXT: # %bb.1: # %entry215; GENERIC-NEXT: movi16 a0, 4216; GENERIC-NEXT: br32 .LBB6_3217; GENERIC-NEXT: .LBB6_2:218; GENERIC-NEXT: movi16 a0, 12219; GENERIC-NEXT: .LBB6_3: # %entry220; GENERIC-NEXT: addu16 a0, sp221; GENERIC-NEXT: mov16 a1, a0222; GENERIC-NEXT: ld16.w a0, (a0, 0)223; GENERIC-NEXT: ld16.w a1, (a1, 4)224; GENERIC-NEXT: addi16 sp, sp, 4225; GENERIC-NEXT: rts16226entry:227 %icmp = icmp eq i64 %y, %x228 %ret = select i1 %icmp, i64 %m, i64 %n229 ret i64 %ret230}231 232define i64 @selectRI_eq_i64(i64 %x, i64 %n, i64 %m) {233; CHECK-LABEL: selectRI_eq_i64:234; CHECK: # %bb.0: # %entry235; CHECK-NEXT: ld32.w t0, (sp, 4)236; CHECK-NEXT: ld32.w t1, (sp, 0)237; CHECK-NEXT: xori32 a0, a0, 10238; CHECK-NEXT: or16 a0, a1239; CHECK-NEXT: cmpnei16 a0, 0240; CHECK-NEXT: movf32 a2, t1241; CHECK-NEXT: movf32 a3, t0242; CHECK-NEXT: mov16 a0, a2243; CHECK-NEXT: mov16 a1, a3244; CHECK-NEXT: rts16245;246; GENERIC-LABEL: selectRI_eq_i64:247; GENERIC: # %bb.0: # %entry248; GENERIC-NEXT: subi16 sp, sp, 4249; GENERIC-NEXT: .cfi_def_cfa_offset 4250; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill251; GENERIC-NEXT: .cfi_offset l0, -4252; GENERIC-NEXT: subi16 sp, sp, 4253; GENERIC-NEXT: .cfi_def_cfa_offset 8254; GENERIC-NEXT: movi16 l0, 10255; GENERIC-NEXT: xor16 l0, a0256; GENERIC-NEXT: or16 l0, a1257; GENERIC-NEXT: cmpnei16 l0, 0258; GENERIC-NEXT: mvcv16 a0259; GENERIC-NEXT: btsti16 a0, 0260; GENERIC-NEXT: bf16 .LBB7_2261; GENERIC-NEXT: # %bb.1:262; GENERIC-NEXT: ld16.w a2, (sp, 8)263; GENERIC-NEXT: .LBB7_2: # %entry264; GENERIC-NEXT: btsti16 a0, 0265; GENERIC-NEXT: bf16 .LBB7_4266; GENERIC-NEXT: # %bb.3:267; GENERIC-NEXT: ld16.w a3, (sp, 12)268; GENERIC-NEXT: .LBB7_4: # %entry269; GENERIC-NEXT: mov16 a0, a2270; GENERIC-NEXT: mov16 a1, a3271; GENERIC-NEXT: addi16 sp, sp, 4272; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload273; GENERIC-NEXT: addi16 sp, sp, 4274; GENERIC-NEXT: rts16275entry:276 %icmp = icmp eq i64 %x, 10277 %ret = select i1 %icmp, i64 %m, i64 %n278 ret i64 %ret279}280 281define i64 @selectRX_eq_i64(i64 %x, i64 %n, i64 %m) {282; CHECK-LABEL: selectRX_eq_i64:283; CHECK: # %bb.0: # %entry284; CHECK-NEXT: subi16 sp, sp, 4285; CHECK-NEXT: .cfi_def_cfa_offset 4286; CHECK-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill287; CHECK-NEXT: .cfi_offset l0, -4288; CHECK-NEXT: .cfi_def_cfa_offset 4289; CHECK-NEXT: ld32.w t0, (sp, 8)290; CHECK-NEXT: ld32.w t1, (sp, 4)291; CHECK-NEXT: movih32 l0, 729292; CHECK-NEXT: ori32 l0, l0, 2033293; CHECK-NEXT: xor16 a0, l0294; CHECK-NEXT: or16 a0, a1295; CHECK-NEXT: cmpnei16 a0, 0296; CHECK-NEXT: movf32 a2, t1297; CHECK-NEXT: movf32 a3, t0298; CHECK-NEXT: mov16 a0, a2299; CHECK-NEXT: mov16 a1, a3300; CHECK-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload301; CHECK-NEXT: addi16 sp, sp, 4302; CHECK-NEXT: rts16303;304; GENERIC-LABEL: selectRX_eq_i64:305; GENERIC: # %bb.0: # %entry306; GENERIC-NEXT: subi16 sp, sp, 8307; GENERIC-NEXT: .cfi_def_cfa_offset 8308; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill309; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill310; GENERIC-NEXT: .cfi_offset l1, -4311; GENERIC-NEXT: .cfi_offset l0, -8312; GENERIC-NEXT: subi16 sp, sp, 4313; GENERIC-NEXT: .cfi_def_cfa_offset 12314; GENERIC-NEXT: movi16 l0, 2315; GENERIC-NEXT: lsli16 l0, l0, 24316; GENERIC-NEXT: movi16 l1, 217317; GENERIC-NEXT: lsli16 l1, l1, 16318; GENERIC-NEXT: or16 l1, l0319; GENERIC-NEXT: movi16 l0, 7320; GENERIC-NEXT: lsli16 l0, l0, 8321; GENERIC-NEXT: or16 l0, l1322; GENERIC-NEXT: movi16 l1, 241323; GENERIC-NEXT: or16 l1, l0324; GENERIC-NEXT: xor16 l1, a0325; GENERIC-NEXT: or16 l1, a1326; GENERIC-NEXT: cmpnei16 l1, 0327; GENERIC-NEXT: mvcv16 a0328; GENERIC-NEXT: btsti16 a0, 0329; GENERIC-NEXT: bf16 .LBB8_2330; GENERIC-NEXT: # %bb.1:331; GENERIC-NEXT: ld16.w a2, (sp, 12)332; GENERIC-NEXT: .LBB8_2: # %entry333; GENERIC-NEXT: btsti16 a0, 0334; GENERIC-NEXT: bf16 .LBB8_4335; GENERIC-NEXT: # %bb.3:336; GENERIC-NEXT: ld16.w a3, (sp, 16)337; GENERIC-NEXT: .LBB8_4: # %entry338; GENERIC-NEXT: mov16 a0, a2339; GENERIC-NEXT: mov16 a1, a3340; GENERIC-NEXT: addi16 sp, sp, 4341; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload342; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload343; GENERIC-NEXT: addi16 sp, sp, 8344; GENERIC-NEXT: rts16345entry:346 %icmp = icmp eq i64 %x, 47777777347 %ret = select i1 %icmp, i64 %m, i64 %n348 ret i64 %ret349}350 351define i64 @selectC_eq_i64(i1 %c, i64 %n, i64 %m) {352; CHECK-LABEL: selectC_eq_i64:353; CHECK: # %bb.0: # %entry354; CHECK-NEXT: ld32.w t0, (sp, 0)355; CHECK-NEXT: btsti16 a0, 0356; CHECK-NEXT: movt32 a1, a3357; CHECK-NEXT: movt32 a2, t0358; CHECK-NEXT: mov16 a0, a1359; CHECK-NEXT: mov16 a1, a2360; CHECK-NEXT: rts16361;362; GENERIC-LABEL: selectC_eq_i64:363; GENERIC: # %bb.0: # %entry364; GENERIC-NEXT: .cfi_def_cfa_offset 0365; GENERIC-NEXT: subi16 sp, sp, 4366; GENERIC-NEXT: .cfi_def_cfa_offset 4367; GENERIC-NEXT: btsti16 a0, 0368; GENERIC-NEXT: bt16 .LBB9_2369; GENERIC-NEXT: # %bb.1: # %entry370; GENERIC-NEXT: mov16 a3, a1371; GENERIC-NEXT: .LBB9_2: # %entry372; GENERIC-NEXT: btsti16 a0, 0373; GENERIC-NEXT: bf16 .LBB9_4374; GENERIC-NEXT: # %bb.3:375; GENERIC-NEXT: ld16.w a2, (sp, 4)376; GENERIC-NEXT: .LBB9_4: # %entry377; GENERIC-NEXT: mov16 a0, a3378; GENERIC-NEXT: mov16 a1, a2379; GENERIC-NEXT: addi16 sp, sp, 4380; GENERIC-NEXT: rts16381entry:382 %ret = select i1 %c, i64 %m, i64 %n383 ret i64 %ret384}385 386 387define i16 @selectRR_eq_i16(i16 %x, i16 %y, i16 %n, i16 %m) {388; CHECK-LABEL: selectRR_eq_i16:389; CHECK: # %bb.0: # %entry390; CHECK-NEXT: zexth16 a0, a0391; CHECK-NEXT: zexth16 a1, a1392; CHECK-NEXT: cmpne16 a1, a0393; CHECK-NEXT: movf32 a2, a3394; CHECK-NEXT: mov16 a0, a2395; CHECK-NEXT: rts16396;397; GENERIC-LABEL: selectRR_eq_i16:398; GENERIC: # %bb.0: # %entry399; GENERIC-NEXT: subi16 sp, sp, 12400; GENERIC-NEXT: .cfi_def_cfa_offset 12401; GENERIC-NEXT: st16.w l2, (sp, 8) # 4-byte Folded Spill402; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill403; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill404; GENERIC-NEXT: .cfi_offset l2, -4405; GENERIC-NEXT: .cfi_offset l1, -8406; GENERIC-NEXT: .cfi_offset l0, -12407; GENERIC-NEXT: subi16 sp, sp, 4408; GENERIC-NEXT: .cfi_def_cfa_offset 16409; GENERIC-NEXT: movi16 l0, 0410; GENERIC-NEXT: lsli16 l1, l0, 24411; GENERIC-NEXT: lsli16 l0, l0, 16412; GENERIC-NEXT: or16 l0, l1413; GENERIC-NEXT: movi16 l1, 255414; GENERIC-NEXT: lsli16 l2, l1, 8415; GENERIC-NEXT: or16 l2, l0416; GENERIC-NEXT: or16 l2, l1417; GENERIC-NEXT: and16 a0, l2418; GENERIC-NEXT: and16 l2, a1419; GENERIC-NEXT: cmpne16 l2, a0420; GENERIC-NEXT: mvcv16 a0421; GENERIC-NEXT: btsti16 a0, 0422; GENERIC-NEXT: bt16 .LBB10_2423; GENERIC-NEXT: # %bb.1: # %entry424; GENERIC-NEXT: mov16 a3, a2425; GENERIC-NEXT: .LBB10_2: # %entry426; GENERIC-NEXT: mov16 a0, a3427; GENERIC-NEXT: addi16 sp, sp, 4428; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload429; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload430; GENERIC-NEXT: ld16.w l2, (sp, 8) # 4-byte Folded Reload431; GENERIC-NEXT: addi16 sp, sp, 12432; GENERIC-NEXT: rts16433entry:434 %icmp = icmp eq i16 %y, %x435 %ret = select i1 %icmp, i16 %m, i16 %n436 ret i16 %ret437}438 439define i16 @selectRI_eq_i16(i16 %x, i16 %n, i16 %m) {440; CHECK-LABEL: selectRI_eq_i16:441; CHECK: # %bb.0: # %entry442; CHECK-NEXT: zexth16 a0, a0443; CHECK-NEXT: cmpnei16 a0, 10444; CHECK-NEXT: movf32 a1, a2445; CHECK-NEXT: mov16 a0, a1446; CHECK-NEXT: rts16447;448; GENERIC-LABEL: selectRI_eq_i16:449; GENERIC: # %bb.0: # %entry450; GENERIC-NEXT: subi16 sp, sp, 8451; GENERIC-NEXT: .cfi_def_cfa_offset 8452; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill453; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill454; GENERIC-NEXT: .cfi_offset l1, -4455; GENERIC-NEXT: .cfi_offset l0, -8456; GENERIC-NEXT: subi16 sp, sp, 4457; GENERIC-NEXT: .cfi_def_cfa_offset 12458; GENERIC-NEXT: movi16 a3, 0459; GENERIC-NEXT: lsli16 l0, a3, 24460; GENERIC-NEXT: lsli16 a3, a3, 16461; GENERIC-NEXT: or16 a3, l0462; GENERIC-NEXT: movi16 l0, 255463; GENERIC-NEXT: lsli16 l1, l0, 8464; GENERIC-NEXT: or16 l1, a3465; GENERIC-NEXT: or16 l1, l0466; GENERIC-NEXT: and16 l1, a0467; GENERIC-NEXT: cmpnei16 l1, 10468; GENERIC-NEXT: mvcv16 a0469; GENERIC-NEXT: btsti16 a0, 0470; GENERIC-NEXT: bt16 .LBB11_2471; GENERIC-NEXT: # %bb.1: # %entry472; GENERIC-NEXT: mov16 a2, a1473; GENERIC-NEXT: .LBB11_2: # %entry474; GENERIC-NEXT: mov16 a0, a2475; GENERIC-NEXT: addi16 sp, sp, 4476; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload477; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload478; GENERIC-NEXT: addi16 sp, sp, 8479; GENERIC-NEXT: rts16480entry:481 %icmp = icmp eq i16 %x, 10482 %ret = select i1 %icmp, i16 %m, i16 %n483 ret i16 %ret484}485 486define i16 @selectRX_eq_i16(i16 %x, i16 %n, i16 %m) {487; CHECK-LABEL: selectRX_eq_i16:488; CHECK: # %bb.0: # %entry489; CHECK-NEXT: zexth16 a0, a0490; CHECK-NEXT: cmpnei32 a0, 2033491; CHECK-NEXT: movf32 a1, a2492; CHECK-NEXT: mov16 a0, a1493; CHECK-NEXT: rts16494;495; GENERIC-LABEL: selectRX_eq_i16:496; GENERIC: # %bb.0: # %entry497; GENERIC-NEXT: subi16 sp, sp, 8498; GENERIC-NEXT: .cfi_def_cfa_offset 8499; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill500; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill501; GENERIC-NEXT: .cfi_offset l1, -4502; GENERIC-NEXT: .cfi_offset l0, -8503; GENERIC-NEXT: subi16 sp, sp, 4504; GENERIC-NEXT: .cfi_def_cfa_offset 12505; GENERIC-NEXT: movi16 a3, 0506; GENERIC-NEXT: lsli16 l0, a3, 24507; GENERIC-NEXT: lsli16 a3, a3, 16508; GENERIC-NEXT: or16 a3, l0509; GENERIC-NEXT: movi16 l0, 255510; GENERIC-NEXT: lsli16 l1, l0, 8511; GENERIC-NEXT: or16 l1, a3512; GENERIC-NEXT: or16 l1, l0513; GENERIC-NEXT: and16 l1, a0514; GENERIC-NEXT: movi16 a0, 7515; GENERIC-NEXT: lsli16 a0, a0, 8516; GENERIC-NEXT: or16 a0, a3517; GENERIC-NEXT: movi16 a3, 241518; GENERIC-NEXT: or16 a3, a0519; GENERIC-NEXT: cmpne16 l1, a3520; GENERIC-NEXT: mvcv16 a0521; GENERIC-NEXT: btsti16 a0, 0522; GENERIC-NEXT: bt16 .LBB12_2523; GENERIC-NEXT: # %bb.1: # %entry524; GENERIC-NEXT: mov16 a2, a1525; GENERIC-NEXT: .LBB12_2: # %entry526; GENERIC-NEXT: mov16 a0, a2527; GENERIC-NEXT: addi16 sp, sp, 4528; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload529; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload530; GENERIC-NEXT: addi16 sp, sp, 8531; GENERIC-NEXT: rts16532entry:533 %icmp = icmp eq i16 %x, 47777777534 %ret = select i1 %icmp, i16 %m, i16 %n535 ret i16 %ret536}537 538define i16 @selectC_eq_i16(i1 %c, i16 %n, i16 %m) {539; CHECK-LABEL: selectC_eq_i16:540; CHECK: # %bb.0: # %entry541; CHECK-NEXT: btsti16 a0, 0542; CHECK-NEXT: movt32 a1, a2543; CHECK-NEXT: mov16 a0, a1544; CHECK-NEXT: rts16545;546; GENERIC-LABEL: selectC_eq_i16: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: btsti16 a0, 0552; GENERIC-NEXT: bt16 .LBB13_2553; GENERIC-NEXT: # %bb.1: # %entry554; GENERIC-NEXT: mov16 a2, a1555; GENERIC-NEXT: .LBB13_2: # %entry556; GENERIC-NEXT: mov16 a0, a2557; GENERIC-NEXT: addi16 sp, sp, 4558; GENERIC-NEXT: rts16559entry:560 %ret = select i1 %c, i16 %m, i16 %n561 ret i16 %ret562}563 564 565define i8 @selectRR_eq_i8(i8 %x, i8 %y, i8 %n, i8 %m) {566; CHECK-LABEL: selectRR_eq_i8:567; CHECK: # %bb.0: # %entry568; CHECK-NEXT: zextb16 a0, a0569; CHECK-NEXT: zextb16 a1, a1570; CHECK-NEXT: cmpne16 a1, a0571; CHECK-NEXT: movf32 a2, a3572; CHECK-NEXT: mov16 a0, a2573; CHECK-NEXT: rts16574;575; GENERIC-LABEL: selectRR_eq_i8:576; GENERIC: # %bb.0: # %entry577; GENERIC-NEXT: subi16 sp, sp, 4578; GENERIC-NEXT: .cfi_def_cfa_offset 4579; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill580; GENERIC-NEXT: .cfi_offset l0, -4581; GENERIC-NEXT: subi16 sp, sp, 4582; GENERIC-NEXT: .cfi_def_cfa_offset 8583; GENERIC-NEXT: movi16 l0, 255584; GENERIC-NEXT: and16 a0, l0585; GENERIC-NEXT: and16 a1, l0586; GENERIC-NEXT: cmpne16 a1, a0587; GENERIC-NEXT: mvcv16 a0588; GENERIC-NEXT: btsti16 a0, 0589; GENERIC-NEXT: bt16 .LBB14_2590; GENERIC-NEXT: # %bb.1: # %entry591; GENERIC-NEXT: mov16 a3, a2592; GENERIC-NEXT: .LBB14_2: # %entry593; GENERIC-NEXT: mov16 a0, a3594; GENERIC-NEXT: addi16 sp, sp, 4595; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload596; GENERIC-NEXT: addi16 sp, sp, 4597; GENERIC-NEXT: rts16598entry:599 %icmp = icmp eq i8 %y, %x600 %ret = select i1 %icmp, i8 %m, i8 %n601 ret i8 %ret602}603 604define i8 @selectRI_eq_i8(i8 %x, i8 %n, i8 %m) {605; CHECK-LABEL: selectRI_eq_i8:606; CHECK: # %bb.0: # %entry607; CHECK-NEXT: zextb16 a0, a0608; CHECK-NEXT: cmpnei16 a0, 10609; CHECK-NEXT: movf32 a1, a2610; CHECK-NEXT: mov16 a0, a1611; CHECK-NEXT: rts16612;613; GENERIC-LABEL: selectRI_eq_i8:614; GENERIC: # %bb.0: # %entry615; GENERIC-NEXT: .cfi_def_cfa_offset 0616; GENERIC-NEXT: subi16 sp, sp, 4617; GENERIC-NEXT: .cfi_def_cfa_offset 4618; GENERIC-NEXT: movi16 a3, 255619; GENERIC-NEXT: and16 a3, a0620; GENERIC-NEXT: cmpnei16 a3, 10621; GENERIC-NEXT: mvcv16 a0622; GENERIC-NEXT: btsti16 a0, 0623; GENERIC-NEXT: bt16 .LBB15_2624; GENERIC-NEXT: # %bb.1: # %entry625; GENERIC-NEXT: mov16 a2, a1626; GENERIC-NEXT: .LBB15_2: # %entry627; GENERIC-NEXT: mov16 a0, a2628; GENERIC-NEXT: addi16 sp, sp, 4629; GENERIC-NEXT: rts16630entry:631 %icmp = icmp eq i8 %x, 10632 %ret = select i1 %icmp, i8 %m, i8 %n633 ret i8 %ret634}635 636define i8 @selectRX_eq_i8(i8 %x, i8 %n, i8 %m) {637; CHECK-LABEL: selectRX_eq_i8:638; CHECK: # %bb.0: # %entry639; CHECK-NEXT: zextb16 a0, a0640; CHECK-NEXT: cmpnei32 a0, 241641; CHECK-NEXT: movf32 a1, a2642; CHECK-NEXT: mov16 a0, a1643; CHECK-NEXT: rts16644;645; GENERIC-LABEL: selectRX_eq_i8:646; GENERIC: # %bb.0: # %entry647; GENERIC-NEXT: .cfi_def_cfa_offset 0648; GENERIC-NEXT: subi16 sp, sp, 4649; GENERIC-NEXT: .cfi_def_cfa_offset 4650; GENERIC-NEXT: movi16 a3, 255651; GENERIC-NEXT: and16 a3, a0652; GENERIC-NEXT: movi16 a0, 241653; GENERIC-NEXT: cmpne16 a3, a0654; GENERIC-NEXT: mvcv16 a0655; GENERIC-NEXT: btsti16 a0, 0656; GENERIC-NEXT: bt16 .LBB16_2657; GENERIC-NEXT: # %bb.1: # %entry658; GENERIC-NEXT: mov16 a2, a1659; GENERIC-NEXT: .LBB16_2: # %entry660; GENERIC-NEXT: mov16 a0, a2661; GENERIC-NEXT: addi16 sp, sp, 4662; GENERIC-NEXT: rts16663entry:664 %icmp = icmp eq i8 %x, 47777777665 %ret = select i1 %icmp, i8 %m, i8 %n666 ret i8 %ret667}668 669define i8 @selectC_eq_i8(i1 %c, i8 %n, i8 %m) {670; CHECK-LABEL: selectC_eq_i8:671; CHECK: # %bb.0: # %entry672; CHECK-NEXT: btsti16 a0, 0673; CHECK-NEXT: movt32 a1, a2674; CHECK-NEXT: mov16 a0, a1675; CHECK-NEXT: rts16676;677; GENERIC-LABEL: selectC_eq_i8:678; GENERIC: # %bb.0: # %entry679; GENERIC-NEXT: .cfi_def_cfa_offset 0680; GENERIC-NEXT: subi16 sp, sp, 4681; GENERIC-NEXT: .cfi_def_cfa_offset 4682; GENERIC-NEXT: btsti16 a0, 0683; GENERIC-NEXT: bt16 .LBB17_2684; GENERIC-NEXT: # %bb.1: # %entry685; GENERIC-NEXT: mov16 a2, a1686; GENERIC-NEXT: .LBB17_2: # %entry687; GENERIC-NEXT: mov16 a0, a2688; GENERIC-NEXT: addi16 sp, sp, 4689; GENERIC-NEXT: rts16690entry:691 %ret = select i1 %c, i8 %m, i8 %n692 ret i8 %ret693}694 695 696define i1 @selectRR_eq_i1(i1 %x, i1 %y, i1 %n, i1 %m) {697; CHECK-LABEL: selectRR_eq_i1:698; CHECK: # %bb.0: # %entry699; CHECK-NEXT: xor16 a0, a1700; CHECK-NEXT: btsti16 a0, 0701; CHECK-NEXT: movt32 a3, a2702; CHECK-NEXT: mov16 a0, a3703; CHECK-NEXT: rts16704;705; GENERIC-LABEL: selectRR_eq_i1:706; GENERIC: # %bb.0: # %entry707; GENERIC-NEXT: .cfi_def_cfa_offset 0708; GENERIC-NEXT: subi16 sp, sp, 4709; GENERIC-NEXT: .cfi_def_cfa_offset 4710; GENERIC-NEXT: xor16 a0, a1711; GENERIC-NEXT: btsti16 a0, 0712; GENERIC-NEXT: bt16 .LBB18_2713; GENERIC-NEXT: # %bb.1: # %entry714; GENERIC-NEXT: mov16 a2, a3715; GENERIC-NEXT: .LBB18_2: # %entry716; GENERIC-NEXT: mov16 a0, a2717; GENERIC-NEXT: addi16 sp, sp, 4718; GENERIC-NEXT: rts16719entry:720 %icmp = icmp eq i1 %y, %x721 %ret = select i1 %icmp, i1 %m, i1 %n722 ret i1 %ret723}724 725define i1 @selectRI_eq_i1(i1 %x, i1 %n, i1 %m) {726; CHECK-LABEL: selectRI_eq_i1:727; CHECK: # %bb.0: # %entry728; CHECK-NEXT: btsti16 a0, 0729; CHECK-NEXT: movt32 a2, a1730; CHECK-NEXT: mov16 a0, a2731; CHECK-NEXT: rts16732;733; GENERIC-LABEL: selectRI_eq_i1:734; GENERIC: # %bb.0: # %entry735; GENERIC-NEXT: .cfi_def_cfa_offset 0736; GENERIC-NEXT: subi16 sp, sp, 4737; GENERIC-NEXT: .cfi_def_cfa_offset 4738; GENERIC-NEXT: btsti16 a0, 0739; GENERIC-NEXT: bt16 .LBB19_2740; GENERIC-NEXT: # %bb.1: # %entry741; GENERIC-NEXT: mov16 a1, a2742; GENERIC-NEXT: .LBB19_2: # %entry743; GENERIC-NEXT: mov16 a0, a1744; GENERIC-NEXT: addi16 sp, sp, 4745; GENERIC-NEXT: rts16746entry:747 %icmp = icmp eq i1 %x, 10748 %ret = select i1 %icmp, i1 %m, i1 %n749 ret i1 %ret750}751 752define i1 @selectRX_eq_i1(i1 %x, i1 %n, i1 %m) {753; CHECK-LABEL: selectRX_eq_i1:754; CHECK: # %bb.0: # %entry755; CHECK-NEXT: btsti16 a0, 0756; CHECK-NEXT: movt32 a1, a2757; CHECK-NEXT: mov16 a0, a1758; CHECK-NEXT: rts16759;760; GENERIC-LABEL: selectRX_eq_i1:761; GENERIC: # %bb.0: # %entry762; GENERIC-NEXT: .cfi_def_cfa_offset 0763; GENERIC-NEXT: subi16 sp, sp, 4764; GENERIC-NEXT: .cfi_def_cfa_offset 4765; GENERIC-NEXT: btsti16 a0, 0766; GENERIC-NEXT: bt16 .LBB20_2767; GENERIC-NEXT: # %bb.1: # %entry768; GENERIC-NEXT: mov16 a2, a1769; GENERIC-NEXT: .LBB20_2: # %entry770; GENERIC-NEXT: mov16 a0, a2771; GENERIC-NEXT: addi16 sp, sp, 4772; GENERIC-NEXT: rts16773entry:774 %icmp = icmp eq i1 %x, 47777777775 %ret = select i1 %icmp, i1 %m, i1 %n776 ret i1 %ret777}778 779define i1 @selectC_eq_i1(i1 %c, i1 %n, i1 %m) {780; CHECK-LABEL: selectC_eq_i1:781; CHECK: # %bb.0: # %entry782; CHECK-NEXT: btsti16 a0, 0783; CHECK-NEXT: movt32 a1, a2784; CHECK-NEXT: mov16 a0, a1785; CHECK-NEXT: rts16786;787; GENERIC-LABEL: selectC_eq_i1:788; GENERIC: # %bb.0: # %entry789; GENERIC-NEXT: .cfi_def_cfa_offset 0790; GENERIC-NEXT: subi16 sp, sp, 4791; GENERIC-NEXT: .cfi_def_cfa_offset 4792; GENERIC-NEXT: btsti16 a0, 0793; GENERIC-NEXT: bt16 .LBB21_2794; GENERIC-NEXT: # %bb.1: # %entry795; GENERIC-NEXT: mov16 a2, a1796; GENERIC-NEXT: .LBB21_2: # %entry797; GENERIC-NEXT: mov16 a0, a2798; GENERIC-NEXT: addi16 sp, sp, 4799; GENERIC-NEXT: rts16800entry:801 %ret = select i1 %c, i1 %m, i1 %n802 ret i1 %ret803}804 805 806define i32 @selectRR_ne_i32(i32 %x, i32 %y, i32 %n, i32 %m) {807; CHECK-LABEL: selectRR_ne_i32:808; CHECK: # %bb.0: # %entry809; CHECK-NEXT: cmpne16 a1, a0810; CHECK-NEXT: movt32 a2, a3811; CHECK-NEXT: mov16 a0, a2812; CHECK-NEXT: rts16813;814; GENERIC-LABEL: selectRR_ne_i32:815; GENERIC: # %bb.0: # %entry816; GENERIC-NEXT: .cfi_def_cfa_offset 0817; GENERIC-NEXT: subi16 sp, sp, 4818; GENERIC-NEXT: .cfi_def_cfa_offset 4819; GENERIC-NEXT: cmpne16 a1, a0820; GENERIC-NEXT: mvcv16 a0821; GENERIC-NEXT: movi16 a1, 1822; GENERIC-NEXT: subu16 a1, a0823; GENERIC-NEXT: btsti16 a1, 0824; GENERIC-NEXT: bt16 .LBB22_2825; GENERIC-NEXT: # %bb.1: # %entry826; GENERIC-NEXT: mov16 a3, a2827; GENERIC-NEXT: .LBB22_2: # %entry828; GENERIC-NEXT: mov16 a0, a3829; GENERIC-NEXT: addi16 sp, sp, 4830; GENERIC-NEXT: rts16831entry:832 %icmp = icmp ne i32 %y, %x833 %ret = select i1 %icmp, i32 %m, i32 %n834 ret i32 %ret835}836 837define i32 @selectRI_ne_i32(i32 %x, i32 %n, i32 %m) {838; CHECK-LABEL: selectRI_ne_i32:839; CHECK: # %bb.0: # %entry840; CHECK-NEXT: cmpnei16 a0, 10841; CHECK-NEXT: movt32 a1, a2842; CHECK-NEXT: mov16 a0, a1843; CHECK-NEXT: rts16844;845; GENERIC-LABEL: selectRI_ne_i32:846; GENERIC: # %bb.0: # %entry847; GENERIC-NEXT: .cfi_def_cfa_offset 0848; GENERIC-NEXT: subi16 sp, sp, 4849; GENERIC-NEXT: .cfi_def_cfa_offset 4850; GENERIC-NEXT: cmpnei16 a0, 10851; GENERIC-NEXT: mvcv16 a0852; GENERIC-NEXT: movi16 a3, 1853; GENERIC-NEXT: subu16 a3, a0854; GENERIC-NEXT: btsti16 a3, 0855; GENERIC-NEXT: bt16 .LBB23_2856; GENERIC-NEXT: # %bb.1: # %entry857; GENERIC-NEXT: mov16 a2, a1858; GENERIC-NEXT: .LBB23_2: # %entry859; GENERIC-NEXT: mov16 a0, a2860; GENERIC-NEXT: addi16 sp, sp, 4861; GENERIC-NEXT: rts16862entry:863 %icmp = icmp ne i32 %x, 10864 %ret = select i1 %icmp, i32 %m, i32 %n865 ret i32 %ret866}867 868define i32 @selectRX_ne_i32(i32 %x, i32 %n, i32 %m) {869; CHECK-LABEL: selectRX_ne_i32:870; CHECK: # %bb.0: # %entry871; CHECK-NEXT: movih32 a3, 729872; CHECK-NEXT: ori32 a3, a3, 2033873; CHECK-NEXT: cmpne16 a0, a3874; CHECK-NEXT: movt32 a1, a2875; CHECK-NEXT: mov16 a0, a1876; CHECK-NEXT: rts16877;878; GENERIC-LABEL: selectRX_ne_i32:879; GENERIC: # %bb.0: # %entry880; GENERIC-NEXT: subi16 sp, sp, 4881; GENERIC-NEXT: .cfi_def_cfa_offset 4882; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill883; GENERIC-NEXT: .cfi_offset l0, -4884; GENERIC-NEXT: subi16 sp, sp, 4885; GENERIC-NEXT: .cfi_def_cfa_offset 8886; GENERIC-NEXT: movi16 a3, 2887; GENERIC-NEXT: lsli16 a3, a3, 24888; GENERIC-NEXT: movi16 l0, 217889; GENERIC-NEXT: lsli16 l0, l0, 16890; GENERIC-NEXT: or16 l0, a3891; GENERIC-NEXT: movi16 a3, 7892; GENERIC-NEXT: lsli16 a3, a3, 8893; GENERIC-NEXT: or16 a3, l0894; GENERIC-NEXT: movi16 l0, 241895; GENERIC-NEXT: or16 l0, a3896; GENERIC-NEXT: cmpne16 a0, l0897; GENERIC-NEXT: mvcv16 a0898; GENERIC-NEXT: movi16 a3, 1899; GENERIC-NEXT: subu16 a3, a0900; GENERIC-NEXT: btsti16 a3, 0901; GENERIC-NEXT: bt16 .LBB24_2902; GENERIC-NEXT: # %bb.1: # %entry903; GENERIC-NEXT: mov16 a2, a1904; GENERIC-NEXT: .LBB24_2: # %entry905; GENERIC-NEXT: mov16 a0, a2906; GENERIC-NEXT: addi16 sp, sp, 4907; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload908; GENERIC-NEXT: addi16 sp, sp, 4909; GENERIC-NEXT: rts16910entry:911 %icmp = icmp ne i32 %x, 47777777912 %ret = select i1 %icmp, i32 %m, i32 %n913 ret i32 %ret914}915 916define i32 @selectC_ne_i32(i1 %c, i32 %n, i32 %m) {917; CHECK-LABEL: selectC_ne_i32:918; CHECK: # %bb.0: # %entry919; CHECK-NEXT: btsti16 a0, 0920; CHECK-NEXT: movt32 a1, a2921; CHECK-NEXT: mov16 a0, a1922; CHECK-NEXT: rts16923;924; GENERIC-LABEL: selectC_ne_i32:925; GENERIC: # %bb.0: # %entry926; GENERIC-NEXT: .cfi_def_cfa_offset 0927; GENERIC-NEXT: subi16 sp, sp, 4928; GENERIC-NEXT: .cfi_def_cfa_offset 4929; GENERIC-NEXT: btsti16 a0, 0930; GENERIC-NEXT: bt16 .LBB25_2931; GENERIC-NEXT: # %bb.1: # %entry932; GENERIC-NEXT: mov16 a2, a1933; GENERIC-NEXT: .LBB25_2: # %entry934; GENERIC-NEXT: mov16 a0, a2935; GENERIC-NEXT: addi16 sp, sp, 4936; GENERIC-NEXT: rts16937entry:938 %ret = select i1 %c, i32 %m, i32 %n939 ret i32 %ret940}941 942define i64 @selectRR_ne_i64(i64 %x, i64 %y, i64 %n, i64 %m) {943; CHECK-LABEL: selectRR_ne_i64:944; CHECK: # %bb.0: # %entry945; CHECK-NEXT: xor16 a1, a3946; CHECK-NEXT: xor16 a0, a2947; CHECK-NEXT: or16 a0, a1948; CHECK-NEXT: cmpnei16 a0, 0949; CHECK-NEXT: movi16 a0, 0950; CHECK-NEXT: addu16 a0, sp951; CHECK-NEXT: mov16 a1, a0952; CHECK-NEXT: addi16 a0, sp, 8953; CHECK-NEXT: movt32 a1, a0954; CHECK-NEXT: ld16.w a0, (a1, 0)955; CHECK-NEXT: ld16.w a1, (a1, 4)956; CHECK-NEXT: rts16957;958; GENERIC-LABEL: selectRR_ne_i64:959; GENERIC: # %bb.0: # %entry960; GENERIC-NEXT: .cfi_def_cfa_offset 0961; GENERIC-NEXT: subi16 sp, sp, 4962; GENERIC-NEXT: .cfi_def_cfa_offset 4963; GENERIC-NEXT: xor16 a1, a3964; GENERIC-NEXT: xor16 a0, a2965; GENERIC-NEXT: or16 a0, a1966; GENERIC-NEXT: cmpnei16 a0, 0967; GENERIC-NEXT: mvcv16 a0968; GENERIC-NEXT: movi16 a1, 1969; GENERIC-NEXT: subu16 a1, a0970; GENERIC-NEXT: btsti16 a1, 0971; GENERIC-NEXT: bt16 .LBB26_2972; GENERIC-NEXT: # %bb.1: # %entry973; GENERIC-NEXT: movi16 a0, 4974; GENERIC-NEXT: br32 .LBB26_3975; GENERIC-NEXT: .LBB26_2:976; GENERIC-NEXT: movi16 a0, 12977; GENERIC-NEXT: .LBB26_3: # %entry978; GENERIC-NEXT: addu16 a0, sp979; GENERIC-NEXT: mov16 a1, a0980; GENERIC-NEXT: ld16.w a0, (a0, 0)981; GENERIC-NEXT: ld16.w a1, (a1, 4)982; GENERIC-NEXT: addi16 sp, sp, 4983; GENERIC-NEXT: rts16984entry:985 %icmp = icmp ne i64 %y, %x986 %ret = select i1 %icmp, i64 %m, i64 %n987 ret i64 %ret988}989 990define i64 @selectRI_ne_i64(i64 %x, i64 %n, i64 %m) {991; CHECK-LABEL: selectRI_ne_i64:992; CHECK: # %bb.0: # %entry993; CHECK-NEXT: ld32.w t0, (sp, 4)994; CHECK-NEXT: ld32.w t1, (sp, 0)995; CHECK-NEXT: xori32 a0, a0, 10996; CHECK-NEXT: or16 a0, a1997; CHECK-NEXT: cmpnei16 a0, 0998; CHECK-NEXT: movt32 a2, t1999; CHECK-NEXT: movt32 a3, t01000; CHECK-NEXT: mov16 a0, a21001; CHECK-NEXT: mov16 a1, a31002; CHECK-NEXT: rts161003;1004; GENERIC-LABEL: selectRI_ne_i64:1005; GENERIC: # %bb.0: # %entry1006; GENERIC-NEXT: subi16 sp, sp, 41007; GENERIC-NEXT: .cfi_def_cfa_offset 41008; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1009; GENERIC-NEXT: .cfi_offset l0, -41010; GENERIC-NEXT: subi16 sp, sp, 41011; GENERIC-NEXT: .cfi_def_cfa_offset 81012; GENERIC-NEXT: movi16 l0, 101013; GENERIC-NEXT: xor16 l0, a01014; GENERIC-NEXT: or16 l0, a11015; GENERIC-NEXT: cmpnei16 l0, 01016; GENERIC-NEXT: mvcv16 a11017; GENERIC-NEXT: movi16 a0, 11018; GENERIC-NEXT: subu16 a0, a11019; GENERIC-NEXT: btsti16 a0, 01020; GENERIC-NEXT: bf16 .LBB27_21021; GENERIC-NEXT: # %bb.1:1022; GENERIC-NEXT: ld16.w a2, (sp, 8)1023; GENERIC-NEXT: .LBB27_2: # %entry1024; GENERIC-NEXT: btsti16 a0, 01025; GENERIC-NEXT: bf16 .LBB27_41026; GENERIC-NEXT: # %bb.3:1027; GENERIC-NEXT: ld16.w a3, (sp, 12)1028; GENERIC-NEXT: .LBB27_4: # %entry1029; GENERIC-NEXT: mov16 a0, a21030; GENERIC-NEXT: mov16 a1, a31031; GENERIC-NEXT: addi16 sp, sp, 41032; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1033; GENERIC-NEXT: addi16 sp, sp, 41034; GENERIC-NEXT: rts161035entry:1036 %icmp = icmp ne i64 %x, 101037 %ret = select i1 %icmp, i64 %m, i64 %n1038 ret i64 %ret1039}1040 1041define i64 @selectRX_ne_i64(i64 %x, i64 %n, i64 %m) {1042; CHECK-LABEL: selectRX_ne_i64:1043; CHECK: # %bb.0: # %entry1044; CHECK-NEXT: subi16 sp, sp, 41045; CHECK-NEXT: .cfi_def_cfa_offset 41046; CHECK-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1047; CHECK-NEXT: .cfi_offset l0, -41048; CHECK-NEXT: .cfi_def_cfa_offset 41049; CHECK-NEXT: ld32.w t0, (sp, 8)1050; CHECK-NEXT: ld32.w t1, (sp, 4)1051; CHECK-NEXT: movih32 l0, 7291052; CHECK-NEXT: ori32 l0, l0, 20331053; CHECK-NEXT: xor16 a0, l01054; CHECK-NEXT: or16 a0, a11055; CHECK-NEXT: cmpnei16 a0, 01056; CHECK-NEXT: movt32 a2, t11057; CHECK-NEXT: movt32 a3, t01058; CHECK-NEXT: mov16 a0, a21059; CHECK-NEXT: mov16 a1, a31060; CHECK-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1061; CHECK-NEXT: addi16 sp, sp, 41062; CHECK-NEXT: rts161063;1064; GENERIC-LABEL: selectRX_ne_i64:1065; GENERIC: # %bb.0: # %entry1066; GENERIC-NEXT: subi16 sp, sp, 81067; GENERIC-NEXT: .cfi_def_cfa_offset 81068; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill1069; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1070; GENERIC-NEXT: .cfi_offset l1, -41071; GENERIC-NEXT: .cfi_offset l0, -81072; GENERIC-NEXT: subi16 sp, sp, 41073; GENERIC-NEXT: .cfi_def_cfa_offset 121074; GENERIC-NEXT: movi16 l0, 21075; GENERIC-NEXT: lsli16 l0, l0, 241076; GENERIC-NEXT: movi16 l1, 2171077; GENERIC-NEXT: lsli16 l1, l1, 161078; GENERIC-NEXT: or16 l1, l01079; GENERIC-NEXT: movi16 l0, 71080; GENERIC-NEXT: lsli16 l0, l0, 81081; GENERIC-NEXT: or16 l0, l11082; GENERIC-NEXT: movi16 l1, 2411083; GENERIC-NEXT: or16 l1, l01084; GENERIC-NEXT: xor16 l1, a01085; GENERIC-NEXT: or16 l1, a11086; GENERIC-NEXT: cmpnei16 l1, 01087; GENERIC-NEXT: mvcv16 a11088; GENERIC-NEXT: movi16 a0, 11089; GENERIC-NEXT: subu16 a0, a11090; GENERIC-NEXT: btsti16 a0, 01091; GENERIC-NEXT: bf16 .LBB28_21092; GENERIC-NEXT: # %bb.1:1093; GENERIC-NEXT: ld16.w a2, (sp, 12)1094; GENERIC-NEXT: .LBB28_2: # %entry1095; GENERIC-NEXT: btsti16 a0, 01096; GENERIC-NEXT: bf16 .LBB28_41097; GENERIC-NEXT: # %bb.3:1098; GENERIC-NEXT: ld16.w a3, (sp, 16)1099; GENERIC-NEXT: .LBB28_4: # %entry1100; GENERIC-NEXT: mov16 a0, a21101; GENERIC-NEXT: mov16 a1, a31102; GENERIC-NEXT: addi16 sp, sp, 41103; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1104; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload1105; GENERIC-NEXT: addi16 sp, sp, 81106; GENERIC-NEXT: rts161107entry:1108 %icmp = icmp ne i64 %x, 477777771109 %ret = select i1 %icmp, i64 %m, i64 %n1110 ret i64 %ret1111}1112 1113define i64 @selectC_ne_i64(i1 %c, i64 %n, i64 %m) {1114; CHECK-LABEL: selectC_ne_i64:1115; CHECK: # %bb.0: # %entry1116; CHECK-NEXT: ld32.w t0, (sp, 0)1117; CHECK-NEXT: btsti16 a0, 01118; CHECK-NEXT: movt32 a1, a31119; CHECK-NEXT: movt32 a2, t01120; CHECK-NEXT: mov16 a0, a11121; CHECK-NEXT: mov16 a1, a21122; CHECK-NEXT: rts161123;1124; GENERIC-LABEL: selectC_ne_i64:1125; GENERIC: # %bb.0: # %entry1126; GENERIC-NEXT: .cfi_def_cfa_offset 01127; GENERIC-NEXT: subi16 sp, sp, 41128; GENERIC-NEXT: .cfi_def_cfa_offset 41129; GENERIC-NEXT: btsti16 a0, 01130; GENERIC-NEXT: bt16 .LBB29_21131; GENERIC-NEXT: # %bb.1: # %entry1132; GENERIC-NEXT: mov16 a3, a11133; GENERIC-NEXT: .LBB29_2: # %entry1134; GENERIC-NEXT: btsti16 a0, 01135; GENERIC-NEXT: bf16 .LBB29_41136; GENERIC-NEXT: # %bb.3:1137; GENERIC-NEXT: ld16.w a2, (sp, 4)1138; GENERIC-NEXT: .LBB29_4: # %entry1139; GENERIC-NEXT: mov16 a0, a31140; GENERIC-NEXT: mov16 a1, a21141; GENERIC-NEXT: addi16 sp, sp, 41142; GENERIC-NEXT: rts161143entry:1144 %ret = select i1 %c, i64 %m, i64 %n1145 ret i64 %ret1146}1147 1148 1149define i16 @selectRR_ne_i16(i16 %x, i16 %y, i16 %n, i16 %m) {1150; CHECK-LABEL: selectRR_ne_i16:1151; CHECK: # %bb.0: # %entry1152; CHECK-NEXT: zexth16 a0, a01153; CHECK-NEXT: zexth16 a1, a11154; CHECK-NEXT: cmpne16 a1, a01155; CHECK-NEXT: movt32 a2, a31156; CHECK-NEXT: mov16 a0, a21157; CHECK-NEXT: rts161158;1159; GENERIC-LABEL: selectRR_ne_i16:1160; GENERIC: # %bb.0: # %entry1161; GENERIC-NEXT: subi16 sp, sp, 121162; GENERIC-NEXT: .cfi_def_cfa_offset 121163; GENERIC-NEXT: st16.w l2, (sp, 8) # 4-byte Folded Spill1164; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill1165; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1166; GENERIC-NEXT: .cfi_offset l2, -41167; GENERIC-NEXT: .cfi_offset l1, -81168; GENERIC-NEXT: .cfi_offset l0, -121169; GENERIC-NEXT: subi16 sp, sp, 41170; GENERIC-NEXT: .cfi_def_cfa_offset 161171; GENERIC-NEXT: movi16 l0, 01172; GENERIC-NEXT: lsli16 l1, l0, 241173; GENERIC-NEXT: lsli16 l0, l0, 161174; GENERIC-NEXT: or16 l0, l11175; GENERIC-NEXT: movi16 l1, 2551176; GENERIC-NEXT: lsli16 l2, l1, 81177; GENERIC-NEXT: or16 l2, l01178; GENERIC-NEXT: or16 l2, l11179; GENERIC-NEXT: and16 a0, l21180; GENERIC-NEXT: and16 l2, a11181; GENERIC-NEXT: cmpne16 l2, a01182; GENERIC-NEXT: mvcv16 a01183; GENERIC-NEXT: movi16 a1, 11184; GENERIC-NEXT: subu16 a1, a01185; GENERIC-NEXT: btsti16 a1, 01186; GENERIC-NEXT: bt16 .LBB30_21187; GENERIC-NEXT: # %bb.1: # %entry1188; GENERIC-NEXT: mov16 a3, a21189; GENERIC-NEXT: .LBB30_2: # %entry1190; GENERIC-NEXT: mov16 a0, a31191; GENERIC-NEXT: addi16 sp, sp, 41192; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1193; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload1194; GENERIC-NEXT: ld16.w l2, (sp, 8) # 4-byte Folded Reload1195; GENERIC-NEXT: addi16 sp, sp, 121196; GENERIC-NEXT: rts161197entry:1198 %icmp = icmp ne i16 %y, %x1199 %ret = select i1 %icmp, i16 %m, i16 %n1200 ret i16 %ret1201}1202 1203define i16 @selectRI_ne_i16(i16 %x, i16 %n, i16 %m) {1204; CHECK-LABEL: selectRI_ne_i16:1205; CHECK: # %bb.0: # %entry1206; CHECK-NEXT: zexth16 a0, a01207; CHECK-NEXT: cmpnei16 a0, 101208; CHECK-NEXT: movt32 a1, a21209; CHECK-NEXT: mov16 a0, a11210; CHECK-NEXT: rts161211;1212; GENERIC-LABEL: selectRI_ne_i16:1213; GENERIC: # %bb.0: # %entry1214; GENERIC-NEXT: subi16 sp, sp, 81215; GENERIC-NEXT: .cfi_def_cfa_offset 81216; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill1217; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1218; GENERIC-NEXT: .cfi_offset l1, -41219; GENERIC-NEXT: .cfi_offset l0, -81220; GENERIC-NEXT: subi16 sp, sp, 41221; GENERIC-NEXT: .cfi_def_cfa_offset 121222; GENERIC-NEXT: movi16 a3, 01223; GENERIC-NEXT: lsli16 l0, a3, 241224; GENERIC-NEXT: lsli16 a3, a3, 161225; GENERIC-NEXT: or16 a3, l01226; GENERIC-NEXT: movi16 l0, 2551227; GENERIC-NEXT: lsli16 l1, l0, 81228; GENERIC-NEXT: or16 l1, a31229; GENERIC-NEXT: or16 l1, l01230; GENERIC-NEXT: and16 l1, a01231; GENERIC-NEXT: cmpnei16 l1, 101232; GENERIC-NEXT: mvcv16 a01233; GENERIC-NEXT: movi16 a3, 11234; GENERIC-NEXT: subu16 a3, a01235; GENERIC-NEXT: btsti16 a3, 01236; GENERIC-NEXT: bt16 .LBB31_21237; GENERIC-NEXT: # %bb.1: # %entry1238; GENERIC-NEXT: mov16 a2, a11239; GENERIC-NEXT: .LBB31_2: # %entry1240; GENERIC-NEXT: mov16 a0, a21241; GENERIC-NEXT: addi16 sp, sp, 41242; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1243; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload1244; GENERIC-NEXT: addi16 sp, sp, 81245; GENERIC-NEXT: rts161246entry:1247 %icmp = icmp ne i16 %x, 101248 %ret = select i1 %icmp, i16 %m, i16 %n1249 ret i16 %ret1250}1251 1252define i16 @selectRX_ne_i16(i16 %x, i16 %n, i16 %m) {1253; CHECK-LABEL: selectRX_ne_i16:1254; CHECK: # %bb.0: # %entry1255; CHECK-NEXT: zexth16 a0, a01256; CHECK-NEXT: cmpnei32 a0, 20331257; CHECK-NEXT: movt32 a1, a21258; CHECK-NEXT: mov16 a0, a11259; CHECK-NEXT: rts161260;1261; GENERIC-LABEL: selectRX_ne_i16:1262; GENERIC: # %bb.0: # %entry1263; GENERIC-NEXT: subi16 sp, sp, 81264; GENERIC-NEXT: .cfi_def_cfa_offset 81265; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill1266; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1267; GENERIC-NEXT: .cfi_offset l1, -41268; GENERIC-NEXT: .cfi_offset l0, -81269; GENERIC-NEXT: subi16 sp, sp, 41270; GENERIC-NEXT: .cfi_def_cfa_offset 121271; GENERIC-NEXT: movi16 a3, 01272; GENERIC-NEXT: lsli16 l0, a3, 241273; GENERIC-NEXT: lsli16 a3, a3, 161274; GENERIC-NEXT: or16 a3, l01275; GENERIC-NEXT: movi16 l0, 2551276; GENERIC-NEXT: lsli16 l1, l0, 81277; GENERIC-NEXT: or16 l1, a31278; GENERIC-NEXT: or16 l1, l01279; GENERIC-NEXT: and16 l1, a01280; GENERIC-NEXT: movi16 a0, 71281; GENERIC-NEXT: lsli16 a0, a0, 81282; GENERIC-NEXT: or16 a0, a31283; GENERIC-NEXT: movi16 a3, 2411284; GENERIC-NEXT: or16 a3, a01285; GENERIC-NEXT: cmpne16 l1, a31286; GENERIC-NEXT: mvcv16 a01287; GENERIC-NEXT: movi16 a3, 11288; GENERIC-NEXT: subu16 a3, a01289; GENERIC-NEXT: btsti16 a3, 01290; GENERIC-NEXT: bt16 .LBB32_21291; GENERIC-NEXT: # %bb.1: # %entry1292; GENERIC-NEXT: mov16 a2, a11293; GENERIC-NEXT: .LBB32_2: # %entry1294; GENERIC-NEXT: mov16 a0, a21295; GENERIC-NEXT: addi16 sp, sp, 41296; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1297; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload1298; GENERIC-NEXT: addi16 sp, sp, 81299; GENERIC-NEXT: rts161300entry:1301 %icmp = icmp ne i16 %x, 477777771302 %ret = select i1 %icmp, i16 %m, i16 %n1303 ret i16 %ret1304}1305 1306define i16 @selectC_ne_i16(i1 %c, i16 %n, i16 %m) {1307; CHECK-LABEL: selectC_ne_i16:1308; CHECK: # %bb.0: # %entry1309; CHECK-NEXT: btsti16 a0, 01310; CHECK-NEXT: movt32 a1, a21311; CHECK-NEXT: mov16 a0, a11312; CHECK-NEXT: rts161313;1314; GENERIC-LABEL: selectC_ne_i16:1315; GENERIC: # %bb.0: # %entry1316; GENERIC-NEXT: .cfi_def_cfa_offset 01317; GENERIC-NEXT: subi16 sp, sp, 41318; GENERIC-NEXT: .cfi_def_cfa_offset 41319; GENERIC-NEXT: btsti16 a0, 01320; GENERIC-NEXT: bt16 .LBB33_21321; GENERIC-NEXT: # %bb.1: # %entry1322; GENERIC-NEXT: mov16 a2, a11323; GENERIC-NEXT: .LBB33_2: # %entry1324; GENERIC-NEXT: mov16 a0, a21325; GENERIC-NEXT: addi16 sp, sp, 41326; GENERIC-NEXT: rts161327entry:1328 %ret = select i1 %c, i16 %m, i16 %n1329 ret i16 %ret1330}1331 1332 1333define i8 @selectRR_ne_i8(i8 %x, i8 %y, i8 %n, i8 %m) {1334; CHECK-LABEL: selectRR_ne_i8:1335; CHECK: # %bb.0: # %entry1336; CHECK-NEXT: zextb16 a0, a01337; CHECK-NEXT: zextb16 a1, a11338; CHECK-NEXT: cmpne16 a1, a01339; CHECK-NEXT: movt32 a2, a31340; CHECK-NEXT: mov16 a0, a21341; CHECK-NEXT: rts161342;1343; GENERIC-LABEL: selectRR_ne_i8:1344; GENERIC: # %bb.0: # %entry1345; GENERIC-NEXT: subi16 sp, sp, 41346; GENERIC-NEXT: .cfi_def_cfa_offset 41347; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1348; GENERIC-NEXT: .cfi_offset l0, -41349; GENERIC-NEXT: subi16 sp, sp, 41350; GENERIC-NEXT: .cfi_def_cfa_offset 81351; GENERIC-NEXT: movi16 l0, 2551352; GENERIC-NEXT: and16 a0, l01353; GENERIC-NEXT: and16 a1, l01354; GENERIC-NEXT: cmpne16 a1, a01355; GENERIC-NEXT: mvcv16 a01356; GENERIC-NEXT: movi16 a1, 11357; GENERIC-NEXT: subu16 a1, a01358; GENERIC-NEXT: btsti16 a1, 01359; GENERIC-NEXT: bt16 .LBB34_21360; GENERIC-NEXT: # %bb.1: # %entry1361; GENERIC-NEXT: mov16 a3, a21362; GENERIC-NEXT: .LBB34_2: # %entry1363; GENERIC-NEXT: mov16 a0, a31364; GENERIC-NEXT: addi16 sp, sp, 41365; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1366; GENERIC-NEXT: addi16 sp, sp, 41367; GENERIC-NEXT: rts161368entry:1369 %icmp = icmp ne i8 %y, %x1370 %ret = select i1 %icmp, i8 %m, i8 %n1371 ret i8 %ret1372}1373 1374define i8 @selectRI_ne_i8(i8 %x, i8 %n, i8 %m) {1375; CHECK-LABEL: selectRI_ne_i8:1376; CHECK: # %bb.0: # %entry1377; CHECK-NEXT: zextb16 a0, a01378; CHECK-NEXT: cmpnei16 a0, 101379; CHECK-NEXT: movt32 a1, a21380; CHECK-NEXT: mov16 a0, a11381; CHECK-NEXT: rts161382;1383; GENERIC-LABEL: selectRI_ne_i8:1384; GENERIC: # %bb.0: # %entry1385; GENERIC-NEXT: .cfi_def_cfa_offset 01386; GENERIC-NEXT: subi16 sp, sp, 41387; GENERIC-NEXT: .cfi_def_cfa_offset 41388; GENERIC-NEXT: movi16 a3, 2551389; GENERIC-NEXT: and16 a3, a01390; GENERIC-NEXT: cmpnei16 a3, 101391; GENERIC-NEXT: mvcv16 a01392; GENERIC-NEXT: movi16 a3, 11393; GENERIC-NEXT: subu16 a3, a01394; GENERIC-NEXT: btsti16 a3, 01395; GENERIC-NEXT: bt16 .LBB35_21396; GENERIC-NEXT: # %bb.1: # %entry1397; GENERIC-NEXT: mov16 a2, a11398; GENERIC-NEXT: .LBB35_2: # %entry1399; GENERIC-NEXT: mov16 a0, a21400; GENERIC-NEXT: addi16 sp, sp, 41401; GENERIC-NEXT: rts161402entry:1403 %icmp = icmp ne i8 %x, 101404 %ret = select i1 %icmp, i8 %m, i8 %n1405 ret i8 %ret1406}1407 1408define i8 @selectRX_ne_i8(i8 %x, i8 %n, i8 %m) {1409; CHECK-LABEL: selectRX_ne_i8:1410; CHECK: # %bb.0: # %entry1411; CHECK-NEXT: zextb16 a0, a01412; CHECK-NEXT: cmpnei32 a0, 2411413; CHECK-NEXT: movt32 a1, a21414; CHECK-NEXT: mov16 a0, a11415; CHECK-NEXT: rts161416;1417; GENERIC-LABEL: selectRX_ne_i8:1418; GENERIC: # %bb.0: # %entry1419; GENERIC-NEXT: .cfi_def_cfa_offset 01420; GENERIC-NEXT: subi16 sp, sp, 41421; GENERIC-NEXT: .cfi_def_cfa_offset 41422; GENERIC-NEXT: movi16 a3, 2551423; GENERIC-NEXT: and16 a3, a01424; GENERIC-NEXT: movi16 a0, 2411425; GENERIC-NEXT: cmpne16 a3, a01426; GENERIC-NEXT: mvcv16 a01427; GENERIC-NEXT: movi16 a3, 11428; GENERIC-NEXT: subu16 a3, a01429; GENERIC-NEXT: btsti16 a3, 01430; GENERIC-NEXT: bt16 .LBB36_21431; GENERIC-NEXT: # %bb.1: # %entry1432; GENERIC-NEXT: mov16 a2, a11433; GENERIC-NEXT: .LBB36_2: # %entry1434; GENERIC-NEXT: mov16 a0, a21435; GENERIC-NEXT: addi16 sp, sp, 41436; GENERIC-NEXT: rts161437entry:1438 %icmp = icmp ne i8 %x, 477777771439 %ret = select i1 %icmp, i8 %m, i8 %n1440 ret i8 %ret1441}1442 1443define i8 @selectC_ne_i8(i1 %c, i8 %n, i8 %m) {1444; CHECK-LABEL: selectC_ne_i8:1445; CHECK: # %bb.0: # %entry1446; CHECK-NEXT: btsti16 a0, 01447; CHECK-NEXT: movt32 a1, a21448; CHECK-NEXT: mov16 a0, a11449; CHECK-NEXT: rts161450;1451; GENERIC-LABEL: selectC_ne_i8:1452; GENERIC: # %bb.0: # %entry1453; GENERIC-NEXT: .cfi_def_cfa_offset 01454; GENERIC-NEXT: subi16 sp, sp, 41455; GENERIC-NEXT: .cfi_def_cfa_offset 41456; GENERIC-NEXT: btsti16 a0, 01457; GENERIC-NEXT: bt16 .LBB37_21458; GENERIC-NEXT: # %bb.1: # %entry1459; GENERIC-NEXT: mov16 a2, a11460; GENERIC-NEXT: .LBB37_2: # %entry1461; GENERIC-NEXT: mov16 a0, a21462; GENERIC-NEXT: addi16 sp, sp, 41463; GENERIC-NEXT: rts161464entry:1465 %ret = select i1 %c, i8 %m, i8 %n1466 ret i8 %ret1467}1468 1469 1470define i1 @selectRR_ne_i1(i1 %x, i1 %y, i1 %n, i1 %m) {1471; CHECK-LABEL: selectRR_ne_i1:1472; CHECK: # %bb.0: # %entry1473; CHECK-NEXT: xor16 a0, a11474; CHECK-NEXT: btsti16 a0, 01475; CHECK-NEXT: movt32 a2, a31476; CHECK-NEXT: mov16 a0, a21477; CHECK-NEXT: rts161478;1479; GENERIC-LABEL: selectRR_ne_i1:1480; GENERIC: # %bb.0: # %entry1481; GENERIC-NEXT: .cfi_def_cfa_offset 01482; GENERIC-NEXT: subi16 sp, sp, 41483; GENERIC-NEXT: .cfi_def_cfa_offset 41484; GENERIC-NEXT: xor16 a0, a11485; GENERIC-NEXT: btsti16 a0, 01486; GENERIC-NEXT: bt16 .LBB38_21487; GENERIC-NEXT: # %bb.1: # %entry1488; GENERIC-NEXT: mov16 a3, a21489; GENERIC-NEXT: .LBB38_2: # %entry1490; GENERIC-NEXT: mov16 a0, a31491; GENERIC-NEXT: addi16 sp, sp, 41492; GENERIC-NEXT: rts161493entry:1494 %icmp = icmp ne i1 %y, %x1495 %ret = select i1 %icmp, i1 %m, i1 %n1496 ret i1 %ret1497}1498 1499define i1 @selectRI_ne_i1(i1 %x, i1 %n, i1 %m) {1500; CHECK-LABEL: selectRI_ne_i1:1501; CHECK: # %bb.0: # %entry1502; CHECK-NEXT: btsti16 a0, 01503; CHECK-NEXT: movt32 a1, a21504; CHECK-NEXT: mov16 a0, a11505; CHECK-NEXT: rts161506;1507; GENERIC-LABEL: selectRI_ne_i1:1508; GENERIC: # %bb.0: # %entry1509; GENERIC-NEXT: .cfi_def_cfa_offset 01510; GENERIC-NEXT: subi16 sp, sp, 41511; GENERIC-NEXT: .cfi_def_cfa_offset 41512; GENERIC-NEXT: btsti16 a0, 01513; GENERIC-NEXT: bt16 .LBB39_21514; GENERIC-NEXT: # %bb.1: # %entry1515; GENERIC-NEXT: mov16 a2, a11516; GENERIC-NEXT: .LBB39_2: # %entry1517; GENERIC-NEXT: mov16 a0, a21518; GENERIC-NEXT: addi16 sp, sp, 41519; GENERIC-NEXT: rts161520entry:1521 %icmp = icmp ne i1 %x, 101522 %ret = select i1 %icmp, i1 %m, i1 %n1523 ret i1 %ret1524}1525 1526define i1 @selectRX_ne_i1(i1 %x, i1 %n, i1 %m) {1527; CHECK-LABEL: selectRX_ne_i1:1528; CHECK: # %bb.0: # %entry1529; CHECK-NEXT: btsti16 a0, 01530; CHECK-NEXT: movt32 a2, a11531; CHECK-NEXT: mov16 a0, a21532; CHECK-NEXT: rts161533;1534; GENERIC-LABEL: selectRX_ne_i1:1535; GENERIC: # %bb.0: # %entry1536; GENERIC-NEXT: .cfi_def_cfa_offset 01537; GENERIC-NEXT: subi16 sp, sp, 41538; GENERIC-NEXT: .cfi_def_cfa_offset 41539; GENERIC-NEXT: btsti16 a0, 01540; GENERIC-NEXT: bt16 .LBB40_21541; GENERIC-NEXT: # %bb.1: # %entry1542; GENERIC-NEXT: mov16 a1, a21543; GENERIC-NEXT: .LBB40_2: # %entry1544; GENERIC-NEXT: mov16 a0, a11545; GENERIC-NEXT: addi16 sp, sp, 41546; GENERIC-NEXT: rts161547entry:1548 %icmp = icmp ne i1 %x, 477777771549 %ret = select i1 %icmp, i1 %m, i1 %n1550 ret i1 %ret1551}1552 1553define i1 @selectC_ne_i1(i1 %c, i1 %n, i1 %m) {1554; CHECK-LABEL: selectC_ne_i1:1555; CHECK: # %bb.0: # %entry1556; CHECK-NEXT: btsti16 a0, 01557; CHECK-NEXT: movt32 a1, a21558; CHECK-NEXT: mov16 a0, a11559; CHECK-NEXT: rts161560;1561; GENERIC-LABEL: selectC_ne_i1:1562; GENERIC: # %bb.0: # %entry1563; GENERIC-NEXT: .cfi_def_cfa_offset 01564; GENERIC-NEXT: subi16 sp, sp, 41565; GENERIC-NEXT: .cfi_def_cfa_offset 41566; GENERIC-NEXT: btsti16 a0, 01567; GENERIC-NEXT: bt16 .LBB41_21568; GENERIC-NEXT: # %bb.1: # %entry1569; GENERIC-NEXT: mov16 a2, a11570; GENERIC-NEXT: .LBB41_2: # %entry1571; GENERIC-NEXT: mov16 a0, a21572; GENERIC-NEXT: addi16 sp, sp, 41573; GENERIC-NEXT: rts161574entry:1575 %ret = select i1 %c, i1 %m, i1 %n1576 ret i1 %ret1577}1578 1579 1580define i32 @selectRR_ugt_i32(i32 %x, i32 %y, i32 %n, i32 %m) {1581; CHECK-LABEL: selectRR_ugt_i32:1582; CHECK: # %bb.0: # %entry1583; CHECK-NEXT: cmphs16 a0, a11584; CHECK-NEXT: movf32 a2, a31585; CHECK-NEXT: mov16 a0, a21586; CHECK-NEXT: rts161587;1588; GENERIC-LABEL: selectRR_ugt_i32:1589; GENERIC: # %bb.0: # %entry1590; GENERIC-NEXT: .cfi_def_cfa_offset 01591; GENERIC-NEXT: subi16 sp, sp, 41592; GENERIC-NEXT: .cfi_def_cfa_offset 41593; GENERIC-NEXT: cmphs16 a0, a11594; GENERIC-NEXT: mvcv16 a01595; GENERIC-NEXT: btsti16 a0, 01596; GENERIC-NEXT: bt16 .LBB42_21597; GENERIC-NEXT: # %bb.1: # %entry1598; GENERIC-NEXT: mov16 a3, a21599; GENERIC-NEXT: .LBB42_2: # %entry1600; GENERIC-NEXT: mov16 a0, a31601; GENERIC-NEXT: addi16 sp, sp, 41602; GENERIC-NEXT: rts161603entry:1604 %icmp = icmp ugt i32 %y, %x1605 %ret = select i1 %icmp, i32 %m, i32 %n1606 ret i32 %ret1607}1608 1609define i32 @selectRI_ugt_i32(i32 %x, i32 %n, i32 %m) {1610; CHECK-LABEL: selectRI_ugt_i32:1611; CHECK: # %bb.0: # %entry1612; CHECK-NEXT: movi16 a3, 101613; CHECK-NEXT: cmphs16 a3, a01614; CHECK-NEXT: movf32 a1, a21615; CHECK-NEXT: mov16 a0, a11616; CHECK-NEXT: rts161617;1618; GENERIC-LABEL: selectRI_ugt_i32:1619; GENERIC: # %bb.0: # %entry1620; GENERIC-NEXT: .cfi_def_cfa_offset 01621; GENERIC-NEXT: subi16 sp, sp, 41622; GENERIC-NEXT: .cfi_def_cfa_offset 41623; GENERIC-NEXT: movi16 a3, 101624; GENERIC-NEXT: cmphs16 a3, a01625; GENERIC-NEXT: mvcv16 a01626; GENERIC-NEXT: btsti16 a0, 01627; GENERIC-NEXT: bt16 .LBB43_21628; GENERIC-NEXT: # %bb.1: # %entry1629; GENERIC-NEXT: mov16 a2, a11630; GENERIC-NEXT: .LBB43_2: # %entry1631; GENERIC-NEXT: mov16 a0, a21632; GENERIC-NEXT: addi16 sp, sp, 41633; GENERIC-NEXT: rts161634entry:1635 %icmp = icmp ugt i32 %x, 101636 %ret = select i1 %icmp, i32 %m, i32 %n1637 ret i32 %ret1638}1639 1640define i32 @selectRX_ugt_i32(i32 %x, i32 %n, i32 %m) {1641; CHECK-LABEL: selectRX_ugt_i32:1642; CHECK: # %bb.0: # %entry1643; CHECK-NEXT: movih32 a3, 7291644; CHECK-NEXT: ori32 a3, a3, 20331645; CHECK-NEXT: cmphs16 a3, a01646; CHECK-NEXT: movf32 a1, a21647; CHECK-NEXT: mov16 a0, a11648; CHECK-NEXT: rts161649;1650; GENERIC-LABEL: selectRX_ugt_i32:1651; GENERIC: # %bb.0: # %entry1652; GENERIC-NEXT: subi16 sp, sp, 41653; GENERIC-NEXT: .cfi_def_cfa_offset 41654; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1655; GENERIC-NEXT: .cfi_offset l0, -41656; GENERIC-NEXT: subi16 sp, sp, 41657; GENERIC-NEXT: .cfi_def_cfa_offset 81658; GENERIC-NEXT: movi16 a3, 21659; GENERIC-NEXT: lsli16 a3, a3, 241660; GENERIC-NEXT: movi16 l0, 2171661; GENERIC-NEXT: lsli16 l0, l0, 161662; GENERIC-NEXT: or16 l0, a31663; GENERIC-NEXT: movi16 a3, 71664; GENERIC-NEXT: lsli16 a3, a3, 81665; GENERIC-NEXT: or16 a3, l01666; GENERIC-NEXT: movi16 l0, 2411667; GENERIC-NEXT: or16 l0, a31668; GENERIC-NEXT: cmphs16 l0, a01669; GENERIC-NEXT: mvcv16 a01670; GENERIC-NEXT: btsti16 a0, 01671; GENERIC-NEXT: bt16 .LBB44_21672; GENERIC-NEXT: # %bb.1: # %entry1673; GENERIC-NEXT: mov16 a2, a11674; GENERIC-NEXT: .LBB44_2: # %entry1675; GENERIC-NEXT: mov16 a0, a21676; GENERIC-NEXT: addi16 sp, sp, 41677; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1678; GENERIC-NEXT: addi16 sp, sp, 41679; GENERIC-NEXT: rts161680entry:1681 %icmp = icmp ugt i32 %x, 477777771682 %ret = select i1 %icmp, i32 %m, i32 %n1683 ret i32 %ret1684}1685 1686define i32 @selectC_ugt_i32(i1 %c, i32 %n, i32 %m) {1687; CHECK-LABEL: selectC_ugt_i32:1688; CHECK: # %bb.0: # %entry1689; CHECK-NEXT: btsti16 a0, 01690; CHECK-NEXT: movt32 a1, a21691; CHECK-NEXT: mov16 a0, a11692; CHECK-NEXT: rts161693;1694; GENERIC-LABEL: selectC_ugt_i32:1695; GENERIC: # %bb.0: # %entry1696; GENERIC-NEXT: .cfi_def_cfa_offset 01697; GENERIC-NEXT: subi16 sp, sp, 41698; GENERIC-NEXT: .cfi_def_cfa_offset 41699; GENERIC-NEXT: btsti16 a0, 01700; GENERIC-NEXT: bt16 .LBB45_21701; GENERIC-NEXT: # %bb.1: # %entry1702; GENERIC-NEXT: mov16 a2, a11703; GENERIC-NEXT: .LBB45_2: # %entry1704; GENERIC-NEXT: mov16 a0, a21705; GENERIC-NEXT: addi16 sp, sp, 41706; GENERIC-NEXT: rts161707entry:1708 %ret = select i1 %c, i32 %m, i32 %n1709 ret i32 %ret1710}1711 1712define i64 @selectRR_ugt_i64(i64 %x, i64 %y, i64 %n, i64 %m) {1713; CHECK-LABEL: selectRR_ugt_i64:1714; CHECK: # %bb.0: # %entry1715; CHECK-NEXT: .cfi_def_cfa_offset 01716; CHECK-NEXT: subi16 sp, sp, 81717; CHECK-NEXT: .cfi_def_cfa_offset 81718; CHECK-NEXT: cmpne16 a3, a11719; CHECK-NEXT: mvc32 t01720; CHECK-NEXT: st32.w t0, (sp, 4)1721; CHECK-NEXT: cmphs16 a1, a31722; CHECK-NEXT: mvcv16 a11723; CHECK-NEXT: cmphs16 a0, a21724; CHECK-NEXT: mvcv16 a01725; CHECK-NEXT: ld16.w a2, (sp, 4)1726; CHECK-NEXT: btsti16 a2, 01727; CHECK-NEXT: movf32 a1, a01728; CHECK-NEXT: addi16 a2, sp, 81729; CHECK-NEXT: addi16 a0, sp, 161730; CHECK-NEXT: btsti16 a1, 01731; CHECK-NEXT: movt32 a2, a01732; CHECK-NEXT: ld16.w a0, (a2, 0)1733; CHECK-NEXT: ld16.w a1, (a2, 4)1734; CHECK-NEXT: addi16 sp, sp, 81735; CHECK-NEXT: rts161736;1737; GENERIC-LABEL: selectRR_ugt_i64:1738; GENERIC: # %bb.0: # %entry1739; GENERIC-NEXT: subi16 sp, sp, 41740; GENERIC-NEXT: .cfi_def_cfa_offset 41741; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1742; GENERIC-NEXT: .cfi_offset l0, -41743; GENERIC-NEXT: subi16 sp, sp, 41744; GENERIC-NEXT: .cfi_def_cfa_offset 81745; GENERIC-NEXT: cmphs16 a1, a31746; GENERIC-NEXT: mvcv16 l01747; GENERIC-NEXT: cmphs16 a0, a21748; GENERIC-NEXT: mvcv16 a01749; GENERIC-NEXT: cmpne16 a3, a11750; GENERIC-NEXT: mvcv16 a11751; GENERIC-NEXT: btsti16 a1, 01752; GENERIC-NEXT: bt16 .LBB46_21753; GENERIC-NEXT: # %bb.1: # %entry1754; GENERIC-NEXT: mov16 a0, l01755; GENERIC-NEXT: .LBB46_2: # %entry1756; GENERIC-NEXT: btsti16 a0, 01757; GENERIC-NEXT: bt16 .LBB46_41758; GENERIC-NEXT: # %bb.3: # %entry1759; GENERIC-NEXT: movi16 a0, 81760; GENERIC-NEXT: br32 .LBB46_51761; GENERIC-NEXT: .LBB46_4:1762; GENERIC-NEXT: movi16 a0, 161763; GENERIC-NEXT: .LBB46_5: # %entry1764; GENERIC-NEXT: addu16 a0, sp1765; GENERIC-NEXT: mov16 a1, a01766; GENERIC-NEXT: ld16.w a0, (a0, 0)1767; GENERIC-NEXT: ld16.w a1, (a1, 4)1768; GENERIC-NEXT: addi16 sp, sp, 41769; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1770; GENERIC-NEXT: addi16 sp, sp, 41771; GENERIC-NEXT: rts161772entry:1773 %icmp = icmp ugt i64 %y, %x1774 %ret = select i1 %icmp, i64 %m, i64 %n1775 ret i64 %ret1776}1777 1778define i64 @selectRI_ugt_i64(i64 %x, i64 %n, i64 %m) {1779; CHECK-LABEL: selectRI_ugt_i64:1780; CHECK: # %bb.0: # %entry1781; CHECK-NEXT: subi16 sp, sp, 41782; CHECK-NEXT: .cfi_def_cfa_offset 41783; CHECK-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1784; CHECK-NEXT: .cfi_offset l0, -41785; CHECK-NEXT: .cfi_def_cfa_offset 41786; CHECK-NEXT: ld32.w t0, (sp, 8)1787; CHECK-NEXT: ld32.w t1, (sp, 4)1788; CHECK-NEXT: movi16 l0, 101789; CHECK-NEXT: cmphs16 l0, a01790; CHECK-NEXT: mvcv16 a01791; CHECK-NEXT: cmpnei16 a1, 01792; CHECK-NEXT: mvc32 a11793; CHECK-NEXT: movf32 a1, a01794; CHECK-NEXT: btsti16 a1, 01795; CHECK-NEXT: movt32 a2, t11796; CHECK-NEXT: movt32 a3, t01797; CHECK-NEXT: mov16 a0, a21798; CHECK-NEXT: mov16 a1, a31799; CHECK-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1800; CHECK-NEXT: addi16 sp, sp, 41801; CHECK-NEXT: rts161802;1803; GENERIC-LABEL: selectRI_ugt_i64:1804; GENERIC: # %bb.0: # %entry1805; GENERIC-NEXT: subi16 sp, sp, 41806; GENERIC-NEXT: .cfi_def_cfa_offset 41807; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1808; GENERIC-NEXT: .cfi_offset l0, -41809; GENERIC-NEXT: subi16 sp, sp, 41810; GENERIC-NEXT: .cfi_def_cfa_offset 81811; GENERIC-NEXT: cmpnei16 a1, 01812; GENERIC-NEXT: mvcv16 a11813; GENERIC-NEXT: movi16 l0, 101814; GENERIC-NEXT: cmphs16 l0, a01815; GENERIC-NEXT: mvcv16 a01816; GENERIC-NEXT: btsti16 a1, 01817; GENERIC-NEXT: bf16 .LBB47_51818; GENERIC-NEXT: # %bb.1: # %entry1819; GENERIC-NEXT: btsti16 a0, 01820; GENERIC-NEXT: bt16 .LBB47_61821; GENERIC-NEXT: .LBB47_2: # %entry1822; GENERIC-NEXT: btsti16 a0, 01823; GENERIC-NEXT: bf16 .LBB47_41824; GENERIC-NEXT: .LBB47_3:1825; GENERIC-NEXT: ld16.w a3, (sp, 12)1826; GENERIC-NEXT: .LBB47_4: # %entry1827; GENERIC-NEXT: mov16 a0, a21828; GENERIC-NEXT: mov16 a1, a31829; GENERIC-NEXT: addi16 sp, sp, 41830; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1831; GENERIC-NEXT: addi16 sp, sp, 41832; GENERIC-NEXT: rts161833; GENERIC-NEXT: .LBB47_5: # %entry1834; GENERIC-NEXT: movi16 a0, 11835; GENERIC-NEXT: subu16 a0, a11836; GENERIC-NEXT: btsti16 a0, 01837; GENERIC-NEXT: bf16 .LBB47_21838; GENERIC-NEXT: .LBB47_6:1839; GENERIC-NEXT: ld16.w a2, (sp, 8)1840; GENERIC-NEXT: btsti16 a0, 01841; GENERIC-NEXT: bt16 .LBB47_31842; GENERIC-NEXT: br32 .LBB47_41843entry:1844 %icmp = icmp ugt i64 %x, 101845 %ret = select i1 %icmp, i64 %m, i64 %n1846 ret i64 %ret1847}1848 1849define i64 @selectRX_ugt_i64(i64 %x, i64 %n, i64 %m) {1850; CHECK-LABEL: selectRX_ugt_i64:1851; CHECK: # %bb.0: # %entry1852; CHECK-NEXT: subi16 sp, sp, 41853; CHECK-NEXT: .cfi_def_cfa_offset 41854; CHECK-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1855; CHECK-NEXT: .cfi_offset l0, -41856; CHECK-NEXT: .cfi_def_cfa_offset 41857; CHECK-NEXT: ld32.w t0, (sp, 8)1858; CHECK-NEXT: ld32.w t1, (sp, 4)1859; CHECK-NEXT: movih32 l0, 7291860; CHECK-NEXT: ori32 l0, l0, 20331861; CHECK-NEXT: cmphs16 l0, a01862; CHECK-NEXT: mvcv16 a01863; CHECK-NEXT: cmpnei16 a1, 01864; CHECK-NEXT: mvc32 a11865; CHECK-NEXT: movf32 a1, a01866; CHECK-NEXT: btsti16 a1, 01867; CHECK-NEXT: movt32 a2, t11868; CHECK-NEXT: movt32 a3, t01869; CHECK-NEXT: mov16 a0, a21870; CHECK-NEXT: mov16 a1, a31871; CHECK-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1872; CHECK-NEXT: addi16 sp, sp, 41873; CHECK-NEXT: rts161874;1875; GENERIC-LABEL: selectRX_ugt_i64:1876; GENERIC: # %bb.0: # %entry1877; GENERIC-NEXT: subi16 sp, sp, 81878; GENERIC-NEXT: .cfi_def_cfa_offset 81879; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill1880; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1881; GENERIC-NEXT: .cfi_offset l1, -41882; GENERIC-NEXT: .cfi_offset l0, -81883; GENERIC-NEXT: subi16 sp, sp, 41884; GENERIC-NEXT: .cfi_def_cfa_offset 121885; GENERIC-NEXT: cmpnei16 a1, 01886; GENERIC-NEXT: mvcv16 a11887; GENERIC-NEXT: movi16 l0, 21888; GENERIC-NEXT: lsli16 l0, l0, 241889; GENERIC-NEXT: movi16 l1, 2171890; GENERIC-NEXT: lsli16 l1, l1, 161891; GENERIC-NEXT: or16 l1, l01892; GENERIC-NEXT: movi16 l0, 71893; GENERIC-NEXT: lsli16 l0, l0, 81894; GENERIC-NEXT: or16 l0, l11895; GENERIC-NEXT: movi16 l1, 2411896; GENERIC-NEXT: or16 l1, l01897; GENERIC-NEXT: cmphs16 l1, a01898; GENERIC-NEXT: mvcv16 a01899; GENERIC-NEXT: btsti16 a1, 01900; GENERIC-NEXT: bf16 .LBB48_51901; GENERIC-NEXT: # %bb.1: # %entry1902; GENERIC-NEXT: btsti16 a0, 01903; GENERIC-NEXT: bt16 .LBB48_61904; GENERIC-NEXT: .LBB48_2: # %entry1905; GENERIC-NEXT: btsti16 a0, 01906; GENERIC-NEXT: bf16 .LBB48_41907; GENERIC-NEXT: .LBB48_3:1908; GENERIC-NEXT: ld16.w a3, (sp, 16)1909; GENERIC-NEXT: .LBB48_4: # %entry1910; GENERIC-NEXT: mov16 a0, a21911; GENERIC-NEXT: mov16 a1, a31912; GENERIC-NEXT: addi16 sp, sp, 41913; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1914; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload1915; GENERIC-NEXT: addi16 sp, sp, 81916; GENERIC-NEXT: rts161917; GENERIC-NEXT: .LBB48_5: # %entry1918; GENERIC-NEXT: movi16 a0, 11919; GENERIC-NEXT: subu16 a0, a11920; GENERIC-NEXT: btsti16 a0, 01921; GENERIC-NEXT: bf16 .LBB48_21922; GENERIC-NEXT: .LBB48_6:1923; GENERIC-NEXT: ld16.w a2, (sp, 12)1924; GENERIC-NEXT: btsti16 a0, 01925; GENERIC-NEXT: bt16 .LBB48_31926; GENERIC-NEXT: br32 .LBB48_41927entry:1928 %icmp = icmp ugt i64 %x, 477777771929 %ret = select i1 %icmp, i64 %m, i64 %n1930 ret i64 %ret1931}1932 1933define i64 @selectC_ugt_i64(i1 %c, i64 %n, i64 %m) {1934; CHECK-LABEL: selectC_ugt_i64:1935; CHECK: # %bb.0: # %entry1936; CHECK-NEXT: ld32.w t0, (sp, 0)1937; CHECK-NEXT: btsti16 a0, 01938; CHECK-NEXT: movt32 a1, a31939; CHECK-NEXT: movt32 a2, t01940; CHECK-NEXT: mov16 a0, a11941; CHECK-NEXT: mov16 a1, a21942; CHECK-NEXT: rts161943;1944; GENERIC-LABEL: selectC_ugt_i64:1945; GENERIC: # %bb.0: # %entry1946; GENERIC-NEXT: .cfi_def_cfa_offset 01947; GENERIC-NEXT: subi16 sp, sp, 41948; GENERIC-NEXT: .cfi_def_cfa_offset 41949; GENERIC-NEXT: btsti16 a0, 01950; GENERIC-NEXT: bt16 .LBB49_21951; GENERIC-NEXT: # %bb.1: # %entry1952; GENERIC-NEXT: mov16 a3, a11953; GENERIC-NEXT: .LBB49_2: # %entry1954; GENERIC-NEXT: btsti16 a0, 01955; GENERIC-NEXT: bf16 .LBB49_41956; GENERIC-NEXT: # %bb.3:1957; GENERIC-NEXT: ld16.w a2, (sp, 4)1958; GENERIC-NEXT: .LBB49_4: # %entry1959; GENERIC-NEXT: mov16 a0, a31960; GENERIC-NEXT: mov16 a1, a21961; GENERIC-NEXT: addi16 sp, sp, 41962; GENERIC-NEXT: rts161963entry:1964 %ret = select i1 %c, i64 %m, i64 %n1965 ret i64 %ret1966}1967 1968 1969define i16 @selectRR_ugt_i16(i16 %x, i16 %y, i16 %n, i16 %m) {1970; CHECK-LABEL: selectRR_ugt_i16:1971; CHECK: # %bb.0: # %entry1972; CHECK-NEXT: zexth16 a1, a11973; CHECK-NEXT: zexth16 a0, a01974; CHECK-NEXT: cmphs16 a0, a11975; CHECK-NEXT: movf32 a2, a31976; CHECK-NEXT: mov16 a0, a21977; CHECK-NEXT: rts161978;1979; GENERIC-LABEL: selectRR_ugt_i16:1980; GENERIC: # %bb.0: # %entry1981; GENERIC-NEXT: subi16 sp, sp, 121982; GENERIC-NEXT: .cfi_def_cfa_offset 121983; GENERIC-NEXT: st16.w l2, (sp, 8) # 4-byte Folded Spill1984; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill1985; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1986; GENERIC-NEXT: .cfi_offset l2, -41987; GENERIC-NEXT: .cfi_offset l1, -81988; GENERIC-NEXT: .cfi_offset l0, -121989; GENERIC-NEXT: subi16 sp, sp, 41990; GENERIC-NEXT: .cfi_def_cfa_offset 161991; GENERIC-NEXT: movi16 l0, 01992; GENERIC-NEXT: lsli16 l1, l0, 241993; GENERIC-NEXT: lsli16 l0, l0, 161994; GENERIC-NEXT: or16 l0, l11995; GENERIC-NEXT: movi16 l1, 2551996; GENERIC-NEXT: lsli16 l2, l1, 81997; GENERIC-NEXT: or16 l2, l01998; GENERIC-NEXT: or16 l2, l11999; GENERIC-NEXT: and16 a1, l22000; GENERIC-NEXT: and16 l2, a02001; GENERIC-NEXT: cmphs16 l2, a12002; GENERIC-NEXT: mvcv16 a02003; GENERIC-NEXT: btsti16 a0, 02004; GENERIC-NEXT: bt16 .LBB50_22005; GENERIC-NEXT: # %bb.1: # %entry2006; GENERIC-NEXT: mov16 a3, a22007; GENERIC-NEXT: .LBB50_2: # %entry2008; GENERIC-NEXT: mov16 a0, a32009; GENERIC-NEXT: addi16 sp, sp, 42010; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload2011; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload2012; GENERIC-NEXT: ld16.w l2, (sp, 8) # 4-byte Folded Reload2013; GENERIC-NEXT: addi16 sp, sp, 122014; GENERIC-NEXT: rts162015entry:2016 %icmp = icmp ugt i16 %y, %x2017 %ret = select i1 %icmp, i16 %m, i16 %n2018 ret i16 %ret2019}2020 2021define i16 @selectRI_ugt_i16(i16 %x, i16 %n, i16 %m) {2022; CHECK-LABEL: selectRI_ugt_i16:2023; CHECK: # %bb.0: # %entry2024; CHECK-NEXT: zexth16 a0, a02025; CHECK-NEXT: movi16 a3, 102026; CHECK-NEXT: cmphs16 a3, a02027; CHECK-NEXT: movf32 a1, a22028; CHECK-NEXT: mov16 a0, a12029; CHECK-NEXT: rts162030;2031; GENERIC-LABEL: selectRI_ugt_i16:2032; GENERIC: # %bb.0: # %entry2033; GENERIC-NEXT: subi16 sp, sp, 82034; GENERIC-NEXT: .cfi_def_cfa_offset 82035; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill2036; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill2037; GENERIC-NEXT: .cfi_offset l1, -42038; GENERIC-NEXT: .cfi_offset l0, -82039; GENERIC-NEXT: subi16 sp, sp, 42040; GENERIC-NEXT: .cfi_def_cfa_offset 122041; GENERIC-NEXT: movi16 a3, 02042; GENERIC-NEXT: lsli16 l0, a3, 242043; GENERIC-NEXT: lsli16 a3, a3, 162044; GENERIC-NEXT: or16 a3, l02045; GENERIC-NEXT: movi16 l0, 2552046; GENERIC-NEXT: lsli16 l1, l0, 82047; GENERIC-NEXT: or16 l1, a32048; GENERIC-NEXT: or16 l1, l02049; GENERIC-NEXT: and16 l1, a02050; GENERIC-NEXT: movi16 a0, 102051; GENERIC-NEXT: cmphs16 a0, l12052; GENERIC-NEXT: mvcv16 a02053; GENERIC-NEXT: btsti16 a0, 02054; GENERIC-NEXT: bt16 .LBB51_22055; GENERIC-NEXT: # %bb.1: # %entry2056; GENERIC-NEXT: mov16 a2, a12057; GENERIC-NEXT: .LBB51_2: # %entry2058; GENERIC-NEXT: mov16 a0, a22059; GENERIC-NEXT: addi16 sp, sp, 42060; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload2061; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload2062; GENERIC-NEXT: addi16 sp, sp, 82063; GENERIC-NEXT: rts162064entry:2065 %icmp = icmp ugt i16 %x, 102066 %ret = select i1 %icmp, i16 %m, i16 %n2067 ret i16 %ret2068}2069 2070define i16 @selectRX_ugt_i16(i16 %x, i16 %n, i16 %m) {2071; CHECK-LABEL: selectRX_ugt_i16:2072; CHECK: # %bb.0: # %entry2073; CHECK-NEXT: zexth16 a0, a02074; CHECK-NEXT: movi32 a3, 20332075; CHECK-NEXT: cmphs16 a3, a02076; CHECK-NEXT: movf32 a1, a22077; CHECK-NEXT: mov16 a0, a12078; CHECK-NEXT: rts162079;2080; GENERIC-LABEL: selectRX_ugt_i16:2081; GENERIC: # %bb.0: # %entry2082; GENERIC-NEXT: subi16 sp, sp, 82083; GENERIC-NEXT: .cfi_def_cfa_offset 82084; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill2085; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill2086; GENERIC-NEXT: .cfi_offset l1, -42087; GENERIC-NEXT: .cfi_offset l0, -82088; GENERIC-NEXT: subi16 sp, sp, 42089; GENERIC-NEXT: .cfi_def_cfa_offset 122090; GENERIC-NEXT: movi16 a3, 02091; GENERIC-NEXT: lsli16 l0, a3, 242092; GENERIC-NEXT: lsli16 a3, a3, 162093; GENERIC-NEXT: or16 a3, l02094; GENERIC-NEXT: movi16 l0, 2552095; GENERIC-NEXT: lsli16 l1, l0, 82096; GENERIC-NEXT: or16 l1, a32097; GENERIC-NEXT: or16 l1, l02098; GENERIC-NEXT: and16 l1, a02099; GENERIC-NEXT: movi16 a0, 72100; GENERIC-NEXT: lsli16 a0, a0, 82101; GENERIC-NEXT: or16 a0, a32102; GENERIC-NEXT: movi16 a3, 2412103; GENERIC-NEXT: or16 a3, a02104; GENERIC-NEXT: cmphs16 a3, l12105; GENERIC-NEXT: mvcv16 a02106; GENERIC-NEXT: btsti16 a0, 02107; GENERIC-NEXT: bt16 .LBB52_22108; GENERIC-NEXT: # %bb.1: # %entry2109; GENERIC-NEXT: mov16 a2, a12110; GENERIC-NEXT: .LBB52_2: # %entry2111; GENERIC-NEXT: mov16 a0, a22112; GENERIC-NEXT: addi16 sp, sp, 42113; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload2114; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload2115; GENERIC-NEXT: addi16 sp, sp, 82116; GENERIC-NEXT: rts162117entry:2118 %icmp = icmp ugt i16 %x, 477777772119 %ret = select i1 %icmp, i16 %m, i16 %n2120 ret i16 %ret2121}2122 2123define i16 @selectC_ugt_i16(i1 %c, i16 %n, i16 %m) {2124; CHECK-LABEL: selectC_ugt_i16:2125; CHECK: # %bb.0: # %entry2126; CHECK-NEXT: btsti16 a0, 02127; CHECK-NEXT: movt32 a1, a22128; CHECK-NEXT: mov16 a0, a12129; CHECK-NEXT: rts162130;2131; GENERIC-LABEL: selectC_ugt_i16:2132; GENERIC: # %bb.0: # %entry2133; GENERIC-NEXT: .cfi_def_cfa_offset 02134; GENERIC-NEXT: subi16 sp, sp, 42135; GENERIC-NEXT: .cfi_def_cfa_offset 42136; GENERIC-NEXT: btsti16 a0, 02137; GENERIC-NEXT: bt16 .LBB53_22138; GENERIC-NEXT: # %bb.1: # %entry2139; GENERIC-NEXT: mov16 a2, a12140; GENERIC-NEXT: .LBB53_2: # %entry2141; GENERIC-NEXT: mov16 a0, a22142; GENERIC-NEXT: addi16 sp, sp, 42143; GENERIC-NEXT: rts162144entry:2145 %ret = select i1 %c, i16 %m, i16 %n2146 ret i16 %ret2147}2148 2149 2150define i8 @selectRR_ugt_i8(i8 %x, i8 %y, i8 %n, i8 %m) {2151; CHECK-LABEL: selectRR_ugt_i8:2152; CHECK: # %bb.0: # %entry2153; CHECK-NEXT: zextb16 a1, a12154; CHECK-NEXT: zextb16 a0, a02155; CHECK-NEXT: cmphs16 a0, a12156; CHECK-NEXT: movf32 a2, a32157; CHECK-NEXT: mov16 a0, a22158; CHECK-NEXT: rts162159;2160; GENERIC-LABEL: selectRR_ugt_i8:2161; GENERIC: # %bb.0: # %entry2162; GENERIC-NEXT: subi16 sp, sp, 42163; GENERIC-NEXT: .cfi_def_cfa_offset 42164; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill2165; GENERIC-NEXT: .cfi_offset l0, -42166; GENERIC-NEXT: subi16 sp, sp, 42167; GENERIC-NEXT: .cfi_def_cfa_offset 82168; GENERIC-NEXT: movi16 l0, 2552169; GENERIC-NEXT: and16 a1, l02170; GENERIC-NEXT: and16 a0, l02171; GENERIC-NEXT: cmphs16 a0, a12172; GENERIC-NEXT: mvcv16 a02173; GENERIC-NEXT: btsti16 a0, 02174; GENERIC-NEXT: bt16 .LBB54_22175; GENERIC-NEXT: # %bb.1: # %entry2176; GENERIC-NEXT: mov16 a3, a22177; GENERIC-NEXT: .LBB54_2: # %entry2178; GENERIC-NEXT: mov16 a0, a32179; GENERIC-NEXT: addi16 sp, sp, 42180; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload2181; GENERIC-NEXT: addi16 sp, sp, 42182; GENERIC-NEXT: rts162183entry:2184 %icmp = icmp ugt i8 %y, %x2185 %ret = select i1 %icmp, i8 %m, i8 %n2186 ret i8 %ret2187}2188 2189define i8 @selectRI_ugt_i8(i8 %x, i8 %n, i8 %m) {2190; CHECK-LABEL: selectRI_ugt_i8:2191; CHECK: # %bb.0: # %entry2192; CHECK-NEXT: zextb16 a0, a02193; CHECK-NEXT: movi16 a3, 102194; CHECK-NEXT: cmphs16 a3, a02195; CHECK-NEXT: movf32 a1, a22196; CHECK-NEXT: mov16 a0, a12197; CHECK-NEXT: rts162198;2199; GENERIC-LABEL: selectRI_ugt_i8:2200; GENERIC: # %bb.0: # %entry2201; GENERIC-NEXT: .cfi_def_cfa_offset 02202; GENERIC-NEXT: subi16 sp, sp, 42203; GENERIC-NEXT: .cfi_def_cfa_offset 42204; GENERIC-NEXT: movi16 a3, 2552205; GENERIC-NEXT: and16 a3, a02206; GENERIC-NEXT: movi16 a0, 102207; GENERIC-NEXT: cmphs16 a0, a32208; GENERIC-NEXT: mvcv16 a02209; GENERIC-NEXT: btsti16 a0, 02210; GENERIC-NEXT: bt16 .LBB55_22211; GENERIC-NEXT: # %bb.1: # %entry2212; GENERIC-NEXT: mov16 a2, a12213; GENERIC-NEXT: .LBB55_2: # %entry2214; GENERIC-NEXT: mov16 a0, a22215; GENERIC-NEXT: addi16 sp, sp, 42216; GENERIC-NEXT: rts162217entry:2218 %icmp = icmp ugt i8 %x, 102219 %ret = select i1 %icmp, i8 %m, i8 %n2220 ret i8 %ret2221}2222 2223define i8 @selectRX_ugt_i8(i8 %x, i8 %n, i8 %m) {2224; CHECK-LABEL: selectRX_ugt_i8:2225; CHECK: # %bb.0: # %entry2226; CHECK-NEXT: zextb16 a0, a02227; CHECK-NEXT: movi16 a3, 2412228; CHECK-NEXT: cmphs16 a3, a02229; CHECK-NEXT: movf32 a1, a22230; CHECK-NEXT: mov16 a0, a12231; CHECK-NEXT: rts162232;2233; GENERIC-LABEL: selectRX_ugt_i8:2234; GENERIC: # %bb.0: # %entry2235; GENERIC-NEXT: .cfi_def_cfa_offset 02236; GENERIC-NEXT: subi16 sp, sp, 42237; GENERIC-NEXT: .cfi_def_cfa_offset 42238; GENERIC-NEXT: movi16 a3, 2552239; GENERIC-NEXT: and16 a3, a02240; GENERIC-NEXT: movi16 a0, 2412241; GENERIC-NEXT: cmphs16 a0, a32242; GENERIC-NEXT: mvcv16 a02243; GENERIC-NEXT: btsti16 a0, 02244; GENERIC-NEXT: bt16 .LBB56_22245; GENERIC-NEXT: # %bb.1: # %entry2246; GENERIC-NEXT: mov16 a2, a12247; GENERIC-NEXT: .LBB56_2: # %entry2248; GENERIC-NEXT: mov16 a0, a22249; GENERIC-NEXT: addi16 sp, sp, 42250; GENERIC-NEXT: rts162251entry:2252 %icmp = icmp ugt i8 %x, 477777772253 %ret = select i1 %icmp, i8 %m, i8 %n2254 ret i8 %ret2255}2256 2257define i8 @selectC_ugt_i8(i1 %c, i8 %n, i8 %m) {2258; CHECK-LABEL: selectC_ugt_i8:2259; CHECK: # %bb.0: # %entry2260; CHECK-NEXT: btsti16 a0, 02261; CHECK-NEXT: movt32 a1, a22262; CHECK-NEXT: mov16 a0, a12263; CHECK-NEXT: rts162264;2265; GENERIC-LABEL: selectC_ugt_i8: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: btsti16 a0, 02271; GENERIC-NEXT: bt16 .LBB57_22272; GENERIC-NEXT: # %bb.1: # %entry2273; GENERIC-NEXT: mov16 a2, a12274; GENERIC-NEXT: .LBB57_2: # %entry2275; GENERIC-NEXT: mov16 a0, a22276; GENERIC-NEXT: addi16 sp, sp, 42277; GENERIC-NEXT: rts162278entry:2279 %ret = select i1 %c, i8 %m, i8 %n2280 ret i8 %ret2281}2282 2283 2284define i1 @selectRR_ugt_i1(i1 %x, i1 %y, i1 %n, i1 %m) {2285; CHECK-LABEL: selectRR_ugt_i1:2286; CHECK: # %bb.0: # %entry2287; CHECK-NEXT: btsti16 a0, 02288; CHECK-NEXT: movt32 a3, a22289; CHECK-NEXT: btsti16 a1, 02290; CHECK-NEXT: movt32 a2, a32291; CHECK-NEXT: mov16 a0, a22292; CHECK-NEXT: rts162293;2294; GENERIC-LABEL: selectRR_ugt_i1:2295; GENERIC: # %bb.0: # %entry2296; GENERIC-NEXT: .cfi_def_cfa_offset 02297; GENERIC-NEXT: subi16 sp, sp, 42298; GENERIC-NEXT: .cfi_def_cfa_offset 42299; GENERIC-NEXT: btsti16 a0, 02300; GENERIC-NEXT: mov16 a0, a22301; GENERIC-NEXT: bf16 .LBB58_32302; GENERIC-NEXT: # %bb.1: # %entry2303; GENERIC-NEXT: btsti16 a1, 02304; GENERIC-NEXT: bf16 .LBB58_42305; GENERIC-NEXT: .LBB58_2: # %entry2306; GENERIC-NEXT: addi16 sp, sp, 42307; GENERIC-NEXT: rts162308; GENERIC-NEXT: .LBB58_3: # %entry2309; GENERIC-NEXT: mov16 a0, a32310; GENERIC-NEXT: btsti16 a1, 02311; GENERIC-NEXT: bt16 .LBB58_22312; GENERIC-NEXT: .LBB58_4: # %entry2313; GENERIC-NEXT: mov16 a0, a22314; GENERIC-NEXT: addi16 sp, sp, 42315; GENERIC-NEXT: rts162316entry:2317 %icmp = icmp ugt i1 %y, %x2318 %ret = select i1 %icmp, i1 %m, i1 %n2319 ret i1 %ret2320}2321 2322define i1 @selectRI_ugt_i1(i1 %x, i1 %n, i1 %m) {2323; CHECK-LABEL: selectRI_ugt_i1:2324; CHECK: # %bb.0: # %entry2325; CHECK-NEXT: btsti16 a0, 02326; CHECK-NEXT: movt32 a1, a22327; CHECK-NEXT: mov16 a0, a12328; CHECK-NEXT: rts162329;2330; GENERIC-LABEL: selectRI_ugt_i1:2331; GENERIC: # %bb.0: # %entry2332; GENERIC-NEXT: .cfi_def_cfa_offset 02333; GENERIC-NEXT: subi16 sp, sp, 42334; GENERIC-NEXT: .cfi_def_cfa_offset 42335; GENERIC-NEXT: btsti16 a0, 02336; GENERIC-NEXT: bt16 .LBB59_22337; GENERIC-NEXT: # %bb.1: # %entry2338; GENERIC-NEXT: mov16 a2, a12339; GENERIC-NEXT: .LBB59_2: # %entry2340; GENERIC-NEXT: mov16 a0, a22341; GENERIC-NEXT: addi16 sp, sp, 42342; GENERIC-NEXT: rts162343entry:2344 %icmp = icmp ugt i1 %x, 102345 %ret = select i1 %icmp, i1 %m, i1 %n2346 ret i1 %ret2347}2348 2349define i1 @selectRX_ugt_i1(i1 %x, i1 %n, i1 %m) {2350; CHECK-LABEL: selectRX_ugt_i1:2351; CHECK: # %bb.0: # %entry2352; CHECK-NEXT: mov16 a0, a12353; CHECK-NEXT: rts162354;2355; GENERIC-LABEL: selectRX_ugt_i1:2356; GENERIC: # %bb.0: # %entry2357; GENERIC-NEXT: .cfi_def_cfa_offset 02358; GENERIC-NEXT: subi16 sp, sp, 42359; GENERIC-NEXT: .cfi_def_cfa_offset 42360; GENERIC-NEXT: mov16 a0, a12361; GENERIC-NEXT: addi16 sp, sp, 42362; GENERIC-NEXT: rts162363entry:2364 %icmp = icmp ugt i1 %x, 477777772365 %ret = select i1 %icmp, i1 %m, i1 %n2366 ret i1 %ret2367}2368 2369define i1 @selectC_ugt_i1(i1 %c, i1 %n, i1 %m) {2370; CHECK-LABEL: selectC_ugt_i1:2371; CHECK: # %bb.0: # %entry2372; CHECK-NEXT: btsti16 a0, 02373; CHECK-NEXT: movt32 a1, a22374; CHECK-NEXT: mov16 a0, a12375; CHECK-NEXT: rts162376;2377; GENERIC-LABEL: selectC_ugt_i1:2378; GENERIC: # %bb.0: # %entry2379; GENERIC-NEXT: .cfi_def_cfa_offset 02380; GENERIC-NEXT: subi16 sp, sp, 42381; GENERIC-NEXT: .cfi_def_cfa_offset 42382; GENERIC-NEXT: btsti16 a0, 02383; GENERIC-NEXT: bt16 .LBB61_22384; GENERIC-NEXT: # %bb.1: # %entry2385; GENERIC-NEXT: mov16 a2, a12386; GENERIC-NEXT: .LBB61_2: # %entry2387; GENERIC-NEXT: mov16 a0, a22388; GENERIC-NEXT: addi16 sp, sp, 42389; GENERIC-NEXT: rts162390entry:2391 %ret = select i1 %c, i1 %m, i1 %n2392 ret i1 %ret2393}2394 2395 2396define i32 @selectRR_uge_i32(i32 %x, i32 %y, i32 %n, i32 %m) {2397; CHECK-LABEL: selectRR_uge_i32:2398; CHECK: # %bb.0: # %entry2399; CHECK-NEXT: cmphs16 a1, a02400; CHECK-NEXT: movt32 a2, a32401; CHECK-NEXT: mov16 a0, a22402; CHECK-NEXT: rts162403;2404; GENERIC-LABEL: selectRR_uge_i32:2405; GENERIC: # %bb.0: # %entry2406; GENERIC-NEXT: .cfi_def_cfa_offset 02407; GENERIC-NEXT: subi16 sp, sp, 42408; GENERIC-NEXT: .cfi_def_cfa_offset 42409; GENERIC-NEXT: cmphs16 a1, a02410; GENERIC-NEXT: mvcv16 a02411; GENERIC-NEXT: movi16 a1, 12412; GENERIC-NEXT: subu16 a1, a02413; GENERIC-NEXT: btsti16 a1, 02414; GENERIC-NEXT: bt16 .LBB62_22415; GENERIC-NEXT: # %bb.1: # %entry2416; GENERIC-NEXT: mov16 a3, a22417; GENERIC-NEXT: .LBB62_2: # %entry2418; GENERIC-NEXT: mov16 a0, a32419; GENERIC-NEXT: addi16 sp, sp, 42420; GENERIC-NEXT: rts162421entry:2422 %icmp = icmp uge i32 %y, %x2423 %ret = select i1 %icmp, i32 %m, i32 %n2424 ret i32 %ret2425}2426 2427define i32 @selectRI_uge_i32(i32 %x, i32 %n, i32 %m) {2428; CHECK-LABEL: selectRI_uge_i32:2429; CHECK: # %bb.0: # %entry2430; CHECK-NEXT: movi16 a3, 92431; CHECK-NEXT: cmphs16 a3, a02432; CHECK-NEXT: movf32 a1, a22433; CHECK-NEXT: mov16 a0, a12434; CHECK-NEXT: rts162435;2436; GENERIC-LABEL: selectRI_uge_i32: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: movi16 a3, 92442; GENERIC-NEXT: cmphs16 a3, a02443; GENERIC-NEXT: mvcv16 a02444; GENERIC-NEXT: btsti16 a0, 02445; GENERIC-NEXT: bt16 .LBB63_22446; GENERIC-NEXT: # %bb.1: # %entry2447; GENERIC-NEXT: mov16 a2, a12448; GENERIC-NEXT: .LBB63_2: # %entry2449; GENERIC-NEXT: mov16 a0, a22450; GENERIC-NEXT: addi16 sp, sp, 42451; GENERIC-NEXT: rts162452entry:2453 %icmp = icmp uge i32 %x, 102454 %ret = select i1 %icmp, i32 %m, i32 %n2455 ret i32 %ret2456}2457 2458define i32 @selectRX_uge_i32(i32 %x, i32 %n, i32 %m) {2459; CHECK-LABEL: selectRX_uge_i32:2460; CHECK: # %bb.0: # %entry2461; CHECK-NEXT: movih32 a3, 7292462; CHECK-NEXT: ori32 a3, a3, 20322463; CHECK-NEXT: cmphs16 a3, a02464; CHECK-NEXT: movf32 a1, a22465; CHECK-NEXT: mov16 a0, a12466; CHECK-NEXT: rts162467;2468; GENERIC-LABEL: selectRX_uge_i32:2469; GENERIC: # %bb.0: # %entry2470; GENERIC-NEXT: subi16 sp, sp, 42471; GENERIC-NEXT: .cfi_def_cfa_offset 42472; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill2473; GENERIC-NEXT: .cfi_offset l0, -42474; GENERIC-NEXT: subi16 sp, sp, 42475; GENERIC-NEXT: .cfi_def_cfa_offset 82476; GENERIC-NEXT: movi16 a3, 22477; GENERIC-NEXT: lsli16 a3, a3, 242478; GENERIC-NEXT: movi16 l0, 2172479; GENERIC-NEXT: lsli16 l0, l0, 162480; GENERIC-NEXT: or16 l0, a32481; GENERIC-NEXT: movi16 a3, 72482; GENERIC-NEXT: lsli16 a3, a3, 82483; GENERIC-NEXT: or16 a3, l02484; GENERIC-NEXT: movi16 l0, 2402485; GENERIC-NEXT: or16 l0, a32486; GENERIC-NEXT: cmphs16 l0, a02487; GENERIC-NEXT: mvcv16 a02488; GENERIC-NEXT: btsti16 a0, 02489; GENERIC-NEXT: bt16 .LBB64_22490; GENERIC-NEXT: # %bb.1: # %entry2491; GENERIC-NEXT: mov16 a2, a12492; GENERIC-NEXT: .LBB64_2: # %entry2493; GENERIC-NEXT: mov16 a0, a22494; GENERIC-NEXT: addi16 sp, sp, 42495; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload2496; GENERIC-NEXT: addi16 sp, sp, 42497; GENERIC-NEXT: rts162498entry:2499 %icmp = icmp uge i32 %x, 477777772500 %ret = select i1 %icmp, i32 %m, i32 %n2501 ret i32 %ret2502}2503 2504define i32 @selectC_uge_i32(i1 %c, i32 %n, i32 %m) {2505; CHECK-LABEL: selectC_uge_i32:2506; CHECK: # %bb.0: # %entry2507; CHECK-NEXT: btsti16 a0, 02508; CHECK-NEXT: movt32 a1, a22509; CHECK-NEXT: mov16 a0, a12510; CHECK-NEXT: rts162511;2512; GENERIC-LABEL: selectC_uge_i32:2513; GENERIC: # %bb.0: # %entry2514; GENERIC-NEXT: .cfi_def_cfa_offset 02515; GENERIC-NEXT: subi16 sp, sp, 42516; GENERIC-NEXT: .cfi_def_cfa_offset 42517; GENERIC-NEXT: btsti16 a0, 02518; GENERIC-NEXT: bt16 .LBB65_22519; GENERIC-NEXT: # %bb.1: # %entry2520; GENERIC-NEXT: mov16 a2, a12521; GENERIC-NEXT: .LBB65_2: # %entry2522; GENERIC-NEXT: mov16 a0, a22523; GENERIC-NEXT: addi16 sp, sp, 42524; GENERIC-NEXT: rts162525entry:2526 %ret = select i1 %c, i32 %m, i32 %n2527 ret i32 %ret2528}2529 2530define i64 @selectRR_uge_i64(i64 %x, i64 %y, i64 %n, i64 %m) {2531; CHECK-LABEL: selectRR_uge_i64:2532; CHECK: # %bb.0: # %entry2533; CHECK-NEXT: .cfi_def_cfa_offset 02534; CHECK-NEXT: subi16 sp, sp, 162535; CHECK-NEXT: .cfi_def_cfa_offset 162536; CHECK-NEXT: cmphs16 a3, a12537; CHECK-NEXT: mvc32 t02538; CHECK-NEXT: st32.w t0, (sp, 12)2539; CHECK-NEXT: cmphs16 a2, a02540; CHECK-NEXT: mvc32 a02541; CHECK-NEXT: st16.w a0, (sp, 4)2542; CHECK-NEXT: cmpne16 a3, a12543; CHECK-NEXT: mvc32 a02544; CHECK-NEXT: st16.w a0, (sp, 8)2545; CHECK-NEXT: ld16.w a0, (sp, 4)2546; CHECK-NEXT: btsti16 a0, 02547; CHECK-NEXT: mvc32 a02548; CHECK-NEXT: ld16.w a1, (sp, 12)2549; CHECK-NEXT: btsti16 a1, 02550; CHECK-NEXT: mvc32 a12551; CHECK-NEXT: ld16.w a2, (sp, 8)2552; CHECK-NEXT: btsti16 a2, 02553; CHECK-NEXT: movf32 a1, a02554; CHECK-NEXT: addi16 a2, sp, 162555; CHECK-NEXT: addi16 a0, sp, 242556; CHECK-NEXT: btsti16 a1, 02557; CHECK-NEXT: movt32 a2, a02558; CHECK-NEXT: ld16.w a0, (a2, 0)2559; CHECK-NEXT: ld16.w a1, (a2, 4)2560; CHECK-NEXT: addi16 sp, sp, 162561; CHECK-NEXT: rts162562;2563; GENERIC-LABEL: selectRR_uge_i64:2564; GENERIC: # %bb.0: # %entry2565; GENERIC-NEXT: subi16 sp, sp, 82566; GENERIC-NEXT: .cfi_def_cfa_offset 82567; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill2568; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill2569; GENERIC-NEXT: .cfi_offset l1, -42570; GENERIC-NEXT: .cfi_offset l0, -82571; GENERIC-NEXT: subi16 sp, sp, 42572; GENERIC-NEXT: .cfi_def_cfa_offset 122573; GENERIC-NEXT: cmphs16 a3, a12574; GENERIC-NEXT: mvcv16 l12575; GENERIC-NEXT: movi16 l0, 12576; GENERIC-NEXT: cmphs16 a2, a02577; GENERIC-NEXT: mvcv16 a02578; GENERIC-NEXT: cmpne16 a3, a12579; GENERIC-NEXT: mvcv16 a12580; GENERIC-NEXT: btsti16 a1, 02581; GENERIC-NEXT: bt16 .LBB66_32582; GENERIC-NEXT: # %bb.1: # %entry2583; GENERIC-NEXT: subu16 l0, l12584; GENERIC-NEXT: btsti16 l0, 02585; GENERIC-NEXT: bf16 .LBB66_42586; GENERIC-NEXT: .LBB66_2:2587; GENERIC-NEXT: movi16 a0, 202588; GENERIC-NEXT: br32 .LBB66_52589; GENERIC-NEXT: .LBB66_3:2590; GENERIC-NEXT: subu16 l0, a02591; GENERIC-NEXT: btsti16 l0, 02592; GENERIC-NEXT: bt16 .LBB66_22593; GENERIC-NEXT: .LBB66_4: # %entry2594; GENERIC-NEXT: movi16 a0, 122595; GENERIC-NEXT: .LBB66_5: # %entry2596; GENERIC-NEXT: addu16 a0, sp2597; GENERIC-NEXT: mov16 a1, a02598; GENERIC-NEXT: ld16.w a0, (a0, 0)2599; GENERIC-NEXT: ld16.w a1, (a1, 4)2600; GENERIC-NEXT: addi16 sp, sp, 42601; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload2602; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload2603; GENERIC-NEXT: addi16 sp, sp, 82604; GENERIC-NEXT: rts162605entry:2606 %icmp = icmp uge i64 %y, %x2607 %ret = select i1 %icmp, i64 %m, i64 %n2608 ret i64 %ret2609}2610 2611define i64 @selectRI_uge_i64(i64 %x, i64 %n, i64 %m) {2612; CHECK-LABEL: selectRI_uge_i64:2613; CHECK: # %bb.0: # %entry2614; CHECK-NEXT: subi16 sp, sp, 42615; CHECK-NEXT: .cfi_def_cfa_offset 42616; CHECK-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill2617; CHECK-NEXT: .cfi_offset l0, -42618; CHECK-NEXT: .cfi_def_cfa_offset 42619; CHECK-NEXT: ld32.w t0, (sp, 8)2620; CHECK-NEXT: ld32.w t1, (sp, 4)2621; CHECK-NEXT: movi16 l0, 92622; CHECK-NEXT: cmphs16 l0, a02623; CHECK-NEXT: mvcv16 a02624; CHECK-NEXT: cmpnei16 a1, 02625; CHECK-NEXT: mvc32 a12626; CHECK-NEXT: movf32 a1, a02627; CHECK-NEXT: btsti16 a1, 02628; CHECK-NEXT: movt32 a2, t12629; CHECK-NEXT: movt32 a3, t02630; CHECK-NEXT: mov16 a0, a22631; CHECK-NEXT: mov16 a1, a32632; CHECK-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload2633; CHECK-NEXT: addi16 sp, sp, 42634; CHECK-NEXT: rts162635;2636; GENERIC-LABEL: selectRI_uge_i64:2637; GENERIC: # %bb.0: # %entry2638; GENERIC-NEXT: subi16 sp, sp, 42639; GENERIC-NEXT: .cfi_def_cfa_offset 42640; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill2641; GENERIC-NEXT: .cfi_offset l0, -42642; GENERIC-NEXT: subi16 sp, sp, 42643; GENERIC-NEXT: .cfi_def_cfa_offset 82644; GENERIC-NEXT: cmpnei16 a1, 02645; GENERIC-NEXT: mvcv16 a12646; GENERIC-NEXT: movi16 l0, 92647; GENERIC-NEXT: cmphs16 l0, a02648; GENERIC-NEXT: mvcv16 a02649; GENERIC-NEXT: btsti16 a1, 02650; GENERIC-NEXT: bf16 .LBB67_52651; GENERIC-NEXT: # %bb.1: # %entry2652; GENERIC-NEXT: btsti16 a0, 02653; GENERIC-NEXT: bt16 .LBB67_62654; GENERIC-NEXT: .LBB67_2: # %entry2655; GENERIC-NEXT: btsti16 a0, 02656; GENERIC-NEXT: bf16 .LBB67_42657; GENERIC-NEXT: .LBB67_3:2658; GENERIC-NEXT: ld16.w a3, (sp, 12)2659; GENERIC-NEXT: .LBB67_4: # %entry2660; GENERIC-NEXT: mov16 a0, a22661; GENERIC-NEXT: mov16 a1, a32662; GENERIC-NEXT: addi16 sp, sp, 42663; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload2664; GENERIC-NEXT: addi16 sp, sp, 42665; GENERIC-NEXT: rts162666; GENERIC-NEXT: .LBB67_5: # %entry2667; GENERIC-NEXT: movi16 a0, 12668; GENERIC-NEXT: subu16 a0, a12669; GENERIC-NEXT: btsti16 a0, 02670; GENERIC-NEXT: bf16 .LBB67_22671; GENERIC-NEXT: .LBB67_6:2672; GENERIC-NEXT: ld16.w a2, (sp, 8)2673; GENERIC-NEXT: btsti16 a0, 02674; GENERIC-NEXT: bt16 .LBB67_32675; GENERIC-NEXT: br32 .LBB67_42676entry:2677 %icmp = icmp uge i64 %x, 102678 %ret = select i1 %icmp, i64 %m, i64 %n2679 ret i64 %ret2680}2681 2682define i64 @selectRX_uge_i64(i64 %x, i64 %n, i64 %m) {2683; CHECK-LABEL: selectRX_uge_i64:2684; CHECK: # %bb.0: # %entry2685; CHECK-NEXT: subi16 sp, sp, 42686; CHECK-NEXT: .cfi_def_cfa_offset 42687; CHECK-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill2688; CHECK-NEXT: .cfi_offset l0, -42689; CHECK-NEXT: .cfi_def_cfa_offset 42690; CHECK-NEXT: ld32.w t0, (sp, 8)2691; CHECK-NEXT: ld32.w t1, (sp, 4)2692; CHECK-NEXT: movih32 l0, 7292693; CHECK-NEXT: ori32 l0, l0, 20322694; CHECK-NEXT: cmphs16 l0, a02695; CHECK-NEXT: mvcv16 a02696; CHECK-NEXT: cmpnei16 a1, 02697; CHECK-NEXT: mvc32 a12698; CHECK-NEXT: movf32 a1, a02699; CHECK-NEXT: btsti16 a1, 02700; CHECK-NEXT: movt32 a2, t12701; CHECK-NEXT: movt32 a3, t02702; CHECK-NEXT: mov16 a0, a22703; CHECK-NEXT: mov16 a1, a32704; CHECK-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload2705; CHECK-NEXT: addi16 sp, sp, 42706; CHECK-NEXT: rts162707;2708; GENERIC-LABEL: selectRX_uge_i64:2709; GENERIC: # %bb.0: # %entry2710; GENERIC-NEXT: subi16 sp, sp, 82711; GENERIC-NEXT: .cfi_def_cfa_offset 82712; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill2713; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill2714; GENERIC-NEXT: .cfi_offset l1, -42715; GENERIC-NEXT: .cfi_offset l0, -82716; GENERIC-NEXT: subi16 sp, sp, 42717; GENERIC-NEXT: .cfi_def_cfa_offset 122718; GENERIC-NEXT: cmpnei16 a1, 02719; GENERIC-NEXT: mvcv16 a12720; GENERIC-NEXT: movi16 l0, 22721; GENERIC-NEXT: lsli16 l0, l0, 242722; GENERIC-NEXT: movi16 l1, 2172723; GENERIC-NEXT: lsli16 l1, l1, 162724; GENERIC-NEXT: or16 l1, l02725; GENERIC-NEXT: movi16 l0, 72726; GENERIC-NEXT: lsli16 l0, l0, 82727; GENERIC-NEXT: or16 l0, l12728; GENERIC-NEXT: movi16 l1, 2402729; GENERIC-NEXT: or16 l1, l02730; GENERIC-NEXT: cmphs16 l1, a02731; GENERIC-NEXT: mvcv16 a02732; GENERIC-NEXT: btsti16 a1, 02733; GENERIC-NEXT: bf16 .LBB68_52734; GENERIC-NEXT: # %bb.1: # %entry2735; GENERIC-NEXT: btsti16 a0, 02736; GENERIC-NEXT: bt16 .LBB68_62737; GENERIC-NEXT: .LBB68_2: # %entry2738; GENERIC-NEXT: btsti16 a0, 02739; GENERIC-NEXT: bf16 .LBB68_42740; GENERIC-NEXT: .LBB68_3:2741; GENERIC-NEXT: ld16.w a3, (sp, 16)2742; GENERIC-NEXT: .LBB68_4: # %entry2743; GENERIC-NEXT: mov16 a0, a22744; GENERIC-NEXT: mov16 a1, a32745; GENERIC-NEXT: addi16 sp, sp, 42746; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload2747; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload2748; GENERIC-NEXT: addi16 sp, sp, 82749; GENERIC-NEXT: rts162750; GENERIC-NEXT: .LBB68_5: # %entry2751; GENERIC-NEXT: movi16 a0, 12752; GENERIC-NEXT: subu16 a0, a12753; GENERIC-NEXT: btsti16 a0, 02754; GENERIC-NEXT: bf16 .LBB68_22755; GENERIC-NEXT: .LBB68_6:2756; GENERIC-NEXT: ld16.w a2, (sp, 12)2757; GENERIC-NEXT: btsti16 a0, 02758; GENERIC-NEXT: bt16 .LBB68_32759; GENERIC-NEXT: br32 .LBB68_42760entry:2761 %icmp = icmp uge i64 %x, 477777772762 %ret = select i1 %icmp, i64 %m, i64 %n2763 ret i64 %ret2764}2765 2766define i64 @selectC_uge_i64(i1 %c, i64 %n, i64 %m) {2767; CHECK-LABEL: selectC_uge_i64:2768; CHECK: # %bb.0: # %entry2769; CHECK-NEXT: ld32.w t0, (sp, 0)2770; CHECK-NEXT: btsti16 a0, 02771; CHECK-NEXT: movt32 a1, a32772; CHECK-NEXT: movt32 a2, t02773; CHECK-NEXT: mov16 a0, a12774; CHECK-NEXT: mov16 a1, a22775; CHECK-NEXT: rts162776;2777; GENERIC-LABEL: selectC_uge_i64:2778; GENERIC: # %bb.0: # %entry2779; GENERIC-NEXT: .cfi_def_cfa_offset 02780; GENERIC-NEXT: subi16 sp, sp, 42781; GENERIC-NEXT: .cfi_def_cfa_offset 42782; GENERIC-NEXT: btsti16 a0, 02783; GENERIC-NEXT: bt16 .LBB69_22784; GENERIC-NEXT: # %bb.1: # %entry2785; GENERIC-NEXT: mov16 a3, a12786; GENERIC-NEXT: .LBB69_2: # %entry2787; GENERIC-NEXT: btsti16 a0, 02788; GENERIC-NEXT: bf16 .LBB69_42789; GENERIC-NEXT: # %bb.3:2790; GENERIC-NEXT: ld16.w a2, (sp, 4)2791; GENERIC-NEXT: .LBB69_4: # %entry2792; GENERIC-NEXT: mov16 a0, a32793; GENERIC-NEXT: mov16 a1, a22794; GENERIC-NEXT: addi16 sp, sp, 42795; GENERIC-NEXT: rts162796entry:2797 %ret = select i1 %c, i64 %m, i64 %n2798 ret i64 %ret2799}2800 2801 2802define i16 @selectRR_uge_i16(i16 %x, i16 %y, i16 %n, i16 %m) {2803; CHECK-LABEL: selectRR_uge_i16:2804; CHECK: # %bb.0: # %entry2805; CHECK-NEXT: zexth16 a0, a02806; CHECK-NEXT: zexth16 a1, a12807; CHECK-NEXT: cmphs16 a1, a02808; CHECK-NEXT: movt32 a2, a32809; CHECK-NEXT: mov16 a0, a22810; CHECK-NEXT: rts162811;2812; GENERIC-LABEL: selectRR_uge_i16:2813; GENERIC: # %bb.0: # %entry2814; GENERIC-NEXT: subi16 sp, sp, 122815; GENERIC-NEXT: .cfi_def_cfa_offset 122816; GENERIC-NEXT: st16.w l2, (sp, 8) # 4-byte Folded Spill2817; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill2818; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill2819; GENERIC-NEXT: .cfi_offset l2, -42820; GENERIC-NEXT: .cfi_offset l1, -82821; GENERIC-NEXT: .cfi_offset l0, -122822; GENERIC-NEXT: subi16 sp, sp, 42823; GENERIC-NEXT: .cfi_def_cfa_offset 162824; GENERIC-NEXT: movi16 l0, 02825; GENERIC-NEXT: lsli16 l1, l0, 242826; GENERIC-NEXT: lsli16 l0, l0, 162827; GENERIC-NEXT: or16 l0, l12828; GENERIC-NEXT: movi16 l1, 2552829; GENERIC-NEXT: lsli16 l2, l1, 82830; GENERIC-NEXT: or16 l2, l02831; GENERIC-NEXT: or16 l2, l12832; GENERIC-NEXT: and16 a0, l22833; GENERIC-NEXT: and16 l2, a12834; GENERIC-NEXT: cmphs16 l2, a02835; GENERIC-NEXT: mvcv16 a02836; GENERIC-NEXT: movi16 a1, 12837; GENERIC-NEXT: subu16 a1, a02838; GENERIC-NEXT: btsti16 a1, 02839; GENERIC-NEXT: bt16 .LBB70_22840; GENERIC-NEXT: # %bb.1: # %entry2841; GENERIC-NEXT: mov16 a3, a22842; GENERIC-NEXT: .LBB70_2: # %entry2843; GENERIC-NEXT: mov16 a0, a32844; GENERIC-NEXT: addi16 sp, sp, 42845; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload2846; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload2847; GENERIC-NEXT: ld16.w l2, (sp, 8) # 4-byte Folded Reload2848; GENERIC-NEXT: addi16 sp, sp, 122849; GENERIC-NEXT: rts162850entry:2851 %icmp = icmp uge i16 %y, %x2852 %ret = select i1 %icmp, i16 %m, i16 %n2853 ret i16 %ret2854}2855 2856define i16 @selectRI_uge_i16(i16 %x, i16 %n, i16 %m) {2857; CHECK-LABEL: selectRI_uge_i16:2858; CHECK: # %bb.0: # %entry2859; CHECK-NEXT: zexth16 a0, a02860; CHECK-NEXT: movi16 a3, 92861; CHECK-NEXT: cmphs16 a3, a02862; CHECK-NEXT: movf32 a1, a22863; CHECK-NEXT: mov16 a0, a12864; CHECK-NEXT: rts162865;2866; GENERIC-LABEL: selectRI_uge_i16:2867; GENERIC: # %bb.0: # %entry2868; GENERIC-NEXT: subi16 sp, sp, 82869; GENERIC-NEXT: .cfi_def_cfa_offset 82870; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill2871; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill2872; GENERIC-NEXT: .cfi_offset l1, -42873; GENERIC-NEXT: .cfi_offset l0, -82874; GENERIC-NEXT: subi16 sp, sp, 42875; GENERIC-NEXT: .cfi_def_cfa_offset 122876; GENERIC-NEXT: movi16 a3, 02877; GENERIC-NEXT: lsli16 l0, a3, 242878; GENERIC-NEXT: lsli16 a3, a3, 162879; GENERIC-NEXT: or16 a3, l02880; GENERIC-NEXT: movi16 l0, 2552881; GENERIC-NEXT: lsli16 l1, l0, 82882; GENERIC-NEXT: or16 l1, a32883; GENERIC-NEXT: or16 l1, l02884; GENERIC-NEXT: and16 l1, a02885; GENERIC-NEXT: movi16 a0, 92886; GENERIC-NEXT: cmphs16 a0, l12887; GENERIC-NEXT: mvcv16 a02888; GENERIC-NEXT: btsti16 a0, 02889; GENERIC-NEXT: bt16 .LBB71_22890; GENERIC-NEXT: # %bb.1: # %entry2891; GENERIC-NEXT: mov16 a2, a12892; GENERIC-NEXT: .LBB71_2: # %entry2893; GENERIC-NEXT: mov16 a0, a22894; GENERIC-NEXT: addi16 sp, sp, 42895; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload2896; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload2897; GENERIC-NEXT: addi16 sp, sp, 82898; GENERIC-NEXT: rts162899entry:2900 %icmp = icmp uge i16 %x, 102901 %ret = select i1 %icmp, i16 %m, i16 %n2902 ret i16 %ret2903}2904 2905define i16 @selectRX_uge_i16(i16 %x, i16 %n, i16 %m) {2906; CHECK-LABEL: selectRX_uge_i16:2907; CHECK: # %bb.0: # %entry2908; CHECK-NEXT: zexth16 a0, a02909; CHECK-NEXT: movi32 a3, 20322910; CHECK-NEXT: cmphs16 a3, a02911; CHECK-NEXT: movf32 a1, a22912; CHECK-NEXT: mov16 a0, a12913; CHECK-NEXT: rts162914;2915; GENERIC-LABEL: selectRX_uge_i16:2916; GENERIC: # %bb.0: # %entry2917; GENERIC-NEXT: subi16 sp, sp, 82918; GENERIC-NEXT: .cfi_def_cfa_offset 82919; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill2920; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill2921; GENERIC-NEXT: .cfi_offset l1, -42922; GENERIC-NEXT: .cfi_offset l0, -82923; GENERIC-NEXT: subi16 sp, sp, 42924; GENERIC-NEXT: .cfi_def_cfa_offset 122925; GENERIC-NEXT: movi16 a3, 02926; GENERIC-NEXT: lsli16 l0, a3, 242927; GENERIC-NEXT: lsli16 a3, a3, 162928; GENERIC-NEXT: or16 a3, l02929; GENERIC-NEXT: movi16 l0, 2552930; GENERIC-NEXT: lsli16 l1, l0, 82931; GENERIC-NEXT: or16 l1, a32932; GENERIC-NEXT: or16 l1, l02933; GENERIC-NEXT: and16 l1, a02934; GENERIC-NEXT: movi16 a0, 72935; GENERIC-NEXT: lsli16 a0, a0, 82936; GENERIC-NEXT: or16 a0, a32937; GENERIC-NEXT: movi16 a3, 2402938; GENERIC-NEXT: or16 a3, a02939; GENERIC-NEXT: cmphs16 a3, l12940; GENERIC-NEXT: mvcv16 a02941; GENERIC-NEXT: btsti16 a0, 02942; GENERIC-NEXT: bt16 .LBB72_22943; GENERIC-NEXT: # %bb.1: # %entry2944; GENERIC-NEXT: mov16 a2, a12945; GENERIC-NEXT: .LBB72_2: # %entry2946; GENERIC-NEXT: mov16 a0, a22947; GENERIC-NEXT: addi16 sp, sp, 42948; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload2949; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload2950; GENERIC-NEXT: addi16 sp, sp, 82951; GENERIC-NEXT: rts162952entry:2953 %icmp = icmp uge i16 %x, 477777772954 %ret = select i1 %icmp, i16 %m, i16 %n2955 ret i16 %ret2956}2957 2958define i16 @selectC_uge_i16(i1 %c, i16 %n, i16 %m) {2959; CHECK-LABEL: selectC_uge_i16:2960; CHECK: # %bb.0: # %entry2961; CHECK-NEXT: btsti16 a0, 02962; CHECK-NEXT: movt32 a1, a22963; CHECK-NEXT: mov16 a0, a12964; CHECK-NEXT: rts162965;2966; GENERIC-LABEL: selectC_uge_i16:2967; GENERIC: # %bb.0: # %entry2968; GENERIC-NEXT: .cfi_def_cfa_offset 02969; GENERIC-NEXT: subi16 sp, sp, 42970; GENERIC-NEXT: .cfi_def_cfa_offset 42971; GENERIC-NEXT: btsti16 a0, 02972; GENERIC-NEXT: bt16 .LBB73_22973; GENERIC-NEXT: # %bb.1: # %entry2974; GENERIC-NEXT: mov16 a2, a12975; GENERIC-NEXT: .LBB73_2: # %entry2976; GENERIC-NEXT: mov16 a0, a22977; GENERIC-NEXT: addi16 sp, sp, 42978; GENERIC-NEXT: rts162979entry:2980 %ret = select i1 %c, i16 %m, i16 %n2981 ret i16 %ret2982}2983 2984 2985define i8 @selectRR_uge_i8(i8 %x, i8 %y, i8 %n, i8 %m) {2986; CHECK-LABEL: selectRR_uge_i8:2987; CHECK: # %bb.0: # %entry2988; CHECK-NEXT: zextb16 a0, a02989; CHECK-NEXT: zextb16 a1, a12990; CHECK-NEXT: cmphs16 a1, a02991; CHECK-NEXT: movt32 a2, a32992; CHECK-NEXT: mov16 a0, a22993; CHECK-NEXT: rts162994;2995; GENERIC-LABEL: selectRR_uge_i8:2996; GENERIC: # %bb.0: # %entry2997; GENERIC-NEXT: subi16 sp, sp, 42998; GENERIC-NEXT: .cfi_def_cfa_offset 42999; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill3000; GENERIC-NEXT: .cfi_offset l0, -43001; GENERIC-NEXT: subi16 sp, sp, 43002; GENERIC-NEXT: .cfi_def_cfa_offset 83003; GENERIC-NEXT: movi16 l0, 2553004; GENERIC-NEXT: and16 a0, l03005; GENERIC-NEXT: and16 a1, l03006; GENERIC-NEXT: cmphs16 a1, a03007; GENERIC-NEXT: mvcv16 a03008; GENERIC-NEXT: movi16 a1, 13009; GENERIC-NEXT: subu16 a1, a03010; GENERIC-NEXT: btsti16 a1, 03011; GENERIC-NEXT: bt16 .LBB74_23012; GENERIC-NEXT: # %bb.1: # %entry3013; GENERIC-NEXT: mov16 a3, a23014; GENERIC-NEXT: .LBB74_2: # %entry3015; GENERIC-NEXT: mov16 a0, a33016; GENERIC-NEXT: addi16 sp, sp, 43017; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload3018; GENERIC-NEXT: addi16 sp, sp, 43019; GENERIC-NEXT: rts163020entry:3021 %icmp = icmp uge i8 %y, %x3022 %ret = select i1 %icmp, i8 %m, i8 %n3023 ret i8 %ret3024}3025 3026define i8 @selectRI_uge_i8(i8 %x, i8 %n, i8 %m) {3027; CHECK-LABEL: selectRI_uge_i8:3028; CHECK: # %bb.0: # %entry3029; CHECK-NEXT: zextb16 a0, a03030; CHECK-NEXT: movi16 a3, 93031; CHECK-NEXT: cmphs16 a3, a03032; CHECK-NEXT: movf32 a1, a23033; CHECK-NEXT: mov16 a0, a13034; CHECK-NEXT: rts163035;3036; GENERIC-LABEL: selectRI_uge_i8:3037; GENERIC: # %bb.0: # %entry3038; GENERIC-NEXT: .cfi_def_cfa_offset 03039; GENERIC-NEXT: subi16 sp, sp, 43040; GENERIC-NEXT: .cfi_def_cfa_offset 43041; GENERIC-NEXT: movi16 a3, 2553042; GENERIC-NEXT: and16 a3, a03043; GENERIC-NEXT: movi16 a0, 93044; GENERIC-NEXT: cmphs16 a0, a33045; GENERIC-NEXT: mvcv16 a03046; GENERIC-NEXT: btsti16 a0, 03047; GENERIC-NEXT: bt16 .LBB75_23048; GENERIC-NEXT: # %bb.1: # %entry3049; GENERIC-NEXT: mov16 a2, a13050; GENERIC-NEXT: .LBB75_2: # %entry3051; GENERIC-NEXT: mov16 a0, a23052; GENERIC-NEXT: addi16 sp, sp, 43053; GENERIC-NEXT: rts163054entry:3055 %icmp = icmp uge i8 %x, 103056 %ret = select i1 %icmp, i8 %m, i8 %n3057 ret i8 %ret3058}3059 3060define i8 @selectRX_uge_i8(i8 %x, i8 %n, i8 %m) {3061; CHECK-LABEL: selectRX_uge_i8:3062; CHECK: # %bb.0: # %entry3063; CHECK-NEXT: zextb16 a0, a03064; CHECK-NEXT: movi16 a3, 2403065; CHECK-NEXT: cmphs16 a3, a03066; CHECK-NEXT: movf32 a1, a23067; CHECK-NEXT: mov16 a0, a13068; CHECK-NEXT: rts163069;3070; GENERIC-LABEL: selectRX_uge_i8:3071; GENERIC: # %bb.0: # %entry3072; GENERIC-NEXT: .cfi_def_cfa_offset 03073; GENERIC-NEXT: subi16 sp, sp, 43074; GENERIC-NEXT: .cfi_def_cfa_offset 43075; GENERIC-NEXT: movi16 a3, 2553076; GENERIC-NEXT: and16 a3, a03077; GENERIC-NEXT: movi16 a0, 2403078; GENERIC-NEXT: cmphs16 a0, a33079; GENERIC-NEXT: mvcv16 a03080; GENERIC-NEXT: btsti16 a0, 03081; GENERIC-NEXT: bt16 .LBB76_23082; GENERIC-NEXT: # %bb.1: # %entry3083; GENERIC-NEXT: mov16 a2, a13084; GENERIC-NEXT: .LBB76_2: # %entry3085; GENERIC-NEXT: mov16 a0, a23086; GENERIC-NEXT: addi16 sp, sp, 43087; GENERIC-NEXT: rts163088entry:3089 %icmp = icmp uge i8 %x, 477777773090 %ret = select i1 %icmp, i8 %m, i8 %n3091 ret i8 %ret3092}3093 3094define i8 @selectC_uge_i8(i1 %c, i8 %n, i8 %m) {3095; CHECK-LABEL: selectC_uge_i8:3096; CHECK: # %bb.0: # %entry3097; CHECK-NEXT: btsti16 a0, 03098; CHECK-NEXT: movt32 a1, a23099; CHECK-NEXT: mov16 a0, a13100; CHECK-NEXT: rts163101;3102; GENERIC-LABEL: selectC_uge_i8:3103; GENERIC: # %bb.0: # %entry3104; GENERIC-NEXT: .cfi_def_cfa_offset 03105; GENERIC-NEXT: subi16 sp, sp, 43106; GENERIC-NEXT: .cfi_def_cfa_offset 43107; GENERIC-NEXT: btsti16 a0, 03108; GENERIC-NEXT: bt16 .LBB77_23109; GENERIC-NEXT: # %bb.1: # %entry3110; GENERIC-NEXT: mov16 a2, a13111; GENERIC-NEXT: .LBB77_2: # %entry3112; GENERIC-NEXT: mov16 a0, a23113; GENERIC-NEXT: addi16 sp, sp, 43114; GENERIC-NEXT: rts163115entry:3116 %ret = select i1 %c, i8 %m, i8 %n3117 ret i8 %ret3118}3119 3120 3121define i1 @selectRR_uge_i1(i1 %x, i1 %y, i1 %n, i1 %m) {3122; CHECK-LABEL: selectRR_uge_i1:3123; CHECK: # %bb.0: # %entry3124; CHECK-NEXT: btsti16 a0, 03125; CHECK-NEXT: mov16 a0, a33126; CHECK-NEXT: movt32 a0, a23127; CHECK-NEXT: btsti16 a1, 03128; CHECK-NEXT: movt32 a0, a33129; CHECK-NEXT: rts163130;3131; GENERIC-LABEL: selectRR_uge_i1:3132; GENERIC: # %bb.0: # %entry3133; GENERIC-NEXT: .cfi_def_cfa_offset 03134; GENERIC-NEXT: subi16 sp, sp, 43135; GENERIC-NEXT: .cfi_def_cfa_offset 43136; GENERIC-NEXT: btsti16 a0, 03137; GENERIC-NEXT: bt16 .LBB78_23138; GENERIC-NEXT: # %bb.1: # %entry3139; GENERIC-NEXT: mov16 a2, a33140; GENERIC-NEXT: .LBB78_2: # %entry3141; GENERIC-NEXT: btsti16 a1, 03142; GENERIC-NEXT: bt16 .LBB78_43143; GENERIC-NEXT: # %bb.3: # %entry3144; GENERIC-NEXT: mov16 a3, a23145; GENERIC-NEXT: .LBB78_4: # %entry3146; GENERIC-NEXT: mov16 a0, a33147; GENERIC-NEXT: addi16 sp, sp, 43148; GENERIC-NEXT: rts163149entry:3150 %icmp = icmp uge i1 %y, %x3151 %ret = select i1 %icmp, i1 %m, i1 %n3152 ret i1 %ret3153}3154 3155define i1 @selectRI_uge_i1(i1 %x, i1 %n, i1 %m) {3156; CHECK-LABEL: selectRI_uge_i1:3157; CHECK: # %bb.0: # %entry3158; CHECK-NEXT: mov16 a0, a23159; CHECK-NEXT: rts163160;3161; GENERIC-LABEL: selectRI_uge_i1:3162; GENERIC: # %bb.0: # %entry3163; GENERIC-NEXT: .cfi_def_cfa_offset 03164; GENERIC-NEXT: subi16 sp, sp, 43165; GENERIC-NEXT: .cfi_def_cfa_offset 43166; GENERIC-NEXT: mov16 a0, a23167; GENERIC-NEXT: addi16 sp, sp, 43168; GENERIC-NEXT: rts163169entry:3170 %icmp = icmp uge i1 %x, 103171 %ret = select i1 %icmp, i1 %m, i1 %n3172 ret i1 %ret3173}3174 3175define i1 @selectRX_uge_i1(i1 %x, i1 %n, i1 %m) {3176; CHECK-LABEL: selectRX_uge_i1:3177; CHECK: # %bb.0: # %entry3178; CHECK-NEXT: btsti16 a0, 03179; CHECK-NEXT: movt32 a1, a23180; CHECK-NEXT: mov16 a0, a13181; CHECK-NEXT: rts163182;3183; GENERIC-LABEL: selectRX_uge_i1:3184; GENERIC: # %bb.0: # %entry3185; GENERIC-NEXT: .cfi_def_cfa_offset 03186; GENERIC-NEXT: subi16 sp, sp, 43187; GENERIC-NEXT: .cfi_def_cfa_offset 43188; GENERIC-NEXT: btsti16 a0, 03189; GENERIC-NEXT: bt16 .LBB80_23190; GENERIC-NEXT: # %bb.1: # %entry3191; GENERIC-NEXT: mov16 a2, a13192; GENERIC-NEXT: .LBB80_2: # %entry3193; GENERIC-NEXT: mov16 a0, a23194; GENERIC-NEXT: addi16 sp, sp, 43195; GENERIC-NEXT: rts163196entry:3197 %icmp = icmp uge i1 %x, 477777773198 %ret = select i1 %icmp, i1 %m, i1 %n3199 ret i1 %ret3200}3201 3202define i1 @selectC_uge_i1(i1 %c, i1 %n, i1 %m) {3203; CHECK-LABEL: selectC_uge_i1:3204; CHECK: # %bb.0: # %entry3205; CHECK-NEXT: btsti16 a0, 03206; CHECK-NEXT: movt32 a1, a23207; CHECK-NEXT: mov16 a0, a13208; CHECK-NEXT: rts163209;3210; GENERIC-LABEL: selectC_uge_i1:3211; GENERIC: # %bb.0: # %entry3212; GENERIC-NEXT: .cfi_def_cfa_offset 03213; GENERIC-NEXT: subi16 sp, sp, 43214; GENERIC-NEXT: .cfi_def_cfa_offset 43215; GENERIC-NEXT: btsti16 a0, 03216; GENERIC-NEXT: bt16 .LBB81_23217; GENERIC-NEXT: # %bb.1: # %entry3218; GENERIC-NEXT: mov16 a2, a13219; GENERIC-NEXT: .LBB81_2: # %entry3220; GENERIC-NEXT: mov16 a0, a23221; GENERIC-NEXT: addi16 sp, sp, 43222; GENERIC-NEXT: rts163223entry:3224 %ret = select i1 %c, i1 %m, i1 %n3225 ret i1 %ret3226}3227 3228 3229define i32 @selectRR_ult_i32(i32 %x, i32 %y, i32 %n, i32 %m) {3230; CHECK-LABEL: selectRR_ult_i32:3231; CHECK: # %bb.0: # %entry3232; CHECK-NEXT: cmphs16 a1, a03233; CHECK-NEXT: movf32 a2, a33234; CHECK-NEXT: mov16 a0, a23235; CHECK-NEXT: rts163236;3237; GENERIC-LABEL: selectRR_ult_i32:3238; GENERIC: # %bb.0: # %entry3239; GENERIC-NEXT: .cfi_def_cfa_offset 03240; GENERIC-NEXT: subi16 sp, sp, 43241; GENERIC-NEXT: .cfi_def_cfa_offset 43242; GENERIC-NEXT: cmphs16 a1, a03243; GENERIC-NEXT: mvcv16 a03244; GENERIC-NEXT: btsti16 a0, 03245; GENERIC-NEXT: bt16 .LBB82_23246; GENERIC-NEXT: # %bb.1: # %entry3247; GENERIC-NEXT: mov16 a3, a23248; GENERIC-NEXT: .LBB82_2: # %entry3249; GENERIC-NEXT: mov16 a0, a33250; GENERIC-NEXT: addi16 sp, sp, 43251; GENERIC-NEXT: rts163252entry:3253 %icmp = icmp ult i32 %y, %x3254 %ret = select i1 %icmp, i32 %m, i32 %n3255 ret i32 %ret3256}3257 3258define i32 @selectRI_ult_i32(i32 %x, i32 %n, i32 %m) {3259; CHECK-LABEL: selectRI_ult_i32:3260; CHECK: # %bb.0: # %entry3261; CHECK-NEXT: cmphsi16 a0, 103262; CHECK-NEXT: movf32 a1, a23263; CHECK-NEXT: mov16 a0, a13264; CHECK-NEXT: rts163265;3266; GENERIC-LABEL: selectRI_ult_i32:3267; GENERIC: # %bb.0: # %entry3268; GENERIC-NEXT: .cfi_def_cfa_offset 03269; GENERIC-NEXT: subi16 sp, sp, 43270; GENERIC-NEXT: .cfi_def_cfa_offset 43271; GENERIC-NEXT: cmphsi16 a0, 103272; GENERIC-NEXT: mvcv16 a03273; GENERIC-NEXT: btsti16 a0, 03274; GENERIC-NEXT: bt16 .LBB83_23275; GENERIC-NEXT: # %bb.1: # %entry3276; GENERIC-NEXT: mov16 a2, a13277; GENERIC-NEXT: .LBB83_2: # %entry3278; GENERIC-NEXT: mov16 a0, a23279; GENERIC-NEXT: addi16 sp, sp, 43280; GENERIC-NEXT: rts163281entry:3282 %icmp = icmp ult i32 %x, 103283 %ret = select i1 %icmp, i32 %m, i32 %n3284 ret i32 %ret3285}3286 3287define i32 @selectRX_ult_i32(i32 %x, i32 %n, i32 %m) {3288; CHECK-LABEL: selectRX_ult_i32:3289; CHECK: # %bb.0: # %entry3290; CHECK-NEXT: movih32 a3, 7293291; CHECK-NEXT: ori32 a3, a3, 20333292; CHECK-NEXT: cmphs16 a0, a33293; CHECK-NEXT: movf32 a1, a23294; CHECK-NEXT: mov16 a0, a13295; CHECK-NEXT: rts163296;3297; GENERIC-LABEL: selectRX_ult_i32:3298; GENERIC: # %bb.0: # %entry3299; GENERIC-NEXT: subi16 sp, sp, 43300; GENERIC-NEXT: .cfi_def_cfa_offset 43301; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill3302; GENERIC-NEXT: .cfi_offset l0, -43303; GENERIC-NEXT: subi16 sp, sp, 43304; GENERIC-NEXT: .cfi_def_cfa_offset 83305; GENERIC-NEXT: movi16 a3, 23306; GENERIC-NEXT: lsli16 a3, a3, 243307; GENERIC-NEXT: movi16 l0, 2173308; GENERIC-NEXT: lsli16 l0, l0, 163309; GENERIC-NEXT: or16 l0, a33310; GENERIC-NEXT: movi16 a3, 73311; GENERIC-NEXT: lsli16 a3, a3, 83312; GENERIC-NEXT: or16 a3, l03313; GENERIC-NEXT: movi16 l0, 2413314; GENERIC-NEXT: or16 l0, a33315; GENERIC-NEXT: cmphs16 a0, l03316; GENERIC-NEXT: mvcv16 a03317; GENERIC-NEXT: btsti16 a0, 03318; GENERIC-NEXT: bt16 .LBB84_23319; GENERIC-NEXT: # %bb.1: # %entry3320; GENERIC-NEXT: mov16 a2, a13321; GENERIC-NEXT: .LBB84_2: # %entry3322; GENERIC-NEXT: mov16 a0, a23323; GENERIC-NEXT: addi16 sp, sp, 43324; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload3325; GENERIC-NEXT: addi16 sp, sp, 43326; GENERIC-NEXT: rts163327entry:3328 %icmp = icmp ult i32 %x, 477777773329 %ret = select i1 %icmp, i32 %m, i32 %n3330 ret i32 %ret3331}3332 3333define i32 @selectC_ult_i32(i1 %c, i32 %n, i32 %m) {3334; CHECK-LABEL: selectC_ult_i32:3335; CHECK: # %bb.0: # %entry3336; CHECK-NEXT: btsti16 a0, 03337; CHECK-NEXT: movt32 a1, a23338; CHECK-NEXT: mov16 a0, a13339; CHECK-NEXT: rts163340;3341; GENERIC-LABEL: selectC_ult_i32:3342; GENERIC: # %bb.0: # %entry3343; GENERIC-NEXT: .cfi_def_cfa_offset 03344; GENERIC-NEXT: subi16 sp, sp, 43345; GENERIC-NEXT: .cfi_def_cfa_offset 43346; GENERIC-NEXT: btsti16 a0, 03347; GENERIC-NEXT: bt16 .LBB85_23348; GENERIC-NEXT: # %bb.1: # %entry3349; GENERIC-NEXT: mov16 a2, a13350; GENERIC-NEXT: .LBB85_2: # %entry3351; GENERIC-NEXT: mov16 a0, a23352; GENERIC-NEXT: addi16 sp, sp, 43353; GENERIC-NEXT: rts163354entry:3355 %ret = select i1 %c, i32 %m, i32 %n3356 ret i32 %ret3357}3358 3359define i64 @selectRR_ult_i64(i64 %x, i64 %y, i64 %n, i64 %m) {3360; CHECK-LABEL: selectRR_ult_i64:3361; CHECK: # %bb.0: # %entry3362; CHECK-NEXT: .cfi_def_cfa_offset 03363; CHECK-NEXT: subi16 sp, sp, 83364; CHECK-NEXT: .cfi_def_cfa_offset 83365; CHECK-NEXT: cmpne16 a3, a13366; CHECK-NEXT: mvc32 t03367; CHECK-NEXT: st32.w t0, (sp, 4)3368; CHECK-NEXT: cmphs16 a3, a13369; CHECK-NEXT: mvcv16 a13370; CHECK-NEXT: cmphs16 a2, a03371; CHECK-NEXT: mvcv16 a03372; CHECK-NEXT: ld16.w a2, (sp, 4)3373; CHECK-NEXT: btsti16 a2, 03374; CHECK-NEXT: movf32 a1, a03375; CHECK-NEXT: addi16 a2, sp, 83376; CHECK-NEXT: addi16 a0, sp, 163377; CHECK-NEXT: btsti16 a1, 03378; CHECK-NEXT: movt32 a2, a03379; CHECK-NEXT: ld16.w a0, (a2, 0)3380; CHECK-NEXT: ld16.w a1, (a2, 4)3381; CHECK-NEXT: addi16 sp, sp, 83382; CHECK-NEXT: rts163383;3384; GENERIC-LABEL: selectRR_ult_i64:3385; GENERIC: # %bb.0: # %entry3386; GENERIC-NEXT: subi16 sp, sp, 43387; GENERIC-NEXT: .cfi_def_cfa_offset 43388; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill3389; GENERIC-NEXT: .cfi_offset l0, -43390; GENERIC-NEXT: subi16 sp, sp, 43391; GENERIC-NEXT: .cfi_def_cfa_offset 83392; GENERIC-NEXT: cmphs16 a3, a13393; GENERIC-NEXT: mvcv16 l03394; GENERIC-NEXT: cmphs16 a2, a03395; GENERIC-NEXT: mvcv16 a03396; GENERIC-NEXT: cmpne16 a3, a13397; GENERIC-NEXT: mvcv16 a13398; GENERIC-NEXT: btsti16 a1, 03399; GENERIC-NEXT: bt16 .LBB86_23400; GENERIC-NEXT: # %bb.1: # %entry3401; GENERIC-NEXT: mov16 a0, l03402; GENERIC-NEXT: .LBB86_2: # %entry3403; GENERIC-NEXT: btsti16 a0, 03404; GENERIC-NEXT: bt16 .LBB86_43405; GENERIC-NEXT: # %bb.3: # %entry3406; GENERIC-NEXT: movi16 a0, 83407; GENERIC-NEXT: br32 .LBB86_53408; GENERIC-NEXT: .LBB86_4:3409; GENERIC-NEXT: movi16 a0, 163410; GENERIC-NEXT: .LBB86_5: # %entry3411; GENERIC-NEXT: addu16 a0, sp3412; GENERIC-NEXT: mov16 a1, a03413; GENERIC-NEXT: ld16.w a0, (a0, 0)3414; GENERIC-NEXT: ld16.w a1, (a1, 4)3415; GENERIC-NEXT: addi16 sp, sp, 43416; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload3417; GENERIC-NEXT: addi16 sp, sp, 43418; GENERIC-NEXT: rts163419entry:3420 %icmp = icmp ult i64 %y, %x3421 %ret = select i1 %icmp, i64 %m, i64 %n3422 ret i64 %ret3423}3424 3425define i64 @selectRI_ult_i64(i64 %x, i64 %n, i64 %m) {3426; CHECK-LABEL: selectRI_ult_i64:3427; CHECK: # %bb.0: # %entry3428; CHECK-NEXT: .cfi_def_cfa_offset 03429; CHECK-NEXT: subi16 sp, sp, 83430; CHECK-NEXT: .cfi_def_cfa_offset 83431; CHECK-NEXT: ld32.w t0, (sp, 12)3432; CHECK-NEXT: ld32.w t1, (sp, 8)3433; CHECK-NEXT: cmpnei16 a1, 03434; CHECK-NEXT: st16.w a2, (sp, 0)3435; CHECK-NEXT: mvc32 a13436; CHECK-NEXT: st16.w a1, (sp, 4)3437; CHECK-NEXT: cmphsi16 a0, 103438; CHECK-NEXT: mvcv16 a03439; CHECK-NEXT: movi16 a1, 03440; CHECK-NEXT: ld16.w a2, (sp, 4)3441; CHECK-NEXT: btsti16 a2, 03442; CHECK-NEXT: ld16.w a2, (sp, 0)3443; CHECK-NEXT: movf32 a1, a03444; CHECK-NEXT: btsti16 a1, 03445; CHECK-NEXT: movt32 a2, t13446; CHECK-NEXT: movt32 a3, t03447; CHECK-NEXT: mov16 a0, a23448; CHECK-NEXT: mov16 a1, a33449; CHECK-NEXT: addi16 sp, sp, 83450; CHECK-NEXT: rts163451;3452; GENERIC-LABEL: selectRI_ult_i64:3453; GENERIC: # %bb.0: # %entry3454; GENERIC-NEXT: .cfi_def_cfa_offset 03455; GENERIC-NEXT: subi16 sp, sp, 43456; GENERIC-NEXT: .cfi_def_cfa_offset 43457; GENERIC-NEXT: cmphsi16 a0, 103458; GENERIC-NEXT: mvcv16 a03459; GENERIC-NEXT: cmpnei16 a1, 03460; GENERIC-NEXT: mvcv16 a13461; GENERIC-NEXT: btsti16 a1, 03462; GENERIC-NEXT: bf16 .LBB87_53463; GENERIC-NEXT: # %bb.1: # %entry3464; GENERIC-NEXT: btsti16 a0, 03465; GENERIC-NEXT: bt16 .LBB87_63466; GENERIC-NEXT: .LBB87_2: # %entry3467; GENERIC-NEXT: btsti16 a0, 03468; GENERIC-NEXT: bf16 .LBB87_43469; GENERIC-NEXT: .LBB87_3:3470; GENERIC-NEXT: ld16.w a3, (sp, 8)3471; GENERIC-NEXT: .LBB87_4: # %entry3472; GENERIC-NEXT: mov16 a0, a23473; GENERIC-NEXT: mov16 a1, a33474; GENERIC-NEXT: addi16 sp, sp, 43475; GENERIC-NEXT: rts163476; GENERIC-NEXT: .LBB87_5: # %entry3477; GENERIC-NEXT: movi16 a0, 03478; GENERIC-NEXT: btsti16 a0, 03479; GENERIC-NEXT: bf16 .LBB87_23480; GENERIC-NEXT: .LBB87_6:3481; GENERIC-NEXT: ld16.w a2, (sp, 4)3482; GENERIC-NEXT: btsti16 a0, 03483; GENERIC-NEXT: bt16 .LBB87_33484; GENERIC-NEXT: br32 .LBB87_43485entry:3486 %icmp = icmp ult i64 %x, 103487 %ret = select i1 %icmp, i64 %m, i64 %n3488 ret i64 %ret3489}3490 3491define i64 @selectRX_ult_i64(i64 %x, i64 %n, i64 %m) {3492; CHECK-LABEL: selectRX_ult_i64:3493; CHECK: # %bb.0: # %entry3494; CHECK-NEXT: subi16 sp, sp, 43495; CHECK-NEXT: .cfi_def_cfa_offset 43496; CHECK-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill3497; CHECK-NEXT: .cfi_offset l0, -43498; CHECK-NEXT: .cfi_def_cfa_offset 43499; CHECK-NEXT: ld32.w t0, (sp, 8)3500; CHECK-NEXT: ld32.w t1, (sp, 4)3501; CHECK-NEXT: movih32 l0, 7293502; CHECK-NEXT: ori32 l0, l0, 20333503; CHECK-NEXT: cmphs16 a0, l03504; CHECK-NEXT: mvcv16 a03505; CHECK-NEXT: cmpnei16 a1, 03506; CHECK-NEXT: movi16 a1, 03507; CHECK-NEXT: movf32 a1, a03508; CHECK-NEXT: btsti16 a1, 03509; CHECK-NEXT: movt32 a2, t13510; CHECK-NEXT: movt32 a3, t03511; CHECK-NEXT: mov16 a0, a23512; CHECK-NEXT: mov16 a1, a33513; CHECK-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload3514; CHECK-NEXT: addi16 sp, sp, 43515; CHECK-NEXT: rts163516;3517; GENERIC-LABEL: selectRX_ult_i64:3518; GENERIC: # %bb.0: # %entry3519; GENERIC-NEXT: subi16 sp, sp, 83520; GENERIC-NEXT: .cfi_def_cfa_offset 83521; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill3522; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill3523; GENERIC-NEXT: .cfi_offset l1, -43524; GENERIC-NEXT: .cfi_offset l0, -83525; GENERIC-NEXT: subi16 sp, sp, 43526; GENERIC-NEXT: .cfi_def_cfa_offset 123527; GENERIC-NEXT: movi16 l0, 23528; GENERIC-NEXT: lsli16 l0, l0, 243529; GENERIC-NEXT: movi16 l1, 2173530; GENERIC-NEXT: lsli16 l1, l1, 163531; GENERIC-NEXT: or16 l1, l03532; GENERIC-NEXT: movi16 l0, 73533; GENERIC-NEXT: lsli16 l0, l0, 83534; GENERIC-NEXT: or16 l0, l13535; GENERIC-NEXT: movi16 l1, 2413536; GENERIC-NEXT: or16 l1, l03537; GENERIC-NEXT: cmphs16 a0, l13538; GENERIC-NEXT: mvcv16 a03539; GENERIC-NEXT: cmpnei16 a1, 03540; GENERIC-NEXT: mvcv16 a13541; GENERIC-NEXT: btsti16 a1, 03542; GENERIC-NEXT: bf16 .LBB88_53543; GENERIC-NEXT: # %bb.1: # %entry3544; GENERIC-NEXT: btsti16 a0, 03545; GENERIC-NEXT: bt16 .LBB88_63546; GENERIC-NEXT: .LBB88_2: # %entry3547; GENERIC-NEXT: btsti16 a0, 03548; GENERIC-NEXT: bf16 .LBB88_43549; GENERIC-NEXT: .LBB88_3:3550; GENERIC-NEXT: ld16.w a3, (sp, 16)3551; GENERIC-NEXT: .LBB88_4: # %entry3552; GENERIC-NEXT: mov16 a0, a23553; GENERIC-NEXT: mov16 a1, a33554; GENERIC-NEXT: addi16 sp, sp, 43555; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload3556; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload3557; GENERIC-NEXT: addi16 sp, sp, 83558; GENERIC-NEXT: rts163559; GENERIC-NEXT: .LBB88_5: # %entry3560; GENERIC-NEXT: movi16 a0, 03561; GENERIC-NEXT: btsti16 a0, 03562; GENERIC-NEXT: bf16 .LBB88_23563; GENERIC-NEXT: .LBB88_6:3564; GENERIC-NEXT: ld16.w a2, (sp, 12)3565; GENERIC-NEXT: btsti16 a0, 03566; GENERIC-NEXT: bt16 .LBB88_33567; GENERIC-NEXT: br32 .LBB88_43568entry:3569 %icmp = icmp ult i64 %x, 477777773570 %ret = select i1 %icmp, i64 %m, i64 %n3571 ret i64 %ret3572}3573 3574define i64 @selectC_ult_i64(i1 %c, i64 %n, i64 %m) {3575; CHECK-LABEL: selectC_ult_i64:3576; CHECK: # %bb.0: # %entry3577; CHECK-NEXT: ld32.w t0, (sp, 0)3578; CHECK-NEXT: btsti16 a0, 03579; CHECK-NEXT: movt32 a1, a33580; CHECK-NEXT: movt32 a2, t03581; CHECK-NEXT: mov16 a0, a13582; CHECK-NEXT: mov16 a1, a23583; CHECK-NEXT: rts163584;3585; GENERIC-LABEL: selectC_ult_i64:3586; GENERIC: # %bb.0: # %entry3587; GENERIC-NEXT: .cfi_def_cfa_offset 03588; GENERIC-NEXT: subi16 sp, sp, 43589; GENERIC-NEXT: .cfi_def_cfa_offset 43590; GENERIC-NEXT: btsti16 a0, 03591; GENERIC-NEXT: bt16 .LBB89_23592; GENERIC-NEXT: # %bb.1: # %entry3593; GENERIC-NEXT: mov16 a3, a13594; GENERIC-NEXT: .LBB89_2: # %entry3595; GENERIC-NEXT: btsti16 a0, 03596; GENERIC-NEXT: bf16 .LBB89_43597; GENERIC-NEXT: # %bb.3:3598; GENERIC-NEXT: ld16.w a2, (sp, 4)3599; GENERIC-NEXT: .LBB89_4: # %entry3600; GENERIC-NEXT: mov16 a0, a33601; GENERIC-NEXT: mov16 a1, a23602; GENERIC-NEXT: addi16 sp, sp, 43603; GENERIC-NEXT: rts163604entry:3605 %ret = select i1 %c, i64 %m, i64 %n3606 ret i64 %ret3607}3608 3609 3610define i16 @selectRR_ult_i16(i16 %x, i16 %y, i16 %n, i16 %m) {3611; CHECK-LABEL: selectRR_ult_i16:3612; CHECK: # %bb.0: # %entry3613; CHECK-NEXT: zexth16 a0, a03614; CHECK-NEXT: zexth16 a1, a13615; CHECK-NEXT: cmphs16 a1, a03616; CHECK-NEXT: movf32 a2, a33617; CHECK-NEXT: mov16 a0, a23618; CHECK-NEXT: rts163619;3620; GENERIC-LABEL: selectRR_ult_i16:3621; GENERIC: # %bb.0: # %entry3622; GENERIC-NEXT: subi16 sp, sp, 123623; GENERIC-NEXT: .cfi_def_cfa_offset 123624; GENERIC-NEXT: st16.w l2, (sp, 8) # 4-byte Folded Spill3625; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill3626; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill3627; GENERIC-NEXT: .cfi_offset l2, -43628; GENERIC-NEXT: .cfi_offset l1, -83629; GENERIC-NEXT: .cfi_offset l0, -123630; GENERIC-NEXT: subi16 sp, sp, 43631; GENERIC-NEXT: .cfi_def_cfa_offset 163632; GENERIC-NEXT: movi16 l0, 03633; GENERIC-NEXT: lsli16 l1, l0, 243634; GENERIC-NEXT: lsli16 l0, l0, 163635; GENERIC-NEXT: or16 l0, l13636; GENERIC-NEXT: movi16 l1, 2553637; GENERIC-NEXT: lsli16 l2, l1, 83638; GENERIC-NEXT: or16 l2, l03639; GENERIC-NEXT: or16 l2, l13640; GENERIC-NEXT: and16 a0, l23641; GENERIC-NEXT: and16 l2, a13642; GENERIC-NEXT: cmphs16 l2, a03643; GENERIC-NEXT: mvcv16 a03644; GENERIC-NEXT: btsti16 a0, 03645; GENERIC-NEXT: bt16 .LBB90_23646; GENERIC-NEXT: # %bb.1: # %entry3647; GENERIC-NEXT: mov16 a3, a23648; GENERIC-NEXT: .LBB90_2: # %entry3649; GENERIC-NEXT: mov16 a0, a33650; GENERIC-NEXT: addi16 sp, sp, 43651; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload3652; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload3653; GENERIC-NEXT: ld16.w l2, (sp, 8) # 4-byte Folded Reload3654; GENERIC-NEXT: addi16 sp, sp, 123655; GENERIC-NEXT: rts163656entry:3657 %icmp = icmp ult i16 %y, %x3658 %ret = select i1 %icmp, i16 %m, i16 %n3659 ret i16 %ret3660}3661 3662define i16 @selectRI_ult_i16(i16 %x, i16 %n, i16 %m) {3663; CHECK-LABEL: selectRI_ult_i16:3664; CHECK: # %bb.0: # %entry3665; CHECK-NEXT: zexth16 a0, a03666; CHECK-NEXT: cmphsi16 a0, 103667; CHECK-NEXT: movf32 a1, a23668; CHECK-NEXT: mov16 a0, a13669; CHECK-NEXT: rts163670;3671; GENERIC-LABEL: selectRI_ult_i16:3672; GENERIC: # %bb.0: # %entry3673; GENERIC-NEXT: subi16 sp, sp, 83674; GENERIC-NEXT: .cfi_def_cfa_offset 83675; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill3676; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill3677; GENERIC-NEXT: .cfi_offset l1, -43678; GENERIC-NEXT: .cfi_offset l0, -83679; GENERIC-NEXT: subi16 sp, sp, 43680; GENERIC-NEXT: .cfi_def_cfa_offset 123681; GENERIC-NEXT: movi16 a3, 03682; GENERIC-NEXT: lsli16 l0, a3, 243683; GENERIC-NEXT: lsli16 a3, a3, 163684; GENERIC-NEXT: or16 a3, l03685; GENERIC-NEXT: movi16 l0, 2553686; GENERIC-NEXT: lsli16 l1, l0, 83687; GENERIC-NEXT: or16 l1, a33688; GENERIC-NEXT: or16 l1, l03689; GENERIC-NEXT: and16 l1, a03690; GENERIC-NEXT: cmphsi16 l1, 103691; GENERIC-NEXT: mvcv16 a03692; GENERIC-NEXT: btsti16 a0, 03693; GENERIC-NEXT: bt16 .LBB91_23694; GENERIC-NEXT: # %bb.1: # %entry3695; GENERIC-NEXT: mov16 a2, a13696; GENERIC-NEXT: .LBB91_2: # %entry3697; GENERIC-NEXT: mov16 a0, a23698; GENERIC-NEXT: addi16 sp, sp, 43699; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload3700; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload3701; GENERIC-NEXT: addi16 sp, sp, 83702; GENERIC-NEXT: rts163703entry:3704 %icmp = icmp ult i16 %x, 103705 %ret = select i1 %icmp, i16 %m, i16 %n3706 ret i16 %ret3707}3708 3709define i16 @selectRX_ult_i16(i16 %x, i16 %n, i16 %m) {3710; CHECK-LABEL: selectRX_ult_i16:3711; CHECK: # %bb.0: # %entry3712; CHECK-NEXT: zexth16 a0, a03713; CHECK-NEXT: cmphsi32 a0, 20333714; CHECK-NEXT: movf32 a1, a23715; CHECK-NEXT: mov16 a0, a13716; CHECK-NEXT: rts163717;3718; GENERIC-LABEL: selectRX_ult_i16:3719; GENERIC: # %bb.0: # %entry3720; GENERIC-NEXT: subi16 sp, sp, 83721; GENERIC-NEXT: .cfi_def_cfa_offset 83722; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill3723; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill3724; GENERIC-NEXT: .cfi_offset l1, -43725; GENERIC-NEXT: .cfi_offset l0, -83726; GENERIC-NEXT: subi16 sp, sp, 43727; GENERIC-NEXT: .cfi_def_cfa_offset 123728; GENERIC-NEXT: movi16 a3, 03729; GENERIC-NEXT: lsli16 l0, a3, 243730; GENERIC-NEXT: lsli16 a3, a3, 163731; GENERIC-NEXT: or16 a3, l03732; GENERIC-NEXT: movi16 l0, 2553733; GENERIC-NEXT: lsli16 l1, l0, 83734; GENERIC-NEXT: or16 l1, a33735; GENERIC-NEXT: or16 l1, l03736; GENERIC-NEXT: and16 l1, a03737; GENERIC-NEXT: movi16 a0, 73738; GENERIC-NEXT: lsli16 a0, a0, 83739; GENERIC-NEXT: or16 a0, a33740; GENERIC-NEXT: movi16 a3, 2413741; GENERIC-NEXT: or16 a3, a03742; GENERIC-NEXT: cmphs16 l1, a33743; GENERIC-NEXT: mvcv16 a03744; GENERIC-NEXT: btsti16 a0, 03745; GENERIC-NEXT: bt16 .LBB92_23746; GENERIC-NEXT: # %bb.1: # %entry3747; GENERIC-NEXT: mov16 a2, a13748; GENERIC-NEXT: .LBB92_2: # %entry3749; GENERIC-NEXT: mov16 a0, a23750; GENERIC-NEXT: addi16 sp, sp, 43751; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload3752; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload3753; GENERIC-NEXT: addi16 sp, sp, 83754; GENERIC-NEXT: rts163755entry:3756 %icmp = icmp ult i16 %x, 477777773757 %ret = select i1 %icmp, i16 %m, i16 %n3758 ret i16 %ret3759}3760 3761define i16 @selectC_ult_i16(i1 %c, i16 %n, i16 %m) {3762; CHECK-LABEL: selectC_ult_i16:3763; CHECK: # %bb.0: # %entry3764; CHECK-NEXT: btsti16 a0, 03765; CHECK-NEXT: movt32 a1, a23766; CHECK-NEXT: mov16 a0, a13767; CHECK-NEXT: rts163768;3769; GENERIC-LABEL: selectC_ult_i16:3770; GENERIC: # %bb.0: # %entry3771; GENERIC-NEXT: .cfi_def_cfa_offset 03772; GENERIC-NEXT: subi16 sp, sp, 43773; GENERIC-NEXT: .cfi_def_cfa_offset 43774; GENERIC-NEXT: btsti16 a0, 03775; GENERIC-NEXT: bt16 .LBB93_23776; GENERIC-NEXT: # %bb.1: # %entry3777; GENERIC-NEXT: mov16 a2, a13778; GENERIC-NEXT: .LBB93_2: # %entry3779; GENERIC-NEXT: mov16 a0, a23780; GENERIC-NEXT: addi16 sp, sp, 43781; GENERIC-NEXT: rts163782entry:3783 %ret = select i1 %c, i16 %m, i16 %n3784 ret i16 %ret3785}3786 3787 3788define i8 @selectRR_ult_i8(i8 %x, i8 %y, i8 %n, i8 %m) {3789; CHECK-LABEL: selectRR_ult_i8:3790; CHECK: # %bb.0: # %entry3791; CHECK-NEXT: zextb16 a0, a03792; CHECK-NEXT: zextb16 a1, a13793; CHECK-NEXT: cmphs16 a1, a03794; CHECK-NEXT: movf32 a2, a33795; CHECK-NEXT: mov16 a0, a23796; CHECK-NEXT: rts163797;3798; GENERIC-LABEL: selectRR_ult_i8:3799; GENERIC: # %bb.0: # %entry3800; GENERIC-NEXT: subi16 sp, sp, 43801; GENERIC-NEXT: .cfi_def_cfa_offset 43802; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill3803; GENERIC-NEXT: .cfi_offset l0, -43804; GENERIC-NEXT: subi16 sp, sp, 43805; GENERIC-NEXT: .cfi_def_cfa_offset 83806; GENERIC-NEXT: movi16 l0, 2553807; GENERIC-NEXT: and16 a0, l03808; GENERIC-NEXT: and16 a1, l03809; GENERIC-NEXT: cmphs16 a1, a03810; GENERIC-NEXT: mvcv16 a03811; GENERIC-NEXT: btsti16 a0, 03812; GENERIC-NEXT: bt16 .LBB94_23813; GENERIC-NEXT: # %bb.1: # %entry3814; GENERIC-NEXT: mov16 a3, a23815; GENERIC-NEXT: .LBB94_2: # %entry3816; GENERIC-NEXT: mov16 a0, a33817; GENERIC-NEXT: addi16 sp, sp, 43818; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload3819; GENERIC-NEXT: addi16 sp, sp, 43820; GENERIC-NEXT: rts163821entry:3822 %icmp = icmp ult i8 %y, %x3823 %ret = select i1 %icmp, i8 %m, i8 %n3824 ret i8 %ret3825}3826 3827define i8 @selectRI_ult_i8(i8 %x, i8 %n, i8 %m) {3828; CHECK-LABEL: selectRI_ult_i8:3829; CHECK: # %bb.0: # %entry3830; CHECK-NEXT: zextb16 a0, a03831; CHECK-NEXT: cmphsi16 a0, 103832; CHECK-NEXT: movf32 a1, a23833; CHECK-NEXT: mov16 a0, a13834; CHECK-NEXT: rts163835;3836; GENERIC-LABEL: selectRI_ult_i8:3837; GENERIC: # %bb.0: # %entry3838; GENERIC-NEXT: .cfi_def_cfa_offset 03839; GENERIC-NEXT: subi16 sp, sp, 43840; GENERIC-NEXT: .cfi_def_cfa_offset 43841; GENERIC-NEXT: movi16 a3, 2553842; GENERIC-NEXT: and16 a3, a03843; GENERIC-NEXT: cmphsi16 a3, 103844; GENERIC-NEXT: mvcv16 a03845; GENERIC-NEXT: btsti16 a0, 03846; GENERIC-NEXT: bt16 .LBB95_23847; GENERIC-NEXT: # %bb.1: # %entry3848; GENERIC-NEXT: mov16 a2, a13849; GENERIC-NEXT: .LBB95_2: # %entry3850; GENERIC-NEXT: mov16 a0, a23851; GENERIC-NEXT: addi16 sp, sp, 43852; GENERIC-NEXT: rts163853entry:3854 %icmp = icmp ult i8 %x, 103855 %ret = select i1 %icmp, i8 %m, i8 %n3856 ret i8 %ret3857}3858 3859define i8 @selectRX_ult_i8(i8 %x, i8 %n, i8 %m) {3860; CHECK-LABEL: selectRX_ult_i8:3861; CHECK: # %bb.0: # %entry3862; CHECK-NEXT: zextb16 a0, a03863; CHECK-NEXT: cmphsi32 a0, 2413864; CHECK-NEXT: movf32 a1, a23865; CHECK-NEXT: mov16 a0, a13866; CHECK-NEXT: rts163867;3868; GENERIC-LABEL: selectRX_ult_i8:3869; GENERIC: # %bb.0: # %entry3870; GENERIC-NEXT: .cfi_def_cfa_offset 03871; GENERIC-NEXT: subi16 sp, sp, 43872; GENERIC-NEXT: .cfi_def_cfa_offset 43873; GENERIC-NEXT: movi16 a3, 2553874; GENERIC-NEXT: and16 a3, a03875; GENERIC-NEXT: movi16 a0, 2413876; GENERIC-NEXT: cmphs16 a3, a03877; GENERIC-NEXT: mvcv16 a03878; GENERIC-NEXT: btsti16 a0, 03879; GENERIC-NEXT: bt16 .LBB96_23880; GENERIC-NEXT: # %bb.1: # %entry3881; GENERIC-NEXT: mov16 a2, a13882; GENERIC-NEXT: .LBB96_2: # %entry3883; GENERIC-NEXT: mov16 a0, a23884; GENERIC-NEXT: addi16 sp, sp, 43885; GENERIC-NEXT: rts163886entry:3887 %icmp = icmp ult i8 %x, 477777773888 %ret = select i1 %icmp, i8 %m, i8 %n3889 ret i8 %ret3890}3891 3892define i8 @selectC_ult_i8(i1 %c, i8 %n, i8 %m) {3893; CHECK-LABEL: selectC_ult_i8:3894; CHECK: # %bb.0: # %entry3895; CHECK-NEXT: btsti16 a0, 03896; CHECK-NEXT: movt32 a1, a23897; CHECK-NEXT: mov16 a0, a13898; CHECK-NEXT: rts163899;3900; GENERIC-LABEL: selectC_ult_i8:3901; GENERIC: # %bb.0: # %entry3902; GENERIC-NEXT: .cfi_def_cfa_offset 03903; GENERIC-NEXT: subi16 sp, sp, 43904; GENERIC-NEXT: .cfi_def_cfa_offset 43905; GENERIC-NEXT: btsti16 a0, 03906; GENERIC-NEXT: bt16 .LBB97_23907; GENERIC-NEXT: # %bb.1: # %entry3908; GENERIC-NEXT: mov16 a2, a13909; GENERIC-NEXT: .LBB97_2: # %entry3910; GENERIC-NEXT: mov16 a0, a23911; GENERIC-NEXT: addi16 sp, sp, 43912; GENERIC-NEXT: rts163913entry:3914 %ret = select i1 %c, i8 %m, i8 %n3915 ret i8 %ret3916}3917 3918 3919define i1 @selectRR_ult_i1(i1 %x, i1 %y, i1 %n, i1 %m) {3920; CHECK-LABEL: selectRR_ult_i1:3921; CHECK: # %bb.0: # %entry3922; CHECK-NEXT: btsti16 a1, 03923; CHECK-NEXT: movt32 a3, a23924; CHECK-NEXT: btsti16 a0, 03925; CHECK-NEXT: movt32 a2, a33926; CHECK-NEXT: mov16 a0, a23927; CHECK-NEXT: rts163928;3929; GENERIC-LABEL: selectRR_ult_i1:3930; GENERIC: # %bb.0: # %entry3931; GENERIC-NEXT: subi16 sp, sp, 43932; GENERIC-NEXT: .cfi_def_cfa_offset 43933; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill3934; GENERIC-NEXT: .cfi_offset l0, -43935; GENERIC-NEXT: subi16 sp, sp, 43936; GENERIC-NEXT: .cfi_def_cfa_offset 83937; GENERIC-NEXT: mov16 l0, a03938; GENERIC-NEXT: btsti16 a1, 03939; GENERIC-NEXT: mov16 a0, a23940; GENERIC-NEXT: bt16 .LBB98_23941; GENERIC-NEXT: # %bb.1: # %entry3942; GENERIC-NEXT: mov16 a0, a33943; GENERIC-NEXT: .LBB98_2: # %entry3944; GENERIC-NEXT: btsti16 l0, 03945; GENERIC-NEXT: bt16 .LBB98_43946; GENERIC-NEXT: # %bb.3: # %entry3947; GENERIC-NEXT: mov16 a0, a23948; GENERIC-NEXT: .LBB98_4: # %entry3949; GENERIC-NEXT: addi16 sp, sp, 43950; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload3951; GENERIC-NEXT: addi16 sp, sp, 43952; GENERIC-NEXT: rts163953entry:3954 %icmp = icmp ult i1 %y, %x3955 %ret = select i1 %icmp, i1 %m, i1 %n3956 ret i1 %ret3957}3958 3959define i1 @selectRI_ult_i1(i1 %x, i1 %n, i1 %m) {3960; CHECK-LABEL: selectRI_ult_i1:3961; CHECK: # %bb.0: # %entry3962; CHECK-NEXT: mov16 a0, a13963; CHECK-NEXT: rts163964;3965; GENERIC-LABEL: selectRI_ult_i1:3966; GENERIC: # %bb.0: # %entry3967; GENERIC-NEXT: .cfi_def_cfa_offset 03968; GENERIC-NEXT: subi16 sp, sp, 43969; GENERIC-NEXT: .cfi_def_cfa_offset 43970; GENERIC-NEXT: mov16 a0, a13971; GENERIC-NEXT: addi16 sp, sp, 43972; GENERIC-NEXT: rts163973entry:3974 %icmp = icmp ult i1 %x, 103975 %ret = select i1 %icmp, i1 %m, i1 %n3976 ret i1 %ret3977}3978 3979define i1 @selectRX_ult_i1(i1 %x, i1 %n, i1 %m) {3980; CHECK-LABEL: selectRX_ult_i1:3981; CHECK: # %bb.0: # %entry3982; CHECK-NEXT: btsti16 a0, 03983; CHECK-NEXT: movt32 a2, a13984; CHECK-NEXT: mov16 a0, a23985; CHECK-NEXT: rts163986;3987; GENERIC-LABEL: selectRX_ult_i1:3988; GENERIC: # %bb.0: # %entry3989; GENERIC-NEXT: .cfi_def_cfa_offset 03990; GENERIC-NEXT: subi16 sp, sp, 43991; GENERIC-NEXT: .cfi_def_cfa_offset 43992; GENERIC-NEXT: btsti16 a0, 03993; GENERIC-NEXT: bt16 .LBB100_23994; GENERIC-NEXT: # %bb.1: # %entry3995; GENERIC-NEXT: mov16 a1, a23996; GENERIC-NEXT: .LBB100_2: # %entry3997; GENERIC-NEXT: mov16 a0, a13998; GENERIC-NEXT: addi16 sp, sp, 43999; GENERIC-NEXT: rts164000entry:4001 %icmp = icmp ult i1 %x, 477777774002 %ret = select i1 %icmp, i1 %m, i1 %n4003 ret i1 %ret4004}4005 4006define i1 @selectC_ult_i1(i1 %c, i1 %n, i1 %m) {4007; CHECK-LABEL: selectC_ult_i1:4008; CHECK: # %bb.0: # %entry4009; CHECK-NEXT: btsti16 a0, 04010; CHECK-NEXT: movt32 a1, a24011; CHECK-NEXT: mov16 a0, a14012; CHECK-NEXT: rts164013;4014; GENERIC-LABEL: selectC_ult_i1:4015; GENERIC: # %bb.0: # %entry4016; GENERIC-NEXT: .cfi_def_cfa_offset 04017; GENERIC-NEXT: subi16 sp, sp, 44018; GENERIC-NEXT: .cfi_def_cfa_offset 44019; GENERIC-NEXT: btsti16 a0, 04020; GENERIC-NEXT: bt16 .LBB101_24021; GENERIC-NEXT: # %bb.1: # %entry4022; GENERIC-NEXT: mov16 a2, a14023; GENERIC-NEXT: .LBB101_2: # %entry4024; GENERIC-NEXT: mov16 a0, a24025; GENERIC-NEXT: addi16 sp, sp, 44026; GENERIC-NEXT: rts164027entry:4028 %ret = select i1 %c, i1 %m, i1 %n4029 ret i1 %ret4030}4031 4032define i32 @selectRR_ule_i32(i32 %x, i32 %y, i32 %n, i32 %m) {4033; CHECK-LABEL: selectRR_ule_i32:4034; CHECK: # %bb.0: # %entry4035; CHECK-NEXT: cmphs16 a0, a14036; CHECK-NEXT: movt32 a2, a34037; CHECK-NEXT: mov16 a0, a24038; CHECK-NEXT: rts164039;4040; GENERIC-LABEL: selectRR_ule_i32:4041; GENERIC: # %bb.0: # %entry4042; GENERIC-NEXT: .cfi_def_cfa_offset 04043; GENERIC-NEXT: subi16 sp, sp, 44044; GENERIC-NEXT: .cfi_def_cfa_offset 44045; GENERIC-NEXT: cmphs16 a0, a14046; GENERIC-NEXT: mvcv16 a04047; GENERIC-NEXT: movi16 a1, 14048; GENERIC-NEXT: subu16 a1, a04049; GENERIC-NEXT: btsti16 a1, 04050; GENERIC-NEXT: bt16 .LBB102_24051; GENERIC-NEXT: # %bb.1: # %entry4052; GENERIC-NEXT: mov16 a3, a24053; GENERIC-NEXT: .LBB102_2: # %entry4054; GENERIC-NEXT: mov16 a0, a34055; GENERIC-NEXT: addi16 sp, sp, 44056; GENERIC-NEXT: rts164057entry:4058 %icmp = icmp ule i32 %y, %x4059 %ret = select i1 %icmp, i32 %m, i32 %n4060 ret i32 %ret4061}4062 4063define i32 @selectRI_ule_i32(i32 %x, i32 %n, i32 %m) {4064; CHECK-LABEL: selectRI_ule_i32:4065; CHECK: # %bb.0: # %entry4066; CHECK-NEXT: cmphsi16 a0, 114067; CHECK-NEXT: movf32 a1, a24068; CHECK-NEXT: mov16 a0, a14069; CHECK-NEXT: rts164070;4071; GENERIC-LABEL: selectRI_ule_i32:4072; GENERIC: # %bb.0: # %entry4073; GENERIC-NEXT: .cfi_def_cfa_offset 04074; GENERIC-NEXT: subi16 sp, sp, 44075; GENERIC-NEXT: .cfi_def_cfa_offset 44076; GENERIC-NEXT: cmphsi16 a0, 114077; GENERIC-NEXT: mvcv16 a04078; GENERIC-NEXT: btsti16 a0, 04079; GENERIC-NEXT: bt16 .LBB103_24080; GENERIC-NEXT: # %bb.1: # %entry4081; GENERIC-NEXT: mov16 a2, a14082; GENERIC-NEXT: .LBB103_2: # %entry4083; GENERIC-NEXT: mov16 a0, a24084; GENERIC-NEXT: addi16 sp, sp, 44085; GENERIC-NEXT: rts164086entry:4087 %icmp = icmp ule i32 %x, 104088 %ret = select i1 %icmp, i32 %m, i32 %n4089 ret i32 %ret4090}4091 4092define i32 @selectRX_ule_i32(i32 %x, i32 %n, i32 %m) {4093; CHECK-LABEL: selectRX_ule_i32:4094; CHECK: # %bb.0: # %entry4095; CHECK-NEXT: movih32 a3, 7294096; CHECK-NEXT: ori32 a3, a3, 20344097; CHECK-NEXT: cmphs16 a0, a34098; CHECK-NEXT: movf32 a1, a24099; CHECK-NEXT: mov16 a0, a14100; CHECK-NEXT: rts164101;4102; GENERIC-LABEL: selectRX_ule_i32:4103; GENERIC: # %bb.0: # %entry4104; GENERIC-NEXT: subi16 sp, sp, 44105; GENERIC-NEXT: .cfi_def_cfa_offset 44106; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill4107; GENERIC-NEXT: .cfi_offset l0, -44108; GENERIC-NEXT: subi16 sp, sp, 44109; GENERIC-NEXT: .cfi_def_cfa_offset 84110; GENERIC-NEXT: movi16 a3, 24111; GENERIC-NEXT: lsli16 a3, a3, 244112; GENERIC-NEXT: movi16 l0, 2174113; GENERIC-NEXT: lsli16 l0, l0, 164114; GENERIC-NEXT: or16 l0, a34115; GENERIC-NEXT: movi16 a3, 74116; GENERIC-NEXT: lsli16 a3, a3, 84117; GENERIC-NEXT: or16 a3, l04118; GENERIC-NEXT: movi16 l0, 2424119; GENERIC-NEXT: or16 l0, a34120; GENERIC-NEXT: cmphs16 a0, l04121; GENERIC-NEXT: mvcv16 a04122; GENERIC-NEXT: btsti16 a0, 04123; GENERIC-NEXT: bt16 .LBB104_24124; GENERIC-NEXT: # %bb.1: # %entry4125; GENERIC-NEXT: mov16 a2, a14126; GENERIC-NEXT: .LBB104_2: # %entry4127; GENERIC-NEXT: mov16 a0, a24128; GENERIC-NEXT: addi16 sp, sp, 44129; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload4130; GENERIC-NEXT: addi16 sp, sp, 44131; GENERIC-NEXT: rts164132entry:4133 %icmp = icmp ule i32 %x, 477777774134 %ret = select i1 %icmp, i32 %m, i32 %n4135 ret i32 %ret4136}4137 4138define i32 @selectC_ule_i32(i1 %c, i32 %n, i32 %m) {4139; CHECK-LABEL: selectC_ule_i32:4140; CHECK: # %bb.0: # %entry4141; CHECK-NEXT: btsti16 a0, 04142; CHECK-NEXT: movt32 a1, a24143; CHECK-NEXT: mov16 a0, a14144; CHECK-NEXT: rts164145;4146; GENERIC-LABEL: selectC_ule_i32:4147; GENERIC: # %bb.0: # %entry4148; GENERIC-NEXT: .cfi_def_cfa_offset 04149; GENERIC-NEXT: subi16 sp, sp, 44150; GENERIC-NEXT: .cfi_def_cfa_offset 44151; GENERIC-NEXT: btsti16 a0, 04152; GENERIC-NEXT: bt16 .LBB105_24153; GENERIC-NEXT: # %bb.1: # %entry4154; GENERIC-NEXT: mov16 a2, a14155; GENERIC-NEXT: .LBB105_2: # %entry4156; GENERIC-NEXT: mov16 a0, a24157; GENERIC-NEXT: addi16 sp, sp, 44158; GENERIC-NEXT: rts164159entry:4160 %ret = select i1 %c, i32 %m, i32 %n4161 ret i32 %ret4162}4163 4164define i64 @selectRR_ule_i64(i64 %x, i64 %y, i64 %n, i64 %m) {4165; CHECK-LABEL: selectRR_ule_i64:4166; CHECK: # %bb.0: # %entry4167; CHECK-NEXT: .cfi_def_cfa_offset 04168; CHECK-NEXT: subi16 sp, sp, 164169; CHECK-NEXT: .cfi_def_cfa_offset 164170; CHECK-NEXT: cmphs16 a1, a34171; CHECK-NEXT: mvc32 t04172; CHECK-NEXT: st32.w t0, (sp, 12)4173; CHECK-NEXT: cmphs16 a0, a24174; CHECK-NEXT: mvc32 a04175; CHECK-NEXT: st16.w a0, (sp, 4)4176; CHECK-NEXT: cmpne16 a3, a14177; CHECK-NEXT: mvc32 a04178; CHECK-NEXT: st16.w a0, (sp, 8)4179; CHECK-NEXT: ld16.w a0, (sp, 4)4180; CHECK-NEXT: btsti16 a0, 04181; CHECK-NEXT: mvc32 a04182; CHECK-NEXT: ld16.w a1, (sp, 12)4183; CHECK-NEXT: btsti16 a1, 04184; CHECK-NEXT: mvc32 a14185; CHECK-NEXT: ld16.w a2, (sp, 8)4186; CHECK-NEXT: btsti16 a2, 04187; CHECK-NEXT: movf32 a1, a04188; CHECK-NEXT: addi16 a2, sp, 164189; CHECK-NEXT: addi16 a0, sp, 244190; CHECK-NEXT: btsti16 a1, 04191; CHECK-NEXT: movt32 a2, a04192; CHECK-NEXT: ld16.w a0, (a2, 0)4193; CHECK-NEXT: ld16.w a1, (a2, 4)4194; CHECK-NEXT: addi16 sp, sp, 164195; CHECK-NEXT: rts164196;4197; GENERIC-LABEL: selectRR_ule_i64:4198; GENERIC: # %bb.0: # %entry4199; GENERIC-NEXT: subi16 sp, sp, 84200; GENERIC-NEXT: .cfi_def_cfa_offset 84201; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill4202; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill4203; GENERIC-NEXT: .cfi_offset l1, -44204; GENERIC-NEXT: .cfi_offset l0, -84205; GENERIC-NEXT: subi16 sp, sp, 44206; GENERIC-NEXT: .cfi_def_cfa_offset 124207; GENERIC-NEXT: cmphs16 a1, a34208; GENERIC-NEXT: mvcv16 l14209; GENERIC-NEXT: movi16 l0, 14210; GENERIC-NEXT: cmphs16 a0, a24211; GENERIC-NEXT: mvcv16 a04212; GENERIC-NEXT: cmpne16 a3, a14213; GENERIC-NEXT: mvcv16 a14214; GENERIC-NEXT: btsti16 a1, 04215; GENERIC-NEXT: bt16 .LBB106_34216; GENERIC-NEXT: # %bb.1: # %entry4217; GENERIC-NEXT: subu16 l0, l14218; GENERIC-NEXT: btsti16 l0, 04219; GENERIC-NEXT: bf16 .LBB106_44220; GENERIC-NEXT: .LBB106_2:4221; GENERIC-NEXT: movi16 a0, 204222; GENERIC-NEXT: br32 .LBB106_54223; GENERIC-NEXT: .LBB106_3:4224; GENERIC-NEXT: subu16 l0, a04225; GENERIC-NEXT: btsti16 l0, 04226; GENERIC-NEXT: bt16 .LBB106_24227; GENERIC-NEXT: .LBB106_4: # %entry4228; GENERIC-NEXT: movi16 a0, 124229; GENERIC-NEXT: .LBB106_5: # %entry4230; GENERIC-NEXT: addu16 a0, sp4231; GENERIC-NEXT: mov16 a1, a04232; GENERIC-NEXT: ld16.w a0, (a0, 0)4233; GENERIC-NEXT: ld16.w a1, (a1, 4)4234; GENERIC-NEXT: addi16 sp, sp, 44235; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload4236; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload4237; GENERIC-NEXT: addi16 sp, sp, 84238; GENERIC-NEXT: rts164239entry:4240 %icmp = icmp ule i64 %y, %x4241 %ret = select i1 %icmp, i64 %m, i64 %n4242 ret i64 %ret4243}4244 4245define i64 @selectRI_ule_i64(i64 %x, i64 %n, i64 %m) {4246; CHECK-LABEL: selectRI_ule_i64:4247; CHECK: # %bb.0: # %entry4248; CHECK-NEXT: .cfi_def_cfa_offset 04249; CHECK-NEXT: subi16 sp, sp, 84250; CHECK-NEXT: .cfi_def_cfa_offset 84251; CHECK-NEXT: ld32.w t0, (sp, 12)4252; CHECK-NEXT: ld32.w t1, (sp, 8)4253; CHECK-NEXT: cmpnei16 a1, 04254; CHECK-NEXT: st16.w a2, (sp, 0)4255; CHECK-NEXT: mvc32 a14256; CHECK-NEXT: st16.w a1, (sp, 4)4257; CHECK-NEXT: cmphsi16 a0, 114258; CHECK-NEXT: mvcv16 a04259; CHECK-NEXT: movi16 a1, 04260; CHECK-NEXT: ld16.w a2, (sp, 4)4261; CHECK-NEXT: btsti16 a2, 04262; CHECK-NEXT: ld16.w a2, (sp, 0)4263; CHECK-NEXT: movf32 a1, a04264; CHECK-NEXT: btsti16 a1, 04265; CHECK-NEXT: movt32 a2, t14266; CHECK-NEXT: movt32 a3, t04267; CHECK-NEXT: mov16 a0, a24268; CHECK-NEXT: mov16 a1, a34269; CHECK-NEXT: addi16 sp, sp, 84270; CHECK-NEXT: rts164271;4272; GENERIC-LABEL: selectRI_ule_i64:4273; GENERIC: # %bb.0: # %entry4274; GENERIC-NEXT: .cfi_def_cfa_offset 04275; GENERIC-NEXT: subi16 sp, sp, 44276; GENERIC-NEXT: .cfi_def_cfa_offset 44277; GENERIC-NEXT: cmphsi16 a0, 114278; GENERIC-NEXT: mvcv16 a04279; GENERIC-NEXT: cmpnei16 a1, 04280; GENERIC-NEXT: mvcv16 a14281; GENERIC-NEXT: btsti16 a1, 04282; GENERIC-NEXT: bf16 .LBB107_54283; GENERIC-NEXT: # %bb.1: # %entry4284; GENERIC-NEXT: btsti16 a0, 04285; GENERIC-NEXT: bt16 .LBB107_64286; GENERIC-NEXT: .LBB107_2: # %entry4287; GENERIC-NEXT: btsti16 a0, 04288; GENERIC-NEXT: bf16 .LBB107_44289; GENERIC-NEXT: .LBB107_3:4290; GENERIC-NEXT: ld16.w a3, (sp, 8)4291; GENERIC-NEXT: .LBB107_4: # %entry4292; GENERIC-NEXT: mov16 a0, a24293; GENERIC-NEXT: mov16 a1, a34294; GENERIC-NEXT: addi16 sp, sp, 44295; GENERIC-NEXT: rts164296; GENERIC-NEXT: .LBB107_5: # %entry4297; GENERIC-NEXT: movi16 a0, 04298; GENERIC-NEXT: btsti16 a0, 04299; GENERIC-NEXT: bf16 .LBB107_24300; GENERIC-NEXT: .LBB107_6:4301; GENERIC-NEXT: ld16.w a2, (sp, 4)4302; GENERIC-NEXT: btsti16 a0, 04303; GENERIC-NEXT: bt16 .LBB107_34304; GENERIC-NEXT: br32 .LBB107_44305entry:4306 %icmp = icmp ule i64 %x, 104307 %ret = select i1 %icmp, i64 %m, i64 %n4308 ret i64 %ret4309}4310 4311define i64 @selectRX_ule_i64(i64 %x, i64 %n, i64 %m) {4312; CHECK-LABEL: selectRX_ule_i64:4313; CHECK: # %bb.0: # %entry4314; CHECK-NEXT: subi16 sp, sp, 44315; CHECK-NEXT: .cfi_def_cfa_offset 44316; CHECK-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill4317; CHECK-NEXT: .cfi_offset l0, -44318; CHECK-NEXT: .cfi_def_cfa_offset 44319; CHECK-NEXT: ld32.w t0, (sp, 8)4320; CHECK-NEXT: ld32.w t1, (sp, 4)4321; CHECK-NEXT: movih32 l0, 7294322; CHECK-NEXT: ori32 l0, l0, 20344323; CHECK-NEXT: cmphs16 a0, l04324; CHECK-NEXT: mvcv16 a04325; CHECK-NEXT: cmpnei16 a1, 04326; CHECK-NEXT: movi16 a1, 04327; CHECK-NEXT: movf32 a1, a04328; CHECK-NEXT: btsti16 a1, 04329; CHECK-NEXT: movt32 a2, t14330; CHECK-NEXT: movt32 a3, t04331; CHECK-NEXT: mov16 a0, a24332; CHECK-NEXT: mov16 a1, a34333; CHECK-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload4334; CHECK-NEXT: addi16 sp, sp, 44335; CHECK-NEXT: rts164336;4337; GENERIC-LABEL: selectRX_ule_i64:4338; GENERIC: # %bb.0: # %entry4339; GENERIC-NEXT: subi16 sp, sp, 84340; GENERIC-NEXT: .cfi_def_cfa_offset 84341; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill4342; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill4343; GENERIC-NEXT: .cfi_offset l1, -44344; GENERIC-NEXT: .cfi_offset l0, -84345; GENERIC-NEXT: subi16 sp, sp, 44346; GENERIC-NEXT: .cfi_def_cfa_offset 124347; GENERIC-NEXT: movi16 l0, 24348; GENERIC-NEXT: lsli16 l0, l0, 244349; GENERIC-NEXT: movi16 l1, 2174350; GENERIC-NEXT: lsli16 l1, l1, 164351; GENERIC-NEXT: or16 l1, l04352; GENERIC-NEXT: movi16 l0, 74353; GENERIC-NEXT: lsli16 l0, l0, 84354; GENERIC-NEXT: or16 l0, l14355; GENERIC-NEXT: movi16 l1, 2424356; GENERIC-NEXT: or16 l1, l04357; GENERIC-NEXT: cmphs16 a0, l14358; GENERIC-NEXT: mvcv16 a04359; GENERIC-NEXT: cmpnei16 a1, 04360; GENERIC-NEXT: mvcv16 a14361; GENERIC-NEXT: btsti16 a1, 04362; GENERIC-NEXT: bf16 .LBB108_54363; GENERIC-NEXT: # %bb.1: # %entry4364; GENERIC-NEXT: btsti16 a0, 04365; GENERIC-NEXT: bt16 .LBB108_64366; GENERIC-NEXT: .LBB108_2: # %entry4367; GENERIC-NEXT: btsti16 a0, 04368; GENERIC-NEXT: bf16 .LBB108_44369; GENERIC-NEXT: .LBB108_3:4370; GENERIC-NEXT: ld16.w a3, (sp, 16)4371; GENERIC-NEXT: .LBB108_4: # %entry4372; GENERIC-NEXT: mov16 a0, a24373; GENERIC-NEXT: mov16 a1, a34374; GENERIC-NEXT: addi16 sp, sp, 44375; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload4376; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload4377; GENERIC-NEXT: addi16 sp, sp, 84378; GENERIC-NEXT: rts164379; GENERIC-NEXT: .LBB108_5: # %entry4380; GENERIC-NEXT: movi16 a0, 04381; GENERIC-NEXT: btsti16 a0, 04382; GENERIC-NEXT: bf16 .LBB108_24383; GENERIC-NEXT: .LBB108_6:4384; GENERIC-NEXT: ld16.w a2, (sp, 12)4385; GENERIC-NEXT: btsti16 a0, 04386; GENERIC-NEXT: bt16 .LBB108_34387; GENERIC-NEXT: br32 .LBB108_44388entry:4389 %icmp = icmp ule i64 %x, 477777774390 %ret = select i1 %icmp, i64 %m, i64 %n4391 ret i64 %ret4392}4393 4394define i64 @selectC_ule_i64(i1 %c, i64 %n, i64 %m) {4395; CHECK-LABEL: selectC_ule_i64:4396; CHECK: # %bb.0: # %entry4397; CHECK-NEXT: ld32.w t0, (sp, 0)4398; CHECK-NEXT: btsti16 a0, 04399; CHECK-NEXT: movt32 a1, a34400; CHECK-NEXT: movt32 a2, t04401; CHECK-NEXT: mov16 a0, a14402; CHECK-NEXT: mov16 a1, a24403; CHECK-NEXT: rts164404;4405; GENERIC-LABEL: selectC_ule_i64:4406; GENERIC: # %bb.0: # %entry4407; GENERIC-NEXT: .cfi_def_cfa_offset 04408; GENERIC-NEXT: subi16 sp, sp, 44409; GENERIC-NEXT: .cfi_def_cfa_offset 44410; GENERIC-NEXT: btsti16 a0, 04411; GENERIC-NEXT: bt16 .LBB109_24412; GENERIC-NEXT: # %bb.1: # %entry4413; GENERIC-NEXT: mov16 a3, a14414; GENERIC-NEXT: .LBB109_2: # %entry4415; GENERIC-NEXT: btsti16 a0, 04416; GENERIC-NEXT: bf16 .LBB109_44417; GENERIC-NEXT: # %bb.3:4418; GENERIC-NEXT: ld16.w a2, (sp, 4)4419; GENERIC-NEXT: .LBB109_4: # %entry4420; GENERIC-NEXT: mov16 a0, a34421; GENERIC-NEXT: mov16 a1, a24422; GENERIC-NEXT: addi16 sp, sp, 44423; GENERIC-NEXT: rts164424entry:4425 %ret = select i1 %c, i64 %m, i64 %n4426 ret i64 %ret4427}4428 4429 4430define i16 @selectRR_ule_i16(i16 %x, i16 %y, i16 %n, i16 %m) {4431; CHECK-LABEL: selectRR_ule_i16:4432; CHECK: # %bb.0: # %entry4433; CHECK-NEXT: zexth16 a1, a14434; CHECK-NEXT: zexth16 a0, a04435; CHECK-NEXT: cmphs16 a0, a14436; CHECK-NEXT: movt32 a2, a34437; CHECK-NEXT: mov16 a0, a24438; CHECK-NEXT: rts164439;4440; GENERIC-LABEL: selectRR_ule_i16:4441; GENERIC: # %bb.0: # %entry4442; GENERIC-NEXT: subi16 sp, sp, 124443; GENERIC-NEXT: .cfi_def_cfa_offset 124444; GENERIC-NEXT: st16.w l2, (sp, 8) # 4-byte Folded Spill4445; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill4446; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill4447; GENERIC-NEXT: .cfi_offset l2, -44448; GENERIC-NEXT: .cfi_offset l1, -84449; GENERIC-NEXT: .cfi_offset l0, -124450; GENERIC-NEXT: subi16 sp, sp, 44451; GENERIC-NEXT: .cfi_def_cfa_offset 164452; GENERIC-NEXT: movi16 l0, 04453; GENERIC-NEXT: lsli16 l1, l0, 244454; GENERIC-NEXT: lsli16 l0, l0, 164455; GENERIC-NEXT: or16 l0, l14456; GENERIC-NEXT: movi16 l1, 2554457; GENERIC-NEXT: lsli16 l2, l1, 84458; GENERIC-NEXT: or16 l2, l04459; GENERIC-NEXT: or16 l2, l14460; GENERIC-NEXT: and16 a1, l24461; GENERIC-NEXT: and16 l2, a04462; GENERIC-NEXT: cmphs16 l2, a14463; GENERIC-NEXT: mvcv16 a04464; GENERIC-NEXT: movi16 a1, 14465; GENERIC-NEXT: subu16 a1, a04466; GENERIC-NEXT: btsti16 a1, 04467; GENERIC-NEXT: bt16 .LBB110_24468; GENERIC-NEXT: # %bb.1: # %entry4469; GENERIC-NEXT: mov16 a3, a24470; GENERIC-NEXT: .LBB110_2: # %entry4471; GENERIC-NEXT: mov16 a0, a34472; GENERIC-NEXT: addi16 sp, sp, 44473; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload4474; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload4475; GENERIC-NEXT: ld16.w l2, (sp, 8) # 4-byte Folded Reload4476; GENERIC-NEXT: addi16 sp, sp, 124477; GENERIC-NEXT: rts164478entry:4479 %icmp = icmp ule i16 %y, %x4480 %ret = select i1 %icmp, i16 %m, i16 %n4481 ret i16 %ret4482}4483 4484define i16 @selectRI_ule_i16(i16 %x, i16 %n, i16 %m) {4485; CHECK-LABEL: selectRI_ule_i16:4486; CHECK: # %bb.0: # %entry4487; CHECK-NEXT: zexth16 a0, a04488; CHECK-NEXT: cmphsi16 a0, 114489; CHECK-NEXT: movf32 a1, a24490; CHECK-NEXT: mov16 a0, a14491; CHECK-NEXT: rts164492;4493; GENERIC-LABEL: selectRI_ule_i16:4494; GENERIC: # %bb.0: # %entry4495; GENERIC-NEXT: subi16 sp, sp, 84496; GENERIC-NEXT: .cfi_def_cfa_offset 84497; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill4498; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill4499; GENERIC-NEXT: .cfi_offset l1, -44500; GENERIC-NEXT: .cfi_offset l0, -84501; GENERIC-NEXT: subi16 sp, sp, 44502; GENERIC-NEXT: .cfi_def_cfa_offset 124503; GENERIC-NEXT: movi16 a3, 04504; GENERIC-NEXT: lsli16 l0, a3, 244505; GENERIC-NEXT: lsli16 a3, a3, 164506; GENERIC-NEXT: or16 a3, l04507; GENERIC-NEXT: movi16 l0, 2554508; GENERIC-NEXT: lsli16 l1, l0, 84509; GENERIC-NEXT: or16 l1, a34510; GENERIC-NEXT: or16 l1, l04511; GENERIC-NEXT: and16 l1, a04512; GENERIC-NEXT: cmphsi16 l1, 114513; GENERIC-NEXT: mvcv16 a04514; GENERIC-NEXT: btsti16 a0, 04515; GENERIC-NEXT: bt16 .LBB111_24516; GENERIC-NEXT: # %bb.1: # %entry4517; GENERIC-NEXT: mov16 a2, a14518; GENERIC-NEXT: .LBB111_2: # %entry4519; GENERIC-NEXT: mov16 a0, a24520; GENERIC-NEXT: addi16 sp, sp, 44521; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload4522; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload4523; GENERIC-NEXT: addi16 sp, sp, 84524; GENERIC-NEXT: rts164525entry:4526 %icmp = icmp ule i16 %x, 104527 %ret = select i1 %icmp, i16 %m, i16 %n4528 ret i16 %ret4529}4530 4531define i16 @selectRX_ule_i16(i16 %x, i16 %n, i16 %m) {4532; CHECK-LABEL: selectRX_ule_i16:4533; CHECK: # %bb.0: # %entry4534; CHECK-NEXT: zexth16 a0, a04535; CHECK-NEXT: cmphsi32 a0, 20344536; CHECK-NEXT: movf32 a1, a24537; CHECK-NEXT: mov16 a0, a14538; CHECK-NEXT: rts164539;4540; GENERIC-LABEL: selectRX_ule_i16:4541; GENERIC: # %bb.0: # %entry4542; GENERIC-NEXT: subi16 sp, sp, 84543; GENERIC-NEXT: .cfi_def_cfa_offset 84544; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill4545; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill4546; GENERIC-NEXT: .cfi_offset l1, -44547; GENERIC-NEXT: .cfi_offset l0, -84548; GENERIC-NEXT: subi16 sp, sp, 44549; GENERIC-NEXT: .cfi_def_cfa_offset 124550; GENERIC-NEXT: movi16 a3, 04551; GENERIC-NEXT: lsli16 l0, a3, 244552; GENERIC-NEXT: lsli16 a3, a3, 164553; GENERIC-NEXT: or16 a3, l04554; GENERIC-NEXT: movi16 l0, 2554555; GENERIC-NEXT: lsli16 l1, l0, 84556; GENERIC-NEXT: or16 l1, a34557; GENERIC-NEXT: or16 l1, l04558; GENERIC-NEXT: and16 l1, a04559; GENERIC-NEXT: movi16 a0, 74560; GENERIC-NEXT: lsli16 a0, a0, 84561; GENERIC-NEXT: or16 a0, a34562; GENERIC-NEXT: movi16 a3, 2424563; GENERIC-NEXT: or16 a3, a04564; GENERIC-NEXT: cmphs16 l1, a34565; GENERIC-NEXT: mvcv16 a04566; GENERIC-NEXT: btsti16 a0, 04567; GENERIC-NEXT: bt16 .LBB112_24568; GENERIC-NEXT: # %bb.1: # %entry4569; GENERIC-NEXT: mov16 a2, a14570; GENERIC-NEXT: .LBB112_2: # %entry4571; GENERIC-NEXT: mov16 a0, a24572; GENERIC-NEXT: addi16 sp, sp, 44573; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload4574; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload4575; GENERIC-NEXT: addi16 sp, sp, 84576; GENERIC-NEXT: rts164577entry:4578 %icmp = icmp ule i16 %x, 477777774579 %ret = select i1 %icmp, i16 %m, i16 %n4580 ret i16 %ret4581}4582 4583define i16 @selectC_ule_i16(i1 %c, i16 %n, i16 %m) {4584; CHECK-LABEL: selectC_ule_i16:4585; CHECK: # %bb.0: # %entry4586; CHECK-NEXT: btsti16 a0, 04587; CHECK-NEXT: movt32 a1, a24588; CHECK-NEXT: mov16 a0, a14589; CHECK-NEXT: rts164590;4591; GENERIC-LABEL: selectC_ule_i16:4592; GENERIC: # %bb.0: # %entry4593; GENERIC-NEXT: .cfi_def_cfa_offset 04594; GENERIC-NEXT: subi16 sp, sp, 44595; GENERIC-NEXT: .cfi_def_cfa_offset 44596; GENERIC-NEXT: btsti16 a0, 04597; GENERIC-NEXT: bt16 .LBB113_24598; GENERIC-NEXT: # %bb.1: # %entry4599; GENERIC-NEXT: mov16 a2, a14600; GENERIC-NEXT: .LBB113_2: # %entry4601; GENERIC-NEXT: mov16 a0, a24602; GENERIC-NEXT: addi16 sp, sp, 44603; GENERIC-NEXT: rts164604entry:4605 %ret = select i1 %c, i16 %m, i16 %n4606 ret i16 %ret4607}4608 4609 4610define i8 @selectRR_ule_i8(i8 %x, i8 %y, i8 %n, i8 %m) {4611; CHECK-LABEL: selectRR_ule_i8:4612; CHECK: # %bb.0: # %entry4613; CHECK-NEXT: zextb16 a1, a14614; CHECK-NEXT: zextb16 a0, a04615; CHECK-NEXT: cmphs16 a0, a14616; CHECK-NEXT: movt32 a2, a34617; CHECK-NEXT: mov16 a0, a24618; CHECK-NEXT: rts164619;4620; GENERIC-LABEL: selectRR_ule_i8:4621; GENERIC: # %bb.0: # %entry4622; GENERIC-NEXT: subi16 sp, sp, 44623; GENERIC-NEXT: .cfi_def_cfa_offset 44624; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill4625; GENERIC-NEXT: .cfi_offset l0, -44626; GENERIC-NEXT: subi16 sp, sp, 44627; GENERIC-NEXT: .cfi_def_cfa_offset 84628; GENERIC-NEXT: movi16 l0, 2554629; GENERIC-NEXT: and16 a1, l04630; GENERIC-NEXT: and16 a0, l04631; GENERIC-NEXT: cmphs16 a0, a14632; GENERIC-NEXT: mvcv16 a04633; GENERIC-NEXT: movi16 a1, 14634; GENERIC-NEXT: subu16 a1, a04635; GENERIC-NEXT: btsti16 a1, 04636; GENERIC-NEXT: bt16 .LBB114_24637; GENERIC-NEXT: # %bb.1: # %entry4638; GENERIC-NEXT: mov16 a3, a24639; GENERIC-NEXT: .LBB114_2: # %entry4640; GENERIC-NEXT: mov16 a0, a34641; GENERIC-NEXT: addi16 sp, sp, 44642; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload4643; GENERIC-NEXT: addi16 sp, sp, 44644; GENERIC-NEXT: rts164645entry:4646 %icmp = icmp ule i8 %y, %x4647 %ret = select i1 %icmp, i8 %m, i8 %n4648 ret i8 %ret4649}4650 4651define i8 @selectRI_ule_i8(i8 %x, i8 %n, i8 %m) {4652; CHECK-LABEL: selectRI_ule_i8:4653; CHECK: # %bb.0: # %entry4654; CHECK-NEXT: zextb16 a0, a04655; CHECK-NEXT: cmphsi16 a0, 114656; CHECK-NEXT: movf32 a1, a24657; CHECK-NEXT: mov16 a0, a14658; CHECK-NEXT: rts164659;4660; GENERIC-LABEL: selectRI_ule_i8:4661; GENERIC: # %bb.0: # %entry4662; GENERIC-NEXT: .cfi_def_cfa_offset 04663; GENERIC-NEXT: subi16 sp, sp, 44664; GENERIC-NEXT: .cfi_def_cfa_offset 44665; GENERIC-NEXT: movi16 a3, 2554666; GENERIC-NEXT: and16 a3, a04667; GENERIC-NEXT: cmphsi16 a3, 114668; GENERIC-NEXT: mvcv16 a04669; GENERIC-NEXT: btsti16 a0, 04670; GENERIC-NEXT: bt16 .LBB115_24671; GENERIC-NEXT: # %bb.1: # %entry4672; GENERIC-NEXT: mov16 a2, a14673; GENERIC-NEXT: .LBB115_2: # %entry4674; GENERIC-NEXT: mov16 a0, a24675; GENERIC-NEXT: addi16 sp, sp, 44676; GENERIC-NEXT: rts164677entry:4678 %icmp = icmp ule i8 %x, 104679 %ret = select i1 %icmp, i8 %m, i8 %n4680 ret i8 %ret4681}4682 4683define i8 @selectRX_ule_i8(i8 %x, i8 %n, i8 %m) {4684; CHECK-LABEL: selectRX_ule_i8:4685; CHECK: # %bb.0: # %entry4686; CHECK-NEXT: zextb16 a0, a04687; CHECK-NEXT: cmphsi32 a0, 2424688; CHECK-NEXT: movf32 a1, a24689; CHECK-NEXT: mov16 a0, a14690; CHECK-NEXT: rts164691;4692; GENERIC-LABEL: selectRX_ule_i8:4693; GENERIC: # %bb.0: # %entry4694; GENERIC-NEXT: .cfi_def_cfa_offset 04695; GENERIC-NEXT: subi16 sp, sp, 44696; GENERIC-NEXT: .cfi_def_cfa_offset 44697; GENERIC-NEXT: movi16 a3, 2554698; GENERIC-NEXT: and16 a3, a04699; GENERIC-NEXT: movi16 a0, 2424700; GENERIC-NEXT: cmphs16 a3, a04701; GENERIC-NEXT: mvcv16 a04702; GENERIC-NEXT: btsti16 a0, 04703; GENERIC-NEXT: bt16 .LBB116_24704; GENERIC-NEXT: # %bb.1: # %entry4705; GENERIC-NEXT: mov16 a2, a14706; GENERIC-NEXT: .LBB116_2: # %entry4707; GENERIC-NEXT: mov16 a0, a24708; GENERIC-NEXT: addi16 sp, sp, 44709; GENERIC-NEXT: rts164710entry:4711 %icmp = icmp ule i8 %x, 477777774712 %ret = select i1 %icmp, i8 %m, i8 %n4713 ret i8 %ret4714}4715 4716define i8 @selectC_ule_i8(i1 %c, i8 %n, i8 %m) {4717; CHECK-LABEL: selectC_ule_i8:4718; CHECK: # %bb.0: # %entry4719; CHECK-NEXT: btsti16 a0, 04720; CHECK-NEXT: movt32 a1, a24721; CHECK-NEXT: mov16 a0, a14722; CHECK-NEXT: rts164723;4724; GENERIC-LABEL: selectC_ule_i8:4725; GENERIC: # %bb.0: # %entry4726; GENERIC-NEXT: .cfi_def_cfa_offset 04727; GENERIC-NEXT: subi16 sp, sp, 44728; GENERIC-NEXT: .cfi_def_cfa_offset 44729; GENERIC-NEXT: btsti16 a0, 04730; GENERIC-NEXT: bt16 .LBB117_24731; GENERIC-NEXT: # %bb.1: # %entry4732; GENERIC-NEXT: mov16 a2, a14733; GENERIC-NEXT: .LBB117_2: # %entry4734; GENERIC-NEXT: mov16 a0, a24735; GENERIC-NEXT: addi16 sp, sp, 44736; GENERIC-NEXT: rts164737entry:4738 %ret = select i1 %c, i8 %m, i8 %n4739 ret i8 %ret4740}4741 4742 4743define i1 @selectRR_ule_i1(i1 %x, i1 %y, i1 %n, i1 %m) {4744; CHECK-LABEL: selectRR_ule_i1:4745; CHECK: # %bb.0: # %entry4746; CHECK-NEXT: btsti16 a1, 04747; CHECK-NEXT: mov16 a1, a34748; CHECK-NEXT: movt32 a1, a24749; CHECK-NEXT: btsti16 a0, 04750; CHECK-NEXT: movt32 a1, a34751; CHECK-NEXT: mov16 a0, a14752; CHECK-NEXT: rts164753;4754; GENERIC-LABEL: selectRR_ule_i1:4755; GENERIC: # %bb.0: # %entry4756; GENERIC-NEXT: .cfi_def_cfa_offset 04757; GENERIC-NEXT: subi16 sp, sp, 44758; GENERIC-NEXT: .cfi_def_cfa_offset 44759; GENERIC-NEXT: btsti16 a1, 04760; GENERIC-NEXT: bt16 .LBB118_24761; GENERIC-NEXT: # %bb.1: # %entry4762; GENERIC-NEXT: mov16 a2, a34763; GENERIC-NEXT: .LBB118_2: # %entry4764; GENERIC-NEXT: btsti16 a0, 04765; GENERIC-NEXT: bt16 .LBB118_44766; GENERIC-NEXT: # %bb.3: # %entry4767; GENERIC-NEXT: mov16 a3, a24768; GENERIC-NEXT: .LBB118_4: # %entry4769; GENERIC-NEXT: mov16 a0, a34770; GENERIC-NEXT: addi16 sp, sp, 44771; GENERIC-NEXT: rts164772entry:4773 %icmp = icmp ule i1 %y, %x4774 %ret = select i1 %icmp, i1 %m, i1 %n4775 ret i1 %ret4776}4777 4778define i1 @selectRI_ule_i1(i1 %x, i1 %n, i1 %m) {4779; CHECK-LABEL: selectRI_ule_i1:4780; CHECK: # %bb.0: # %entry4781; CHECK-NEXT: btsti16 a0, 04782; CHECK-NEXT: movt32 a2, a14783; CHECK-NEXT: mov16 a0, a24784; CHECK-NEXT: rts164785;4786; GENERIC-LABEL: selectRI_ule_i1:4787; GENERIC: # %bb.0: # %entry4788; GENERIC-NEXT: .cfi_def_cfa_offset 04789; GENERIC-NEXT: subi16 sp, sp, 44790; GENERIC-NEXT: .cfi_def_cfa_offset 44791; GENERIC-NEXT: btsti16 a0, 04792; GENERIC-NEXT: bt16 .LBB119_24793; GENERIC-NEXT: # %bb.1: # %entry4794; GENERIC-NEXT: mov16 a1, a24795; GENERIC-NEXT: .LBB119_2: # %entry4796; GENERIC-NEXT: mov16 a0, a14797; GENERIC-NEXT: addi16 sp, sp, 44798; GENERIC-NEXT: rts164799entry:4800 %icmp = icmp ule i1 %x, 104801 %ret = select i1 %icmp, i1 %m, i1 %n4802 ret i1 %ret4803}4804 4805define i1 @selectRX_ule_i1(i1 %x, i1 %n, i1 %m) {4806; CHECK-LABEL: selectRX_ule_i1:4807; CHECK: # %bb.0: # %entry4808; CHECK-NEXT: mov16 a0, a24809; CHECK-NEXT: rts164810;4811; GENERIC-LABEL: selectRX_ule_i1:4812; GENERIC: # %bb.0: # %entry4813; GENERIC-NEXT: .cfi_def_cfa_offset 04814; GENERIC-NEXT: subi16 sp, sp, 44815; GENERIC-NEXT: .cfi_def_cfa_offset 44816; GENERIC-NEXT: mov16 a0, a24817; GENERIC-NEXT: addi16 sp, sp, 44818; GENERIC-NEXT: rts164819entry:4820 %icmp = icmp ule i1 %x, 477777774821 %ret = select i1 %icmp, i1 %m, i1 %n4822 ret i1 %ret4823}4824 4825define i1 @selectC_ule_i1(i1 %c, i1 %n, i1 %m) {4826; CHECK-LABEL: selectC_ule_i1:4827; CHECK: # %bb.0: # %entry4828; CHECK-NEXT: btsti16 a0, 04829; CHECK-NEXT: movt32 a1, a24830; CHECK-NEXT: mov16 a0, a14831; CHECK-NEXT: rts164832;4833; GENERIC-LABEL: selectC_ule_i1:4834; GENERIC: # %bb.0: # %entry4835; GENERIC-NEXT: .cfi_def_cfa_offset 04836; GENERIC-NEXT: subi16 sp, sp, 44837; GENERIC-NEXT: .cfi_def_cfa_offset 44838; GENERIC-NEXT: btsti16 a0, 04839; GENERIC-NEXT: bt16 .LBB121_24840; GENERIC-NEXT: # %bb.1: # %entry4841; GENERIC-NEXT: mov16 a2, a14842; GENERIC-NEXT: .LBB121_2: # %entry4843; GENERIC-NEXT: mov16 a0, a24844; GENERIC-NEXT: addi16 sp, sp, 44845; GENERIC-NEXT: rts164846entry:4847 %ret = select i1 %c, i1 %m, i1 %n4848 ret i1 %ret4849}4850 4851 4852define i32 @selectRR_sgt_i32(i32 %x, i32 %y, i32 %n, i32 %m) {4853; CHECK-LABEL: selectRR_sgt_i32:4854; CHECK: # %bb.0: # %entry4855; CHECK-NEXT: cmplt16 a0, a14856; CHECK-NEXT: movt32 a2, a34857; CHECK-NEXT: mov16 a0, a24858; CHECK-NEXT: rts164859;4860; GENERIC-LABEL: selectRR_sgt_i32:4861; GENERIC: # %bb.0: # %entry4862; GENERIC-NEXT: .cfi_def_cfa_offset 04863; GENERIC-NEXT: subi16 sp, sp, 44864; GENERIC-NEXT: .cfi_def_cfa_offset 44865; GENERIC-NEXT: cmplt16 a0, a14866; GENERIC-NEXT: mvcv16 a04867; GENERIC-NEXT: movi16 a1, 14868; GENERIC-NEXT: subu16 a1, a04869; GENERIC-NEXT: btsti16 a1, 04870; GENERIC-NEXT: bt16 .LBB122_24871; GENERIC-NEXT: # %bb.1: # %entry4872; GENERIC-NEXT: mov16 a3, a24873; GENERIC-NEXT: .LBB122_2: # %entry4874; GENERIC-NEXT: mov16 a0, a34875; GENERIC-NEXT: addi16 sp, sp, 44876; GENERIC-NEXT: rts164877entry:4878 %icmp = icmp sgt i32 %y, %x4879 %ret = select i1 %icmp, i32 %m, i32 %n4880 ret i32 %ret4881}4882 4883define i32 @selectRI_sgt_i32(i32 %x, i32 %n, i32 %m) {4884; CHECK-LABEL: selectRI_sgt_i32:4885; CHECK: # %bb.0: # %entry4886; CHECK-NEXT: movi16 a3, 104887; CHECK-NEXT: cmplt16 a3, a04888; CHECK-NEXT: movt32 a1, a24889; CHECK-NEXT: mov16 a0, a14890; CHECK-NEXT: rts164891;4892; GENERIC-LABEL: selectRI_sgt_i32:4893; GENERIC: # %bb.0: # %entry4894; GENERIC-NEXT: .cfi_def_cfa_offset 04895; GENERIC-NEXT: subi16 sp, sp, 44896; GENERIC-NEXT: .cfi_def_cfa_offset 44897; GENERIC-NEXT: movi16 a3, 104898; GENERIC-NEXT: cmplt16 a3, a04899; GENERIC-NEXT: mvcv16 a04900; GENERIC-NEXT: movi16 a3, 14901; GENERIC-NEXT: subu16 a3, a04902; GENERIC-NEXT: btsti16 a3, 04903; GENERIC-NEXT: bt16 .LBB123_24904; GENERIC-NEXT: # %bb.1: # %entry4905; GENERIC-NEXT: mov16 a2, a14906; GENERIC-NEXT: .LBB123_2: # %entry4907; GENERIC-NEXT: mov16 a0, a24908; GENERIC-NEXT: addi16 sp, sp, 44909; GENERIC-NEXT: rts164910entry:4911 %icmp = icmp sgt i32 %x, 104912 %ret = select i1 %icmp, i32 %m, i32 %n4913 ret i32 %ret4914}4915 4916define i32 @selectRX_sgt_i32(i32 %x, i32 %n, i32 %m) {4917; CHECK-LABEL: selectRX_sgt_i32:4918; CHECK: # %bb.0: # %entry4919; CHECK-NEXT: movih32 a3, 7294920; CHECK-NEXT: ori32 a3, a3, 20334921; CHECK-NEXT: cmplt16 a3, a04922; CHECK-NEXT: movt32 a1, a24923; CHECK-NEXT: mov16 a0, a14924; CHECK-NEXT: rts164925;4926; GENERIC-LABEL: selectRX_sgt_i32:4927; GENERIC: # %bb.0: # %entry4928; GENERIC-NEXT: subi16 sp, sp, 44929; GENERIC-NEXT: .cfi_def_cfa_offset 44930; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill4931; GENERIC-NEXT: .cfi_offset l0, -44932; GENERIC-NEXT: subi16 sp, sp, 44933; GENERIC-NEXT: .cfi_def_cfa_offset 84934; GENERIC-NEXT: movi16 a3, 24935; GENERIC-NEXT: lsli16 a3, a3, 244936; GENERIC-NEXT: movi16 l0, 2174937; GENERIC-NEXT: lsli16 l0, l0, 164938; GENERIC-NEXT: or16 l0, a34939; GENERIC-NEXT: movi16 a3, 74940; GENERIC-NEXT: lsli16 a3, a3, 84941; GENERIC-NEXT: or16 a3, l04942; GENERIC-NEXT: movi16 l0, 2414943; GENERIC-NEXT: or16 l0, a34944; GENERIC-NEXT: cmplt16 l0, a04945; GENERIC-NEXT: mvcv16 a04946; GENERIC-NEXT: movi16 a3, 14947; GENERIC-NEXT: subu16 a3, a04948; GENERIC-NEXT: btsti16 a3, 04949; GENERIC-NEXT: bt16 .LBB124_24950; GENERIC-NEXT: # %bb.1: # %entry4951; GENERIC-NEXT: mov16 a2, a14952; GENERIC-NEXT: .LBB124_2: # %entry4953; GENERIC-NEXT: mov16 a0, a24954; GENERIC-NEXT: addi16 sp, sp, 44955; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload4956; GENERIC-NEXT: addi16 sp, sp, 44957; GENERIC-NEXT: rts164958entry:4959 %icmp = icmp sgt i32 %x, 477777774960 %ret = select i1 %icmp, i32 %m, i32 %n4961 ret i32 %ret4962}4963 4964define i32 @selectC_sgt_i32(i1 %c, i32 %n, i32 %m) {4965; CHECK-LABEL: selectC_sgt_i32:4966; CHECK: # %bb.0: # %entry4967; CHECK-NEXT: btsti16 a0, 04968; CHECK-NEXT: movt32 a1, a24969; CHECK-NEXT: mov16 a0, a14970; CHECK-NEXT: rts164971;4972; GENERIC-LABEL: selectC_sgt_i32:4973; GENERIC: # %bb.0: # %entry4974; GENERIC-NEXT: .cfi_def_cfa_offset 04975; GENERIC-NEXT: subi16 sp, sp, 44976; GENERIC-NEXT: .cfi_def_cfa_offset 44977; GENERIC-NEXT: btsti16 a0, 04978; GENERIC-NEXT: bt16 .LBB125_24979; GENERIC-NEXT: # %bb.1: # %entry4980; GENERIC-NEXT: mov16 a2, a14981; GENERIC-NEXT: .LBB125_2: # %entry4982; GENERIC-NEXT: mov16 a0, a24983; GENERIC-NEXT: addi16 sp, sp, 44984; GENERIC-NEXT: rts164985entry:4986 %ret = select i1 %c, i32 %m, i32 %n4987 ret i32 %ret4988}4989 4990define i64 @selectRR_sgt_i64(i64 %x, i64 %y, i64 %n, i64 %m) {4991; CHECK-LABEL: selectRR_sgt_i64:4992; CHECK: # %bb.0: # %entry4993; CHECK-NEXT: .cfi_def_cfa_offset 04994; CHECK-NEXT: subi16 sp, sp, 124995; CHECK-NEXT: .cfi_def_cfa_offset 124996; CHECK-NEXT: cmplt16 a1, a34997; CHECK-NEXT: mvc32 t04998; CHECK-NEXT: st32.w t0, (sp, 4)4999; CHECK-NEXT: cmpne16 a3, a15000; CHECK-NEXT: mvc32 a15001; CHECK-NEXT: st16.w a1, (sp, 8)5002; CHECK-NEXT: cmphs16 a0, a25003; CHECK-NEXT: mvcv16 a05004; CHECK-NEXT: ld16.w a1, (sp, 4)5005; CHECK-NEXT: btsti16 a1, 05006; CHECK-NEXT: mvc32 a15007; CHECK-NEXT: ld16.w a2, (sp, 8)5008; CHECK-NEXT: btsti16 a2, 05009; CHECK-NEXT: movf32 a1, a05010; CHECK-NEXT: addi16 a2, sp, 125011; CHECK-NEXT: addi16 a0, sp, 205012; CHECK-NEXT: btsti16 a1, 05013; CHECK-NEXT: movt32 a2, a05014; CHECK-NEXT: ld16.w a0, (a2, 0)5015; CHECK-NEXT: ld16.w a1, (a2, 4)5016; CHECK-NEXT: addi16 sp, sp, 125017; CHECK-NEXT: rts165018;5019; GENERIC-LABEL: selectRR_sgt_i64:5020; GENERIC: # %bb.0: # %entry5021; GENERIC-NEXT: subi16 sp, sp, 45022; GENERIC-NEXT: .cfi_def_cfa_offset 45023; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill5024; GENERIC-NEXT: .cfi_offset l0, -45025; GENERIC-NEXT: subi16 sp, sp, 45026; GENERIC-NEXT: .cfi_def_cfa_offset 85027; GENERIC-NEXT: cmplt16 a1, a35028; GENERIC-NEXT: mvcv16 l05029; GENERIC-NEXT: cmphs16 a0, a25030; GENERIC-NEXT: mvcv16 a05031; GENERIC-NEXT: cmpne16 a3, a15032; GENERIC-NEXT: mvcv16 a15033; GENERIC-NEXT: btsti16 a1, 05034; GENERIC-NEXT: bt16 .LBB126_25035; GENERIC-NEXT: # %bb.1: # %entry5036; GENERIC-NEXT: movi16 a0, 15037; GENERIC-NEXT: subu16 a0, l05038; GENERIC-NEXT: .LBB126_2: # %entry5039; GENERIC-NEXT: btsti16 a0, 05040; GENERIC-NEXT: bt16 .LBB126_45041; GENERIC-NEXT: # %bb.3: # %entry5042; GENERIC-NEXT: movi16 a0, 85043; GENERIC-NEXT: br32 .LBB126_55044; GENERIC-NEXT: .LBB126_4:5045; GENERIC-NEXT: movi16 a0, 165046; GENERIC-NEXT: .LBB126_5: # %entry5047; GENERIC-NEXT: addu16 a0, sp5048; GENERIC-NEXT: mov16 a1, a05049; GENERIC-NEXT: ld16.w a0, (a0, 0)5050; GENERIC-NEXT: ld16.w a1, (a1, 4)5051; GENERIC-NEXT: addi16 sp, sp, 45052; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload5053; GENERIC-NEXT: addi16 sp, sp, 45054; GENERIC-NEXT: rts165055entry:5056 %icmp = icmp sgt i64 %y, %x5057 %ret = select i1 %icmp, i64 %m, i64 %n5058 ret i64 %ret5059}5060 5061define i64 @selectRI_sgt_i64(i64 %x, i64 %n, i64 %m) {5062; CHECK-LABEL: selectRI_sgt_i64:5063; CHECK: # %bb.0: # %entry5064; CHECK-NEXT: subi16 sp, sp, 45065; CHECK-NEXT: .cfi_def_cfa_offset 45066; CHECK-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill5067; CHECK-NEXT: .cfi_offset l0, -45068; CHECK-NEXT: subi16 sp, sp, 125069; CHECK-NEXT: .cfi_def_cfa_offset 165070; CHECK-NEXT: ld32.w t0, (sp, 20)5071; CHECK-NEXT: ld32.w t1, (sp, 16)5072; CHECK-NEXT: movi16 l0, 05073; CHECK-NEXT: cmplt16 l0, a15074; CHECK-NEXT: mvc32 l05075; CHECK-NEXT: st16.w l0, (sp, 8)5076; CHECK-NEXT: movi16 l0, 105077; CHECK-NEXT: cmphs16 l0, a05078; CHECK-NEXT: mvcv16 a05079; CHECK-NEXT: cmpnei16 a1, 05080; CHECK-NEXT: mvc32 a15081; CHECK-NEXT: st16.w a1, (sp, 4)5082; CHECK-NEXT: ld16.w a1, (sp, 8)5083; CHECK-NEXT: btsti16 a1, 05084; CHECK-NEXT: mvc32 a15085; CHECK-NEXT: ld16.w l0, (sp, 4)5086; CHECK-NEXT: btsti16 l0, 05087; CHECK-NEXT: movf32 a1, a05088; CHECK-NEXT: btsti16 a1, 05089; CHECK-NEXT: movt32 a2, t15090; CHECK-NEXT: movt32 a3, t05091; CHECK-NEXT: mov16 a0, a25092; CHECK-NEXT: mov16 a1, a35093; CHECK-NEXT: addi16 sp, sp, 125094; CHECK-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload5095; CHECK-NEXT: addi16 sp, sp, 45096; CHECK-NEXT: rts165097;5098; GENERIC-LABEL: selectRI_sgt_i64:5099; GENERIC: # %bb.0: # %entry5100; GENERIC-NEXT: subi16 sp, sp, 85101; GENERIC-NEXT: .cfi_def_cfa_offset 85102; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill5103; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill5104; GENERIC-NEXT: .cfi_offset l1, -45105; GENERIC-NEXT: .cfi_offset l0, -85106; GENERIC-NEXT: subi16 sp, sp, 45107; GENERIC-NEXT: .cfi_def_cfa_offset 125108; GENERIC-NEXT: movi16 l0, 05109; GENERIC-NEXT: cmplt16 l0, a15110; GENERIC-NEXT: mvcv16 l05111; GENERIC-NEXT: movi16 l1, 105112; GENERIC-NEXT: cmphs16 l1, a05113; GENERIC-NEXT: mvcv16 a05114; GENERIC-NEXT: cmpnei16 a1, 05115; GENERIC-NEXT: mvcv16 a15116; GENERIC-NEXT: btsti16 a1, 05117; GENERIC-NEXT: bf16 .LBB127_55118; GENERIC-NEXT: # %bb.1: # %entry5119; GENERIC-NEXT: btsti16 a0, 05120; GENERIC-NEXT: bt16 .LBB127_65121; GENERIC-NEXT: .LBB127_2: # %entry5122; GENERIC-NEXT: btsti16 a0, 05123; GENERIC-NEXT: bf16 .LBB127_45124; GENERIC-NEXT: .LBB127_3:5125; GENERIC-NEXT: ld16.w a3, (sp, 16)5126; GENERIC-NEXT: .LBB127_4: # %entry5127; GENERIC-NEXT: mov16 a0, a25128; GENERIC-NEXT: mov16 a1, a35129; GENERIC-NEXT: addi16 sp, sp, 45130; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload5131; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload5132; GENERIC-NEXT: addi16 sp, sp, 85133; GENERIC-NEXT: rts165134; GENERIC-NEXT: .LBB127_5: # %entry5135; GENERIC-NEXT: movi16 a0, 15136; GENERIC-NEXT: subu16 a0, l05137; GENERIC-NEXT: btsti16 a0, 05138; GENERIC-NEXT: bf16 .LBB127_25139; GENERIC-NEXT: .LBB127_6:5140; GENERIC-NEXT: ld16.w a2, (sp, 12)5141; GENERIC-NEXT: btsti16 a0, 05142; GENERIC-NEXT: bt16 .LBB127_35143; GENERIC-NEXT: br32 .LBB127_45144entry:5145 %icmp = icmp sgt i64 %x, 105146 %ret = select i1 %icmp, i64 %m, i64 %n5147 ret i64 %ret5148}5149 5150define i64 @selectRX_sgt_i64(i64 %x, i64 %n, i64 %m) {5151; CHECK-LABEL: selectRX_sgt_i64:5152; CHECK: # %bb.0: # %entry5153; CHECK-NEXT: subi16 sp, sp, 45154; CHECK-NEXT: .cfi_def_cfa_offset 45155; CHECK-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill5156; CHECK-NEXT: .cfi_offset l0, -45157; CHECK-NEXT: subi16 sp, sp, 125158; CHECK-NEXT: .cfi_def_cfa_offset 165159; CHECK-NEXT: ld32.w t0, (sp, 20)5160; CHECK-NEXT: ld32.w t1, (sp, 16)5161; CHECK-NEXT: movi16 l0, 05162; CHECK-NEXT: cmplt16 l0, a15163; CHECK-NEXT: mvc32 l05164; CHECK-NEXT: st16.w l0, (sp, 8)5165; CHECK-NEXT: movih32 l0, 7295166; CHECK-NEXT: ori32 l0, l0, 20335167; CHECK-NEXT: cmphs16 l0, a05168; CHECK-NEXT: mvcv16 a05169; CHECK-NEXT: cmpnei16 a1, 05170; CHECK-NEXT: mvc32 a15171; CHECK-NEXT: st16.w a1, (sp, 4)5172; CHECK-NEXT: ld16.w a1, (sp, 8)5173; CHECK-NEXT: btsti16 a1, 05174; CHECK-NEXT: mvc32 a15175; CHECK-NEXT: ld16.w l0, (sp, 4)5176; CHECK-NEXT: btsti16 l0, 05177; CHECK-NEXT: movf32 a1, a05178; CHECK-NEXT: btsti16 a1, 05179; CHECK-NEXT: movt32 a2, t15180; CHECK-NEXT: movt32 a3, t05181; CHECK-NEXT: mov16 a0, a25182; CHECK-NEXT: mov16 a1, a35183; CHECK-NEXT: addi16 sp, sp, 125184; CHECK-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload5185; CHECK-NEXT: addi16 sp, sp, 45186; CHECK-NEXT: rts165187;5188; GENERIC-LABEL: selectRX_sgt_i64:5189; GENERIC: # %bb.0: # %entry5190; GENERIC-NEXT: subi16 sp, sp, 125191; GENERIC-NEXT: .cfi_def_cfa_offset 125192; GENERIC-NEXT: st16.w l2, (sp, 8) # 4-byte Folded Spill5193; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill5194; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill5195; GENERIC-NEXT: .cfi_offset l2, -45196; GENERIC-NEXT: .cfi_offset l1, -85197; GENERIC-NEXT: .cfi_offset l0, -125198; GENERIC-NEXT: subi16 sp, sp, 45199; GENERIC-NEXT: .cfi_def_cfa_offset 165200; GENERIC-NEXT: movi16 l0, 05201; GENERIC-NEXT: cmplt16 l0, a15202; GENERIC-NEXT: mvcv16 l05203; GENERIC-NEXT: movi16 l1, 25204; GENERIC-NEXT: lsli16 l1, l1, 245205; GENERIC-NEXT: movi16 l2, 2175206; GENERIC-NEXT: lsli16 l2, l2, 165207; GENERIC-NEXT: or16 l2, l15208; GENERIC-NEXT: movi16 l1, 75209; GENERIC-NEXT: lsli16 l1, l1, 85210; GENERIC-NEXT: or16 l1, l25211; GENERIC-NEXT: movi16 l2, 2415212; GENERIC-NEXT: or16 l2, l15213; GENERIC-NEXT: cmphs16 l2, a05214; GENERIC-NEXT: mvcv16 a05215; GENERIC-NEXT: cmpnei16 a1, 05216; GENERIC-NEXT: mvcv16 a15217; GENERIC-NEXT: btsti16 a1, 05218; GENERIC-NEXT: bf16 .LBB128_55219; GENERIC-NEXT: # %bb.1: # %entry5220; GENERIC-NEXT: btsti16 a0, 05221; GENERIC-NEXT: bt16 .LBB128_65222; GENERIC-NEXT: .LBB128_2: # %entry5223; GENERIC-NEXT: btsti16 a0, 05224; GENERIC-NEXT: bf16 .LBB128_45225; GENERIC-NEXT: .LBB128_3:5226; GENERIC-NEXT: ld16.w a3, (sp, 20)5227; GENERIC-NEXT: .LBB128_4: # %entry5228; GENERIC-NEXT: mov16 a0, a25229; GENERIC-NEXT: mov16 a1, a35230; GENERIC-NEXT: addi16 sp, sp, 45231; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload5232; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload5233; GENERIC-NEXT: ld16.w l2, (sp, 8) # 4-byte Folded Reload5234; GENERIC-NEXT: addi16 sp, sp, 125235; GENERIC-NEXT: rts165236; GENERIC-NEXT: .LBB128_5: # %entry5237; GENERIC-NEXT: movi16 a0, 15238; GENERIC-NEXT: subu16 a0, l05239; GENERIC-NEXT: btsti16 a0, 05240; GENERIC-NEXT: bf16 .LBB128_25241; GENERIC-NEXT: .LBB128_6:5242; GENERIC-NEXT: ld16.w a2, (sp, 16)5243; GENERIC-NEXT: btsti16 a0, 05244; GENERIC-NEXT: bt16 .LBB128_35245; GENERIC-NEXT: br32 .LBB128_45246entry:5247 %icmp = icmp sgt i64 %x, 477777775248 %ret = select i1 %icmp, i64 %m, i64 %n5249 ret i64 %ret5250}5251 5252define i64 @selectC_sgt_i64(i1 %c, i64 %n, i64 %m) {5253; CHECK-LABEL: selectC_sgt_i64:5254; CHECK: # %bb.0: # %entry5255; CHECK-NEXT: ld32.w t0, (sp, 0)5256; CHECK-NEXT: btsti16 a0, 05257; CHECK-NEXT: movt32 a1, a35258; CHECK-NEXT: movt32 a2, t05259; CHECK-NEXT: mov16 a0, a15260; CHECK-NEXT: mov16 a1, a25261; CHECK-NEXT: rts165262;5263; GENERIC-LABEL: selectC_sgt_i64:5264; GENERIC: # %bb.0: # %entry5265; GENERIC-NEXT: .cfi_def_cfa_offset 05266; GENERIC-NEXT: subi16 sp, sp, 45267; GENERIC-NEXT: .cfi_def_cfa_offset 45268; GENERIC-NEXT: btsti16 a0, 05269; GENERIC-NEXT: bt16 .LBB129_25270; GENERIC-NEXT: # %bb.1: # %entry5271; GENERIC-NEXT: mov16 a3, a15272; GENERIC-NEXT: .LBB129_2: # %entry5273; GENERIC-NEXT: btsti16 a0, 05274; GENERIC-NEXT: bf16 .LBB129_45275; GENERIC-NEXT: # %bb.3:5276; GENERIC-NEXT: ld16.w a2, (sp, 4)5277; GENERIC-NEXT: .LBB129_4: # %entry5278; GENERIC-NEXT: mov16 a0, a35279; GENERIC-NEXT: mov16 a1, a25280; GENERIC-NEXT: addi16 sp, sp, 45281; GENERIC-NEXT: rts165282entry:5283 %ret = select i1 %c, i64 %m, i64 %n5284 ret i64 %ret5285}5286 5287 5288define i16 @selectRR_sgt_i16(i16 %x, i16 %y, i16 %n, i16 %m) {5289; CHECK-LABEL: selectRR_sgt_i16:5290; CHECK: # %bb.0: # %entry5291; CHECK-NEXT: sexth16 a1, a15292; CHECK-NEXT: sexth16 a0, a05293; CHECK-NEXT: cmplt16 a0, a15294; CHECK-NEXT: movt32 a2, a35295; CHECK-NEXT: mov16 a0, a25296; CHECK-NEXT: rts165297;5298; GENERIC-LABEL: selectRR_sgt_i16:5299; GENERIC: # %bb.0: # %entry5300; GENERIC-NEXT: .cfi_def_cfa_offset 05301; GENERIC-NEXT: subi16 sp, sp, 45302; GENERIC-NEXT: .cfi_def_cfa_offset 45303; GENERIC-NEXT: sexth16 a1, a15304; GENERIC-NEXT: sexth16 a0, a05305; GENERIC-NEXT: cmplt16 a0, a15306; GENERIC-NEXT: mvcv16 a05307; GENERIC-NEXT: movi16 a1, 15308; GENERIC-NEXT: subu16 a1, a05309; GENERIC-NEXT: btsti16 a1, 05310; GENERIC-NEXT: bt16 .LBB130_25311; GENERIC-NEXT: # %bb.1: # %entry5312; GENERIC-NEXT: mov16 a3, a25313; GENERIC-NEXT: .LBB130_2: # %entry5314; GENERIC-NEXT: mov16 a0, a35315; GENERIC-NEXT: addi16 sp, sp, 45316; GENERIC-NEXT: rts165317entry:5318 %icmp = icmp sgt i16 %y, %x5319 %ret = select i1 %icmp, i16 %m, i16 %n5320 ret i16 %ret5321}5322 5323define i16 @selectRI_sgt_i16(i16 %x, i16 %n, i16 %m) {5324; CHECK-LABEL: selectRI_sgt_i16:5325; CHECK: # %bb.0: # %entry5326; CHECK-NEXT: sexth16 a0, a05327; CHECK-NEXT: movi16 a3, 105328; CHECK-NEXT: cmplt16 a3, a05329; CHECK-NEXT: movt32 a1, a25330; CHECK-NEXT: mov16 a0, a15331; CHECK-NEXT: rts165332;5333; GENERIC-LABEL: selectRI_sgt_i16:5334; GENERIC: # %bb.0: # %entry5335; GENERIC-NEXT: .cfi_def_cfa_offset 05336; GENERIC-NEXT: subi16 sp, sp, 45337; GENERIC-NEXT: .cfi_def_cfa_offset 45338; GENERIC-NEXT: sexth16 a0, a05339; GENERIC-NEXT: movi16 a3, 105340; GENERIC-NEXT: cmplt16 a3, a05341; GENERIC-NEXT: mvcv16 a05342; GENERIC-NEXT: movi16 a3, 15343; GENERIC-NEXT: subu16 a3, a05344; GENERIC-NEXT: btsti16 a3, 05345; GENERIC-NEXT: bt16 .LBB131_25346; GENERIC-NEXT: # %bb.1: # %entry5347; GENERIC-NEXT: mov16 a2, a15348; GENERIC-NEXT: .LBB131_2: # %entry5349; GENERIC-NEXT: mov16 a0, a25350; GENERIC-NEXT: addi16 sp, sp, 45351; GENERIC-NEXT: rts165352entry:5353 %icmp = icmp sgt i16 %x, 105354 %ret = select i1 %icmp, i16 %m, i16 %n5355 ret i16 %ret5356}5357 5358define i16 @selectRX_sgt_i16(i16 %x, i16 %n, i16 %m) {5359; CHECK-LABEL: selectRX_sgt_i16:5360; CHECK: # %bb.0: # %entry5361; CHECK-NEXT: sexth16 a0, a05362; CHECK-NEXT: movi32 a3, 20335363; CHECK-NEXT: cmplt16 a3, a05364; CHECK-NEXT: movt32 a1, a25365; CHECK-NEXT: mov16 a0, a15366; CHECK-NEXT: rts165367;5368; GENERIC-LABEL: selectRX_sgt_i16:5369; GENERIC: # %bb.0: # %entry5370; GENERIC-NEXT: subi16 sp, sp, 45371; GENERIC-NEXT: .cfi_def_cfa_offset 45372; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill5373; GENERIC-NEXT: .cfi_offset l0, -45374; GENERIC-NEXT: subi16 sp, sp, 45375; GENERIC-NEXT: .cfi_def_cfa_offset 85376; GENERIC-NEXT: sexth16 a0, a05377; GENERIC-NEXT: movi16 a3, 05378; GENERIC-NEXT: lsli16 l0, a3, 245379; GENERIC-NEXT: lsli16 a3, a3, 165380; GENERIC-NEXT: or16 a3, l05381; GENERIC-NEXT: movi16 l0, 75382; GENERIC-NEXT: lsli16 l0, l0, 85383; GENERIC-NEXT: or16 l0, a35384; GENERIC-NEXT: movi16 a3, 2415385; GENERIC-NEXT: or16 a3, l05386; GENERIC-NEXT: cmplt16 a3, a05387; GENERIC-NEXT: mvcv16 a05388; GENERIC-NEXT: movi16 a3, 15389; GENERIC-NEXT: subu16 a3, a05390; GENERIC-NEXT: btsti16 a3, 05391; GENERIC-NEXT: bt16 .LBB132_25392; GENERIC-NEXT: # %bb.1: # %entry5393; GENERIC-NEXT: mov16 a2, a15394; GENERIC-NEXT: .LBB132_2: # %entry5395; GENERIC-NEXT: mov16 a0, a25396; GENERIC-NEXT: addi16 sp, sp, 45397; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload5398; GENERIC-NEXT: addi16 sp, sp, 45399; GENERIC-NEXT: rts165400entry:5401 %icmp = icmp sgt i16 %x, 477777775402 %ret = select i1 %icmp, i16 %m, i16 %n5403 ret i16 %ret5404}5405 5406define i16 @selectC_sgt_i16(i1 %c, i16 %n, i16 %m) {5407; CHECK-LABEL: selectC_sgt_i16:5408; CHECK: # %bb.0: # %entry5409; CHECK-NEXT: btsti16 a0, 05410; CHECK-NEXT: movt32 a1, a25411; CHECK-NEXT: mov16 a0, a15412; CHECK-NEXT: rts165413;5414; GENERIC-LABEL: selectC_sgt_i16:5415; GENERIC: # %bb.0: # %entry5416; GENERIC-NEXT: .cfi_def_cfa_offset 05417; GENERIC-NEXT: subi16 sp, sp, 45418; GENERIC-NEXT: .cfi_def_cfa_offset 45419; GENERIC-NEXT: btsti16 a0, 05420; GENERIC-NEXT: bt16 .LBB133_25421; GENERIC-NEXT: # %bb.1: # %entry5422; GENERIC-NEXT: mov16 a2, a15423; GENERIC-NEXT: .LBB133_2: # %entry5424; GENERIC-NEXT: mov16 a0, a25425; GENERIC-NEXT: addi16 sp, sp, 45426; GENERIC-NEXT: rts165427entry:5428 %ret = select i1 %c, i16 %m, i16 %n5429 ret i16 %ret5430}5431 5432 5433define i8 @selectRR_sgt_i8(i8 %x, i8 %y, i8 %n, i8 %m) {5434; CHECK-LABEL: selectRR_sgt_i8:5435; CHECK: # %bb.0: # %entry5436; CHECK-NEXT: sextb16 a1, a15437; CHECK-NEXT: sextb16 a0, a05438; CHECK-NEXT: cmplt16 a0, a15439; CHECK-NEXT: movt32 a2, a35440; CHECK-NEXT: mov16 a0, a25441; CHECK-NEXT: rts165442;5443; GENERIC-LABEL: selectRR_sgt_i8:5444; GENERIC: # %bb.0: # %entry5445; GENERIC-NEXT: .cfi_def_cfa_offset 05446; GENERIC-NEXT: subi16 sp, sp, 45447; GENERIC-NEXT: .cfi_def_cfa_offset 45448; GENERIC-NEXT: sextb16 a1, a15449; GENERIC-NEXT: sextb16 a0, a05450; GENERIC-NEXT: cmplt16 a0, a15451; GENERIC-NEXT: mvcv16 a05452; GENERIC-NEXT: movi16 a1, 15453; GENERIC-NEXT: subu16 a1, a05454; GENERIC-NEXT: btsti16 a1, 05455; GENERIC-NEXT: bt16 .LBB134_25456; GENERIC-NEXT: # %bb.1: # %entry5457; GENERIC-NEXT: mov16 a3, a25458; GENERIC-NEXT: .LBB134_2: # %entry5459; GENERIC-NEXT: mov16 a0, a35460; GENERIC-NEXT: addi16 sp, sp, 45461; GENERIC-NEXT: rts165462entry:5463 %icmp = icmp sgt i8 %y, %x5464 %ret = select i1 %icmp, i8 %m, i8 %n5465 ret i8 %ret5466}5467 5468define i8 @selectRI_sgt_i8(i8 %x, i8 %n, i8 %m) {5469; CHECK-LABEL: selectRI_sgt_i8:5470; CHECK: # %bb.0: # %entry5471; CHECK-NEXT: sextb16 a0, a05472; CHECK-NEXT: movi16 a3, 105473; CHECK-NEXT: cmplt16 a3, a05474; CHECK-NEXT: movt32 a1, a25475; CHECK-NEXT: mov16 a0, a15476; CHECK-NEXT: rts165477;5478; GENERIC-LABEL: selectRI_sgt_i8:5479; GENERIC: # %bb.0: # %entry5480; GENERIC-NEXT: .cfi_def_cfa_offset 05481; GENERIC-NEXT: subi16 sp, sp, 45482; GENERIC-NEXT: .cfi_def_cfa_offset 45483; GENERIC-NEXT: sextb16 a0, a05484; GENERIC-NEXT: movi16 a3, 105485; GENERIC-NEXT: cmplt16 a3, a05486; GENERIC-NEXT: mvcv16 a05487; GENERIC-NEXT: movi16 a3, 15488; GENERIC-NEXT: subu16 a3, a05489; GENERIC-NEXT: btsti16 a3, 05490; GENERIC-NEXT: bt16 .LBB135_25491; GENERIC-NEXT: # %bb.1: # %entry5492; GENERIC-NEXT: mov16 a2, a15493; GENERIC-NEXT: .LBB135_2: # %entry5494; GENERIC-NEXT: mov16 a0, a25495; GENERIC-NEXT: addi16 sp, sp, 45496; GENERIC-NEXT: rts165497entry:5498 %icmp = icmp sgt i8 %x, 105499 %ret = select i1 %icmp, i8 %m, i8 %n5500 ret i8 %ret5501}5502 5503define i8 @selectRX_sgt_i8(i8 %x, i8 %n, i8 %m) {5504; CHECK-LABEL: selectRX_sgt_i8:5505; CHECK: # %bb.0: # %entry5506; CHECK-NEXT: sextb16 a0, a05507; CHECK-NEXT: movih32 a3, 655355508; CHECK-NEXT: ori32 a3, a3, 655215509; CHECK-NEXT: cmplt16 a3, a05510; CHECK-NEXT: movt32 a1, a25511; CHECK-NEXT: mov16 a0, a15512; CHECK-NEXT: rts165513;5514; GENERIC-LABEL: selectRX_sgt_i8:5515; GENERIC: # %bb.0: # %entry5516; GENERIC-NEXT: subi16 sp, sp, 85517; GENERIC-NEXT: .cfi_def_cfa_offset 85518; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill5519; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill5520; GENERIC-NEXT: .cfi_offset l1, -45521; GENERIC-NEXT: .cfi_offset l0, -85522; GENERIC-NEXT: subi16 sp, sp, 45523; GENERIC-NEXT: .cfi_def_cfa_offset 125524; GENERIC-NEXT: sextb16 a0, a05525; GENERIC-NEXT: movi16 a3, 2555526; GENERIC-NEXT: lsli16 l0, a3, 245527; GENERIC-NEXT: lsli16 l1, a3, 165528; GENERIC-NEXT: or16 l1, l05529; GENERIC-NEXT: lsli16 a3, a3, 85530; GENERIC-NEXT: or16 a3, l15531; GENERIC-NEXT: movi16 l0, 2415532; GENERIC-NEXT: or16 l0, a35533; GENERIC-NEXT: cmplt16 l0, a05534; GENERIC-NEXT: mvcv16 a05535; GENERIC-NEXT: movi16 a3, 15536; GENERIC-NEXT: subu16 a3, a05537; GENERIC-NEXT: btsti16 a3, 05538; GENERIC-NEXT: bt16 .LBB136_25539; GENERIC-NEXT: # %bb.1: # %entry5540; GENERIC-NEXT: mov16 a2, a15541; GENERIC-NEXT: .LBB136_2: # %entry5542; GENERIC-NEXT: mov16 a0, a25543; GENERIC-NEXT: addi16 sp, sp, 45544; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload5545; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload5546; GENERIC-NEXT: addi16 sp, sp, 85547; GENERIC-NEXT: rts165548entry:5549 %icmp = icmp sgt i8 %x, 477777775550 %ret = select i1 %icmp, i8 %m, i8 %n5551 ret i8 %ret5552}5553 5554define i8 @selectC_sgt_i8(i1 %c, i8 %n, i8 %m) {5555; CHECK-LABEL: selectC_sgt_i8:5556; CHECK: # %bb.0: # %entry5557; CHECK-NEXT: btsti16 a0, 05558; CHECK-NEXT: movt32 a1, a25559; CHECK-NEXT: mov16 a0, a15560; CHECK-NEXT: rts165561;5562; GENERIC-LABEL: selectC_sgt_i8:5563; GENERIC: # %bb.0: # %entry5564; GENERIC-NEXT: .cfi_def_cfa_offset 05565; GENERIC-NEXT: subi16 sp, sp, 45566; GENERIC-NEXT: .cfi_def_cfa_offset 45567; GENERIC-NEXT: btsti16 a0, 05568; GENERIC-NEXT: bt16 .LBB137_25569; GENERIC-NEXT: # %bb.1: # %entry5570; GENERIC-NEXT: mov16 a2, a15571; GENERIC-NEXT: .LBB137_2: # %entry5572; GENERIC-NEXT: mov16 a0, a25573; GENERIC-NEXT: addi16 sp, sp, 45574; GENERIC-NEXT: rts165575entry:5576 %ret = select i1 %c, i8 %m, i8 %n5577 ret i8 %ret5578}5579 5580 5581define i1 @selectRR_sgt_i1(i1 %x, i1 %y, i1 %n, i1 %m) {5582; CHECK-LABEL: selectRR_sgt_i1:5583; CHECK: # %bb.0: # %entry5584; CHECK-NEXT: btsti16 a1, 05585; CHECK-NEXT: movt32 a3, a25586; CHECK-NEXT: btsti16 a0, 05587; CHECK-NEXT: movt32 a2, a35588; CHECK-NEXT: mov16 a0, a25589; CHECK-NEXT: rts165590;5591; GENERIC-LABEL: selectRR_sgt_i1:5592; GENERIC: # %bb.0: # %entry5593; GENERIC-NEXT: subi16 sp, sp, 45594; GENERIC-NEXT: .cfi_def_cfa_offset 45595; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill5596; GENERIC-NEXT: .cfi_offset l0, -45597; GENERIC-NEXT: subi16 sp, sp, 45598; GENERIC-NEXT: .cfi_def_cfa_offset 85599; GENERIC-NEXT: mov16 l0, a05600; GENERIC-NEXT: btsti16 a1, 05601; GENERIC-NEXT: mov16 a0, a25602; GENERIC-NEXT: bt16 .LBB138_25603; GENERIC-NEXT: # %bb.1: # %entry5604; GENERIC-NEXT: mov16 a0, a35605; GENERIC-NEXT: .LBB138_2: # %entry5606; GENERIC-NEXT: btsti16 l0, 05607; GENERIC-NEXT: bt16 .LBB138_45608; GENERIC-NEXT: # %bb.3: # %entry5609; GENERIC-NEXT: mov16 a0, a25610; GENERIC-NEXT: .LBB138_4: # %entry5611; GENERIC-NEXT: addi16 sp, sp, 45612; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload5613; GENERIC-NEXT: addi16 sp, sp, 45614; GENERIC-NEXT: rts165615entry:5616 %icmp = icmp sgt i1 %y, %x5617 %ret = select i1 %icmp, i1 %m, i1 %n5618 ret i1 %ret5619}5620 5621define i1 @selectRI_sgt_i1(i1 %x, i1 %n, i1 %m) {5622; CHECK-LABEL: selectRI_sgt_i1:5623; CHECK: # %bb.0: # %entry5624; CHECK-NEXT: mov16 a0, a15625; CHECK-NEXT: rts165626;5627; GENERIC-LABEL: selectRI_sgt_i1:5628; GENERIC: # %bb.0: # %entry5629; GENERIC-NEXT: .cfi_def_cfa_offset 05630; GENERIC-NEXT: subi16 sp, sp, 45631; GENERIC-NEXT: .cfi_def_cfa_offset 45632; GENERIC-NEXT: mov16 a0, a15633; GENERIC-NEXT: addi16 sp, sp, 45634; GENERIC-NEXT: rts165635entry:5636 %icmp = icmp sgt i1 %x, 105637 %ret = select i1 %icmp, i1 %m, i1 %n5638 ret i1 %ret5639}5640 5641define i1 @selectRX_sgt_i1(i1 %x, i1 %n, i1 %m) {5642; CHECK-LABEL: selectRX_sgt_i1:5643; CHECK: # %bb.0: # %entry5644; CHECK-NEXT: btsti16 a0, 05645; CHECK-NEXT: movt32 a2, a15646; CHECK-NEXT: mov16 a0, a25647; CHECK-NEXT: rts165648;5649; GENERIC-LABEL: selectRX_sgt_i1:5650; GENERIC: # %bb.0: # %entry5651; GENERIC-NEXT: .cfi_def_cfa_offset 05652; GENERIC-NEXT: subi16 sp, sp, 45653; GENERIC-NEXT: .cfi_def_cfa_offset 45654; GENERIC-NEXT: btsti16 a0, 05655; GENERIC-NEXT: bt16 .LBB140_25656; GENERIC-NEXT: # %bb.1: # %entry5657; GENERIC-NEXT: mov16 a1, a25658; GENERIC-NEXT: .LBB140_2: # %entry5659; GENERIC-NEXT: mov16 a0, a15660; GENERIC-NEXT: addi16 sp, sp, 45661; GENERIC-NEXT: rts165662entry:5663 %icmp = icmp sgt i1 %x, 477777775664 %ret = select i1 %icmp, i1 %m, i1 %n5665 ret i1 %ret5666}5667 5668define i1 @selectC_sgt_i1(i1 %c, i1 %n, i1 %m) {5669; CHECK-LABEL: selectC_sgt_i1:5670; CHECK: # %bb.0: # %entry5671; CHECK-NEXT: btsti16 a0, 05672; CHECK-NEXT: movt32 a1, a25673; CHECK-NEXT: mov16 a0, a15674; CHECK-NEXT: rts165675;5676; GENERIC-LABEL: selectC_sgt_i1:5677; GENERIC: # %bb.0: # %entry5678; GENERIC-NEXT: .cfi_def_cfa_offset 05679; GENERIC-NEXT: subi16 sp, sp, 45680; GENERIC-NEXT: .cfi_def_cfa_offset 45681; GENERIC-NEXT: btsti16 a0, 05682; GENERIC-NEXT: bt16 .LBB141_25683; GENERIC-NEXT: # %bb.1: # %entry5684; GENERIC-NEXT: mov16 a2, a15685; GENERIC-NEXT: .LBB141_2: # %entry5686; GENERIC-NEXT: mov16 a0, a25687; GENERIC-NEXT: addi16 sp, sp, 45688; GENERIC-NEXT: rts165689entry:5690 %ret = select i1 %c, i1 %m, i1 %n5691 ret i1 %ret5692}5693 5694 5695define i32 @selectRR_sge_i32(i32 %x, i32 %y, i32 %n, i32 %m) {5696; CHECK-LABEL: selectRR_sge_i32:5697; CHECK: # %bb.0: # %entry5698; CHECK-NEXT: cmplt16 a1, a05699; CHECK-NEXT: movf32 a2, a35700; CHECK-NEXT: mov16 a0, a25701; CHECK-NEXT: rts165702;5703; GENERIC-LABEL: selectRR_sge_i32:5704; GENERIC: # %bb.0: # %entry5705; GENERIC-NEXT: .cfi_def_cfa_offset 05706; GENERIC-NEXT: subi16 sp, sp, 45707; GENERIC-NEXT: .cfi_def_cfa_offset 45708; GENERIC-NEXT: cmplt16 a1, a05709; GENERIC-NEXT: mvcv16 a05710; GENERIC-NEXT: btsti16 a0, 05711; GENERIC-NEXT: bt16 .LBB142_25712; GENERIC-NEXT: # %bb.1: # %entry5713; GENERIC-NEXT: mov16 a3, a25714; GENERIC-NEXT: .LBB142_2: # %entry5715; GENERIC-NEXT: mov16 a0, a35716; GENERIC-NEXT: addi16 sp, sp, 45717; GENERIC-NEXT: rts165718entry:5719 %icmp = icmp sge i32 %y, %x5720 %ret = select i1 %icmp, i32 %m, i32 %n5721 ret i32 %ret5722}5723 5724define i32 @selectRI_sge_i32(i32 %x, i32 %n, i32 %m) {5725; CHECK-LABEL: selectRI_sge_i32:5726; CHECK: # %bb.0: # %entry5727; CHECK-NEXT: movi16 a3, 95728; CHECK-NEXT: cmplt16 a3, a05729; CHECK-NEXT: movt32 a1, a25730; CHECK-NEXT: mov16 a0, a15731; CHECK-NEXT: rts165732;5733; GENERIC-LABEL: selectRI_sge_i32:5734; GENERIC: # %bb.0: # %entry5735; GENERIC-NEXT: .cfi_def_cfa_offset 05736; GENERIC-NEXT: subi16 sp, sp, 45737; GENERIC-NEXT: .cfi_def_cfa_offset 45738; GENERIC-NEXT: movi16 a3, 95739; GENERIC-NEXT: cmplt16 a3, a05740; GENERIC-NEXT: mvcv16 a05741; GENERIC-NEXT: movi16 a3, 15742; GENERIC-NEXT: subu16 a3, a05743; GENERIC-NEXT: btsti16 a3, 05744; GENERIC-NEXT: bt16 .LBB143_25745; GENERIC-NEXT: # %bb.1: # %entry5746; GENERIC-NEXT: mov16 a2, a15747; GENERIC-NEXT: .LBB143_2: # %entry5748; GENERIC-NEXT: mov16 a0, a25749; GENERIC-NEXT: addi16 sp, sp, 45750; GENERIC-NEXT: rts165751entry:5752 %icmp = icmp sge i32 %x, 105753 %ret = select i1 %icmp, i32 %m, i32 %n5754 ret i32 %ret5755}5756 5757define i32 @selectRX_sge_i32(i32 %x, i32 %n, i32 %m) {5758; CHECK-LABEL: selectRX_sge_i32:5759; CHECK: # %bb.0: # %entry5760; CHECK-NEXT: movih32 a3, 7295761; CHECK-NEXT: ori32 a3, a3, 20325762; CHECK-NEXT: cmplt16 a3, a05763; CHECK-NEXT: movt32 a1, a25764; CHECK-NEXT: mov16 a0, a15765; CHECK-NEXT: rts165766;5767; GENERIC-LABEL: selectRX_sge_i32:5768; GENERIC: # %bb.0: # %entry5769; GENERIC-NEXT: subi16 sp, sp, 45770; GENERIC-NEXT: .cfi_def_cfa_offset 45771; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill5772; GENERIC-NEXT: .cfi_offset l0, -45773; GENERIC-NEXT: subi16 sp, sp, 45774; GENERIC-NEXT: .cfi_def_cfa_offset 85775; GENERIC-NEXT: movi16 a3, 25776; GENERIC-NEXT: lsli16 a3, a3, 245777; GENERIC-NEXT: movi16 l0, 2175778; GENERIC-NEXT: lsli16 l0, l0, 165779; GENERIC-NEXT: or16 l0, a35780; GENERIC-NEXT: movi16 a3, 75781; GENERIC-NEXT: lsli16 a3, a3, 85782; GENERIC-NEXT: or16 a3, l05783; GENERIC-NEXT: movi16 l0, 2405784; GENERIC-NEXT: or16 l0, a35785; GENERIC-NEXT: cmplt16 l0, a05786; GENERIC-NEXT: mvcv16 a05787; GENERIC-NEXT: movi16 a3, 15788; GENERIC-NEXT: subu16 a3, a05789; GENERIC-NEXT: btsti16 a3, 05790; GENERIC-NEXT: bt16 .LBB144_25791; GENERIC-NEXT: # %bb.1: # %entry5792; GENERIC-NEXT: mov16 a2, a15793; GENERIC-NEXT: .LBB144_2: # %entry5794; GENERIC-NEXT: mov16 a0, a25795; GENERIC-NEXT: addi16 sp, sp, 45796; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload5797; GENERIC-NEXT: addi16 sp, sp, 45798; GENERIC-NEXT: rts165799entry:5800 %icmp = icmp sge i32 %x, 477777775801 %ret = select i1 %icmp, i32 %m, i32 %n5802 ret i32 %ret5803}5804 5805define i32 @selectC_sge_i32(i1 %c, i32 %n, i32 %m) {5806; CHECK-LABEL: selectC_sge_i32:5807; CHECK: # %bb.0: # %entry5808; CHECK-NEXT: btsti16 a0, 05809; CHECK-NEXT: movt32 a1, a25810; CHECK-NEXT: mov16 a0, a15811; CHECK-NEXT: rts165812;5813; GENERIC-LABEL: selectC_sge_i32:5814; GENERIC: # %bb.0: # %entry5815; GENERIC-NEXT: .cfi_def_cfa_offset 05816; GENERIC-NEXT: subi16 sp, sp, 45817; GENERIC-NEXT: .cfi_def_cfa_offset 45818; GENERIC-NEXT: btsti16 a0, 05819; GENERIC-NEXT: bt16 .LBB145_25820; GENERIC-NEXT: # %bb.1: # %entry5821; GENERIC-NEXT: mov16 a2, a15822; GENERIC-NEXT: .LBB145_2: # %entry5823; GENERIC-NEXT: mov16 a0, a25824; GENERIC-NEXT: addi16 sp, sp, 45825; GENERIC-NEXT: rts165826entry:5827 %ret = select i1 %c, i32 %m, i32 %n5828 ret i32 %ret5829}5830 5831define i64 @selectRR_sge_i64(i64 %x, i64 %y, i64 %n, i64 %m) {5832; CHECK-LABEL: selectRR_sge_i64:5833; CHECK: # %bb.0: # %entry5834; CHECK-NEXT: .cfi_def_cfa_offset 05835; CHECK-NEXT: subi16 sp, sp, 125836; CHECK-NEXT: .cfi_def_cfa_offset 125837; CHECK-NEXT: cmphs16 a2, a05838; CHECK-NEXT: mvc32 a05839; CHECK-NEXT: st16.w a0, (sp, 4)5840; CHECK-NEXT: cmpne16 a3, a15841; CHECK-NEXT: mvc32 a05842; CHECK-NEXT: st16.w a0, (sp, 8)5843; CHECK-NEXT: cmplt16 a3, a15844; CHECK-NEXT: mvcv16 a05845; CHECK-NEXT: ld16.w a1, (sp, 4)5846; CHECK-NEXT: btsti16 a1, 05847; CHECK-NEXT: mvc32 a15848; CHECK-NEXT: ld16.w a2, (sp, 8)5849; CHECK-NEXT: btsti16 a2, 05850; CHECK-NEXT: movf32 a0, a15851; CHECK-NEXT: addi16 a1, sp, 125852; CHECK-NEXT: addi16 a2, sp, 205853; CHECK-NEXT: btsti16 a0, 05854; CHECK-NEXT: movt32 a1, a25855; CHECK-NEXT: ld16.w a0, (a1, 0)5856; CHECK-NEXT: ld16.w a1, (a1, 4)5857; CHECK-NEXT: addi16 sp, sp, 125858; CHECK-NEXT: rts165859;5860; GENERIC-LABEL: selectRR_sge_i64:5861; GENERIC: # %bb.0: # %entry5862; GENERIC-NEXT: .cfi_def_cfa_offset 05863; GENERIC-NEXT: subi16 sp, sp, 45864; GENERIC-NEXT: .cfi_def_cfa_offset 45865; GENERIC-NEXT: cmphs16 a2, a05866; GENERIC-NEXT: mvcv16 a25867; GENERIC-NEXT: cmplt16 a3, a15868; GENERIC-NEXT: mvcv16 a05869; GENERIC-NEXT: cmpne16 a3, a15870; GENERIC-NEXT: mvcv16 a15871; GENERIC-NEXT: btsti16 a1, 05872; GENERIC-NEXT: bf16 .LBB146_25873; GENERIC-NEXT: # %bb.1:5874; GENERIC-NEXT: movi16 a0, 15875; GENERIC-NEXT: subu16 a0, a25876; GENERIC-NEXT: .LBB146_2: # %entry5877; GENERIC-NEXT: btsti16 a0, 05878; GENERIC-NEXT: bt16 .LBB146_45879; GENERIC-NEXT: # %bb.3: # %entry5880; GENERIC-NEXT: movi16 a0, 45881; GENERIC-NEXT: br32 .LBB146_55882; GENERIC-NEXT: .LBB146_4:5883; GENERIC-NEXT: movi16 a0, 125884; GENERIC-NEXT: .LBB146_5: # %entry5885; GENERIC-NEXT: addu16 a0, sp5886; GENERIC-NEXT: mov16 a1, a05887; GENERIC-NEXT: ld16.w a0, (a0, 0)5888; GENERIC-NEXT: ld16.w a1, (a1, 4)5889; GENERIC-NEXT: addi16 sp, sp, 45890; GENERIC-NEXT: rts165891entry:5892 %icmp = icmp sge i64 %y, %x5893 %ret = select i1 %icmp, i64 %m, i64 %n5894 ret i64 %ret5895}5896 5897define i64 @selectRI_sge_i64(i64 %x, i64 %n, i64 %m) {5898; CHECK-LABEL: selectRI_sge_i64:5899; CHECK: # %bb.0: # %entry5900; CHECK-NEXT: subi16 sp, sp, 45901; CHECK-NEXT: .cfi_def_cfa_offset 45902; CHECK-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill5903; CHECK-NEXT: .cfi_offset l0, -45904; CHECK-NEXT: subi16 sp, sp, 125905; CHECK-NEXT: .cfi_def_cfa_offset 165906; CHECK-NEXT: ld32.w t0, (sp, 20)5907; CHECK-NEXT: ld32.w t1, (sp, 16)5908; CHECK-NEXT: movi16 l0, 05909; CHECK-NEXT: cmplt16 l0, a15910; CHECK-NEXT: mvc32 l05911; CHECK-NEXT: st16.w l0, (sp, 8)5912; CHECK-NEXT: movi16 l0, 95913; CHECK-NEXT: cmphs16 l0, a05914; CHECK-NEXT: mvcv16 a05915; CHECK-NEXT: cmpnei16 a1, 05916; CHECK-NEXT: mvc32 a15917; CHECK-NEXT: st16.w a1, (sp, 4)5918; CHECK-NEXT: ld16.w a1, (sp, 8)5919; CHECK-NEXT: btsti16 a1, 05920; CHECK-NEXT: mvc32 a15921; CHECK-NEXT: ld16.w l0, (sp, 4)5922; CHECK-NEXT: btsti16 l0, 05923; CHECK-NEXT: movf32 a1, a05924; CHECK-NEXT: btsti16 a1, 05925; CHECK-NEXT: movt32 a2, t15926; CHECK-NEXT: movt32 a3, t05927; CHECK-NEXT: mov16 a0, a25928; CHECK-NEXT: mov16 a1, a35929; CHECK-NEXT: addi16 sp, sp, 125930; CHECK-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload5931; CHECK-NEXT: addi16 sp, sp, 45932; CHECK-NEXT: rts165933;5934; GENERIC-LABEL: selectRI_sge_i64:5935; GENERIC: # %bb.0: # %entry5936; GENERIC-NEXT: subi16 sp, sp, 85937; GENERIC-NEXT: .cfi_def_cfa_offset 85938; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill5939; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill5940; GENERIC-NEXT: .cfi_offset l1, -45941; GENERIC-NEXT: .cfi_offset l0, -85942; GENERIC-NEXT: subi16 sp, sp, 45943; GENERIC-NEXT: .cfi_def_cfa_offset 125944; GENERIC-NEXT: movi16 l0, 05945; GENERIC-NEXT: cmplt16 l0, a15946; GENERIC-NEXT: mvcv16 l05947; GENERIC-NEXT: movi16 l1, 95948; GENERIC-NEXT: cmphs16 l1, a05949; GENERIC-NEXT: mvcv16 a05950; GENERIC-NEXT: cmpnei16 a1, 05951; GENERIC-NEXT: mvcv16 a15952; GENERIC-NEXT: btsti16 a1, 05953; GENERIC-NEXT: bf16 .LBB147_55954; GENERIC-NEXT: # %bb.1: # %entry5955; GENERIC-NEXT: btsti16 a0, 05956; GENERIC-NEXT: bt16 .LBB147_65957; GENERIC-NEXT: .LBB147_2: # %entry5958; GENERIC-NEXT: btsti16 a0, 05959; GENERIC-NEXT: bf16 .LBB147_45960; GENERIC-NEXT: .LBB147_3:5961; GENERIC-NEXT: ld16.w a3, (sp, 16)5962; GENERIC-NEXT: .LBB147_4: # %entry5963; GENERIC-NEXT: mov16 a0, a25964; GENERIC-NEXT: mov16 a1, a35965; GENERIC-NEXT: addi16 sp, sp, 45966; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload5967; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload5968; GENERIC-NEXT: addi16 sp, sp, 85969; GENERIC-NEXT: rts165970; GENERIC-NEXT: .LBB147_5: # %entry5971; GENERIC-NEXT: movi16 a0, 15972; GENERIC-NEXT: subu16 a0, l05973; GENERIC-NEXT: btsti16 a0, 05974; GENERIC-NEXT: bf16 .LBB147_25975; GENERIC-NEXT: .LBB147_6:5976; GENERIC-NEXT: ld16.w a2, (sp, 12)5977; GENERIC-NEXT: btsti16 a0, 05978; GENERIC-NEXT: bt16 .LBB147_35979; GENERIC-NEXT: br32 .LBB147_45980entry:5981 %icmp = icmp sge i64 %x, 105982 %ret = select i1 %icmp, i64 %m, i64 %n5983 ret i64 %ret5984}5985 5986define i64 @selectRX_sge_i64(i64 %x, i64 %n, i64 %m) {5987; CHECK-LABEL: selectRX_sge_i64:5988; CHECK: # %bb.0: # %entry5989; CHECK-NEXT: subi16 sp, sp, 45990; CHECK-NEXT: .cfi_def_cfa_offset 45991; CHECK-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill5992; CHECK-NEXT: .cfi_offset l0, -45993; CHECK-NEXT: subi16 sp, sp, 125994; CHECK-NEXT: .cfi_def_cfa_offset 165995; CHECK-NEXT: ld32.w t0, (sp, 20)5996; CHECK-NEXT: ld32.w t1, (sp, 16)5997; CHECK-NEXT: movi16 l0, 05998; CHECK-NEXT: cmplt16 l0, a15999; CHECK-NEXT: mvc32 l06000; CHECK-NEXT: st16.w l0, (sp, 8)6001; CHECK-NEXT: movih32 l0, 7296002; CHECK-NEXT: ori32 l0, l0, 20326003; CHECK-NEXT: cmphs16 l0, a06004; CHECK-NEXT: mvcv16 a06005; CHECK-NEXT: cmpnei16 a1, 06006; CHECK-NEXT: mvc32 a16007; CHECK-NEXT: st16.w a1, (sp, 4)6008; CHECK-NEXT: ld16.w a1, (sp, 8)6009; CHECK-NEXT: btsti16 a1, 06010; CHECK-NEXT: mvc32 a16011; CHECK-NEXT: ld16.w l0, (sp, 4)6012; CHECK-NEXT: btsti16 l0, 06013; CHECK-NEXT: movf32 a1, a06014; CHECK-NEXT: btsti16 a1, 06015; CHECK-NEXT: movt32 a2, t16016; CHECK-NEXT: movt32 a3, t06017; CHECK-NEXT: mov16 a0, a26018; CHECK-NEXT: mov16 a1, a36019; CHECK-NEXT: addi16 sp, sp, 126020; CHECK-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload6021; CHECK-NEXT: addi16 sp, sp, 46022; CHECK-NEXT: rts166023;6024; GENERIC-LABEL: selectRX_sge_i64:6025; GENERIC: # %bb.0: # %entry6026; GENERIC-NEXT: subi16 sp, sp, 126027; GENERIC-NEXT: .cfi_def_cfa_offset 126028; GENERIC-NEXT: st16.w l2, (sp, 8) # 4-byte Folded Spill6029; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill6030; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill6031; GENERIC-NEXT: .cfi_offset l2, -46032; GENERIC-NEXT: .cfi_offset l1, -86033; GENERIC-NEXT: .cfi_offset l0, -126034; GENERIC-NEXT: subi16 sp, sp, 46035; GENERIC-NEXT: .cfi_def_cfa_offset 166036; GENERIC-NEXT: movi16 l0, 06037; GENERIC-NEXT: cmplt16 l0, a16038; GENERIC-NEXT: mvcv16 l06039; GENERIC-NEXT: movi16 l1, 26040; GENERIC-NEXT: lsli16 l1, l1, 246041; GENERIC-NEXT: movi16 l2, 2176042; GENERIC-NEXT: lsli16 l2, l2, 166043; GENERIC-NEXT: or16 l2, l16044; GENERIC-NEXT: movi16 l1, 76045; GENERIC-NEXT: lsli16 l1, l1, 86046; GENERIC-NEXT: or16 l1, l26047; GENERIC-NEXT: movi16 l2, 2406048; GENERIC-NEXT: or16 l2, l16049; GENERIC-NEXT: cmphs16 l2, a06050; GENERIC-NEXT: mvcv16 a06051; GENERIC-NEXT: cmpnei16 a1, 06052; GENERIC-NEXT: mvcv16 a16053; GENERIC-NEXT: btsti16 a1, 06054; GENERIC-NEXT: bf16 .LBB148_56055; GENERIC-NEXT: # %bb.1: # %entry6056; GENERIC-NEXT: btsti16 a0, 06057; GENERIC-NEXT: bt16 .LBB148_66058; GENERIC-NEXT: .LBB148_2: # %entry6059; GENERIC-NEXT: btsti16 a0, 06060; GENERIC-NEXT: bf16 .LBB148_46061; GENERIC-NEXT: .LBB148_3:6062; GENERIC-NEXT: ld16.w a3, (sp, 20)6063; GENERIC-NEXT: .LBB148_4: # %entry6064; GENERIC-NEXT: mov16 a0, a26065; GENERIC-NEXT: mov16 a1, a36066; GENERIC-NEXT: addi16 sp, sp, 46067; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload6068; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload6069; GENERIC-NEXT: ld16.w l2, (sp, 8) # 4-byte Folded Reload6070; GENERIC-NEXT: addi16 sp, sp, 126071; GENERIC-NEXT: rts166072; GENERIC-NEXT: .LBB148_5: # %entry6073; GENERIC-NEXT: movi16 a0, 16074; GENERIC-NEXT: subu16 a0, l06075; GENERIC-NEXT: btsti16 a0, 06076; GENERIC-NEXT: bf16 .LBB148_26077; GENERIC-NEXT: .LBB148_6:6078; GENERIC-NEXT: ld16.w a2, (sp, 16)6079; GENERIC-NEXT: btsti16 a0, 06080; GENERIC-NEXT: bt16 .LBB148_36081; GENERIC-NEXT: br32 .LBB148_46082entry:6083 %icmp = icmp sge i64 %x, 477777776084 %ret = select i1 %icmp, i64 %m, i64 %n6085 ret i64 %ret6086}6087 6088define i64 @selectC_sge_i64(i1 %c, i64 %n, i64 %m) {6089; CHECK-LABEL: selectC_sge_i64:6090; CHECK: # %bb.0: # %entry6091; CHECK-NEXT: ld32.w t0, (sp, 0)6092; CHECK-NEXT: btsti16 a0, 06093; CHECK-NEXT: movt32 a1, a36094; CHECK-NEXT: movt32 a2, t06095; CHECK-NEXT: mov16 a0, a16096; CHECK-NEXT: mov16 a1, a26097; CHECK-NEXT: rts166098;6099; GENERIC-LABEL: selectC_sge_i64:6100; GENERIC: # %bb.0: # %entry6101; GENERIC-NEXT: .cfi_def_cfa_offset 06102; GENERIC-NEXT: subi16 sp, sp, 46103; GENERIC-NEXT: .cfi_def_cfa_offset 46104; GENERIC-NEXT: btsti16 a0, 06105; GENERIC-NEXT: bt16 .LBB149_26106; GENERIC-NEXT: # %bb.1: # %entry6107; GENERIC-NEXT: mov16 a3, a16108; GENERIC-NEXT: .LBB149_2: # %entry6109; GENERIC-NEXT: btsti16 a0, 06110; GENERIC-NEXT: bf16 .LBB149_46111; GENERIC-NEXT: # %bb.3:6112; GENERIC-NEXT: ld16.w a2, (sp, 4)6113; GENERIC-NEXT: .LBB149_4: # %entry6114; GENERIC-NEXT: mov16 a0, a36115; GENERIC-NEXT: mov16 a1, a26116; GENERIC-NEXT: addi16 sp, sp, 46117; GENERIC-NEXT: rts166118entry:6119 %ret = select i1 %c, i64 %m, i64 %n6120 ret i64 %ret6121}6122 6123 6124define i16 @selectRR_sge_i16(i16 %x, i16 %y, i16 %n, i16 %m) {6125; CHECK-LABEL: selectRR_sge_i16:6126; CHECK: # %bb.0: # %entry6127; CHECK-NEXT: sexth16 a0, a06128; CHECK-NEXT: sexth16 a1, a16129; CHECK-NEXT: cmplt16 a1, a06130; CHECK-NEXT: movf32 a2, a36131; CHECK-NEXT: mov16 a0, a26132; CHECK-NEXT: rts166133;6134; GENERIC-LABEL: selectRR_sge_i16:6135; GENERIC: # %bb.0: # %entry6136; GENERIC-NEXT: .cfi_def_cfa_offset 06137; GENERIC-NEXT: subi16 sp, sp, 46138; GENERIC-NEXT: .cfi_def_cfa_offset 46139; GENERIC-NEXT: sexth16 a0, a06140; GENERIC-NEXT: sexth16 a1, a16141; GENERIC-NEXT: cmplt16 a1, a06142; GENERIC-NEXT: mvcv16 a06143; GENERIC-NEXT: btsti16 a0, 06144; GENERIC-NEXT: bt16 .LBB150_26145; GENERIC-NEXT: # %bb.1: # %entry6146; GENERIC-NEXT: mov16 a3, a26147; GENERIC-NEXT: .LBB150_2: # %entry6148; GENERIC-NEXT: mov16 a0, a36149; GENERIC-NEXT: addi16 sp, sp, 46150; GENERIC-NEXT: rts166151entry:6152 %icmp = icmp sge i16 %y, %x6153 %ret = select i1 %icmp, i16 %m, i16 %n6154 ret i16 %ret6155}6156 6157define i16 @selectRI_sge_i16(i16 %x, i16 %n, i16 %m) {6158; CHECK-LABEL: selectRI_sge_i16:6159; CHECK: # %bb.0: # %entry6160; CHECK-NEXT: sexth16 a0, a06161; CHECK-NEXT: movi16 a3, 96162; CHECK-NEXT: cmplt16 a3, a06163; CHECK-NEXT: movt32 a1, a26164; CHECK-NEXT: mov16 a0, a16165; CHECK-NEXT: rts166166;6167; GENERIC-LABEL: selectRI_sge_i16:6168; GENERIC: # %bb.0: # %entry6169; GENERIC-NEXT: .cfi_def_cfa_offset 06170; GENERIC-NEXT: subi16 sp, sp, 46171; GENERIC-NEXT: .cfi_def_cfa_offset 46172; GENERIC-NEXT: sexth16 a0, a06173; GENERIC-NEXT: movi16 a3, 96174; GENERIC-NEXT: cmplt16 a3, a06175; GENERIC-NEXT: mvcv16 a06176; GENERIC-NEXT: movi16 a3, 16177; GENERIC-NEXT: subu16 a3, a06178; GENERIC-NEXT: btsti16 a3, 06179; GENERIC-NEXT: bt16 .LBB151_26180; GENERIC-NEXT: # %bb.1: # %entry6181; GENERIC-NEXT: mov16 a2, a16182; GENERIC-NEXT: .LBB151_2: # %entry6183; GENERIC-NEXT: mov16 a0, a26184; GENERIC-NEXT: addi16 sp, sp, 46185; GENERIC-NEXT: rts166186entry:6187 %icmp = icmp sge i16 %x, 106188 %ret = select i1 %icmp, i16 %m, i16 %n6189 ret i16 %ret6190}6191 6192define i16 @selectRX_sge_i16(i16 %x, i16 %n, i16 %m) {6193; CHECK-LABEL: selectRX_sge_i16:6194; CHECK: # %bb.0: # %entry6195; CHECK-NEXT: sexth16 a0, a06196; CHECK-NEXT: movi32 a3, 20326197; CHECK-NEXT: cmplt16 a3, a06198; CHECK-NEXT: movt32 a1, a26199; CHECK-NEXT: mov16 a0, a16200; CHECK-NEXT: rts166201;6202; GENERIC-LABEL: selectRX_sge_i16:6203; GENERIC: # %bb.0: # %entry6204; GENERIC-NEXT: subi16 sp, sp, 46205; GENERIC-NEXT: .cfi_def_cfa_offset 46206; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill6207; GENERIC-NEXT: .cfi_offset l0, -46208; GENERIC-NEXT: subi16 sp, sp, 46209; GENERIC-NEXT: .cfi_def_cfa_offset 86210; GENERIC-NEXT: sexth16 a0, a06211; GENERIC-NEXT: movi16 a3, 06212; GENERIC-NEXT: lsli16 l0, a3, 246213; GENERIC-NEXT: lsli16 a3, a3, 166214; GENERIC-NEXT: or16 a3, l06215; GENERIC-NEXT: movi16 l0, 76216; GENERIC-NEXT: lsli16 l0, l0, 86217; GENERIC-NEXT: or16 l0, a36218; GENERIC-NEXT: movi16 a3, 2406219; GENERIC-NEXT: or16 a3, l06220; GENERIC-NEXT: cmplt16 a3, a06221; GENERIC-NEXT: mvcv16 a06222; GENERIC-NEXT: movi16 a3, 16223; GENERIC-NEXT: subu16 a3, a06224; GENERIC-NEXT: btsti16 a3, 06225; GENERIC-NEXT: bt16 .LBB152_26226; GENERIC-NEXT: # %bb.1: # %entry6227; GENERIC-NEXT: mov16 a2, a16228; GENERIC-NEXT: .LBB152_2: # %entry6229; GENERIC-NEXT: mov16 a0, a26230; GENERIC-NEXT: addi16 sp, sp, 46231; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload6232; GENERIC-NEXT: addi16 sp, sp, 46233; GENERIC-NEXT: rts166234entry:6235 %icmp = icmp sge i16 %x, 477777776236 %ret = select i1 %icmp, i16 %m, i16 %n6237 ret i16 %ret6238}6239 6240define i16 @selectC_sge_i16(i1 %c, i16 %n, i16 %m) {6241; CHECK-LABEL: selectC_sge_i16:6242; CHECK: # %bb.0: # %entry6243; CHECK-NEXT: btsti16 a0, 06244; CHECK-NEXT: movt32 a1, a26245; CHECK-NEXT: mov16 a0, a16246; CHECK-NEXT: rts166247;6248; GENERIC-LABEL: selectC_sge_i16:6249; GENERIC: # %bb.0: # %entry6250; GENERIC-NEXT: .cfi_def_cfa_offset 06251; GENERIC-NEXT: subi16 sp, sp, 46252; GENERIC-NEXT: .cfi_def_cfa_offset 46253; GENERIC-NEXT: btsti16 a0, 06254; GENERIC-NEXT: bt16 .LBB153_26255; GENERIC-NEXT: # %bb.1: # %entry6256; GENERIC-NEXT: mov16 a2, a16257; GENERIC-NEXT: .LBB153_2: # %entry6258; GENERIC-NEXT: mov16 a0, a26259; GENERIC-NEXT: addi16 sp, sp, 46260; GENERIC-NEXT: rts166261entry:6262 %ret = select i1 %c, i16 %m, i16 %n6263 ret i16 %ret6264}6265 6266 6267define i8 @selectRR_sge_i8(i8 %x, i8 %y, i8 %n, i8 %m) {6268; CHECK-LABEL: selectRR_sge_i8:6269; CHECK: # %bb.0: # %entry6270; CHECK-NEXT: sextb16 a0, a06271; CHECK-NEXT: sextb16 a1, a16272; CHECK-NEXT: cmplt16 a1, a06273; CHECK-NEXT: movf32 a2, a36274; CHECK-NEXT: mov16 a0, a26275; CHECK-NEXT: rts166276;6277; GENERIC-LABEL: selectRR_sge_i8:6278; GENERIC: # %bb.0: # %entry6279; GENERIC-NEXT: .cfi_def_cfa_offset 06280; GENERIC-NEXT: subi16 sp, sp, 46281; GENERIC-NEXT: .cfi_def_cfa_offset 46282; GENERIC-NEXT: sextb16 a0, a06283; GENERIC-NEXT: sextb16 a1, a16284; GENERIC-NEXT: cmplt16 a1, a06285; GENERIC-NEXT: mvcv16 a06286; GENERIC-NEXT: btsti16 a0, 06287; GENERIC-NEXT: bt16 .LBB154_26288; GENERIC-NEXT: # %bb.1: # %entry6289; GENERIC-NEXT: mov16 a3, a26290; GENERIC-NEXT: .LBB154_2: # %entry6291; GENERIC-NEXT: mov16 a0, a36292; GENERIC-NEXT: addi16 sp, sp, 46293; GENERIC-NEXT: rts166294entry:6295 %icmp = icmp sge i8 %y, %x6296 %ret = select i1 %icmp, i8 %m, i8 %n6297 ret i8 %ret6298}6299 6300define i8 @selectRI_sge_i8(i8 %x, i8 %n, i8 %m) {6301; CHECK-LABEL: selectRI_sge_i8:6302; CHECK: # %bb.0: # %entry6303; CHECK-NEXT: sextb16 a0, a06304; CHECK-NEXT: movi16 a3, 96305; CHECK-NEXT: cmplt16 a3, a06306; CHECK-NEXT: movt32 a1, a26307; CHECK-NEXT: mov16 a0, a16308; CHECK-NEXT: rts166309;6310; GENERIC-LABEL: selectRI_sge_i8:6311; GENERIC: # %bb.0: # %entry6312; GENERIC-NEXT: .cfi_def_cfa_offset 06313; GENERIC-NEXT: subi16 sp, sp, 46314; GENERIC-NEXT: .cfi_def_cfa_offset 46315; GENERIC-NEXT: sextb16 a0, a06316; GENERIC-NEXT: movi16 a3, 96317; GENERIC-NEXT: cmplt16 a3, a06318; GENERIC-NEXT: mvcv16 a06319; GENERIC-NEXT: movi16 a3, 16320; GENERIC-NEXT: subu16 a3, a06321; GENERIC-NEXT: btsti16 a3, 06322; GENERIC-NEXT: bt16 .LBB155_26323; GENERIC-NEXT: # %bb.1: # %entry6324; GENERIC-NEXT: mov16 a2, a16325; GENERIC-NEXT: .LBB155_2: # %entry6326; GENERIC-NEXT: mov16 a0, a26327; GENERIC-NEXT: addi16 sp, sp, 46328; GENERIC-NEXT: rts166329entry:6330 %icmp = icmp sge i8 %x, 106331 %ret = select i1 %icmp, i8 %m, i8 %n6332 ret i8 %ret6333}6334 6335define i8 @selectRX_sge_i8(i8 %x, i8 %n, i8 %m) {6336; CHECK-LABEL: selectRX_sge_i8:6337; CHECK: # %bb.0: # %entry6338; CHECK-NEXT: sextb16 a0, a06339; CHECK-NEXT: movih32 a3, 655356340; CHECK-NEXT: ori32 a3, a3, 655206341; CHECK-NEXT: cmplt16 a3, a06342; CHECK-NEXT: movt32 a1, a26343; CHECK-NEXT: mov16 a0, a16344; CHECK-NEXT: rts166345;6346; GENERIC-LABEL: selectRX_sge_i8:6347; GENERIC: # %bb.0: # %entry6348; GENERIC-NEXT: subi16 sp, sp, 86349; GENERIC-NEXT: .cfi_def_cfa_offset 86350; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill6351; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill6352; GENERIC-NEXT: .cfi_offset l1, -46353; GENERIC-NEXT: .cfi_offset l0, -86354; GENERIC-NEXT: subi16 sp, sp, 46355; GENERIC-NEXT: .cfi_def_cfa_offset 126356; GENERIC-NEXT: sextb16 a0, a06357; GENERIC-NEXT: movi16 a3, 2556358; GENERIC-NEXT: lsli16 l0, a3, 246359; GENERIC-NEXT: lsli16 l1, a3, 166360; GENERIC-NEXT: or16 l1, l06361; GENERIC-NEXT: lsli16 a3, a3, 86362; GENERIC-NEXT: or16 a3, l16363; GENERIC-NEXT: movi16 l0, 2406364; GENERIC-NEXT: or16 l0, a36365; GENERIC-NEXT: cmplt16 l0, a06366; GENERIC-NEXT: mvcv16 a06367; GENERIC-NEXT: movi16 a3, 16368; GENERIC-NEXT: subu16 a3, a06369; GENERIC-NEXT: btsti16 a3, 06370; GENERIC-NEXT: bt16 .LBB156_26371; GENERIC-NEXT: # %bb.1: # %entry6372; GENERIC-NEXT: mov16 a2, a16373; GENERIC-NEXT: .LBB156_2: # %entry6374; GENERIC-NEXT: mov16 a0, a26375; GENERIC-NEXT: addi16 sp, sp, 46376; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload6377; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload6378; GENERIC-NEXT: addi16 sp, sp, 86379; GENERIC-NEXT: rts166380entry:6381 %icmp = icmp sge i8 %x, 477777776382 %ret = select i1 %icmp, i8 %m, i8 %n6383 ret i8 %ret6384}6385 6386define i8 @selectC_sge_i8(i1 %c, i8 %n, i8 %m) {6387; CHECK-LABEL: selectC_sge_i8:6388; CHECK: # %bb.0: # %entry6389; CHECK-NEXT: btsti16 a0, 06390; CHECK-NEXT: movt32 a1, a26391; CHECK-NEXT: mov16 a0, a16392; CHECK-NEXT: rts166393;6394; GENERIC-LABEL: selectC_sge_i8:6395; GENERIC: # %bb.0: # %entry6396; GENERIC-NEXT: .cfi_def_cfa_offset 06397; GENERIC-NEXT: subi16 sp, sp, 46398; GENERIC-NEXT: .cfi_def_cfa_offset 46399; GENERIC-NEXT: btsti16 a0, 06400; GENERIC-NEXT: bt16 .LBB157_26401; GENERIC-NEXT: # %bb.1: # %entry6402; GENERIC-NEXT: mov16 a2, a16403; GENERIC-NEXT: .LBB157_2: # %entry6404; GENERIC-NEXT: mov16 a0, a26405; GENERIC-NEXT: addi16 sp, sp, 46406; GENERIC-NEXT: rts166407entry:6408 %ret = select i1 %c, i8 %m, i8 %n6409 ret i8 %ret6410}6411 6412 6413define i1 @selectRR_sge_i1(i1 %x, i1 %y, i1 %n, i1 %m) {6414; CHECK-LABEL: selectRR_sge_i1:6415; CHECK: # %bb.0: # %entry6416; CHECK-NEXT: btsti16 a1, 06417; CHECK-NEXT: mov16 a1, a36418; CHECK-NEXT: movt32 a1, a26419; CHECK-NEXT: btsti16 a0, 06420; CHECK-NEXT: movt32 a1, a36421; CHECK-NEXT: mov16 a0, a16422; CHECK-NEXT: rts166423;6424; GENERIC-LABEL: selectRR_sge_i1:6425; GENERIC: # %bb.0: # %entry6426; GENERIC-NEXT: .cfi_def_cfa_offset 06427; GENERIC-NEXT: subi16 sp, sp, 46428; GENERIC-NEXT: .cfi_def_cfa_offset 46429; GENERIC-NEXT: btsti16 a1, 06430; GENERIC-NEXT: bt16 .LBB158_26431; GENERIC-NEXT: # %bb.1: # %entry6432; GENERIC-NEXT: mov16 a2, a36433; GENERIC-NEXT: .LBB158_2: # %entry6434; GENERIC-NEXT: btsti16 a0, 06435; GENERIC-NEXT: bt16 .LBB158_46436; GENERIC-NEXT: # %bb.3: # %entry6437; GENERIC-NEXT: mov16 a3, a26438; GENERIC-NEXT: .LBB158_4: # %entry6439; GENERIC-NEXT: mov16 a0, a36440; GENERIC-NEXT: addi16 sp, sp, 46441; GENERIC-NEXT: rts166442entry:6443 %icmp = icmp sge i1 %y, %x6444 %ret = select i1 %icmp, i1 %m, i1 %n6445 ret i1 %ret6446}6447 6448define i1 @selectRI_sge_i1(i1 %x, i1 %n, i1 %m) {6449; CHECK-LABEL: selectRI_sge_i1:6450; CHECK: # %bb.0: # %entry6451; CHECK-NEXT: btsti16 a0, 06452; CHECK-NEXT: movt32 a2, a16453; CHECK-NEXT: mov16 a0, a26454; CHECK-NEXT: rts166455;6456; GENERIC-LABEL: selectRI_sge_i1:6457; GENERIC: # %bb.0: # %entry6458; GENERIC-NEXT: .cfi_def_cfa_offset 06459; GENERIC-NEXT: subi16 sp, sp, 46460; GENERIC-NEXT: .cfi_def_cfa_offset 46461; GENERIC-NEXT: btsti16 a0, 06462; GENERIC-NEXT: bt16 .LBB159_26463; GENERIC-NEXT: # %bb.1: # %entry6464; GENERIC-NEXT: mov16 a1, a26465; GENERIC-NEXT: .LBB159_2: # %entry6466; GENERIC-NEXT: mov16 a0, a16467; GENERIC-NEXT: addi16 sp, sp, 46468; GENERIC-NEXT: rts166469entry:6470 %icmp = icmp sge i1 %x, 106471 %ret = select i1 %icmp, i1 %m, i1 %n6472 ret i1 %ret6473}6474 6475define i1 @selectRX_sge_i1(i1 %x, i1 %n, i1 %m) {6476; CHECK-LABEL: selectRX_sge_i1:6477; CHECK: # %bb.0: # %entry6478; CHECK-NEXT: mov16 a0, a26479; CHECK-NEXT: rts166480;6481; GENERIC-LABEL: selectRX_sge_i1:6482; GENERIC: # %bb.0: # %entry6483; GENERIC-NEXT: .cfi_def_cfa_offset 06484; GENERIC-NEXT: subi16 sp, sp, 46485; GENERIC-NEXT: .cfi_def_cfa_offset 46486; GENERIC-NEXT: mov16 a0, a26487; GENERIC-NEXT: addi16 sp, sp, 46488; GENERIC-NEXT: rts166489entry:6490 %icmp = icmp sge i1 %x, 477777776491 %ret = select i1 %icmp, i1 %m, i1 %n6492 ret i1 %ret6493}6494 6495define i1 @selectC_sge_i1(i1 %c, i1 %n, i1 %m) {6496; CHECK-LABEL: selectC_sge_i1:6497; CHECK: # %bb.0: # %entry6498; CHECK-NEXT: btsti16 a0, 06499; CHECK-NEXT: movt32 a1, a26500; CHECK-NEXT: mov16 a0, a16501; CHECK-NEXT: rts166502;6503; GENERIC-LABEL: selectC_sge_i1:6504; GENERIC: # %bb.0: # %entry6505; GENERIC-NEXT: .cfi_def_cfa_offset 06506; GENERIC-NEXT: subi16 sp, sp, 46507; GENERIC-NEXT: .cfi_def_cfa_offset 46508; GENERIC-NEXT: btsti16 a0, 06509; GENERIC-NEXT: bt16 .LBB161_26510; GENERIC-NEXT: # %bb.1: # %entry6511; GENERIC-NEXT: mov16 a2, a16512; GENERIC-NEXT: .LBB161_2: # %entry6513; GENERIC-NEXT: mov16 a0, a26514; GENERIC-NEXT: addi16 sp, sp, 46515; GENERIC-NEXT: rts166516entry:6517 %ret = select i1 %c, i1 %m, i1 %n6518 ret i1 %ret6519}6520 6521 6522define i32 @selectRR_slt_i32(i32 %x, i32 %y, i32 %n, i32 %m) {6523; CHECK-LABEL: selectRR_slt_i32:6524; CHECK: # %bb.0: # %entry6525; CHECK-NEXT: cmplt16 a1, a06526; CHECK-NEXT: movt32 a2, a36527; CHECK-NEXT: mov16 a0, a26528; CHECK-NEXT: rts166529;6530; GENERIC-LABEL: selectRR_slt_i32:6531; GENERIC: # %bb.0: # %entry6532; GENERIC-NEXT: .cfi_def_cfa_offset 06533; GENERIC-NEXT: subi16 sp, sp, 46534; GENERIC-NEXT: .cfi_def_cfa_offset 46535; GENERIC-NEXT: cmplt16 a1, a06536; GENERIC-NEXT: mvcv16 a06537; GENERIC-NEXT: movi16 a1, 16538; GENERIC-NEXT: subu16 a1, a06539; GENERIC-NEXT: btsti16 a1, 06540; GENERIC-NEXT: bt16 .LBB162_26541; GENERIC-NEXT: # %bb.1: # %entry6542; GENERIC-NEXT: mov16 a3, a26543; GENERIC-NEXT: .LBB162_2: # %entry6544; GENERIC-NEXT: mov16 a0, a36545; GENERIC-NEXT: addi16 sp, sp, 46546; GENERIC-NEXT: rts166547entry:6548 %icmp = icmp slt i32 %y, %x6549 %ret = select i1 %icmp, i32 %m, i32 %n6550 ret i32 %ret6551}6552 6553define i32 @selectRI_slt_i32(i32 %x, i32 %n, i32 %m) {6554; CHECK-LABEL: selectRI_slt_i32:6555; CHECK: # %bb.0: # %entry6556; CHECK-NEXT: cmplti16 a0, 106557; CHECK-NEXT: movt32 a1, a26558; CHECK-NEXT: mov16 a0, a16559; CHECK-NEXT: rts166560;6561; GENERIC-LABEL: selectRI_slt_i32:6562; GENERIC: # %bb.0: # %entry6563; GENERIC-NEXT: .cfi_def_cfa_offset 06564; GENERIC-NEXT: subi16 sp, sp, 46565; GENERIC-NEXT: .cfi_def_cfa_offset 46566; GENERIC-NEXT: cmplti16 a0, 106567; GENERIC-NEXT: mvcv16 a06568; GENERIC-NEXT: movi16 a3, 16569; GENERIC-NEXT: subu16 a3, a06570; GENERIC-NEXT: btsti16 a3, 06571; GENERIC-NEXT: bt16 .LBB163_26572; GENERIC-NEXT: # %bb.1: # %entry6573; GENERIC-NEXT: mov16 a2, a16574; GENERIC-NEXT: .LBB163_2: # %entry6575; GENERIC-NEXT: mov16 a0, a26576; GENERIC-NEXT: addi16 sp, sp, 46577; GENERIC-NEXT: rts166578entry:6579 %icmp = icmp slt i32 %x, 106580 %ret = select i1 %icmp, i32 %m, i32 %n6581 ret i32 %ret6582}6583 6584define i32 @selectRX_slt_i32(i32 %x, i32 %n, i32 %m) {6585; CHECK-LABEL: selectRX_slt_i32:6586; CHECK: # %bb.0: # %entry6587; CHECK-NEXT: movih32 a3, 7296588; CHECK-NEXT: ori32 a3, a3, 20336589; CHECK-NEXT: cmplt16 a0, a36590; CHECK-NEXT: movt32 a1, a26591; CHECK-NEXT: mov16 a0, a16592; CHECK-NEXT: rts166593;6594; GENERIC-LABEL: selectRX_slt_i32:6595; GENERIC: # %bb.0: # %entry6596; GENERIC-NEXT: subi16 sp, sp, 46597; GENERIC-NEXT: .cfi_def_cfa_offset 46598; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill6599; GENERIC-NEXT: .cfi_offset l0, -46600; GENERIC-NEXT: subi16 sp, sp, 46601; GENERIC-NEXT: .cfi_def_cfa_offset 86602; GENERIC-NEXT: movi16 a3, 26603; GENERIC-NEXT: lsli16 a3, a3, 246604; GENERIC-NEXT: movi16 l0, 2176605; GENERIC-NEXT: lsli16 l0, l0, 166606; GENERIC-NEXT: or16 l0, a36607; GENERIC-NEXT: movi16 a3, 76608; GENERIC-NEXT: lsli16 a3, a3, 86609; GENERIC-NEXT: or16 a3, l06610; GENERIC-NEXT: movi16 l0, 2416611; GENERIC-NEXT: or16 l0, a36612; GENERIC-NEXT: cmplt16 a0, l06613; GENERIC-NEXT: mvcv16 a06614; GENERIC-NEXT: movi16 a3, 16615; GENERIC-NEXT: subu16 a3, a06616; GENERIC-NEXT: btsti16 a3, 06617; GENERIC-NEXT: bt16 .LBB164_26618; GENERIC-NEXT: # %bb.1: # %entry6619; GENERIC-NEXT: mov16 a2, a16620; GENERIC-NEXT: .LBB164_2: # %entry6621; GENERIC-NEXT: mov16 a0, a26622; GENERIC-NEXT: addi16 sp, sp, 46623; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload6624; GENERIC-NEXT: addi16 sp, sp, 46625; GENERIC-NEXT: rts166626entry:6627 %icmp = icmp slt i32 %x, 477777776628 %ret = select i1 %icmp, i32 %m, i32 %n6629 ret i32 %ret6630}6631 6632define i32 @selectC_slt_i32(i1 %c, i32 %n, i32 %m) {6633; CHECK-LABEL: selectC_slt_i32:6634; CHECK: # %bb.0: # %entry6635; CHECK-NEXT: btsti16 a0, 06636; CHECK-NEXT: movt32 a1, a26637; CHECK-NEXT: mov16 a0, a16638; CHECK-NEXT: rts166639;6640; GENERIC-LABEL: selectC_slt_i32:6641; GENERIC: # %bb.0: # %entry6642; GENERIC-NEXT: .cfi_def_cfa_offset 06643; GENERIC-NEXT: subi16 sp, sp, 46644; GENERIC-NEXT: .cfi_def_cfa_offset 46645; GENERIC-NEXT: btsti16 a0, 06646; GENERIC-NEXT: bt16 .LBB165_26647; GENERIC-NEXT: # %bb.1: # %entry6648; GENERIC-NEXT: mov16 a2, a16649; GENERIC-NEXT: .LBB165_2: # %entry6650; GENERIC-NEXT: mov16 a0, a26651; GENERIC-NEXT: addi16 sp, sp, 46652; GENERIC-NEXT: rts166653entry:6654 %ret = select i1 %c, i32 %m, i32 %n6655 ret i32 %ret6656}6657 6658define i64 @selectRR_slt_i64(i64 %x, i64 %y, i64 %n, i64 %m) {6659; CHECK-LABEL: selectRR_slt_i64:6660; CHECK: # %bb.0: # %entry6661; CHECK-NEXT: .cfi_def_cfa_offset 06662; CHECK-NEXT: subi16 sp, sp, 126663; CHECK-NEXT: .cfi_def_cfa_offset 126664; CHECK-NEXT: cmplt16 a3, a16665; CHECK-NEXT: mvc32 t06666; CHECK-NEXT: st32.w t0, (sp, 4)6667; CHECK-NEXT: cmpne16 a3, a16668; CHECK-NEXT: mvc32 a16669; CHECK-NEXT: st16.w a1, (sp, 8)6670; CHECK-NEXT: cmphs16 a2, a06671; CHECK-NEXT: mvcv16 a06672; CHECK-NEXT: ld16.w a1, (sp, 4)6673; CHECK-NEXT: btsti16 a1, 06674; CHECK-NEXT: mvc32 a16675; CHECK-NEXT: ld16.w a2, (sp, 8)6676; CHECK-NEXT: btsti16 a2, 06677; CHECK-NEXT: movf32 a1, a06678; CHECK-NEXT: addi16 a2, sp, 126679; CHECK-NEXT: addi16 a0, sp, 206680; CHECK-NEXT: btsti16 a1, 06681; CHECK-NEXT: movt32 a2, a06682; CHECK-NEXT: ld16.w a0, (a2, 0)6683; CHECK-NEXT: ld16.w a1, (a2, 4)6684; CHECK-NEXT: addi16 sp, sp, 126685; CHECK-NEXT: rts166686;6687; GENERIC-LABEL: selectRR_slt_i64:6688; GENERIC: # %bb.0: # %entry6689; GENERIC-NEXT: subi16 sp, sp, 46690; GENERIC-NEXT: .cfi_def_cfa_offset 46691; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill6692; GENERIC-NEXT: .cfi_offset l0, -46693; GENERIC-NEXT: subi16 sp, sp, 46694; GENERIC-NEXT: .cfi_def_cfa_offset 86695; GENERIC-NEXT: cmplt16 a3, a16696; GENERIC-NEXT: mvcv16 l06697; GENERIC-NEXT: cmphs16 a2, a06698; GENERIC-NEXT: mvcv16 a06699; GENERIC-NEXT: cmpne16 a3, a16700; GENERIC-NEXT: mvcv16 a16701; GENERIC-NEXT: btsti16 a1, 06702; GENERIC-NEXT: bt16 .LBB166_26703; GENERIC-NEXT: # %bb.1: # %entry6704; GENERIC-NEXT: movi16 a0, 16705; GENERIC-NEXT: subu16 a0, l06706; GENERIC-NEXT: .LBB166_2: # %entry6707; GENERIC-NEXT: btsti16 a0, 06708; GENERIC-NEXT: bt16 .LBB166_46709; GENERIC-NEXT: # %bb.3: # %entry6710; GENERIC-NEXT: movi16 a0, 86711; GENERIC-NEXT: br32 .LBB166_56712; GENERIC-NEXT: .LBB166_4:6713; GENERIC-NEXT: movi16 a0, 166714; GENERIC-NEXT: .LBB166_5: # %entry6715; GENERIC-NEXT: addu16 a0, sp6716; GENERIC-NEXT: mov16 a1, a06717; GENERIC-NEXT: ld16.w a0, (a0, 0)6718; GENERIC-NEXT: ld16.w a1, (a1, 4)6719; GENERIC-NEXT: addi16 sp, sp, 46720; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload6721; GENERIC-NEXT: addi16 sp, sp, 46722; GENERIC-NEXT: rts166723entry:6724 %icmp = icmp slt i64 %y, %x6725 %ret = select i1 %icmp, i64 %m, i64 %n6726 ret i64 %ret6727}6728 6729define i64 @selectRI_slt_i64(i64 %x, i64 %n, i64 %m) {6730; CHECK-LABEL: selectRI_slt_i64:6731; CHECK: # %bb.0: # %entry6732; CHECK-NEXT: subi16 sp, sp, 46733; CHECK-NEXT: .cfi_def_cfa_offset 46734; CHECK-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill6735; CHECK-NEXT: .cfi_offset l0, -46736; CHECK-NEXT: subi16 sp, sp, 126737; CHECK-NEXT: .cfi_def_cfa_offset 166738; CHECK-NEXT: ld32.w t0, (sp, 20)6739; CHECK-NEXT: ld32.w t1, (sp, 16)6740; CHECK-NEXT: movi16 l0, 06741; CHECK-NEXT: cmplt16 a1, l06742; CHECK-NEXT: mvc32 l06743; CHECK-NEXT: st16.w l0, (sp, 4)6744; CHECK-NEXT: cmpnei16 a1, 06745; CHECK-NEXT: mvc32 a16746; CHECK-NEXT: st16.w a1, (sp, 8)6747; CHECK-NEXT: cmphsi16 a0, 106748; CHECK-NEXT: mvcv16 a06749; CHECK-NEXT: ld16.w a1, (sp, 4)6750; CHECK-NEXT: btsti16 a1, 06751; CHECK-NEXT: mvc32 a16752; CHECK-NEXT: ld16.w l0, (sp, 8)6753; CHECK-NEXT: btsti16 l0, 06754; CHECK-NEXT: movf32 a1, a06755; CHECK-NEXT: btsti16 a1, 06756; CHECK-NEXT: movt32 a2, t16757; CHECK-NEXT: movt32 a3, t06758; CHECK-NEXT: mov16 a0, a26759; CHECK-NEXT: mov16 a1, a36760; CHECK-NEXT: addi16 sp, sp, 126761; CHECK-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload6762; CHECK-NEXT: addi16 sp, sp, 46763; CHECK-NEXT: rts166764;6765; GENERIC-LABEL: selectRI_slt_i64:6766; GENERIC: # %bb.0: # %entry6767; GENERIC-NEXT: subi16 sp, sp, 46768; GENERIC-NEXT: .cfi_def_cfa_offset 46769; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill6770; GENERIC-NEXT: .cfi_offset l0, -46771; GENERIC-NEXT: subi16 sp, sp, 46772; GENERIC-NEXT: .cfi_def_cfa_offset 86773; GENERIC-NEXT: movi16 l0, 06774; GENERIC-NEXT: cmplt16 a1, l06775; GENERIC-NEXT: mvcv16 l06776; GENERIC-NEXT: cmphsi16 a0, 106777; GENERIC-NEXT: mvcv16 a06778; GENERIC-NEXT: cmpnei16 a1, 06779; GENERIC-NEXT: mvcv16 a16780; GENERIC-NEXT: btsti16 a1, 06781; GENERIC-NEXT: bf16 .LBB167_56782; GENERIC-NEXT: # %bb.1: # %entry6783; GENERIC-NEXT: btsti16 a0, 06784; GENERIC-NEXT: bt16 .LBB167_66785; GENERIC-NEXT: .LBB167_2: # %entry6786; GENERIC-NEXT: btsti16 a0, 06787; GENERIC-NEXT: bf16 .LBB167_46788; GENERIC-NEXT: .LBB167_3:6789; GENERIC-NEXT: ld16.w a3, (sp, 12)6790; GENERIC-NEXT: .LBB167_4: # %entry6791; GENERIC-NEXT: mov16 a0, a26792; GENERIC-NEXT: mov16 a1, a36793; GENERIC-NEXT: addi16 sp, sp, 46794; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload6795; GENERIC-NEXT: addi16 sp, sp, 46796; GENERIC-NEXT: rts166797; GENERIC-NEXT: .LBB167_5: # %entry6798; GENERIC-NEXT: movi16 a0, 16799; GENERIC-NEXT: subu16 a0, l06800; GENERIC-NEXT: btsti16 a0, 06801; GENERIC-NEXT: bf16 .LBB167_26802; GENERIC-NEXT: .LBB167_6:6803; GENERIC-NEXT: ld16.w a2, (sp, 8)6804; GENERIC-NEXT: btsti16 a0, 06805; GENERIC-NEXT: bt16 .LBB167_36806; GENERIC-NEXT: br32 .LBB167_46807entry:6808 %icmp = icmp slt i64 %x, 106809 %ret = select i1 %icmp, i64 %m, i64 %n6810 ret i64 %ret6811}6812 6813define i64 @selectRX_slt_i64(i64 %x, i64 %n, i64 %m) {6814; CHECK-LABEL: selectRX_slt_i64:6815; CHECK: # %bb.0: # %entry6816; CHECK-NEXT: subi16 sp, sp, 46817; CHECK-NEXT: .cfi_def_cfa_offset 46818; CHECK-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill6819; CHECK-NEXT: .cfi_offset l0, -46820; CHECK-NEXT: subi16 sp, sp, 126821; CHECK-NEXT: .cfi_def_cfa_offset 166822; CHECK-NEXT: ld32.w t0, (sp, 20)6823; CHECK-NEXT: ld32.w t1, (sp, 16)6824; CHECK-NEXT: movi16 l0, 06825; CHECK-NEXT: cmplt16 a1, l06826; CHECK-NEXT: mvc32 l06827; CHECK-NEXT: st16.w l0, (sp, 8)6828; CHECK-NEXT: movih32 l0, 7296829; CHECK-NEXT: ori32 l0, l0, 20336830; CHECK-NEXT: cmphs16 a0, l06831; CHECK-NEXT: mvcv16 a06832; CHECK-NEXT: cmpnei16 a1, 06833; CHECK-NEXT: mvc32 a16834; CHECK-NEXT: st16.w a1, (sp, 4)6835; CHECK-NEXT: ld16.w a1, (sp, 8)6836; CHECK-NEXT: btsti16 a1, 06837; CHECK-NEXT: mvc32 a16838; CHECK-NEXT: ld16.w l0, (sp, 4)6839; CHECK-NEXT: btsti16 l0, 06840; CHECK-NEXT: movf32 a1, a06841; CHECK-NEXT: btsti16 a1, 06842; CHECK-NEXT: movt32 a2, t16843; CHECK-NEXT: movt32 a3, t06844; CHECK-NEXT: mov16 a0, a26845; CHECK-NEXT: mov16 a1, a36846; CHECK-NEXT: addi16 sp, sp, 126847; CHECK-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload6848; CHECK-NEXT: addi16 sp, sp, 46849; CHECK-NEXT: rts166850;6851; GENERIC-LABEL: selectRX_slt_i64:6852; GENERIC: # %bb.0: # %entry6853; GENERIC-NEXT: subi16 sp, sp, 126854; GENERIC-NEXT: .cfi_def_cfa_offset 126855; GENERIC-NEXT: st16.w l2, (sp, 8) # 4-byte Folded Spill6856; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill6857; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill6858; GENERIC-NEXT: .cfi_offset l2, -46859; GENERIC-NEXT: .cfi_offset l1, -86860; GENERIC-NEXT: .cfi_offset l0, -126861; GENERIC-NEXT: subi16 sp, sp, 46862; GENERIC-NEXT: .cfi_def_cfa_offset 166863; GENERIC-NEXT: movi16 l0, 06864; GENERIC-NEXT: cmplt16 a1, l06865; GENERIC-NEXT: mvcv16 l06866; GENERIC-NEXT: movi16 l1, 26867; GENERIC-NEXT: lsli16 l1, l1, 246868; GENERIC-NEXT: movi16 l2, 2176869; GENERIC-NEXT: lsli16 l2, l2, 166870; GENERIC-NEXT: or16 l2, l16871; GENERIC-NEXT: movi16 l1, 76872; GENERIC-NEXT: lsli16 l1, l1, 86873; GENERIC-NEXT: or16 l1, l26874; GENERIC-NEXT: movi16 l2, 2416875; GENERIC-NEXT: or16 l2, l16876; GENERIC-NEXT: cmphs16 a0, l26877; GENERIC-NEXT: mvcv16 a06878; GENERIC-NEXT: cmpnei16 a1, 06879; GENERIC-NEXT: mvcv16 a16880; GENERIC-NEXT: btsti16 a1, 06881; GENERIC-NEXT: bf16 .LBB168_56882; GENERIC-NEXT: # %bb.1: # %entry6883; GENERIC-NEXT: btsti16 a0, 06884; GENERIC-NEXT: bt16 .LBB168_66885; GENERIC-NEXT: .LBB168_2: # %entry6886; GENERIC-NEXT: btsti16 a0, 06887; GENERIC-NEXT: bf16 .LBB168_46888; GENERIC-NEXT: .LBB168_3:6889; GENERIC-NEXT: ld16.w a3, (sp, 20)6890; GENERIC-NEXT: .LBB168_4: # %entry6891; GENERIC-NEXT: mov16 a0, a26892; GENERIC-NEXT: mov16 a1, a36893; GENERIC-NEXT: addi16 sp, sp, 46894; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload6895; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload6896; GENERIC-NEXT: ld16.w l2, (sp, 8) # 4-byte Folded Reload6897; GENERIC-NEXT: addi16 sp, sp, 126898; GENERIC-NEXT: rts166899; GENERIC-NEXT: .LBB168_5: # %entry6900; GENERIC-NEXT: movi16 a0, 16901; GENERIC-NEXT: subu16 a0, l06902; GENERIC-NEXT: btsti16 a0, 06903; GENERIC-NEXT: bf16 .LBB168_26904; GENERIC-NEXT: .LBB168_6:6905; GENERIC-NEXT: ld16.w a2, (sp, 16)6906; GENERIC-NEXT: btsti16 a0, 06907; GENERIC-NEXT: bt16 .LBB168_36908; GENERIC-NEXT: br32 .LBB168_46909entry:6910 %icmp = icmp slt i64 %x, 477777776911 %ret = select i1 %icmp, i64 %m, i64 %n6912 ret i64 %ret6913}6914 6915define i64 @selectC_slt_i64(i1 %c, i64 %n, i64 %m) {6916; CHECK-LABEL: selectC_slt_i64:6917; CHECK: # %bb.0: # %entry6918; CHECK-NEXT: ld32.w t0, (sp, 0)6919; CHECK-NEXT: btsti16 a0, 06920; CHECK-NEXT: movt32 a1, a36921; CHECK-NEXT: movt32 a2, t06922; CHECK-NEXT: mov16 a0, a16923; CHECK-NEXT: mov16 a1, a26924; CHECK-NEXT: rts166925;6926; GENERIC-LABEL: selectC_slt_i64:6927; GENERIC: # %bb.0: # %entry6928; GENERIC-NEXT: .cfi_def_cfa_offset 06929; GENERIC-NEXT: subi16 sp, sp, 46930; GENERIC-NEXT: .cfi_def_cfa_offset 46931; GENERIC-NEXT: btsti16 a0, 06932; GENERIC-NEXT: bt16 .LBB169_26933; GENERIC-NEXT: # %bb.1: # %entry6934; GENERIC-NEXT: mov16 a3, a16935; GENERIC-NEXT: .LBB169_2: # %entry6936; GENERIC-NEXT: btsti16 a0, 06937; GENERIC-NEXT: bf16 .LBB169_46938; GENERIC-NEXT: # %bb.3:6939; GENERIC-NEXT: ld16.w a2, (sp, 4)6940; GENERIC-NEXT: .LBB169_4: # %entry6941; GENERIC-NEXT: mov16 a0, a36942; GENERIC-NEXT: mov16 a1, a26943; GENERIC-NEXT: addi16 sp, sp, 46944; GENERIC-NEXT: rts166945entry:6946 %ret = select i1 %c, i64 %m, i64 %n6947 ret i64 %ret6948}6949 6950 6951define i16 @selectRR_slt_i16(i16 %x, i16 %y, i16 %n, i16 %m) {6952; CHECK-LABEL: selectRR_slt_i16:6953; CHECK: # %bb.0: # %entry6954; CHECK-NEXT: sexth16 a0, a06955; CHECK-NEXT: sexth16 a1, a16956; CHECK-NEXT: cmplt16 a1, a06957; CHECK-NEXT: movt32 a2, a36958; CHECK-NEXT: mov16 a0, a26959; CHECK-NEXT: rts166960;6961; GENERIC-LABEL: selectRR_slt_i16:6962; GENERIC: # %bb.0: # %entry6963; GENERIC-NEXT: .cfi_def_cfa_offset 06964; GENERIC-NEXT: subi16 sp, sp, 46965; GENERIC-NEXT: .cfi_def_cfa_offset 46966; GENERIC-NEXT: sexth16 a0, a06967; GENERIC-NEXT: sexth16 a1, a16968; GENERIC-NEXT: cmplt16 a1, a06969; GENERIC-NEXT: mvcv16 a06970; GENERIC-NEXT: movi16 a1, 16971; GENERIC-NEXT: subu16 a1, a06972; GENERIC-NEXT: btsti16 a1, 06973; GENERIC-NEXT: bt16 .LBB170_26974; GENERIC-NEXT: # %bb.1: # %entry6975; GENERIC-NEXT: mov16 a3, a26976; GENERIC-NEXT: .LBB170_2: # %entry6977; GENERIC-NEXT: mov16 a0, a36978; GENERIC-NEXT: addi16 sp, sp, 46979; GENERIC-NEXT: rts166980entry:6981 %icmp = icmp slt i16 %y, %x6982 %ret = select i1 %icmp, i16 %m, i16 %n6983 ret i16 %ret6984}6985 6986define i16 @selectRI_slt_i16(i16 %x, i16 %n, i16 %m) {6987; CHECK-LABEL: selectRI_slt_i16:6988; CHECK: # %bb.0: # %entry6989; CHECK-NEXT: sexth16 a0, a06990; CHECK-NEXT: cmplti16 a0, 106991; CHECK-NEXT: movt32 a1, a26992; CHECK-NEXT: mov16 a0, a16993; CHECK-NEXT: rts166994;6995; GENERIC-LABEL: selectRI_slt_i16:6996; GENERIC: # %bb.0: # %entry6997; GENERIC-NEXT: .cfi_def_cfa_offset 06998; GENERIC-NEXT: subi16 sp, sp, 46999; GENERIC-NEXT: .cfi_def_cfa_offset 47000; GENERIC-NEXT: sexth16 a0, a07001; GENERIC-NEXT: cmplti16 a0, 107002; GENERIC-NEXT: mvcv16 a07003; GENERIC-NEXT: movi16 a3, 17004; GENERIC-NEXT: subu16 a3, a07005; GENERIC-NEXT: btsti16 a3, 07006; GENERIC-NEXT: bt16 .LBB171_27007; GENERIC-NEXT: # %bb.1: # %entry7008; GENERIC-NEXT: mov16 a2, a17009; GENERIC-NEXT: .LBB171_2: # %entry7010; GENERIC-NEXT: mov16 a0, a27011; GENERIC-NEXT: addi16 sp, sp, 47012; GENERIC-NEXT: rts167013entry:7014 %icmp = icmp slt i16 %x, 107015 %ret = select i1 %icmp, i16 %m, i16 %n7016 ret i16 %ret7017}7018 7019define i16 @selectRX_slt_i16(i16 %x, i16 %n, i16 %m) {7020; CHECK-LABEL: selectRX_slt_i16:7021; CHECK: # %bb.0: # %entry7022; CHECK-NEXT: sexth16 a0, a07023; CHECK-NEXT: cmplti32 a0, 20337024; CHECK-NEXT: movt32 a1, a27025; CHECK-NEXT: mov16 a0, a17026; CHECK-NEXT: rts167027;7028; GENERIC-LABEL: selectRX_slt_i16:7029; GENERIC: # %bb.0: # %entry7030; GENERIC-NEXT: subi16 sp, sp, 47031; GENERIC-NEXT: .cfi_def_cfa_offset 47032; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill7033; GENERIC-NEXT: .cfi_offset l0, -47034; GENERIC-NEXT: subi16 sp, sp, 47035; GENERIC-NEXT: .cfi_def_cfa_offset 87036; GENERIC-NEXT: sexth16 a0, a07037; GENERIC-NEXT: movi16 a3, 07038; GENERIC-NEXT: lsli16 l0, a3, 247039; GENERIC-NEXT: lsli16 a3, a3, 167040; GENERIC-NEXT: or16 a3, l07041; GENERIC-NEXT: movi16 l0, 77042; GENERIC-NEXT: lsli16 l0, l0, 87043; GENERIC-NEXT: or16 l0, a37044; GENERIC-NEXT: movi16 a3, 2417045; GENERIC-NEXT: or16 a3, l07046; GENERIC-NEXT: cmplt16 a0, a37047; GENERIC-NEXT: mvcv16 a07048; GENERIC-NEXT: movi16 a3, 17049; GENERIC-NEXT: subu16 a3, a07050; GENERIC-NEXT: btsti16 a3, 07051; GENERIC-NEXT: bt16 .LBB172_27052; GENERIC-NEXT: # %bb.1: # %entry7053; GENERIC-NEXT: mov16 a2, a17054; GENERIC-NEXT: .LBB172_2: # %entry7055; GENERIC-NEXT: mov16 a0, a27056; GENERIC-NEXT: addi16 sp, sp, 47057; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload7058; GENERIC-NEXT: addi16 sp, sp, 47059; GENERIC-NEXT: rts167060entry:7061 %icmp = icmp slt i16 %x, 477777777062 %ret = select i1 %icmp, i16 %m, i16 %n7063 ret i16 %ret7064}7065 7066define i16 @selectC_slt_i16(i1 %c, i16 %n, i16 %m) {7067; CHECK-LABEL: selectC_slt_i16:7068; CHECK: # %bb.0: # %entry7069; CHECK-NEXT: btsti16 a0, 07070; CHECK-NEXT: movt32 a1, a27071; CHECK-NEXT: mov16 a0, a17072; CHECK-NEXT: rts167073;7074; GENERIC-LABEL: selectC_slt_i16:7075; GENERIC: # %bb.0: # %entry7076; GENERIC-NEXT: .cfi_def_cfa_offset 07077; GENERIC-NEXT: subi16 sp, sp, 47078; GENERIC-NEXT: .cfi_def_cfa_offset 47079; GENERIC-NEXT: btsti16 a0, 07080; GENERIC-NEXT: bt16 .LBB173_27081; GENERIC-NEXT: # %bb.1: # %entry7082; GENERIC-NEXT: mov16 a2, a17083; GENERIC-NEXT: .LBB173_2: # %entry7084; GENERIC-NEXT: mov16 a0, a27085; GENERIC-NEXT: addi16 sp, sp, 47086; GENERIC-NEXT: rts167087entry:7088 %ret = select i1 %c, i16 %m, i16 %n7089 ret i16 %ret7090}7091 7092 7093define i8 @selectRR_slt_i8(i8 %x, i8 %y, i8 %n, i8 %m) {7094; CHECK-LABEL: selectRR_slt_i8:7095; CHECK: # %bb.0: # %entry7096; CHECK-NEXT: sextb16 a0, a07097; CHECK-NEXT: sextb16 a1, a17098; CHECK-NEXT: cmplt16 a1, a07099; CHECK-NEXT: movt32 a2, a37100; CHECK-NEXT: mov16 a0, a27101; CHECK-NEXT: rts167102;7103; GENERIC-LABEL: selectRR_slt_i8:7104; GENERIC: # %bb.0: # %entry7105; GENERIC-NEXT: .cfi_def_cfa_offset 07106; GENERIC-NEXT: subi16 sp, sp, 47107; GENERIC-NEXT: .cfi_def_cfa_offset 47108; GENERIC-NEXT: sextb16 a0, a07109; GENERIC-NEXT: sextb16 a1, a17110; GENERIC-NEXT: cmplt16 a1, a07111; GENERIC-NEXT: mvcv16 a07112; GENERIC-NEXT: movi16 a1, 17113; GENERIC-NEXT: subu16 a1, a07114; GENERIC-NEXT: btsti16 a1, 07115; GENERIC-NEXT: bt16 .LBB174_27116; GENERIC-NEXT: # %bb.1: # %entry7117; GENERIC-NEXT: mov16 a3, a27118; GENERIC-NEXT: .LBB174_2: # %entry7119; GENERIC-NEXT: mov16 a0, a37120; GENERIC-NEXT: addi16 sp, sp, 47121; GENERIC-NEXT: rts167122entry:7123 %icmp = icmp slt i8 %y, %x7124 %ret = select i1 %icmp, i8 %m, i8 %n7125 ret i8 %ret7126}7127 7128define i8 @selectRI_slt_i8(i8 %x, i8 %n, i8 %m) {7129; CHECK-LABEL: selectRI_slt_i8:7130; CHECK: # %bb.0: # %entry7131; CHECK-NEXT: sextb16 a0, a07132; CHECK-NEXT: cmplti16 a0, 107133; CHECK-NEXT: movt32 a1, a27134; CHECK-NEXT: mov16 a0, a17135; CHECK-NEXT: rts167136;7137; GENERIC-LABEL: selectRI_slt_i8:7138; GENERIC: # %bb.0: # %entry7139; GENERIC-NEXT: .cfi_def_cfa_offset 07140; GENERIC-NEXT: subi16 sp, sp, 47141; GENERIC-NEXT: .cfi_def_cfa_offset 47142; GENERIC-NEXT: sextb16 a0, a07143; GENERIC-NEXT: cmplti16 a0, 107144; GENERIC-NEXT: mvcv16 a07145; GENERIC-NEXT: movi16 a3, 17146; GENERIC-NEXT: subu16 a3, a07147; GENERIC-NEXT: btsti16 a3, 07148; GENERIC-NEXT: bt16 .LBB175_27149; GENERIC-NEXT: # %bb.1: # %entry7150; GENERIC-NEXT: mov16 a2, a17151; GENERIC-NEXT: .LBB175_2: # %entry7152; GENERIC-NEXT: mov16 a0, a27153; GENERIC-NEXT: addi16 sp, sp, 47154; GENERIC-NEXT: rts167155entry:7156 %icmp = icmp slt i8 %x, 107157 %ret = select i1 %icmp, i8 %m, i8 %n7158 ret i8 %ret7159}7160 7161define i8 @selectRX_slt_i8(i8 %x, i8 %n, i8 %m) {7162; CHECK-LABEL: selectRX_slt_i8:7163; CHECK: # %bb.0: # %entry7164; CHECK-NEXT: sextb16 a0, a07165; CHECK-NEXT: movih32 a3, 655357166; CHECK-NEXT: ori32 a3, a3, 655217167; CHECK-NEXT: cmplt16 a0, a37168; CHECK-NEXT: movt32 a1, a27169; CHECK-NEXT: mov16 a0, a17170; CHECK-NEXT: rts167171;7172; GENERIC-LABEL: selectRX_slt_i8:7173; GENERIC: # %bb.0: # %entry7174; GENERIC-NEXT: subi16 sp, sp, 87175; GENERIC-NEXT: .cfi_def_cfa_offset 87176; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill7177; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill7178; GENERIC-NEXT: .cfi_offset l1, -47179; GENERIC-NEXT: .cfi_offset l0, -87180; GENERIC-NEXT: subi16 sp, sp, 47181; GENERIC-NEXT: .cfi_def_cfa_offset 127182; GENERIC-NEXT: sextb16 a0, a07183; GENERIC-NEXT: movi16 a3, 2557184; GENERIC-NEXT: lsli16 l0, a3, 247185; GENERIC-NEXT: lsli16 l1, a3, 167186; GENERIC-NEXT: or16 l1, l07187; GENERIC-NEXT: lsli16 a3, a3, 87188; GENERIC-NEXT: or16 a3, l17189; GENERIC-NEXT: movi16 l0, 2417190; GENERIC-NEXT: or16 l0, a37191; GENERIC-NEXT: cmplt16 a0, l07192; GENERIC-NEXT: mvcv16 a07193; GENERIC-NEXT: movi16 a3, 17194; GENERIC-NEXT: subu16 a3, a07195; GENERIC-NEXT: btsti16 a3, 07196; GENERIC-NEXT: bt16 .LBB176_27197; GENERIC-NEXT: # %bb.1: # %entry7198; GENERIC-NEXT: mov16 a2, a17199; GENERIC-NEXT: .LBB176_2: # %entry7200; GENERIC-NEXT: mov16 a0, a27201; GENERIC-NEXT: addi16 sp, sp, 47202; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload7203; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload7204; GENERIC-NEXT: addi16 sp, sp, 87205; GENERIC-NEXT: rts167206entry:7207 %icmp = icmp slt i8 %x, 477777777208 %ret = select i1 %icmp, i8 %m, i8 %n7209 ret i8 %ret7210}7211 7212define i8 @selectC_slt_i8(i1 %c, i8 %n, i8 %m) {7213; CHECK-LABEL: selectC_slt_i8:7214; CHECK: # %bb.0: # %entry7215; CHECK-NEXT: btsti16 a0, 07216; CHECK-NEXT: movt32 a1, a27217; CHECK-NEXT: mov16 a0, a17218; CHECK-NEXT: rts167219;7220; GENERIC-LABEL: selectC_slt_i8:7221; GENERIC: # %bb.0: # %entry7222; GENERIC-NEXT: .cfi_def_cfa_offset 07223; GENERIC-NEXT: subi16 sp, sp, 47224; GENERIC-NEXT: .cfi_def_cfa_offset 47225; GENERIC-NEXT: btsti16 a0, 07226; GENERIC-NEXT: bt16 .LBB177_27227; GENERIC-NEXT: # %bb.1: # %entry7228; GENERIC-NEXT: mov16 a2, a17229; GENERIC-NEXT: .LBB177_2: # %entry7230; GENERIC-NEXT: mov16 a0, a27231; GENERIC-NEXT: addi16 sp, sp, 47232; GENERIC-NEXT: rts167233entry:7234 %ret = select i1 %c, i8 %m, i8 %n7235 ret i8 %ret7236}7237 7238 7239define i1 @selectRR_slt_i1(i1 %x, i1 %y, i1 %n, i1 %m) {7240; CHECK-LABEL: selectRR_slt_i1:7241; CHECK: # %bb.0: # %entry7242; CHECK-NEXT: btsti16 a0, 07243; CHECK-NEXT: movt32 a3, a27244; CHECK-NEXT: btsti16 a1, 07245; CHECK-NEXT: movt32 a2, a37246; CHECK-NEXT: mov16 a0, a27247; CHECK-NEXT: rts167248;7249; GENERIC-LABEL: selectRR_slt_i1:7250; GENERIC: # %bb.0: # %entry7251; GENERIC-NEXT: .cfi_def_cfa_offset 07252; GENERIC-NEXT: subi16 sp, sp, 47253; GENERIC-NEXT: .cfi_def_cfa_offset 47254; GENERIC-NEXT: btsti16 a0, 07255; GENERIC-NEXT: mov16 a0, a27256; GENERIC-NEXT: bf16 .LBB178_37257; GENERIC-NEXT: # %bb.1: # %entry7258; GENERIC-NEXT: btsti16 a1, 07259; GENERIC-NEXT: bf16 .LBB178_47260; GENERIC-NEXT: .LBB178_2: # %entry7261; GENERIC-NEXT: addi16 sp, sp, 47262; GENERIC-NEXT: rts167263; GENERIC-NEXT: .LBB178_3: # %entry7264; GENERIC-NEXT: mov16 a0, a37265; GENERIC-NEXT: btsti16 a1, 07266; GENERIC-NEXT: bt16 .LBB178_27267; GENERIC-NEXT: .LBB178_4: # %entry7268; GENERIC-NEXT: mov16 a0, a27269; GENERIC-NEXT: addi16 sp, sp, 47270; GENERIC-NEXT: rts167271entry:7272 %icmp = icmp slt i1 %y, %x7273 %ret = select i1 %icmp, i1 %m, i1 %n7274 ret i1 %ret7275}7276 7277define i1 @selectRI_slt_i1(i1 %x, i1 %n, i1 %m) {7278; CHECK-LABEL: selectRI_slt_i1:7279; CHECK: # %bb.0: # %entry7280; CHECK-NEXT: btsti16 a0, 07281; CHECK-NEXT: movt32 a1, a27282; CHECK-NEXT: mov16 a0, a17283; CHECK-NEXT: rts167284;7285; GENERIC-LABEL: selectRI_slt_i1:7286; GENERIC: # %bb.0: # %entry7287; GENERIC-NEXT: .cfi_def_cfa_offset 07288; GENERIC-NEXT: subi16 sp, sp, 47289; GENERIC-NEXT: .cfi_def_cfa_offset 47290; GENERIC-NEXT: btsti16 a0, 07291; GENERIC-NEXT: bt16 .LBB179_27292; GENERIC-NEXT: # %bb.1: # %entry7293; GENERIC-NEXT: mov16 a2, a17294; GENERIC-NEXT: .LBB179_2: # %entry7295; GENERIC-NEXT: mov16 a0, a27296; GENERIC-NEXT: addi16 sp, sp, 47297; GENERIC-NEXT: rts167298entry:7299 %icmp = icmp slt i1 %x, 107300 %ret = select i1 %icmp, i1 %m, i1 %n7301 ret i1 %ret7302}7303 7304define i1 @selectRX_slt_i1(i1 %x, i1 %n, i1 %m) {7305; CHECK-LABEL: selectRX_slt_i1:7306; CHECK: # %bb.0: # %entry7307; CHECK-NEXT: mov16 a0, a17308; CHECK-NEXT: rts167309;7310; GENERIC-LABEL: selectRX_slt_i1:7311; GENERIC: # %bb.0: # %entry7312; GENERIC-NEXT: .cfi_def_cfa_offset 07313; GENERIC-NEXT: subi16 sp, sp, 47314; GENERIC-NEXT: .cfi_def_cfa_offset 47315; GENERIC-NEXT: mov16 a0, a17316; GENERIC-NEXT: addi16 sp, sp, 47317; GENERIC-NEXT: rts167318entry:7319 %icmp = icmp slt i1 %x, 477777777320 %ret = select i1 %icmp, i1 %m, i1 %n7321 ret i1 %ret7322}7323 7324define i1 @selectC_slt_i1(i1 %c, i1 %n, i1 %m) {7325; CHECK-LABEL: selectC_slt_i1:7326; CHECK: # %bb.0: # %entry7327; CHECK-NEXT: btsti16 a0, 07328; CHECK-NEXT: movt32 a1, a27329; CHECK-NEXT: mov16 a0, a17330; CHECK-NEXT: rts167331;7332; GENERIC-LABEL: selectC_slt_i1:7333; GENERIC: # %bb.0: # %entry7334; GENERIC-NEXT: .cfi_def_cfa_offset 07335; GENERIC-NEXT: subi16 sp, sp, 47336; GENERIC-NEXT: .cfi_def_cfa_offset 47337; GENERIC-NEXT: btsti16 a0, 07338; GENERIC-NEXT: bt16 .LBB181_27339; GENERIC-NEXT: # %bb.1: # %entry7340; GENERIC-NEXT: mov16 a2, a17341; GENERIC-NEXT: .LBB181_2: # %entry7342; GENERIC-NEXT: mov16 a0, a27343; GENERIC-NEXT: addi16 sp, sp, 47344; GENERIC-NEXT: rts167345entry:7346 %ret = select i1 %c, i1 %m, i1 %n7347 ret i1 %ret7348}7349 7350define i32 @selectRR_sle_i32(i32 %x, i32 %y, i32 %n, i32 %m) {7351; CHECK-LABEL: selectRR_sle_i32:7352; CHECK: # %bb.0: # %entry7353; CHECK-NEXT: cmplt16 a0, a17354; CHECK-NEXT: movf32 a2, a37355; CHECK-NEXT: mov16 a0, a27356; CHECK-NEXT: rts167357;7358; GENERIC-LABEL: selectRR_sle_i32:7359; GENERIC: # %bb.0: # %entry7360; GENERIC-NEXT: .cfi_def_cfa_offset 07361; GENERIC-NEXT: subi16 sp, sp, 47362; GENERIC-NEXT: .cfi_def_cfa_offset 47363; GENERIC-NEXT: cmplt16 a0, a17364; GENERIC-NEXT: mvcv16 a07365; GENERIC-NEXT: btsti16 a0, 07366; GENERIC-NEXT: bt16 .LBB182_27367; GENERIC-NEXT: # %bb.1: # %entry7368; GENERIC-NEXT: mov16 a3, a27369; GENERIC-NEXT: .LBB182_2: # %entry7370; GENERIC-NEXT: mov16 a0, a37371; GENERIC-NEXT: addi16 sp, sp, 47372; GENERIC-NEXT: rts167373entry:7374 %icmp = icmp sle i32 %y, %x7375 %ret = select i1 %icmp, i32 %m, i32 %n7376 ret i32 %ret7377}7378 7379define i32 @selectRI_sle_i32(i32 %x, i32 %n, i32 %m) {7380; CHECK-LABEL: selectRI_sle_i32:7381; CHECK: # %bb.0: # %entry7382; CHECK-NEXT: cmplti16 a0, 117383; CHECK-NEXT: movt32 a1, a27384; CHECK-NEXT: mov16 a0, a17385; CHECK-NEXT: rts167386;7387; GENERIC-LABEL: selectRI_sle_i32:7388; GENERIC: # %bb.0: # %entry7389; GENERIC-NEXT: .cfi_def_cfa_offset 07390; GENERIC-NEXT: subi16 sp, sp, 47391; GENERIC-NEXT: .cfi_def_cfa_offset 47392; GENERIC-NEXT: cmplti16 a0, 117393; GENERIC-NEXT: mvcv16 a07394; GENERIC-NEXT: movi16 a3, 17395; GENERIC-NEXT: subu16 a3, a07396; GENERIC-NEXT: btsti16 a3, 07397; GENERIC-NEXT: bt16 .LBB183_27398; GENERIC-NEXT: # %bb.1: # %entry7399; GENERIC-NEXT: mov16 a2, a17400; GENERIC-NEXT: .LBB183_2: # %entry7401; GENERIC-NEXT: mov16 a0, a27402; GENERIC-NEXT: addi16 sp, sp, 47403; GENERIC-NEXT: rts167404entry:7405 %icmp = icmp sle i32 %x, 107406 %ret = select i1 %icmp, i32 %m, i32 %n7407 ret i32 %ret7408}7409 7410define i32 @selectRX_sle_i32(i32 %x, i32 %n, i32 %m) {7411; CHECK-LABEL: selectRX_sle_i32:7412; CHECK: # %bb.0: # %entry7413; CHECK-NEXT: movih32 a3, 7297414; CHECK-NEXT: ori32 a3, a3, 20347415; CHECK-NEXT: cmplt16 a0, a37416; CHECK-NEXT: movt32 a1, a27417; CHECK-NEXT: mov16 a0, a17418; CHECK-NEXT: rts167419;7420; GENERIC-LABEL: selectRX_sle_i32:7421; GENERIC: # %bb.0: # %entry7422; GENERIC-NEXT: subi16 sp, sp, 47423; GENERIC-NEXT: .cfi_def_cfa_offset 47424; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill7425; GENERIC-NEXT: .cfi_offset l0, -47426; GENERIC-NEXT: subi16 sp, sp, 47427; GENERIC-NEXT: .cfi_def_cfa_offset 87428; GENERIC-NEXT: movi16 a3, 27429; GENERIC-NEXT: lsli16 a3, a3, 247430; GENERIC-NEXT: movi16 l0, 2177431; GENERIC-NEXT: lsli16 l0, l0, 167432; GENERIC-NEXT: or16 l0, a37433; GENERIC-NEXT: movi16 a3, 77434; GENERIC-NEXT: lsli16 a3, a3, 87435; GENERIC-NEXT: or16 a3, l07436; GENERIC-NEXT: movi16 l0, 2427437; GENERIC-NEXT: or16 l0, a37438; GENERIC-NEXT: cmplt16 a0, l07439; GENERIC-NEXT: mvcv16 a07440; GENERIC-NEXT: movi16 a3, 17441; GENERIC-NEXT: subu16 a3, a07442; GENERIC-NEXT: btsti16 a3, 07443; GENERIC-NEXT: bt16 .LBB184_27444; GENERIC-NEXT: # %bb.1: # %entry7445; GENERIC-NEXT: mov16 a2, a17446; GENERIC-NEXT: .LBB184_2: # %entry7447; GENERIC-NEXT: mov16 a0, a27448; GENERIC-NEXT: addi16 sp, sp, 47449; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload7450; GENERIC-NEXT: addi16 sp, sp, 47451; GENERIC-NEXT: rts167452entry:7453 %icmp = icmp sle i32 %x, 477777777454 %ret = select i1 %icmp, i32 %m, i32 %n7455 ret i32 %ret7456}7457 7458define i32 @selectC_sle_i32(i1 %c, i32 %n, i32 %m) {7459; CHECK-LABEL: selectC_sle_i32:7460; CHECK: # %bb.0: # %entry7461; CHECK-NEXT: btsti16 a0, 07462; CHECK-NEXT: movt32 a1, a27463; CHECK-NEXT: mov16 a0, a17464; CHECK-NEXT: rts167465;7466; GENERIC-LABEL: selectC_sle_i32:7467; GENERIC: # %bb.0: # %entry7468; GENERIC-NEXT: .cfi_def_cfa_offset 07469; GENERIC-NEXT: subi16 sp, sp, 47470; GENERIC-NEXT: .cfi_def_cfa_offset 47471; GENERIC-NEXT: btsti16 a0, 07472; GENERIC-NEXT: bt16 .LBB185_27473; GENERIC-NEXT: # %bb.1: # %entry7474; GENERIC-NEXT: mov16 a2, a17475; GENERIC-NEXT: .LBB185_2: # %entry7476; GENERIC-NEXT: mov16 a0, a27477; GENERIC-NEXT: addi16 sp, sp, 47478; GENERIC-NEXT: rts167479entry:7480 %ret = select i1 %c, i32 %m, i32 %n7481 ret i32 %ret7482}7483 7484define i64 @selectRR_sle_i64(i64 %x, i64 %y, i64 %n, i64 %m) {7485; CHECK-LABEL: selectRR_sle_i64:7486; CHECK: # %bb.0: # %entry7487; CHECK-NEXT: .cfi_def_cfa_offset 07488; CHECK-NEXT: subi16 sp, sp, 127489; CHECK-NEXT: .cfi_def_cfa_offset 127490; CHECK-NEXT: cmphs16 a0, a27491; CHECK-NEXT: mvc32 a07492; CHECK-NEXT: st16.w a0, (sp, 4)7493; CHECK-NEXT: cmpne16 a3, a17494; CHECK-NEXT: mvc32 a07495; CHECK-NEXT: st16.w a0, (sp, 8)7496; CHECK-NEXT: cmplt16 a1, a37497; CHECK-NEXT: mvcv16 a07498; CHECK-NEXT: ld16.w a1, (sp, 4)7499; CHECK-NEXT: btsti16 a1, 07500; CHECK-NEXT: mvc32 a17501; CHECK-NEXT: ld16.w a2, (sp, 8)7502; CHECK-NEXT: btsti16 a2, 07503; CHECK-NEXT: movf32 a0, a17504; CHECK-NEXT: addi16 a1, sp, 127505; CHECK-NEXT: addi16 a2, sp, 207506; CHECK-NEXT: btsti16 a0, 07507; CHECK-NEXT: movt32 a1, a27508; CHECK-NEXT: ld16.w a0, (a1, 0)7509; CHECK-NEXT: ld16.w a1, (a1, 4)7510; CHECK-NEXT: addi16 sp, sp, 127511; CHECK-NEXT: rts167512;7513; GENERIC-LABEL: selectRR_sle_i64:7514; GENERIC: # %bb.0: # %entry7515; GENERIC-NEXT: .cfi_def_cfa_offset 07516; GENERIC-NEXT: subi16 sp, sp, 47517; GENERIC-NEXT: .cfi_def_cfa_offset 47518; GENERIC-NEXT: cmphs16 a0, a27519; GENERIC-NEXT: mvcv16 a27520; GENERIC-NEXT: cmplt16 a1, a37521; GENERIC-NEXT: mvcv16 a07522; GENERIC-NEXT: cmpne16 a3, a17523; GENERIC-NEXT: mvcv16 a17524; GENERIC-NEXT: btsti16 a1, 07525; GENERIC-NEXT: bf16 .LBB186_27526; GENERIC-NEXT: # %bb.1:7527; GENERIC-NEXT: movi16 a0, 17528; GENERIC-NEXT: subu16 a0, a27529; GENERIC-NEXT: .LBB186_2: # %entry7530; GENERIC-NEXT: btsti16 a0, 07531; GENERIC-NEXT: bt16 .LBB186_47532; GENERIC-NEXT: # %bb.3: # %entry7533; GENERIC-NEXT: movi16 a0, 47534; GENERIC-NEXT: br32 .LBB186_57535; GENERIC-NEXT: .LBB186_4:7536; GENERIC-NEXT: movi16 a0, 127537; GENERIC-NEXT: .LBB186_5: # %entry7538; GENERIC-NEXT: addu16 a0, sp7539; GENERIC-NEXT: mov16 a1, a07540; GENERIC-NEXT: ld16.w a0, (a0, 0)7541; GENERIC-NEXT: ld16.w a1, (a1, 4)7542; GENERIC-NEXT: addi16 sp, sp, 47543; GENERIC-NEXT: rts167544entry:7545 %icmp = icmp sle i64 %y, %x7546 %ret = select i1 %icmp, i64 %m, i64 %n7547 ret i64 %ret7548}7549 7550define i64 @selectRI_sle_i64(i64 %x, i64 %n, i64 %m) {7551; CHECK-LABEL: selectRI_sle_i64:7552; CHECK: # %bb.0: # %entry7553; CHECK-NEXT: subi16 sp, sp, 47554; CHECK-NEXT: .cfi_def_cfa_offset 47555; CHECK-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill7556; CHECK-NEXT: .cfi_offset l0, -47557; CHECK-NEXT: subi16 sp, sp, 127558; CHECK-NEXT: .cfi_def_cfa_offset 167559; CHECK-NEXT: ld32.w t0, (sp, 20)7560; CHECK-NEXT: ld32.w t1, (sp, 16)7561; CHECK-NEXT: movi16 l0, 07562; CHECK-NEXT: cmplt16 a1, l07563; CHECK-NEXT: mvc32 l07564; CHECK-NEXT: st16.w l0, (sp, 4)7565; CHECK-NEXT: cmpnei16 a1, 07566; CHECK-NEXT: mvc32 a17567; CHECK-NEXT: st16.w a1, (sp, 8)7568; CHECK-NEXT: cmphsi16 a0, 117569; CHECK-NEXT: mvcv16 a07570; CHECK-NEXT: ld16.w a1, (sp, 4)7571; CHECK-NEXT: btsti16 a1, 07572; CHECK-NEXT: mvc32 a17573; CHECK-NEXT: ld16.w l0, (sp, 8)7574; CHECK-NEXT: btsti16 l0, 07575; CHECK-NEXT: movf32 a1, a07576; CHECK-NEXT: btsti16 a1, 07577; CHECK-NEXT: movt32 a2, t17578; CHECK-NEXT: movt32 a3, t07579; CHECK-NEXT: mov16 a0, a27580; CHECK-NEXT: mov16 a1, a37581; CHECK-NEXT: addi16 sp, sp, 127582; CHECK-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload7583; CHECK-NEXT: addi16 sp, sp, 47584; CHECK-NEXT: rts167585;7586; GENERIC-LABEL: selectRI_sle_i64:7587; GENERIC: # %bb.0: # %entry7588; GENERIC-NEXT: subi16 sp, sp, 47589; GENERIC-NEXT: .cfi_def_cfa_offset 47590; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill7591; GENERIC-NEXT: .cfi_offset l0, -47592; GENERIC-NEXT: subi16 sp, sp, 47593; GENERIC-NEXT: .cfi_def_cfa_offset 87594; GENERIC-NEXT: movi16 l0, 07595; GENERIC-NEXT: cmplt16 a1, l07596; GENERIC-NEXT: mvcv16 l07597; GENERIC-NEXT: cmphsi16 a0, 117598; GENERIC-NEXT: mvcv16 a07599; GENERIC-NEXT: cmpnei16 a1, 07600; GENERIC-NEXT: mvcv16 a17601; GENERIC-NEXT: btsti16 a1, 07602; GENERIC-NEXT: bf16 .LBB187_57603; GENERIC-NEXT: # %bb.1: # %entry7604; GENERIC-NEXT: btsti16 a0, 07605; GENERIC-NEXT: bt16 .LBB187_67606; GENERIC-NEXT: .LBB187_2: # %entry7607; GENERIC-NEXT: btsti16 a0, 07608; GENERIC-NEXT: bf16 .LBB187_47609; GENERIC-NEXT: .LBB187_3:7610; GENERIC-NEXT: ld16.w a3, (sp, 12)7611; GENERIC-NEXT: .LBB187_4: # %entry7612; GENERIC-NEXT: mov16 a0, a27613; GENERIC-NEXT: mov16 a1, a37614; GENERIC-NEXT: addi16 sp, sp, 47615; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload7616; GENERIC-NEXT: addi16 sp, sp, 47617; GENERIC-NEXT: rts167618; GENERIC-NEXT: .LBB187_5: # %entry7619; GENERIC-NEXT: movi16 a0, 17620; GENERIC-NEXT: subu16 a0, l07621; GENERIC-NEXT: btsti16 a0, 07622; GENERIC-NEXT: bf16 .LBB187_27623; GENERIC-NEXT: .LBB187_6:7624; GENERIC-NEXT: ld16.w a2, (sp, 8)7625; GENERIC-NEXT: btsti16 a0, 07626; GENERIC-NEXT: bt16 .LBB187_37627; GENERIC-NEXT: br32 .LBB187_47628entry:7629 %icmp = icmp sle i64 %x, 107630 %ret = select i1 %icmp, i64 %m, i64 %n7631 ret i64 %ret7632}7633 7634define i64 @selectRX_sle_i64(i64 %x, i64 %n, i64 %m) {7635; CHECK-LABEL: selectRX_sle_i64:7636; CHECK: # %bb.0: # %entry7637; CHECK-NEXT: subi16 sp, sp, 47638; CHECK-NEXT: .cfi_def_cfa_offset 47639; CHECK-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill7640; CHECK-NEXT: .cfi_offset l0, -47641; CHECK-NEXT: subi16 sp, sp, 127642; CHECK-NEXT: .cfi_def_cfa_offset 167643; CHECK-NEXT: ld32.w t0, (sp, 20)7644; CHECK-NEXT: ld32.w t1, (sp, 16)7645; CHECK-NEXT: movi16 l0, 07646; CHECK-NEXT: cmplt16 a1, l07647; CHECK-NEXT: mvc32 l07648; CHECK-NEXT: st16.w l0, (sp, 8)7649; CHECK-NEXT: movih32 l0, 7297650; CHECK-NEXT: ori32 l0, l0, 20347651; CHECK-NEXT: cmphs16 a0, l07652; CHECK-NEXT: mvcv16 a07653; CHECK-NEXT: cmpnei16 a1, 07654; CHECK-NEXT: mvc32 a17655; CHECK-NEXT: st16.w a1, (sp, 4)7656; CHECK-NEXT: ld16.w a1, (sp, 8)7657; CHECK-NEXT: btsti16 a1, 07658; CHECK-NEXT: mvc32 a17659; CHECK-NEXT: ld16.w l0, (sp, 4)7660; CHECK-NEXT: btsti16 l0, 07661; CHECK-NEXT: movf32 a1, a07662; CHECK-NEXT: btsti16 a1, 07663; CHECK-NEXT: movt32 a2, t17664; CHECK-NEXT: movt32 a3, t07665; CHECK-NEXT: mov16 a0, a27666; CHECK-NEXT: mov16 a1, a37667; CHECK-NEXT: addi16 sp, sp, 127668; CHECK-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload7669; CHECK-NEXT: addi16 sp, sp, 47670; CHECK-NEXT: rts167671;7672; GENERIC-LABEL: selectRX_sle_i64:7673; GENERIC: # %bb.0: # %entry7674; GENERIC-NEXT: subi16 sp, sp, 127675; GENERIC-NEXT: .cfi_def_cfa_offset 127676; GENERIC-NEXT: st16.w l2, (sp, 8) # 4-byte Folded Spill7677; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill7678; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill7679; GENERIC-NEXT: .cfi_offset l2, -47680; GENERIC-NEXT: .cfi_offset l1, -87681; GENERIC-NEXT: .cfi_offset l0, -127682; GENERIC-NEXT: subi16 sp, sp, 47683; GENERIC-NEXT: .cfi_def_cfa_offset 167684; GENERIC-NEXT: movi16 l0, 07685; GENERIC-NEXT: cmplt16 a1, l07686; GENERIC-NEXT: mvcv16 l07687; GENERIC-NEXT: movi16 l1, 27688; GENERIC-NEXT: lsli16 l1, l1, 247689; GENERIC-NEXT: movi16 l2, 2177690; GENERIC-NEXT: lsli16 l2, l2, 167691; GENERIC-NEXT: or16 l2, l17692; GENERIC-NEXT: movi16 l1, 77693; GENERIC-NEXT: lsli16 l1, l1, 87694; GENERIC-NEXT: or16 l1, l27695; GENERIC-NEXT: movi16 l2, 2427696; GENERIC-NEXT: or16 l2, l17697; GENERIC-NEXT: cmphs16 a0, l27698; GENERIC-NEXT: mvcv16 a07699; GENERIC-NEXT: cmpnei16 a1, 07700; GENERIC-NEXT: mvcv16 a17701; GENERIC-NEXT: btsti16 a1, 07702; GENERIC-NEXT: bf16 .LBB188_57703; GENERIC-NEXT: # %bb.1: # %entry7704; GENERIC-NEXT: btsti16 a0, 07705; GENERIC-NEXT: bt16 .LBB188_67706; GENERIC-NEXT: .LBB188_2: # %entry7707; GENERIC-NEXT: btsti16 a0, 07708; GENERIC-NEXT: bf16 .LBB188_47709; GENERIC-NEXT: .LBB188_3:7710; GENERIC-NEXT: ld16.w a3, (sp, 20)7711; GENERIC-NEXT: .LBB188_4: # %entry7712; GENERIC-NEXT: mov16 a0, a27713; GENERIC-NEXT: mov16 a1, a37714; GENERIC-NEXT: addi16 sp, sp, 47715; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload7716; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload7717; GENERIC-NEXT: ld16.w l2, (sp, 8) # 4-byte Folded Reload7718; GENERIC-NEXT: addi16 sp, sp, 127719; GENERIC-NEXT: rts167720; GENERIC-NEXT: .LBB188_5: # %entry7721; GENERIC-NEXT: movi16 a0, 17722; GENERIC-NEXT: subu16 a0, l07723; GENERIC-NEXT: btsti16 a0, 07724; GENERIC-NEXT: bf16 .LBB188_27725; GENERIC-NEXT: .LBB188_6:7726; GENERIC-NEXT: ld16.w a2, (sp, 16)7727; GENERIC-NEXT: btsti16 a0, 07728; GENERIC-NEXT: bt16 .LBB188_37729; GENERIC-NEXT: br32 .LBB188_47730entry:7731 %icmp = icmp sle i64 %x, 477777777732 %ret = select i1 %icmp, i64 %m, i64 %n7733 ret i64 %ret7734}7735 7736define i64 @selectC_sle_i64(i1 %c, i64 %n, i64 %m) {7737; CHECK-LABEL: selectC_sle_i64:7738; CHECK: # %bb.0: # %entry7739; CHECK-NEXT: ld32.w t0, (sp, 0)7740; CHECK-NEXT: btsti16 a0, 07741; CHECK-NEXT: movt32 a1, a37742; CHECK-NEXT: movt32 a2, t07743; CHECK-NEXT: mov16 a0, a17744; CHECK-NEXT: mov16 a1, a27745; CHECK-NEXT: rts167746;7747; GENERIC-LABEL: selectC_sle_i64:7748; GENERIC: # %bb.0: # %entry7749; GENERIC-NEXT: .cfi_def_cfa_offset 07750; GENERIC-NEXT: subi16 sp, sp, 47751; GENERIC-NEXT: .cfi_def_cfa_offset 47752; GENERIC-NEXT: btsti16 a0, 07753; GENERIC-NEXT: bt16 .LBB189_27754; GENERIC-NEXT: # %bb.1: # %entry7755; GENERIC-NEXT: mov16 a3, a17756; GENERIC-NEXT: .LBB189_2: # %entry7757; GENERIC-NEXT: btsti16 a0, 07758; GENERIC-NEXT: bf16 .LBB189_47759; GENERIC-NEXT: # %bb.3:7760; GENERIC-NEXT: ld16.w a2, (sp, 4)7761; GENERIC-NEXT: .LBB189_4: # %entry7762; GENERIC-NEXT: mov16 a0, a37763; GENERIC-NEXT: mov16 a1, a27764; GENERIC-NEXT: addi16 sp, sp, 47765; GENERIC-NEXT: rts167766entry:7767 %ret = select i1 %c, i64 %m, i64 %n7768 ret i64 %ret7769}7770 7771 7772define i16 @selectRR_sle_i16(i16 %x, i16 %y, i16 %n, i16 %m) {7773; CHECK-LABEL: selectRR_sle_i16:7774; CHECK: # %bb.0: # %entry7775; CHECK-NEXT: sexth16 a1, a17776; CHECK-NEXT: sexth16 a0, a07777; CHECK-NEXT: cmplt16 a0, a17778; CHECK-NEXT: movf32 a2, a37779; CHECK-NEXT: mov16 a0, a27780; CHECK-NEXT: rts167781;7782; GENERIC-LABEL: selectRR_sle_i16:7783; GENERIC: # %bb.0: # %entry7784; GENERIC-NEXT: .cfi_def_cfa_offset 07785; GENERIC-NEXT: subi16 sp, sp, 47786; GENERIC-NEXT: .cfi_def_cfa_offset 47787; GENERIC-NEXT: sexth16 a1, a17788; GENERIC-NEXT: sexth16 a0, a07789; GENERIC-NEXT: cmplt16 a0, a17790; GENERIC-NEXT: mvcv16 a07791; GENERIC-NEXT: btsti16 a0, 07792; GENERIC-NEXT: bt16 .LBB190_27793; GENERIC-NEXT: # %bb.1: # %entry7794; GENERIC-NEXT: mov16 a3, a27795; GENERIC-NEXT: .LBB190_2: # %entry7796; GENERIC-NEXT: mov16 a0, a37797; GENERIC-NEXT: addi16 sp, sp, 47798; GENERIC-NEXT: rts167799entry:7800 %icmp = icmp sle i16 %y, %x7801 %ret = select i1 %icmp, i16 %m, i16 %n7802 ret i16 %ret7803}7804 7805define i16 @selectRI_sle_i16(i16 %x, i16 %n, i16 %m) {7806; CHECK-LABEL: selectRI_sle_i16:7807; CHECK: # %bb.0: # %entry7808; CHECK-NEXT: sexth16 a0, a07809; CHECK-NEXT: cmplti16 a0, 117810; CHECK-NEXT: movt32 a1, a27811; CHECK-NEXT: mov16 a0, a17812; CHECK-NEXT: rts167813;7814; GENERIC-LABEL: selectRI_sle_i16:7815; GENERIC: # %bb.0: # %entry7816; GENERIC-NEXT: .cfi_def_cfa_offset 07817; GENERIC-NEXT: subi16 sp, sp, 47818; GENERIC-NEXT: .cfi_def_cfa_offset 47819; GENERIC-NEXT: sexth16 a0, a07820; GENERIC-NEXT: cmplti16 a0, 117821; GENERIC-NEXT: mvcv16 a07822; GENERIC-NEXT: movi16 a3, 17823; GENERIC-NEXT: subu16 a3, a07824; GENERIC-NEXT: btsti16 a3, 07825; GENERIC-NEXT: bt16 .LBB191_27826; GENERIC-NEXT: # %bb.1: # %entry7827; GENERIC-NEXT: mov16 a2, a17828; GENERIC-NEXT: .LBB191_2: # %entry7829; GENERIC-NEXT: mov16 a0, a27830; GENERIC-NEXT: addi16 sp, sp, 47831; GENERIC-NEXT: rts167832entry:7833 %icmp = icmp sle i16 %x, 107834 %ret = select i1 %icmp, i16 %m, i16 %n7835 ret i16 %ret7836}7837 7838define i16 @selectRX_sle_i16(i16 %x, i16 %n, i16 %m) {7839; CHECK-LABEL: selectRX_sle_i16:7840; CHECK: # %bb.0: # %entry7841; CHECK-NEXT: sexth16 a0, a07842; CHECK-NEXT: cmplti32 a0, 20347843; CHECK-NEXT: movt32 a1, a27844; CHECK-NEXT: mov16 a0, a17845; CHECK-NEXT: rts167846;7847; GENERIC-LABEL: selectRX_sle_i16:7848; GENERIC: # %bb.0: # %entry7849; GENERIC-NEXT: subi16 sp, sp, 47850; GENERIC-NEXT: .cfi_def_cfa_offset 47851; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill7852; GENERIC-NEXT: .cfi_offset l0, -47853; GENERIC-NEXT: subi16 sp, sp, 47854; GENERIC-NEXT: .cfi_def_cfa_offset 87855; GENERIC-NEXT: sexth16 a0, a07856; GENERIC-NEXT: movi16 a3, 07857; GENERIC-NEXT: lsli16 l0, a3, 247858; GENERIC-NEXT: lsli16 a3, a3, 167859; GENERIC-NEXT: or16 a3, l07860; GENERIC-NEXT: movi16 l0, 77861; GENERIC-NEXT: lsli16 l0, l0, 87862; GENERIC-NEXT: or16 l0, a37863; GENERIC-NEXT: movi16 a3, 2427864; GENERIC-NEXT: or16 a3, l07865; GENERIC-NEXT: cmplt16 a0, a37866; GENERIC-NEXT: mvcv16 a07867; GENERIC-NEXT: movi16 a3, 17868; GENERIC-NEXT: subu16 a3, a07869; GENERIC-NEXT: btsti16 a3, 07870; GENERIC-NEXT: bt16 .LBB192_27871; GENERIC-NEXT: # %bb.1: # %entry7872; GENERIC-NEXT: mov16 a2, a17873; GENERIC-NEXT: .LBB192_2: # %entry7874; GENERIC-NEXT: mov16 a0, a27875; GENERIC-NEXT: addi16 sp, sp, 47876; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload7877; GENERIC-NEXT: addi16 sp, sp, 47878; GENERIC-NEXT: rts167879entry:7880 %icmp = icmp sle i16 %x, 477777777881 %ret = select i1 %icmp, i16 %m, i16 %n7882 ret i16 %ret7883}7884 7885define i16 @selectC_sle_i16(i1 %c, i16 %n, i16 %m) {7886; CHECK-LABEL: selectC_sle_i16:7887; CHECK: # %bb.0: # %entry7888; CHECK-NEXT: btsti16 a0, 07889; CHECK-NEXT: movt32 a1, a27890; CHECK-NEXT: mov16 a0, a17891; CHECK-NEXT: rts167892;7893; GENERIC-LABEL: selectC_sle_i16:7894; GENERIC: # %bb.0: # %entry7895; GENERIC-NEXT: .cfi_def_cfa_offset 07896; GENERIC-NEXT: subi16 sp, sp, 47897; GENERIC-NEXT: .cfi_def_cfa_offset 47898; GENERIC-NEXT: btsti16 a0, 07899; GENERIC-NEXT: bt16 .LBB193_27900; GENERIC-NEXT: # %bb.1: # %entry7901; GENERIC-NEXT: mov16 a2, a17902; GENERIC-NEXT: .LBB193_2: # %entry7903; GENERIC-NEXT: mov16 a0, a27904; GENERIC-NEXT: addi16 sp, sp, 47905; GENERIC-NEXT: rts167906entry:7907 %ret = select i1 %c, i16 %m, i16 %n7908 ret i16 %ret7909}7910 7911 7912define i8 @selectRR_sle_i8(i8 %x, i8 %y, i8 %n, i8 %m) {7913; CHECK-LABEL: selectRR_sle_i8:7914; CHECK: # %bb.0: # %entry7915; CHECK-NEXT: sextb16 a1, a17916; CHECK-NEXT: sextb16 a0, a07917; CHECK-NEXT: cmplt16 a0, a17918; CHECK-NEXT: movf32 a2, a37919; CHECK-NEXT: mov16 a0, a27920; CHECK-NEXT: rts167921;7922; GENERIC-LABEL: selectRR_sle_i8:7923; GENERIC: # %bb.0: # %entry7924; GENERIC-NEXT: .cfi_def_cfa_offset 07925; GENERIC-NEXT: subi16 sp, sp, 47926; GENERIC-NEXT: .cfi_def_cfa_offset 47927; GENERIC-NEXT: sextb16 a1, a17928; GENERIC-NEXT: sextb16 a0, a07929; GENERIC-NEXT: cmplt16 a0, a17930; GENERIC-NEXT: mvcv16 a07931; GENERIC-NEXT: btsti16 a0, 07932; GENERIC-NEXT: bt16 .LBB194_27933; GENERIC-NEXT: # %bb.1: # %entry7934; GENERIC-NEXT: mov16 a3, a27935; GENERIC-NEXT: .LBB194_2: # %entry7936; GENERIC-NEXT: mov16 a0, a37937; GENERIC-NEXT: addi16 sp, sp, 47938; GENERIC-NEXT: rts167939entry:7940 %icmp = icmp sle i8 %y, %x7941 %ret = select i1 %icmp, i8 %m, i8 %n7942 ret i8 %ret7943}7944 7945define i8 @selectRI_sle_i8(i8 %x, i8 %n, i8 %m) {7946; CHECK-LABEL: selectRI_sle_i8:7947; CHECK: # %bb.0: # %entry7948; CHECK-NEXT: sextb16 a0, a07949; CHECK-NEXT: cmplti16 a0, 117950; CHECK-NEXT: movt32 a1, a27951; CHECK-NEXT: mov16 a0, a17952; CHECK-NEXT: rts167953;7954; GENERIC-LABEL: selectRI_sle_i8:7955; GENERIC: # %bb.0: # %entry7956; GENERIC-NEXT: .cfi_def_cfa_offset 07957; GENERIC-NEXT: subi16 sp, sp, 47958; GENERIC-NEXT: .cfi_def_cfa_offset 47959; GENERIC-NEXT: sextb16 a0, a07960; GENERIC-NEXT: cmplti16 a0, 117961; GENERIC-NEXT: mvcv16 a07962; GENERIC-NEXT: movi16 a3, 17963; GENERIC-NEXT: subu16 a3, a07964; GENERIC-NEXT: btsti16 a3, 07965; GENERIC-NEXT: bt16 .LBB195_27966; GENERIC-NEXT: # %bb.1: # %entry7967; GENERIC-NEXT: mov16 a2, a17968; GENERIC-NEXT: .LBB195_2: # %entry7969; GENERIC-NEXT: mov16 a0, a27970; GENERIC-NEXT: addi16 sp, sp, 47971; GENERIC-NEXT: rts167972entry:7973 %icmp = icmp sle i8 %x, 107974 %ret = select i1 %icmp, i8 %m, i8 %n7975 ret i8 %ret7976}7977 7978define i8 @selectRX_sle_i8(i8 %x, i8 %n, i8 %m) {7979; CHECK-LABEL: selectRX_sle_i8:7980; CHECK: # %bb.0: # %entry7981; CHECK-NEXT: sextb16 a0, a07982; CHECK-NEXT: movih32 a3, 655357983; CHECK-NEXT: ori32 a3, a3, 655227984; CHECK-NEXT: cmplt16 a0, a37985; CHECK-NEXT: movt32 a1, a27986; CHECK-NEXT: mov16 a0, a17987; CHECK-NEXT: rts167988;7989; GENERIC-LABEL: selectRX_sle_i8:7990; GENERIC: # %bb.0: # %entry7991; GENERIC-NEXT: subi16 sp, sp, 87992; GENERIC-NEXT: .cfi_def_cfa_offset 87993; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill7994; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill7995; GENERIC-NEXT: .cfi_offset l1, -47996; GENERIC-NEXT: .cfi_offset l0, -87997; GENERIC-NEXT: subi16 sp, sp, 47998; GENERIC-NEXT: .cfi_def_cfa_offset 127999; GENERIC-NEXT: sextb16 a0, a08000; GENERIC-NEXT: movi16 a3, 2558001; GENERIC-NEXT: lsli16 l0, a3, 248002; GENERIC-NEXT: lsli16 l1, a3, 168003; GENERIC-NEXT: or16 l1, l08004; GENERIC-NEXT: lsli16 a3, a3, 88005; GENERIC-NEXT: or16 a3, l18006; GENERIC-NEXT: movi16 l0, 2428007; GENERIC-NEXT: or16 l0, a38008; GENERIC-NEXT: cmplt16 a0, l08009; GENERIC-NEXT: mvcv16 a08010; GENERIC-NEXT: movi16 a3, 18011; GENERIC-NEXT: subu16 a3, a08012; GENERIC-NEXT: btsti16 a3, 08013; GENERIC-NEXT: bt16 .LBB196_28014; GENERIC-NEXT: # %bb.1: # %entry8015; GENERIC-NEXT: mov16 a2, a18016; GENERIC-NEXT: .LBB196_2: # %entry8017; GENERIC-NEXT: mov16 a0, a28018; GENERIC-NEXT: addi16 sp, sp, 48019; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload8020; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload8021; GENERIC-NEXT: addi16 sp, sp, 88022; GENERIC-NEXT: rts168023entry:8024 %icmp = icmp sle i8 %x, 477777778025 %ret = select i1 %icmp, i8 %m, i8 %n8026 ret i8 %ret8027}8028 8029define i8 @selectC_sle_i8(i1 %c, i8 %n, i8 %m) {8030; CHECK-LABEL: selectC_sle_i8:8031; CHECK: # %bb.0: # %entry8032; CHECK-NEXT: btsti16 a0, 08033; CHECK-NEXT: movt32 a1, a28034; CHECK-NEXT: mov16 a0, a18035; CHECK-NEXT: rts168036;8037; GENERIC-LABEL: selectC_sle_i8:8038; GENERIC: # %bb.0: # %entry8039; GENERIC-NEXT: .cfi_def_cfa_offset 08040; GENERIC-NEXT: subi16 sp, sp, 48041; GENERIC-NEXT: .cfi_def_cfa_offset 48042; GENERIC-NEXT: btsti16 a0, 08043; GENERIC-NEXT: bt16 .LBB197_28044; GENERIC-NEXT: # %bb.1: # %entry8045; GENERIC-NEXT: mov16 a2, a18046; GENERIC-NEXT: .LBB197_2: # %entry8047; GENERIC-NEXT: mov16 a0, a28048; GENERIC-NEXT: addi16 sp, sp, 48049; GENERIC-NEXT: rts168050entry:8051 %ret = select i1 %c, i8 %m, i8 %n8052 ret i8 %ret8053}8054 8055 8056define i1 @selectRR_sle_i1(i1 %x, i1 %y, i1 %n, i1 %m) {8057; CHECK-LABEL: selectRR_sle_i1:8058; CHECK: # %bb.0: # %entry8059; CHECK-NEXT: btsti16 a0, 08060; CHECK-NEXT: mov16 a0, a38061; CHECK-NEXT: movt32 a0, a28062; CHECK-NEXT: btsti16 a1, 08063; CHECK-NEXT: movt32 a0, a38064; CHECK-NEXT: rts168065;8066; GENERIC-LABEL: selectRR_sle_i1:8067; GENERIC: # %bb.0: # %entry8068; GENERIC-NEXT: .cfi_def_cfa_offset 08069; GENERIC-NEXT: subi16 sp, sp, 48070; GENERIC-NEXT: .cfi_def_cfa_offset 48071; GENERIC-NEXT: btsti16 a0, 08072; GENERIC-NEXT: bt16 .LBB198_28073; GENERIC-NEXT: # %bb.1: # %entry8074; GENERIC-NEXT: mov16 a2, a38075; GENERIC-NEXT: .LBB198_2: # %entry8076; GENERIC-NEXT: btsti16 a1, 08077; GENERIC-NEXT: bt16 .LBB198_48078; GENERIC-NEXT: # %bb.3: # %entry8079; GENERIC-NEXT: mov16 a3, a28080; GENERIC-NEXT: .LBB198_4: # %entry8081; GENERIC-NEXT: mov16 a0, a38082; GENERIC-NEXT: addi16 sp, sp, 48083; GENERIC-NEXT: rts168084entry:8085 %icmp = icmp sle i1 %y, %x8086 %ret = select i1 %icmp, i1 %m, i1 %n8087 ret i1 %ret8088}8089 8090define i1 @selectRI_sle_i1(i1 %x, i1 %n, i1 %m) {8091; CHECK-LABEL: selectRI_sle_i1:8092; CHECK: # %bb.0: # %entry8093; CHECK-NEXT: mov16 a0, a28094; CHECK-NEXT: rts168095;8096; GENERIC-LABEL: selectRI_sle_i1:8097; GENERIC: # %bb.0: # %entry8098; GENERIC-NEXT: .cfi_def_cfa_offset 08099; GENERIC-NEXT: subi16 sp, sp, 48100; GENERIC-NEXT: .cfi_def_cfa_offset 48101; GENERIC-NEXT: mov16 a0, a28102; GENERIC-NEXT: addi16 sp, sp, 48103; GENERIC-NEXT: rts168104entry:8105 %icmp = icmp sle i1 %x, 108106 %ret = select i1 %icmp, i1 %m, i1 %n8107 ret i1 %ret8108}8109 8110define i1 @selectRX_sle_i1(i1 %x, i1 %n, i1 %m) {8111; CHECK-LABEL: selectRX_sle_i1:8112; CHECK: # %bb.0: # %entry8113; CHECK-NEXT: btsti16 a0, 08114; CHECK-NEXT: movt32 a1, a28115; CHECK-NEXT: mov16 a0, a18116; CHECK-NEXT: rts168117;8118; GENERIC-LABEL: selectRX_sle_i1:8119; GENERIC: # %bb.0: # %entry8120; GENERIC-NEXT: .cfi_def_cfa_offset 08121; GENERIC-NEXT: subi16 sp, sp, 48122; GENERIC-NEXT: .cfi_def_cfa_offset 48123; GENERIC-NEXT: btsti16 a0, 08124; GENERIC-NEXT: bt16 .LBB200_28125; GENERIC-NEXT: # %bb.1: # %entry8126; GENERIC-NEXT: mov16 a2, a18127; GENERIC-NEXT: .LBB200_2: # %entry8128; GENERIC-NEXT: mov16 a0, a28129; GENERIC-NEXT: addi16 sp, sp, 48130; GENERIC-NEXT: rts168131entry:8132 %icmp = icmp sle i1 %x, 477777778133 %ret = select i1 %icmp, i1 %m, i1 %n8134 ret i1 %ret8135}8136 8137define i1 @selectC_sle_i1(i1 %c, i1 %n, i1 %m) {8138; CHECK-LABEL: selectC_sle_i1:8139; CHECK: # %bb.0: # %entry8140; CHECK-NEXT: btsti16 a0, 08141; CHECK-NEXT: movt32 a1, a28142; CHECK-NEXT: mov16 a0, a18143; CHECK-NEXT: rts168144;8145; GENERIC-LABEL: selectC_sle_i1:8146; GENERIC: # %bb.0: # %entry8147; GENERIC-NEXT: .cfi_def_cfa_offset 08148; GENERIC-NEXT: subi16 sp, sp, 48149; GENERIC-NEXT: .cfi_def_cfa_offset 48150; GENERIC-NEXT: btsti16 a0, 08151; GENERIC-NEXT: bt16 .LBB201_28152; GENERIC-NEXT: # %bb.1: # %entry8153; GENERIC-NEXT: mov16 a2, a18154; GENERIC-NEXT: .LBB201_2: # %entry8155; GENERIC-NEXT: mov16 a0, a28156; GENERIC-NEXT: addi16 sp, sp, 48157; GENERIC-NEXT: rts168158entry:8159 %ret = select i1 %c, i1 %m, i1 %n8160 ret i1 %ret8161}8162 8163define i32 @select_bit_test_eq_0(i32 %0) {8164; CHECK-LABEL: select_bit_test_eq_0:8165; CHECK: # %bb.0:8166; CHECK-NEXT: btsti16 a0, 178167; CHECK-NEXT: movi16 a0, 238168; CHECK-NEXT: movi16 a1, 18169; CHECK-NEXT: movf32 a0, a18170; CHECK-NEXT: rts168171;8172; GENERIC-LABEL: select_bit_test_eq_0:8173; GENERIC: # %bb.0:8174; GENERIC-NEXT: .cfi_def_cfa_offset 08175; GENERIC-NEXT: subi16 sp, sp, 48176; GENERIC-NEXT: .cfi_def_cfa_offset 48177; GENERIC-NEXT: movi16 a1, 08178; GENERIC-NEXT: lsli16 a2, a1, 248179; GENERIC-NEXT: movi16 a3, 28180; GENERIC-NEXT: lsli16 a3, a3, 168181; GENERIC-NEXT: or16 a3, a28182; GENERIC-NEXT: lsli16 a2, a1, 88183; GENERIC-NEXT: or16 a2, a38184; GENERIC-NEXT: or16 a2, a18185; GENERIC-NEXT: and16 a2, a08186; GENERIC-NEXT: cmpnei16 a2, 08187; GENERIC-NEXT: mvcv16 a18188; GENERIC-NEXT: movi16 a0, 18189; GENERIC-NEXT: btsti16 a1, 08190; GENERIC-NEXT: bt16 .LBB202_28191; GENERIC-NEXT: # %bb.1:8192; GENERIC-NEXT: movi16 a0, 238193; GENERIC-NEXT: .LBB202_2:8194; GENERIC-NEXT: addi16 sp, sp, 48195; GENERIC-NEXT: rts168196 %2 = and i32 %0, 1310728197 %3 = icmp eq i32 %2, 08198 %4 = select i1 %3, i32 1, i32 238199 ret i32 %48200}8201 8202define i32 @select_bit_test_ne_0(i32 %0) {8203; CHECK-LABEL: select_bit_test_ne_0:8204; CHECK: # %bb.0:8205; CHECK-NEXT: btsti16 a0, 178206; CHECK-NEXT: movi16 a0, 348207; CHECK-NEXT: movi16 a1, 58208; CHECK-NEXT: movt32 a0, a18209; CHECK-NEXT: rts168210;8211; GENERIC-LABEL: select_bit_test_ne_0:8212; GENERIC: # %bb.0:8213; GENERIC-NEXT: .cfi_def_cfa_offset 08214; GENERIC-NEXT: subi16 sp, sp, 48215; GENERIC-NEXT: .cfi_def_cfa_offset 48216; GENERIC-NEXT: movi16 a1, 08217; GENERIC-NEXT: lsli16 a2, a1, 248218; GENERIC-NEXT: movi16 a3, 28219; GENERIC-NEXT: lsli16 a3, a3, 168220; GENERIC-NEXT: or16 a3, a28221; GENERIC-NEXT: lsli16 a2, a1, 88222; GENERIC-NEXT: or16 a2, a38223; GENERIC-NEXT: or16 a2, a18224; GENERIC-NEXT: and16 a2, a08225; GENERIC-NEXT: cmpnei16 a2, 08226; GENERIC-NEXT: mvcv16 a08227; GENERIC-NEXT: movi16 a1, 18228; GENERIC-NEXT: subu16 a1, a08229; GENERIC-NEXT: movi16 a0, 58230; GENERIC-NEXT: btsti16 a1, 08231; GENERIC-NEXT: bt16 .LBB203_28232; GENERIC-NEXT: # %bb.1:8233; GENERIC-NEXT: movi16 a0, 348234; GENERIC-NEXT: .LBB203_2:8235; GENERIC-NEXT: addi16 sp, sp, 48236; GENERIC-NEXT: rts168237 %2 = and i32 %0, 1310728238 %3 = icmp ne i32 %2, 08239 %4 = select i1 %3, i32 5, i32 348240 ret i32 %48241}8242 8243define i32 @select_bit_test_eq_mask(i32 %0) {8244; CHECK-LABEL: select_bit_test_eq_mask:8245; CHECK: # %bb.0:8246; CHECK-NEXT: btsti16 a0, 178247; CHECK-NEXT: movi16 a0, 58248; CHECK-NEXT: movi16 a1, 348249; CHECK-NEXT: movt32 a0, a18250; CHECK-NEXT: rts168251;8252; GENERIC-LABEL: select_bit_test_eq_mask:8253; GENERIC: # %bb.0:8254; GENERIC-NEXT: .cfi_def_cfa_offset 08255; GENERIC-NEXT: subi16 sp, sp, 48256; GENERIC-NEXT: .cfi_def_cfa_offset 48257; GENERIC-NEXT: movi16 a1, 08258; GENERIC-NEXT: lsli16 a2, a1, 248259; GENERIC-NEXT: movi16 a3, 28260; GENERIC-NEXT: lsli16 a3, a3, 168261; GENERIC-NEXT: or16 a3, a28262; GENERIC-NEXT: lsli16 a2, a1, 88263; GENERIC-NEXT: or16 a2, a38264; GENERIC-NEXT: or16 a2, a18265; GENERIC-NEXT: and16 a2, a08266; GENERIC-NEXT: cmpnei16 a2, 08267; GENERIC-NEXT: mvcv16 a08268; GENERIC-NEXT: movi16 a1, 18269; GENERIC-NEXT: subu16 a1, a08270; GENERIC-NEXT: movi16 a0, 348271; GENERIC-NEXT: btsti16 a1, 08272; GENERIC-NEXT: bt16 .LBB204_28273; GENERIC-NEXT: # %bb.1:8274; GENERIC-NEXT: movi16 a0, 58275; GENERIC-NEXT: .LBB204_2:8276; GENERIC-NEXT: addi16 sp, sp, 48277; GENERIC-NEXT: rts168278 %2 = and i32 %0, 1310728279 %3 = icmp eq i32 %2, 1310728280 %4 = select i1 %3, i32 34, i32 58281 ret i32 %48282}8283 8284define i32 @select_bit_test_ne_mask(i32 %0) {8285; CHECK-LABEL: select_bit_test_ne_mask:8286; CHECK: # %bb.0:8287; CHECK-NEXT: btsti16 a0, 178288; CHECK-NEXT: movi16 a0, 348289; CHECK-NEXT: movi16 a1, 58290; CHECK-NEXT: movt32 a0, a18291; CHECK-NEXT: rts168292;8293; GENERIC-LABEL: select_bit_test_ne_mask:8294; GENERIC: # %bb.0:8295; GENERIC-NEXT: .cfi_def_cfa_offset 08296; GENERIC-NEXT: subi16 sp, sp, 48297; GENERIC-NEXT: .cfi_def_cfa_offset 48298; GENERIC-NEXT: movi16 a1, 08299; GENERIC-NEXT: lsli16 a2, a1, 248300; GENERIC-NEXT: movi16 a3, 28301; GENERIC-NEXT: lsli16 a3, a3, 168302; GENERIC-NEXT: or16 a3, a28303; GENERIC-NEXT: lsli16 a2, a1, 88304; GENERIC-NEXT: or16 a2, a38305; GENERIC-NEXT: or16 a2, a18306; GENERIC-NEXT: and16 a2, a08307; GENERIC-NEXT: cmpnei16 a2, 08308; GENERIC-NEXT: mvcv16 a08309; GENERIC-NEXT: movi16 a1, 18310; GENERIC-NEXT: subu16 a1, a08311; GENERIC-NEXT: movi16 a0, 58312; GENERIC-NEXT: btsti16 a1, 08313; GENERIC-NEXT: bt16 .LBB205_28314; GENERIC-NEXT: # %bb.1:8315; GENERIC-NEXT: movi16 a0, 348316; GENERIC-NEXT: .LBB205_2:8317; GENERIC-NEXT: addi16 sp, sp, 48318; GENERIC-NEXT: rts168319 %2 = and i32 %0, 1310728320 %3 = icmp eq i32 %2, 1310728321 %4 = select i1 %3, i32 5, i32 348322 ret i32 %48323}8324 8325define i32 @select_lowbit_test_ne_0(i32 %0) {8326; CHECK-LABEL: select_lowbit_test_ne_0:8327; CHECK: # %bb.0:8328; CHECK-NEXT: andi32 a0, a0, 2568329; CHECK-NEXT: cmpnei16 a0, 08330; CHECK-NEXT: movi16 a0, 348331; CHECK-NEXT: movi16 a1, 58332; CHECK-NEXT: movt32 a0, a18333; CHECK-NEXT: rts168334;8335; GENERIC-LABEL: select_lowbit_test_ne_0:8336; GENERIC: # %bb.0:8337; GENERIC-NEXT: subi16 sp, sp, 48338; GENERIC-NEXT: .cfi_def_cfa_offset 48339; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill8340; GENERIC-NEXT: .cfi_offset l0, -48341; GENERIC-NEXT: subi16 sp, sp, 48342; GENERIC-NEXT: .cfi_def_cfa_offset 88343; GENERIC-NEXT: movi16 a1, 08344; GENERIC-NEXT: lsli16 a2, a1, 248345; GENERIC-NEXT: lsli16 a3, a1, 168346; GENERIC-NEXT: or16 a3, a28347; GENERIC-NEXT: movi16 a2, 18348; GENERIC-NEXT: lsli16 l0, a2, 88349; GENERIC-NEXT: or16 l0, a38350; GENERIC-NEXT: or16 l0, a18351; GENERIC-NEXT: and16 l0, a08352; GENERIC-NEXT: cmpnei16 l0, 08353; GENERIC-NEXT: mvcv16 a08354; GENERIC-NEXT: subu16 a2, a08355; GENERIC-NEXT: movi16 a0, 58356; GENERIC-NEXT: btsti16 a2, 08357; GENERIC-NEXT: bt16 .LBB206_28358; GENERIC-NEXT: # %bb.1:8359; GENERIC-NEXT: movi16 a0, 348360; GENERIC-NEXT: .LBB206_2:8361; GENERIC-NEXT: addi16 sp, sp, 48362; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload8363; GENERIC-NEXT: addi16 sp, sp, 48364; GENERIC-NEXT: rts168365 %2 = and i32 %0, 2568366 %3 = icmp ne i32 %2, 08367 %4 = select i1 %3, i32 5, i32 348368 ret i32 %48369}8370