1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=wasm32 -mattr=+simd128 | FileCheck %s 3 4define void @f(ptr %0, ptr %pr) { 5; CHECK-LABEL: f: 6; CHECK: .functype f (i32, i32) -> () 7; CHECK-NEXT: .local v128 8; CHECK-NEXT: # %bb.0: # %BB 9; CHECK-NEXT: local.get 1 10; CHECK-NEXT: local.get 2 11; CHECK-NEXT: i32.const 16 12; CHECK-NEXT: local.get 0 13; CHECK-NEXT: v128.load64_zero 0 14; CHECK-NEXT: v128.const 0, 1, 0, 0 15; CHECK-NEXT: i32x4.gt_u 16; CHECK-NEXT: local.tee 2 17; CHECK-NEXT: i32x4.extract_lane 0 18; CHECK-NEXT: i32.const 1 19; CHECK-NEXT: i32.and 20; CHECK-NEXT: i32.shr_u 21; CHECK-NEXT: local.tee 0 22; CHECK-NEXT: local.get 0 23; CHECK-NEXT: i32.mul 24; CHECK-NEXT: i8x16.replace_lane 0 25; CHECK-NEXT: i32.const 16 26; CHECK-NEXT: local.get 2 27; CHECK-NEXT: i32x4.extract_lane 1 28; CHECK-NEXT: i32.const 1 29; CHECK-NEXT: i32.and 30; CHECK-NEXT: i32.shr_u 31; CHECK-NEXT: local.tee 0 32; CHECK-NEXT: local.get 0 33; CHECK-NEXT: i32.mul 34; CHECK-NEXT: i8x16.replace_lane 1 35; CHECK-NEXT: v128.store16_lane 0, 0 36; CHECK-NEXT: # fallthrough-return 37BB: 38 %v0 = load <2 x i32>, ptr %0 39 %v1 = icmp ugt <2 x i32> %v0, <i32 0, i32 1> 40 %v2 = zext <2 x i1> %v1 to <2 x i8> 41 %v3 = ashr <2 x i8> <i8 16, i8 16>, %v2 42 %v4 = mul <2 x i8> %v3, %v3 43 store <2 x i8> %v4, ptr %pr 44 ret void 45} 46 47