brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.5 KiB · 703b812 Raw
266 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 -mattr=+d < %s | FileCheck %s --check-prefix=LA323; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck %s --check-prefix=LA644 5;; Exercise the 'xor' LLVM IR: https://llvm.org/docs/LangRef.html#xor-instruction6 7define i1 @xor_i1(i1 %a, i1 %b) {8; LA32-LABEL: xor_i1:9; LA32:       # %bb.0: # %entry10; LA32-NEXT:    xor $a0, $a0, $a111; LA32-NEXT:    ret12;13; LA64-LABEL: xor_i1:14; LA64:       # %bb.0: # %entry15; LA64-NEXT:    xor $a0, $a0, $a116; LA64-NEXT:    ret17entry:18  %r = xor i1 %a, %b19  ret i1 %r20}21 22define i8 @xor_i8(i8 %a, i8 %b) {23; LA32-LABEL: xor_i8:24; LA32:       # %bb.0: # %entry25; LA32-NEXT:    xor $a0, $a0, $a126; LA32-NEXT:    ret27;28; LA64-LABEL: xor_i8:29; LA64:       # %bb.0: # %entry30; LA64-NEXT:    xor $a0, $a0, $a131; LA64-NEXT:    ret32entry:33  %r = xor i8 %a, %b34  ret i8 %r35}36 37define i16 @xor_i16(i16 %a, i16 %b) {38; LA32-LABEL: xor_i16:39; LA32:       # %bb.0: # %entry40; LA32-NEXT:    xor $a0, $a0, $a141; LA32-NEXT:    ret42;43; LA64-LABEL: xor_i16:44; LA64:       # %bb.0: # %entry45; LA64-NEXT:    xor $a0, $a0, $a146; LA64-NEXT:    ret47entry:48  %r = xor i16 %a, %b49  ret i16 %r50}51 52define i32 @xor_i32(i32 %a, i32 %b) {53; LA32-LABEL: xor_i32:54; LA32:       # %bb.0: # %entry55; LA32-NEXT:    xor $a0, $a0, $a156; LA32-NEXT:    ret57;58; LA64-LABEL: xor_i32:59; LA64:       # %bb.0: # %entry60; LA64-NEXT:    xor $a0, $a0, $a161; LA64-NEXT:    ret62entry:63  %r = xor i32 %a, %b64  ret i32 %r65}66 67define i64 @xor_i64(i64 %a, i64 %b) {68; LA32-LABEL: xor_i64:69; LA32:       # %bb.0: # %entry70; LA32-NEXT:    xor $a0, $a0, $a271; LA32-NEXT:    xor $a1, $a1, $a372; LA32-NEXT:    ret73;74; LA64-LABEL: xor_i64:75; LA64:       # %bb.0: # %entry76; LA64-NEXT:    xor $a0, $a0, $a177; LA64-NEXT:    ret78entry:79  %r = xor i64 %a, %b80  ret i64 %r81}82 83define i1 @xor_i1_0(i1 %b) {84; LA32-LABEL: xor_i1_0:85; LA32:       # %bb.0: # %entry86; LA32-NEXT:    ret87;88; LA64-LABEL: xor_i1_0:89; LA64:       # %bb.0: # %entry90; LA64-NEXT:    ret91entry:92  %r = xor i1 4, %b93  ret i1 %r94}95 96define i1 @xor_i1_5(i1 %b) {97; LA32-LABEL: xor_i1_5:98; LA32:       # %bb.0: # %entry99; LA32-NEXT:    xori $a0, $a0, 1100; LA32-NEXT:    ret101;102; LA64-LABEL: xor_i1_5:103; LA64:       # %bb.0: # %entry104; LA64-NEXT:    xori $a0, $a0, 1105; LA64-NEXT:    ret106entry:107  %r = xor i1 5, %b108  ret i1 %r109}110 111define i8 @xor_i8_5(i8 %b) {112; LA32-LABEL: xor_i8_5:113; LA32:       # %bb.0: # %entry114; LA32-NEXT:    xori $a0, $a0, 5115; LA32-NEXT:    ret116;117; LA64-LABEL: xor_i8_5:118; LA64:       # %bb.0: # %entry119; LA64-NEXT:    xori $a0, $a0, 5120; LA64-NEXT:    ret121entry:122  %r = xor i8 5, %b123  ret i8 %r124}125 126define i8 @xor_i8_257(i8 %b) {127; LA32-LABEL: xor_i8_257:128; LA32:       # %bb.0: # %entry129; LA32-NEXT:    xori $a0, $a0, 1130; LA32-NEXT:    ret131;132; LA64-LABEL: xor_i8_257:133; LA64:       # %bb.0: # %entry134; LA64-NEXT:    xori $a0, $a0, 1135; LA64-NEXT:    ret136entry:137  %r = xor i8 257, %b138  ret i8 %r139}140 141define i16 @xor_i16_5(i16 %b) {142; LA32-LABEL: xor_i16_5:143; LA32:       # %bb.0: # %entry144; LA32-NEXT:    xori $a0, $a0, 5145; LA32-NEXT:    ret146;147; LA64-LABEL: xor_i16_5:148; LA64:       # %bb.0: # %entry149; LA64-NEXT:    xori $a0, $a0, 5150; LA64-NEXT:    ret151entry:152  %r = xor i16 5, %b153  ret i16 %r154}155 156define i16 @xor_i16_0x1000(i16 %b) {157; LA32-LABEL: xor_i16_0x1000:158; LA32:       # %bb.0: # %entry159; LA32-NEXT:    lu12i.w $a1, 1160; LA32-NEXT:    xor $a0, $a0, $a1161; LA32-NEXT:    ret162;163; LA64-LABEL: xor_i16_0x1000:164; LA64:       # %bb.0: # %entry165; LA64-NEXT:    lu12i.w $a1, 1166; LA64-NEXT:    xor $a0, $a0, $a1167; LA64-NEXT:    ret168entry:169  %r = xor i16 4096, %b170  ret i16 %r171}172 173define i16 @xor_i16_0x10001(i16 %b) {174; LA32-LABEL: xor_i16_0x10001:175; LA32:       # %bb.0: # %entry176; LA32-NEXT:    xori $a0, $a0, 1177; LA32-NEXT:    ret178;179; LA64-LABEL: xor_i16_0x10001:180; LA64:       # %bb.0: # %entry181; LA64-NEXT:    xori $a0, $a0, 1182; LA64-NEXT:    ret183entry:184  %r = xor i16 65537, %b185  ret i16 %r186}187 188define i32 @xor_i32_5(i32 %b) {189; LA32-LABEL: xor_i32_5:190; LA32:       # %bb.0: # %entry191; LA32-NEXT:    xori $a0, $a0, 5192; LA32-NEXT:    ret193;194; LA64-LABEL: xor_i32_5:195; LA64:       # %bb.0: # %entry196; LA64-NEXT:    xori $a0, $a0, 5197; LA64-NEXT:    ret198entry:199  %r = xor i32 5, %b200  ret i32 %r201}202 203define i32 @xor_i32_0x1000(i32 %b) {204; LA32-LABEL: xor_i32_0x1000:205; LA32:       # %bb.0: # %entry206; LA32-NEXT:    lu12i.w $a1, 1207; LA32-NEXT:    xor $a0, $a0, $a1208; LA32-NEXT:    ret209;210; LA64-LABEL: xor_i32_0x1000:211; LA64:       # %bb.0: # %entry212; LA64-NEXT:    lu12i.w $a1, 1213; LA64-NEXT:    xor $a0, $a0, $a1214; LA64-NEXT:    ret215entry:216  %r = xor i32 4096, %b217  ret i32 %r218}219 220define i32 @xor_i32_0x100000001(i32 %b) {221; LA32-LABEL: xor_i32_0x100000001:222; LA32:       # %bb.0: # %entry223; LA32-NEXT:    xori $a0, $a0, 1224; LA32-NEXT:    ret225;226; LA64-LABEL: xor_i32_0x100000001:227; LA64:       # %bb.0: # %entry228; LA64-NEXT:    xori $a0, $a0, 1229; LA64-NEXT:    ret230entry:231  %r = xor i32 4294967297, %b232  ret i32 %r233}234 235define i64 @xor_i64_5(i64 %b) {236; LA32-LABEL: xor_i64_5:237; LA32:       # %bb.0: # %entry238; LA32-NEXT:    xori $a0, $a0, 5239; LA32-NEXT:    ret240;241; LA64-LABEL: xor_i64_5:242; LA64:       # %bb.0: # %entry243; LA64-NEXT:    xori $a0, $a0, 5244; LA64-NEXT:    ret245entry:246  %r = xor i64 5, %b247  ret i64 %r248}249 250define i64 @xor_i64_0x1000(i64 %b) {251; LA32-LABEL: xor_i64_0x1000:252; LA32:       # %bb.0: # %entry253; LA32-NEXT:    lu12i.w $a2, 1254; LA32-NEXT:    xor $a0, $a0, $a2255; LA32-NEXT:    ret256;257; LA64-LABEL: xor_i64_0x1000:258; LA64:       # %bb.0: # %entry259; LA64-NEXT:    lu12i.w $a1, 1260; LA64-NEXT:    xor $a0, $a0, $a1261; LA64-NEXT:    ret262entry:263  %r = xor i64 4096, %b264  ret i64 %r265}266