56 lines · plain
1; RUN: llc -mtriple=aarch64-linux-gnu -o - %s | FileCheck %s2 3@var = dso_local global i1 04 5define dso_local i32 @test_sextloadi32() {6; CHECK-LABEL: test_sextloadi327 8 %val = load i1, ptr @var9 %ret = sext i1 %val to i3210; CHECK: ldrb {{w[0-9]+}}, [{{x[0-9]+}}, {{#?}}:lo12:var]11; CHECK: {{sbfx x[0-9]+, x[0-9]+, #0, #1|sbfx w[0-9]+, w[0-9]+, #0, #1}}12 13 ret i32 %ret14; CHECK: ret15}16 17define dso_local i64 @test_sextloadi64() {18; CHECK-LABEL: test_sextloadi6419 20 %val = load i1, ptr @var21 %ret = sext i1 %val to i6422; CHECK: ldrb {{w[0-9]+}}, [{{x[0-9]+}}, {{#?}}:lo12:var]23; CHECK: {{sbfx x[0-9]+, x[0-9]+, #0, #1}}24 25 ret i64 %ret26; CHECK: ret27}28 29define dso_local i32 @test_zextloadi32() {30; CHECK-LABEL: test_zextloadi3231 32; It's not actually necessary that "ret" is next, but as far as LLVM33; is concerned only 0 or 1 should be loadable so no extension is34; necessary.35 %val = load i1, ptr @var36 %ret = zext i1 %val to i3237; CHECK: ldrb {{w[0-9]+}}, [{{x[0-9]+}}, {{#?}}:lo12:var]38 39 ret i32 %ret40; CHECK-NEXT: ret41}42 43define dso_local i64 @test_zextloadi64() {44; CHECK-LABEL: test_zextloadi6445 46; It's not actually necessary that "ret" is next, but as far as LLVM47; is concerned only 0 or 1 should be loadable so no extension is48; necessary.49 %val = load i1, ptr @var50 %ret = zext i1 %val to i6451; CHECK: ldrb {{w[0-9]+}}, [{{x[0-9]+}}, {{#?}}:lo12:var]52 53 ret i64 %ret54; CHECK-NEXT: ret55}56