1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 2; RUN: llc -verify-machineinstrs -csky-no-aliases -mattr=+e2 < %s -mtriple=csky | FileCheck %s 3 4define i32 @test_or_128(i32 noundef %0) { 5; CHECK-LABEL: test_or_128: 6; CHECK: # %bb.0: 7; CHECK-NEXT: ori32 a0, a0, 128 8; CHECK-NEXT: rts16 9 %2 = or i32 %0, 128 10 ret i32 %2 11} 12 13define i32 @test_or_131072(i32 noundef %0) { 14; CHECK-LABEL: test_or_131072: 15; CHECK: # %bb.0: 16; CHECK-NEXT: bseti16 a0, 17 17; CHECK-NEXT: rts16 18 %2 = or i32 %0, 131072 19 ret i32 %2 20} 21 22define i32 @test_or_192(i32 noundef %0) { 23; CHECK-LABEL: test_or_192: 24; CHECK: # %bb.0: 25; CHECK-NEXT: ori32 a0, a0, 192 26; CHECK-NEXT: rts16 27 %2 = or i32 %0, 192 28 ret i32 %2 29} 30 31define i32 @test_or_3072(i32 noundef %0) { 32; CHECK-LABEL: test_or_3072: 33; CHECK: # %bb.0: 34; CHECK-NEXT: ori32 a0, a0, 3072 35; CHECK-NEXT: rts16 36 %2 = or i32 %0, 3072 37 ret i32 %2 38} 39 40define i32 @test_or_196608(i32 noundef %0) { 41; CHECK-LABEL: test_or_196608: 42; CHECK: # %bb.0: 43; CHECK-NEXT: movih32 a1, 3 44; CHECK-NEXT: or16 a0, a1 45; CHECK-NEXT: rts16 46 %2 = or i32 %0, 196608 47 ret i32 %2 48} 49 50define i32 @test_or_65540(i32 noundef %0) { 51; CHECK-LABEL: test_or_65540: 52; CHECK: # %bb.0: 53; CHECK-NEXT: movih32 a1, 1 54; CHECK-NEXT: ori32 a1, a1, 4 55; CHECK-NEXT: or16 a0, a1 56; CHECK-NEXT: rts16 57 %2 = or i32 %0, 65540 58 ret i32 %2 59} 60 61define i32 @test_andnot_128(i32 noundef %0) { 62; CHECK-LABEL: test_andnot_128: 63; CHECK: # %bb.0: 64; CHECK-NEXT: andni32 a0, a0, 128 65; CHECK-NEXT: rts16 66 %2 = and i32 %0, -129 67 ret i32 %2 68} 69 70define i32 @test_andnot_131072(i32 noundef %0) { 71; CHECK-LABEL: test_andnot_131072: 72; CHECK: # %bb.0: 73; CHECK-NEXT: bclri16 a0, 17 74; CHECK-NEXT: rts16 75 %2 = and i32 %0, -131073 76 ret i32 %2 77} 78 79define i32 @test_andnot_192(i32 noundef %0) { 80; CHECK-LABEL: test_andnot_192: 81; CHECK: # %bb.0: 82; CHECK-NEXT: andni32 a0, a0, 192 83; CHECK-NEXT: rts16 84 %2 = and i32 %0, -193 85 ret i32 %2 86} 87 88define i32 @test_andnot_3072(i32 noundef %0) { 89; CHECK-LABEL: test_andnot_3072: 90; CHECK: # %bb.0: 91; CHECK-NEXT: andni32 a0, a0, 3072 92; CHECK-NEXT: rts16 93 %2 = and i32 %0, -3073 94 ret i32 %2 95} 96 97define i32 @test_andnot_1966608(i32 noundef %0) { 98; CHECK-LABEL: test_andnot_1966608: 99; CHECK: # %bb.0: 100; CHECK-NEXT: movih32 a1, 65505 101; CHECK-NEXT: ori32 a1, a1, 65007 102; CHECK-NEXT: and16 a0, a1 103; CHECK-NEXT: rts16 104 %2 = and i32 %0, -1966609 105 ret i32 %2 106} 107 108define i32 @test_andnot_65540(i32 noundef %0) { 109; CHECK-LABEL: test_andnot_65540: 110; CHECK: # %bb.0: 111; CHECK-NEXT: movih32 a1, 65534 112; CHECK-NEXT: ori32 a1, a1, 65531 113; CHECK-NEXT: and16 a0, a1 114; CHECK-NEXT: rts16 115 %2 = and i32 %0, -65541 116 ret i32 %2 117} 118