brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 083fefc Raw
109 lines · plain
1; Test that we can use XI for byte operations that are expressed as i322; or i64 operations.3;4; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s5 6; Zero extension to 32 bits, negative constant.7define void @f1(ptr %ptr) {8; CHECK-LABEL: f1:9; CHECK: xi 0(%r2), 25410; CHECK: br %r1411  %val = load i8, ptr %ptr12  %ext = zext i8 %val to i3213  %xor = xor i32 %ext, -214  %trunc = trunc i32 %xor to i815  store i8 %trunc, ptr %ptr16  ret void17}18 19; Zero extension to 64 bits, negative constant.20define void @f2(ptr %ptr) {21; CHECK-LABEL: f2:22; CHECK: xi 0(%r2), 25423; CHECK: br %r1424  %val = load i8, ptr %ptr25  %ext = zext i8 %val to i6426  %xor = xor i64 %ext, -227  %trunc = trunc i64 %xor to i828  store i8 %trunc, ptr %ptr29  ret void30}31 32; Zero extension to 32 bits, positive constant.33define void @f3(ptr %ptr) {34; CHECK-LABEL: f3:35; CHECK: xi 0(%r2), 25436; CHECK: br %r1437  %val = load i8, ptr %ptr38  %ext = zext i8 %val to i3239  %xor = xor i32 %ext, 25440  %trunc = trunc i32 %xor to i841  store i8 %trunc, ptr %ptr42  ret void43}44 45; Zero extension to 64 bits, positive constant.46define void @f4(ptr %ptr) {47; CHECK-LABEL: f4:48; CHECK: xi 0(%r2), 25449; CHECK: br %r1450  %val = load i8, ptr %ptr51  %ext = zext i8 %val to i6452  %xor = xor i64 %ext, 25453  %trunc = trunc i64 %xor to i854  store i8 %trunc, ptr %ptr55  ret void56}57 58; Sign extension to 32 bits, negative constant.59define void @f5(ptr %ptr) {60; CHECK-LABEL: f5:61; CHECK: xi 0(%r2), 25462; CHECK: br %r1463  %val = load i8, ptr %ptr64  %ext = sext i8 %val to i3265  %xor = xor i32 %ext, -266  %trunc = trunc i32 %xor to i867  store i8 %trunc, ptr %ptr68  ret void69}70 71; Sign extension to 64 bits, negative constant.72define void @f6(ptr %ptr) {73; CHECK-LABEL: f6:74; CHECK: xi 0(%r2), 25475; CHECK: br %r1476  %val = load i8, ptr %ptr77  %ext = sext i8 %val to i6478  %xor = xor i64 %ext, -279  %trunc = trunc i64 %xor to i880  store i8 %trunc, ptr %ptr81  ret void82}83 84; Sign extension to 32 bits, positive constant.85define void @f7(ptr %ptr) {86; CHECK-LABEL: f7:87; CHECK: xi 0(%r2), 25488; CHECK: br %r1489  %val = load i8, ptr %ptr90  %ext = sext i8 %val to i3291  %xor = xor i32 %ext, 25492  %trunc = trunc i32 %xor to i893  store i8 %trunc, ptr %ptr94  ret void95}96 97; Sign extension to 64 bits, positive constant.98define void @f8(ptr %ptr) {99; CHECK-LABEL: f8:100; CHECK: xi 0(%r2), 254101; CHECK: br %r14102  %val = load i8, ptr %ptr103  %ext = sext i8 %val to i64104  %xor = xor i64 %ext, 254105  %trunc = trunc i64 %xor to i8106  store i8 %trunc, ptr %ptr107  ret void108}109