84 lines · plain
1; Test matching operands with the GPR constraint "r".2;3; RUN: llc < %s -mtriple=s390x-linux-gnu -no-integrated-as | FileCheck %s4 5define void @f1(ptr %dst) {6; CHECK-LABEL: f1:7; CHECK: lhi %r0, 1008; CHECK: blah %r09; CHECK: st %r0, 0(%r2)10; CHECK: br %r1411 %val = call i32 asm "blah $0", "=r,0" (i8 100)12 store i32 %val, ptr %dst13 ret void14}15 16define void @f2(ptr %dst) {17; CHECK-LABEL: f2:18; CHECK: lhi %r0, 10119; CHECK: blah %r020; CHECK: st %r0, 0(%r2)21; CHECK: br %r1422 %val = call i32 asm "blah $0", "=r,0" (i16 101)23 store i32 %val, ptr %dst24 ret void25}26 27define void @f3(ptr %dst) {28; CHECK-LABEL: f3:29; CHECK: lhi %r0, 10230; CHECK: blah %r031; CHECK: st %r0, 0(%r2)32; CHECK: br %r1433 %val = call i32 asm "blah $0", "=r,0" (i32 102)34 store i32 %val, ptr %dst35 ret void36}37 38; FIXME: this uses "lhi %r0, 103", but should use "lghi %r0, 103".39define void @f4(ptr %dst) {40; CHECK-LABEL: f4:41; CHECK: blah %r042; CHECK: st %r0, 0(%r2)43; CHECK: br %r1444 %val = call i32 asm "blah $0", "=r,0" (i64 103)45 store i32 %val, ptr %dst46 ret void47}48 49define i64 @f5() {50; CHECK-LABEL: f5:51; CHECK: lghi %r2, 10452; CHECK: blah %r253; CHECK: br %r1454 %val = call i64 asm "blah $0", "=r,0" (i8 104)55 ret i64 %val56}57 58define i64 @f6() {59; CHECK-LABEL: f6:60; CHECK: lghi %r2, 10561; CHECK: blah %r262; CHECK: br %r1463 %val = call i64 asm "blah $0", "=r,0" (i16 105)64 ret i64 %val65}66 67define i64 @f7() {68; CHECK-LABEL: f7:69; CHECK: lghi %r2, 10670; CHECK: blah %r271; CHECK: br %r1472 %val = call i64 asm "blah $0", "=r,0" (i32 106)73 ret i64 %val74}75 76define i64 @f8() {77; CHECK-LABEL: f8:78; CHECK: lghi %r2, 10779; CHECK: blah %r280; CHECK: br %r1481 %val = call i64 asm "blah $0", "=r,0" (i64 107)82 ret i64 %val83}84