1ca66df3bSwanglei; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3 2ca66df3bSwanglei; RUN: llc --mtriple=loongarch64 --mattr=+lasx < %s | FileCheck %s 3ca66df3bSwanglei 4ca66df3bSwangleidefine void @or_v32i8(ptr %res, ptr %a0, ptr %a1) nounwind { 5ca66df3bSwanglei; CHECK-LABEL: or_v32i8: 6ca66df3bSwanglei; CHECK: # %bb.0: # %entry 7*a5c90e48Swanglei; CHECK-NEXT: xvld $xr0, $a1, 0 8*a5c90e48Swanglei; CHECK-NEXT: xvld $xr1, $a2, 0 9*a5c90e48Swanglei; CHECK-NEXT: xvor.v $xr0, $xr0, $xr1 10ca66df3bSwanglei; CHECK-NEXT: xvst $xr0, $a0, 0 11ca66df3bSwanglei; CHECK-NEXT: ret 12ca66df3bSwangleientry: 13ca66df3bSwanglei %v0 = load <32 x i8>, ptr %a0 14ca66df3bSwanglei %v1 = load <32 x i8>, ptr %a1 15ca66df3bSwanglei %v2 = or <32 x i8> %v0, %v1 16ca66df3bSwanglei store <32 x i8> %v2, ptr %res 17ca66df3bSwanglei ret void 18ca66df3bSwanglei} 19ca66df3bSwanglei 20ca66df3bSwangleidefine void @or_v16i16(ptr %res, ptr %a0, ptr %a1) nounwind { 21ca66df3bSwanglei; CHECK-LABEL: or_v16i16: 22ca66df3bSwanglei; CHECK: # %bb.0: # %entry 23*a5c90e48Swanglei; CHECK-NEXT: xvld $xr0, $a1, 0 24*a5c90e48Swanglei; CHECK-NEXT: xvld $xr1, $a2, 0 25*a5c90e48Swanglei; CHECK-NEXT: xvor.v $xr0, $xr0, $xr1 26ca66df3bSwanglei; CHECK-NEXT: xvst $xr0, $a0, 0 27ca66df3bSwanglei; CHECK-NEXT: ret 28ca66df3bSwangleientry: 29ca66df3bSwanglei %v0 = load <16 x i16>, ptr %a0 30ca66df3bSwanglei %v1 = load <16 x i16>, ptr %a1 31ca66df3bSwanglei %v2 = or <16 x i16> %v0, %v1 32ca66df3bSwanglei store <16 x i16> %v2, ptr %res 33ca66df3bSwanglei ret void 34ca66df3bSwanglei} 35ca66df3bSwanglei 36ca66df3bSwangleidefine void @or_v8i32(ptr %res, ptr %a0, ptr %a1) nounwind { 37ca66df3bSwanglei; CHECK-LABEL: or_v8i32: 38ca66df3bSwanglei; CHECK: # %bb.0: # %entry 39*a5c90e48Swanglei; CHECK-NEXT: xvld $xr0, $a1, 0 40*a5c90e48Swanglei; CHECK-NEXT: xvld $xr1, $a2, 0 41*a5c90e48Swanglei; CHECK-NEXT: xvor.v $xr0, $xr0, $xr1 42ca66df3bSwanglei; CHECK-NEXT: xvst $xr0, $a0, 0 43ca66df3bSwanglei; CHECK-NEXT: ret 44ca66df3bSwangleientry: 45ca66df3bSwanglei %v0 = load <8 x i32>, ptr %a0 46ca66df3bSwanglei %v1 = load <8 x i32>, ptr %a1 47ca66df3bSwanglei %v2 = or <8 x i32> %v0, %v1 48ca66df3bSwanglei store <8 x i32> %v2, ptr %res 49ca66df3bSwanglei ret void 50ca66df3bSwanglei} 51ca66df3bSwanglei 52ca66df3bSwangleidefine void @or_v4i64(ptr %res, ptr %a0, ptr %a1) nounwind { 53ca66df3bSwanglei; CHECK-LABEL: or_v4i64: 54ca66df3bSwanglei; CHECK: # %bb.0: # %entry 55*a5c90e48Swanglei; CHECK-NEXT: xvld $xr0, $a1, 0 56*a5c90e48Swanglei; CHECK-NEXT: xvld $xr1, $a2, 0 57*a5c90e48Swanglei; CHECK-NEXT: xvor.v $xr0, $xr0, $xr1 58ca66df3bSwanglei; CHECK-NEXT: xvst $xr0, $a0, 0 59ca66df3bSwanglei; CHECK-NEXT: ret 60ca66df3bSwangleientry: 61ca66df3bSwanglei %v0 = load <4 x i64>, ptr %a0 62ca66df3bSwanglei %v1 = load <4 x i64>, ptr %a1 63ca66df3bSwanglei %v2 = or <4 x i64> %v0, %v1 64ca66df3bSwanglei store <4 x i64> %v2, ptr %res 65ca66df3bSwanglei ret void 66ca66df3bSwanglei} 67ca66df3bSwanglei 68ca66df3bSwangleidefine void @or_u_v32i8(ptr %res, ptr %a0) nounwind { 69ca66df3bSwanglei; CHECK-LABEL: or_u_v32i8: 70ca66df3bSwanglei; CHECK: # %bb.0: # %entry 71ca66df3bSwanglei; CHECK-NEXT: xvld $xr0, $a1, 0 72ca66df3bSwanglei; CHECK-NEXT: xvori.b $xr0, $xr0, 31 73ca66df3bSwanglei; CHECK-NEXT: xvst $xr0, $a0, 0 74ca66df3bSwanglei; CHECK-NEXT: ret 75ca66df3bSwangleientry: 76ca66df3bSwanglei %v0 = load <32 x i8>, ptr %a0 77ca66df3bSwanglei %v1 = or <32 x i8> %v0, <i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31> 78ca66df3bSwanglei store <32 x i8> %v1, ptr %res 79ca66df3bSwanglei ret void 80ca66df3bSwanglei} 81ca66df3bSwanglei 82ca66df3bSwangleidefine void @or_u_v16i16(ptr %res, ptr %a0) nounwind { 83ca66df3bSwanglei; CHECK-LABEL: or_u_v16i16: 84ca66df3bSwanglei; CHECK: # %bb.0: # %entry 85ca66df3bSwanglei; CHECK-NEXT: xvld $xr0, $a1, 0 86ca66df3bSwanglei; CHECK-NEXT: xvrepli.h $xr1, 31 87ca66df3bSwanglei; CHECK-NEXT: xvor.v $xr0, $xr0, $xr1 88ca66df3bSwanglei; CHECK-NEXT: xvst $xr0, $a0, 0 89ca66df3bSwanglei; CHECK-NEXT: ret 90ca66df3bSwangleientry: 91ca66df3bSwanglei %v0 = load <16 x i16>, ptr %a0 92ca66df3bSwanglei %v1 = or <16 x i16> %v0, <i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31> 93ca66df3bSwanglei store <16 x i16> %v1, ptr %res 94ca66df3bSwanglei ret void 95ca66df3bSwanglei} 96ca66df3bSwanglei 97ca66df3bSwangleidefine void @or_u_v8i32(ptr %res, ptr %a0) nounwind { 98ca66df3bSwanglei; CHECK-LABEL: or_u_v8i32: 99ca66df3bSwanglei; CHECK: # %bb.0: # %entry 100ca66df3bSwanglei; CHECK-NEXT: xvld $xr0, $a1, 0 101ca66df3bSwanglei; CHECK-NEXT: xvrepli.w $xr1, 31 102ca66df3bSwanglei; CHECK-NEXT: xvor.v $xr0, $xr0, $xr1 103ca66df3bSwanglei; CHECK-NEXT: xvst $xr0, $a0, 0 104ca66df3bSwanglei; CHECK-NEXT: ret 105ca66df3bSwangleientry: 106ca66df3bSwanglei %v0 = load <8 x i32>, ptr %a0 107ca66df3bSwanglei %v1 = or <8 x i32> %v0, <i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31> 108ca66df3bSwanglei store <8 x i32> %v1, ptr %res 109ca66df3bSwanglei ret void 110ca66df3bSwanglei} 111ca66df3bSwanglei 112ca66df3bSwangleidefine void @or_u_v4i64(ptr %res, ptr %a0) nounwind { 113ca66df3bSwanglei; CHECK-LABEL: or_u_v4i64: 114ca66df3bSwanglei; CHECK: # %bb.0: # %entry 115ca66df3bSwanglei; CHECK-NEXT: xvld $xr0, $a1, 0 116ca66df3bSwanglei; CHECK-NEXT: xvrepli.d $xr1, 31 117ca66df3bSwanglei; CHECK-NEXT: xvor.v $xr0, $xr0, $xr1 118ca66df3bSwanglei; CHECK-NEXT: xvst $xr0, $a0, 0 119ca66df3bSwanglei; CHECK-NEXT: ret 120ca66df3bSwangleientry: 121ca66df3bSwanglei %v0 = load <4 x i64>, ptr %a0 122ca66df3bSwanglei %v1 = or <4 x i64> %v0, <i64 31, i64 31, i64 31, i64 31> 123ca66df3bSwanglei store <4 x i64> %v1, ptr %res 124ca66df3bSwanglei ret void 125ca66df3bSwanglei} 126